Главная / Программирование /
Разработка компиляторов / Тест 7
Разработка компиляторов - тест 7
Упражнение 1:
Номер 1
Предназначен для построения дерева разбора, начиная с листьев и двигаясь вверх к корню дерева разбора:
Ответ:
 (1) восходящий анализ 
 (2) нисходящий анализатор 
 (3) линейный анализатор 
 (4) системный анализатор 
Номер 2
Процесс построения дерева разбора, начиная с листьев и двигаясь вверх к корню дерева разбора может быть представлен как:
Ответ:
 (1) "свертка" символа w
к аксиоме грамматики 
 (2) "перенос" исходной строки w
к аксиоме грамматики 
 (3) "свертка" исходной строки w
к аксиоме грамматики 
 (4) "перенос" символа строки w
к аксиоме грамматики 
Номер 3
В следующей грамматике:S->aABe
A->Abc
A->b
B->d
цепочка abbcde
может быть свернута в аксиому следующим образом:
Ответ:
 (1) abbcde, aAbcde, aAde, aABe, S
 
 (2) abbcde, aAbcde, aAde, aABe
 
 (3) abbcde, aAbcde, aAde, aABe, abbd, S
 
 (4) aAbcde, aAde, aABe, S
 
Упражнение 2:
Номер 1
LR(k) означает, что:
Ответ:
 (1) входная цепочка обрабатывается слева направо  
 (2) выполняется правый вывод 
 (3) не более k символов цепочки используются для принятия решения 
 (4) не более l символов цепочки используются для принятия решения 
Номер 2
При LR(k)-анализе применяется метод:
Ответ:
 (1) shift-reduce 
 (2) shift-shift 
 (3) reduce-reduce 
 (4) reduce-shift 
Номер 3
Метод "перенос-свертка" использует:
Ответ:
 (1) конечный автомат 
 (2) магазинный автомат 
 (3) машину Тьюринга 
 (4) бесконечный автомат 
Упражнение 3:
Номер 1
Символы входной цепочки переносятся в магазин до тех пор, пока на вершине магазина не накопится цепочка, совпадающая с правой частью какого-нибудь из правил:
Ответ:
 (1) операция "свертка" 
 (2) "shift" 
 (3) операция "перенос"" 
 (4) "reduce" 
Номер 2
LR(k)-анализатор состоит из:
Ответ:
 (1) входной цепочки 
 (2) выхода 
 (3) управляющей программы и таблицы 
 (4) магазина 
Номер 3
Управляющая программа:
Ответ:
 (1) одинакова для всех LR-анализаторов 
 (2) различна для всех LR-анализаторов 
 (3) не существует для LR-анализаторов 
Упражнение 4:
Номер 1
Комбинация символа состояния на вершине магазина и текущего входного символа используется:
Ответ:
 (1) для индексирования контекстной таблицы 
 (2) для индексирования управляющей таблицы 
 (3) для определения операции переноса-свертки 
 (4) для определения операции переноса 
Номер 2
Функция goto
получает:
Ответ:
 (1) состояние и символ грамматики 
 (2) состояние и секцию грамматики 
 (3) блок и символ грамматики 
 (4) блок и секцию грамматики 
Номер 3
LR(0)-анализатор принимает решение о своих действиях только на основании содержимого магазина:
Ответ:
 (1) учитывая символы выходной цепочки 
 (2) учитывая символы входной цепочки 
 (3) не учитывая символы входной цепочки 
 (4) не учитывая символы выходной цепочки 
Упражнение 5:
Номер 1
LR(0)-ситуации не должны содержать:
Ответ:
 (1) терминальной цепочки 
 (2) нетерминальной цепочки 
 (3) специальной цепочки 
 (4) контекстной цепочки 
Номер 2
Входная цепочка может начинаться с любого:
Ответ:
 (1) нетерминального символа 
 (2) контекстного символа 
 (3) терминального символа 
