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

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

Упражнение 1:
Номер 1
Программа, которая строит LALR- анализаторы - это:

Ответ:

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

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

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

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


Номер 2
Генератор анализаторов YACC был разработан:

Ответ:

 (1) в начале 60-х годов прошлого века 

 (2) в конце 60-х годов прошлого века 

 (3) в начале 70-х годов прошлого века 

 (4) в конце 70-х годов прошлого века 


Номер 3
Генератор анализаторов YACC был создан для следующих операционных систем:

Ответ:

 (1) UNIX 

 (2) Windows 

 (3) OS/2 


Упражнение 2:
Номер 1
YACC - это имя генератора в операционной системе UNIX, в остальных операционных системах программа называется:

Ответ:

 (1) PYACC 

 (2) WINYACC 

 (3) PCYACC 

 (4) AYACC 


Номер 2
Входом программы YACC является:

Ответ:

 (1) грамматика языка 

 (2) некоторая дополнительная информация 

 (3) программа на языке C 

 (4) файл со спецификациями 


Номер 3
На вход YACC получает файл со спецификациями, который должен иметь расширение:

Ответ:

 (1) "c" 

 (2) "cpp" 

 (3) "n" 

 (4) "y" 

 (5) "cc" 

 (6) "a" 


Упражнение 3:
Номер 1
Выходом YACC могут быть файлы:

Ответ:

 (1) name.yy.c 

 (2) name.c 

 (3) name.yy.h 

 (4) y.output 


Номер 2
Какой из следующих файлов содержит сгенерированную YACC'ом программу анализатора:

Ответ:

 (1) name.yy.c 

 (2) y.output 

 (3) yy.lrt 

 (4) name.c 


Номер 3
Какой из следующих файлов создается при задании параметра -h, - описания, которые также генерирует YACC:

Ответ:

 (1) name.yy.h 

 (2) name.h 

 (3) y.output 

 (4) yy.lrt 


Упражнение 4:
Номер 1
Файл со спецификациями name.y должен быть устроен следующим образом:

Ответ:

 (1) Секция описаний %% Секция грамматических правил %%  

 (2) Секция описаний %% Секция грамматических правил %% Секция определений %% Секция процедур  

 (3) Секция описаний %% Секция грамматических правил %% Секция процедур  


Номер 2
В файле name.y секция описаний содержит:

Ответ:

 (1) описания переменных языка C 

 (2) определения типов 

 (3) объявления терминальных символов грамматики 

 (4) объявления нетерминальных символов грамматики 

 (5) определения ассоциативности и приоритетов операций 


Номер 3
Описания переменных языка C в файле name.y заключаются в:

Ответ:

 (1) <...> 

 (2) /{ … }/ 

 (3) %{ … }% 

 (4) <?...?> 

 (5) &%...%& 

 (6) /%...%/ 


Упражнение 5:
Номер 1
Примером определения типов, значения которых возвращаются как значения семантик является:

Ответ:

 (1) %{ int myCount; }%  

 (2) %type <id1> conditional_stmt 

 (3) %union { type1 id1; ... }  

 (4) %token MINUS_LC PLUS_LC TIMES_LC 


Номер 2
Объявлением нетерминальных символов грамматики являются:

Ответ:

 (1) %token MINUS_LC PLUS_LC TIMES_LC 

 (2) %token PLUS_TO_LC TIMES_TO_LC 

 (3) %{ int myCount; }% 

 (4) %type <id1> conditional_stmt 


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

Ответ:

 (1) A: production_body; 

 (2) .production_body; 

 (3) production_body :A; 

 (4) A:= production_body; 


Упражнение 6:
Номер 1
В следующем правиле (секция грамматических правил файла name.y):A: production_body;именем нетерминала является:

Ответ:

 (1) production_body; 

 (2) A: production_body; 

 (3) A 

 (4) production_body 


Номер 2
В секции правил грамматики литерал может состоять:

Ответ:

 (1) из литер, заключенных в кавычки 

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

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

 (4) из литер, заключенных в апострофы 


Номер 3
Backslash в секции правил грамматики используется:

Ответ:

 (1) для задания управляющей последовательности 

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

 (3) для задания линейной последовательности 

 (4) для описания директив компилятора 


Упражнение 7:
Номер 1
Какая литера может использоваться для объединения всех правил в одно, если имеется несколько грамматических правил с одинаковой левой частью:

Ответ:

 (1) "|" 

 (2) "-" 

 (3) "/" 

 (4) "\" 


