Главная / Программирование /
Разработка компиляторов / Тест 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) линейного спуска без возвратами