Номер 3
Данная ситуация:[S'->.S]
[S-gt;.x]
[S-gt;.(L)]определяет состояние:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Упражнение 6:
Номер 1
Данная ситуация:[S->x.]
определяет состояние:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 2
Данная ситуация:[S->(.L)]
[L->.L, S]
[L->.S]
[S->.(L)]
[S->.x]определяет состояние:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 3
Данная ситуация:[S'->S.$]
определяет состояние:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Упражнение 7:
Номер 1
Какая операция добавляет ситуации к множеству ситуаций, у которых точка стоит слева от нетерминала:
Ответ:
 (1) goto
 
 (2) add
 
 (3) closure
 
 (4) point
 
Номер 2
В данном примере:
goto (I, X)
{
J={};
for (каждой ситуации [A->w.Xv] из I) {
J+=[A->wX.v];
}
return closure (J);
}происходит:
Ответ:
 (1) переход из одного состояния в другое под воздействием символа J
 
 (2) переход из одного состояния в другое под воздействием символа I
 
 (3) переход из одного состояния в другое под воздействием символа A
 
 (4) переход из одного состояния в другое под воздействием символа X
 
Номер 3
Поскольку для символа $
операция goto (I, $)
не определена, можно выполнить:
Ответ:
 (1) действие to
 
 (2) действие accept
 
 (3) действие close
 
 (4) действие alt
 
Упражнение 8:
Номер 1
В данном примере:R = empty set;
for (each state I in T)
{
for (each item [A->w.] in I)
{
R+={(I, A->w)};
}
}вычисляется:
Ответ:
 (1) множество сверток A
 
 (2) множество сверток R
 
 (3) множество сверток T
 
 (4) множество сверток I
 
Номер 2
Алгоритм построения управляющей таблицы автомата состоит из следующих шагов:
Ответ:
 (1) пополнение грамматики 
 (2) построение множества состояний 
 (3) построение множества переходов 
 (4) построение множества сверток 
Номер 3
Сколько символов входной цепочки использует для принятия решения LR(1)-анализатор:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
 (5) 4 
 (6) 5 
Упражнение 9:
Номер 1
LR(1)-ситуация состоит из:
Ответ:
 (1) правила грамматики 
 (2) позиции правой части 
 (3) одного символа входной строки 
Номер 2
Для данной грамматики:(1) E->T
(2) E->T
(3) T->T*F
(4) T->F
(5) F-> (E)
(6) F->idsi
- это:
Ответ:
 (1) перенос и переход в состояние i
 
 (2) свертка по правилу i
 
 (3) переход в состояние i
 
Номер 3
При пополнении какой грамматики правилом S' -> S
можно получить следующие состояния:0: {[S'-gt;.S, $], [S-gt;.AA, $], [A-gt;.aA, a], [A-gt;.aA, b], [A-gt;.b, a], [A-gt;.b, b]}
1: {[S'-gt;S., $]}
2: {[S'-gt;A.A, $], A-gt;.aA, $], [A-gt;.b, $]}
3: {[A-gt;a.A, a], [A-gt;a.A, b], [A-gt;.a.A, a], [A-gt;.a.A, b], [A-gt;.b, a], [A-gt;.b, b]}
4: {[A-gt;b., a], [A-gt;b., b]}
5: {[S-gt;AA. $]}
6: {[A-gt;a.A, $], [A-gt;.aA, $], [A-gt;.b, $]}
7: {[A-gt;b., $]}
8: {[A-gt;aA.,a], [A-gt;aA.,b]}
9: {[A-gt;aA.,$]}:
Ответ:
 (1) грамматика G1 с правилами:S -> AA
A -> aA
A -> b 
 (2) грамматика G1 с правилами:S -> AA
A -> a
A -> b 
 (3) грамматика G1 с правилами:S -> Ab
A -> aA
A -> A 
 (4) грамматика G1 с правилами:S -> Ab
A -> ab
A -> b 
Упражнение 10:
Номер 1
LALR анализатор имеет значительное преимущество в размере таблиц по сравнению с:
Ответ:
 (1) LR 
 (2) LP 
 (3) TL 
 (4) TR 
Номер 2
Неоднозначность грамматики приводит:
Ответ:
 (1) к компактности управляющей таблицы анализатора LR(k)-языка 
 (2) к конфликтам при построении управляющей таблицы анализатора LR(k)-языка 
 (3) к непротиворечивости управляющей таблицы анализатора LR(k)-языка 
Номер 3
Имеется следующая входная цепочка: if E1 then if E2 then S1 else S2
, при содержимом стека - $ if E1 then if E2 then S1
необработанной частью входной цепочки является:
Ответ:
 (1) else S2
 
 (2) then S1 else S2
 
 (3) E2 then S1 else S2
 
 (4) if E1 then if E2 then S1 else S2
 
 (5) E1 then if E2 then S1 else S2
 
 (6) S1 else S2
 
Упражнение 11:
Номер 1
Конфликт перенос-свертка может быть решен следующими методами:
Ответ:
 (1) вводя новые нетерминалы matched_statement
и unmatched_statement
 
 (2) явным образом разрешая конфликт при его возникновении 
 (3) вводя новые терминалы matched_statement
и unmatched_statement
 
Номер 2
Альтернативой построению новой грамматики может служить "соглашение", что в случае конфликта перенос-свертка:
Ответ:
 (1) перенос является предпочтительным действием 
 (2) свертка является предпочтительным действием 
 (3) происходит игнорирование переноса 
Номер 3
Конфликт перенос-перенос возникает, когда на вершине стека анализатора возникает строка терминалов, к которой:
Ответ:
 (1) может быть применен перенос по двум различным правилам 
 (2) могут быть применены свертка и перенос по двум различным правилам 
 (3) может быть применена свертка по двум различным правилам 
Упражнение 12:
Номер 1
В процессе разбора входной цепочки id (id, id)
, при содержимом стека - $ id (id
, необработанная часть представляет собой:
Ответ:
 (1) id (id, id)
 
 (2) (id, id)
 
 (3) , id)
 
 (4) id, id)
 
Номер 2
В данной грамматике:E –> id | num | E* E | E + E
операции сложения и умножения выполняются:
Ответ:
 (1) в соответствии с приоритетами операций 
 (2) в порядке появления во входной последовательности 
 (3) в порядке появления во выходной последовательности 
Номер 3
При анализе строки 1+2+3
(содержимое стека - $E+
) необработанная часть входной цепочки будет представлять собой:
Ответ:
 (1) 2+3
 
 (2) 1+2+3
 
 (3) +2+3
 
 (4) +2+3
 
 (5) +3