игра брюс 2048
Главная / Программирование / Разработка компиляторов / Тест 6

Разработка компиляторов - тест 6

Упражнение 1:
Номер 1
Наиболее удобным формализмом для описания синтаксических конструкций языка программирования являются:

Ответ:

 (1) контекстно-свободные 

 (2) бесконтекстные 

 (3) контекстно-зависимые 

 (4) праволинейные 


Номер 2
Грамматики представляют собой мощный формализм:

Ответ:

 (1) написания языков программирования 

 (2) описания языков программирования 

 (3) определения языков программирования 


Номер 3
Компиляторы, разработанные на базе грамматик:

Ответ:

 (1) не могут быть расширены 

 (2) могут быть расширены 

 (3) могут быть легко расширены 

 (4) не могут быть достаточно легко расширены 


Упражнение 2:
Номер 1
Если программа выводима в грамматике, это еще не означает, что она полностью:

Ответ:

 (1) семантически правильна 

 (2) лексически правильна 

 (3) синтаксически правильна 


Номер 2
Процесс, который определяет, принадлежит ли некоторая последовательность лексем языку, порождаемому грамматикой называется:

Ответ:

 (1) синтаксический анализ  

 (2) семантический анализ 

 (3) видозависимый анализ 

 (4) лексический анализ 


Номер 3
Анализаторы реально используемых языков обычно имеют:

Ответ:

 (1) системную сложность 

 (2) контекстную сложность 

 (3) линейную сложность 

 (4) квадратную сложность 

 (5) сложность построения 


Упражнение 3:
Номер 2
Дерево разбора и таблицы - это:

Ответ:

 (1) вход семантического анализатора 

 (2) выход семантического анализатора 

 (3) выход синтаксического анализатора 

 (4) вход синтаксического анализатора 


Номер 3
Синтаксический анализатор обращается к лексическому анализатору каждый раз, когда у него появляется потребность:

Ответ:

 (1) в очередном терминальном символе 

 (2) в пустой строке 

 (3) в очередном операторе 

 (4) в очередном нетерминальном символе 

 (5) в очередном операнде 


Упражнение 4:
Номер 1
Большинство методов анализа принадлежит к следующим классам:

Ответ:

 (1) нисходящие анализаторы 

 (2) восходящие анализаторы 

 (3) линейные анализаторы 

 (4) нелинейные анализаторы 


Номер 2
В узлах синтаксического дерева корнем являются:

Ответ:

 (1) аксиомы грамматики 

 (2) терминальные символы 

 (3) нетерминальные символы 

 (4) пустые строки 


Номер 3
В узлах синтаксического дерева листьями являются:

Ответ:

 (1) нетерминальные символы 

 (2) аксиомы грамматики 

 (3) терминальные символы 


Упражнение 5:
Номер 1
От корня к листьям узлы синтаксического дерева строятся:

Ответ:

 (1) в bottom-down алгоритмах 

 (2) в top-down алгоритмах 

 (3) в left-down алгоритмах 

 (4) в right-down алгоритмах 


Номер 2
От листьев к корню узлы синтаксического дерева строятся:

Ответ:

 (1) в top-down алгоритмах 

 (2) в bottom-down алгоритмах 

 (3) в right-down алгоритмах 

 (4) в left-down алгоритмах 


Номер 3
LL-грамматики обладают следующими свойствами:

Ответ:

 (1) они могут быть проанализированы без возвратов 

 (2) первая буква L означает, что мы просматриваем входную цепочку слева направо 

 (3) вторая буква L означает, что строится левый вывод цепочки 

 (4) они не могут быть проанализированы без возвратов 


Упражнение 6:
Номер 1
С восходящими анализаторами связаны:

Ответ:

 (1) LL-грамматики 

 (2) LR-грамматики 

 (3) LP-грамматики 

 (4) LM-грамматики 


Номер 2
С помощью каких грамматик можно определить большинство использующихся в настоящее время языков программирования?

Ответ:

 (1) LR-грамматики 

 (2) LN-грамматики 

 (3) LT-грамматики 

 (4) LL-грамматики 


Номер 3
Одним из наиболее популярных методов нисходящего синтаксического анализа является:

Ответ:

 (1) recursive descent method 

 (2) recursive top-down method 

 (3) recursive method 

 (4) descent method 


Упражнение 7:
Номер 1
Можно разделить все формулы на следующие классы:

Ответ:

 (1) простейшие формулы 

 (2) формулы, содержащие операции типа умножения 

 (3) формулы, содержащие операции типа сложения 

 (4) формулы, содержащие операции типа деления 


Номер 2
К простейшим формулам можно отнести:

Ответ:

 (1) числа 

 (2) деление 

 (3) вычитание 

 (4) сложение 


Номер 3
К формулам, содержащим операции типа умножения можно отнести:

Ответ:

 (1) умножение 

 (2) деление 

 (3) сложение 

 (4) вычитание 

 (5) числа 