Номер 2
Аксиому можно определить в секции объявлений так:

Ответ:

 (1) %start 

 (2) %start axiom 

 (3) %begin axiom 

 (4) %begin 


Номер 3
Фрагменты программ на языке С, заключенные в фигурные скобки - это:

Ответ:

 (1) лексемы 

 (2) анализаторы 

 (3) семантики 

 (4) секции 


Упражнение 8:
Номер 1
Для того, чтобы нетерминал мог иметь значение некоторого типа, который указан в объединении, определенном в секции объявлений, он должен быть объявлен следующим образом:

Ответ:

 (1) %type имя-нетерминала <имя-вида> 

 (2) %type <myCounter> counter 

 (3) %type <имя-вида> имя-нетерминала 

 (4) %type counter <myCounter> 


Номер 2
Все имена и литералы, содержащиеся в правой части правила нумеруются:

Ответ:

 (1) слева направо, начиная с единицы 

 (2) слева направо, начиная с нуля 

 (3) слева направо, начиная с десяти 

 (4) слева направо, начиная с тысячи 


Номер 3
Данное правило:A: B { $$ = 1; }
     C { x = $2; y = $3; }
    ;эквивалентно следующему:

Ответ:

 (1) $$1: /* пустая правая часть */ { $$ = 1; } ; A: B $$1 C { x = $2; y = $3; } 

 (2) $1: /* пустая правая часть */ { $$ = 1; } ; A: B $1 { x = $2; y = $3; } ; 

 (3) $$1: /* пустая правая часть */ { $$ = 1; } ; A: B $$1 C { x = $2; y = $3; } ; 


Упражнение 9:
Номер 1
Какая из секций является необязательной:

Ответ:

 (1) секция описаний 

 (2) секция грамматических правил 

 (3) секция описаний процедур 


Номер 2
Какая из процедур реализует лексический анализ и возвращает лексический класс лексемы:

Ответ:

 (1) int yyparse (void) 

 (2) int yyerror (char * s) 

 (3) int yylex (void) 


Номер 3
При использовании какого параметра программы YACC будет построен заголовочный файл с именем f:

Ответ:

 (1) -Cf 

 (2) -Df 

 (3) -v 

 (4) -a 

 (5) -Tf 

 (6) -Nf 


Упражнение 10:
Номер 1
Данная функция:int yylex (void)
{
int ch;
while ((ch = getchar ()) == ' ');

if (isdigit (ch))
{
ungetc (ch, stdin); 
scanf (%i, &yylval);
return NUMBER_LC;
}

return ch;
}
вычисляет следующую пару значений:

Ответ:

 (1) лексический класс 

 (2) атрибут, связанный с лексическим классом 

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

 (4) атрибут, связанный с семантическим классом 


Номер 2
Для того, чтобы получить управляющую таблицу анализатора достаточно запустить программу YACC с ключом:

Ответ:

 (1) -a 

 (2) -g 

 (3) -m 

 (4) -v 


Номер 3
Ошибки, которых в программе на самом деле нет, могут возникнуть в результате не совсем корректной работы транслятора после обнаружения какой-нибудь ошибки - это:

Ответ:

 (1) корректные ошибки 

 (2) наведенные ошибки 

 (3) псевдоошибки 

 (4) скрытые ошибки 


Упражнение 11:
Номер 1
Лексический анализатор в следующем контексте:fi (x == y) { ... }:

Ответ:

 (1) проигнорирует ошибку 

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

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


Номер 2
Обычно, фазы оптимизации и генерации:

Ответ:

 (1) не обнаруживают ошибки 

 (2) обнаруживают ошибки 

 (3) игнорируют ошибки 

 (4) осуществляют поиск ошибок 


Номер 3
Контроль типов осуществляется во время обхода:

Ответ:

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

 (2) лексического дерева 

 (3) семантичесого дерева 

 (4) специального дерева 


Упражнение 12:
Номер 1
60% ошибок в программе - это:

Ответ:

 (1) ошибки в операторах и операндах 

 (2) ошибки в ключевых словах 

 (3) пунктуационные ошибки 

 (4) все прочие ошибки 


Номер 2
Error-правила в YACC'е имеет один из следующих видов:

Ответ:

 (1) A: w error 

 (2) A: w1 error w2 

 (3) w1 error w2 :A 

 (4) w error :A 


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

Ответ:

 (1) "error productions" 

 (2) "error rules" 

 (3) "error set" 

 (4) "error stop" 




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