Упражнение 8:
Номер 1
Следующая процедура:int Factor ()
{
   char ch = getChar();
   if (isDigit (ch)) return getValue(ch);
   if (ch == '(') 
   {
      int result = Formula ();
      if (getChar() == ')') return result;
      error ("Неожиданный символ");
      return 0;
   }
   return error ("Неожиданный символ"); 
}
вычисляет значение:

Ответ:

 (1) формулы, содержащие операции типа сложения 

 (2) формулы, содержащие операции типа умножения 

 (3) простейшие формулы 


Номер 2
Обрабатывать формулы, содержащие операции типа умножения будет процедура:

Ответ:

 (1) Term 

 (2) Plus 

 (3) P_Term 

 (4) p_Plus 


Номер 3
Как мы можем понять, что имеем дело с формулой, содержащей операции типа умножения?

Ответ:

 (1) в момент встречи операции умножения 

 (2) в момент встречи операции деления 

 (3) в момент встречи вычитания 

 (4) в момент встречи сложения 


Упражнение 9:
Номер 1
Общий вид формулы, содержащей операции типа сложения:

Ответ:

 (1) T1+T2*Tn 

 (2) T1+T2+…+ Tn 

 (3) T1+T2+…Tn 

 (4) *T1+T2*Tn 


Номер 2
Обрабатывать формулы, содержащие операции типа сложения будет процедура:

Ответ:

 (1) P_Expression 

 (2) P_Term 

 (3) Term 

 (4) Expression 


Номер 3
Параметром процедуры Expression является:

Ответ:

 (1) вещественное значение 

 (2) целочисленное значение 

 (3) логическое значение 

 (4) строковое значение 


Упражнение 10:
Номер 1
Метод getChar:

Ответ:

 (1) выдает очередную литеру из входного потока 

 (2) возвращает неиспользованную литеру обратно во входной поток 

 (3) используется для вывода сообщений об ошибках 

 (4) извлекает из входного потока все цифры 


Номер 2
Метод returnChar:

Ответ:

 (1) извлекает из входного потока все цифры 

 (2) выдает очередную литеру из входного потока 

 (3) возвращает true только в том случае, когда ее параметр является цифрой 

 (4) возвращает неиспользованную литеру обратно во входной поток 


Номер 3
Метод рекурсивного спуска без возвратов можно использовать только для:

Ответ:

 (1) LL(1)-грамматик 

 (2) LR(1)-грамматик 

 (3) LP(1)-грамматик 

 (4) LM(1)-грамматик 


Упражнение 11:
Номер 1
Для данной грамматики:S -> B A
A -> +B A 
A -> e
B -> D C
C -> * D C 
C -> e
D -> (S) 
D -> a
множества FIRST определяются следующим образом:

Ответ:

 (1) FIRST (D) = {(, e}, FIRST (C) = {*, a }, FIRST (B) = FIRST (D), FIRST (A)={+, a }, FIRST (S) = {(, e} 

 (2) FIRST (D) = {(, a}, FIRST (C) = {*, d }, FIRST (B) = FIRST (D), FIRST (A)={+, c }, FIRST (S) = {(, a} 

 (3) FIRST (D) = {(, a}, FIRST (C) = {*, e }, FIRST (B) = FIRST (D), FIRST (A)={+, e }, FIRST (S) = {(, a} 

 (4) FIRST (D) = {(, e}, FIRST (C) = {*, a }, FIRST (B) = FIRST (D), FIRST (A)={+, e }, FIRST (S) = {(, a} 


Номер 2
В LL(k)-грамматике для любых двух левых выводов:S =>* wAv => wuv =>* wx
S =>* wAv => wu1v =>* wyдля которых FIRSTk (x) = FIRSTk (y)вытекает, что:

Ответ:

 (1) k=k1 

 (2) k(x)=k(y) 

 (3) wx=wy 

 (4) u=u1 


Номер 3
Грамматика называется леворекурсивной, если среди ее нетерминалов имеется по крайней мере один:

Ответ:

 (1) леворекурсивный терминал 

 (2) леворекурсивный нетерминал 

 (3) праворекурсивный нетерминал 

 (4) праворекурсивный терминал 


Упражнение 12:
Номер 1
Леворекурсивные грамматики не обладают свойством:

Ответ:

 (1) LL(k) ни для какого k 

 (2) LR(k) ни для какого k 

 (3) LM(k) ни для какого k 

 (4) LN(k) ни для какого k 


Номер 2
Данная грамматика:E -> T | TE'
E' -> +T | +TE'
T  -> F | FT'
T'-> *F | *FT'
F -> (E) | num
обладает свойством:

Ответ:

 (1) LR(k) 

 (2) LR(1) 

 (3) LL(k) 

 (4) LL(1) 


Номер 3
Синтаксический разбор в демонстрационном компиляторе Си-бимоль реализован с помощью:

Ответ:

 (1) рекурсивного спуска с возвратами 

 (2) рекурсивного спуска без возвратов 

 (3) линейного спуска с возвратами 

 (4) линейного спуска без возвратами 




Главная / Программирование / Разработка компиляторов / Тест 6