Главная / Программирование /
Разработка компиляторов / Тест 9
Разработка компиляторов - тест 9
Упражнение 1:
Номер 1
Задача, решение которой необходимо для проверки правильности использования типов:
Ответ:
 (1) идентификация идентификаторов 
 (2) идентификация типов 
 (3) идентификация данных 
 (4) идентификация операторов 
Номер 2
Нельзя убедиться в правильности использования типов в какой-нибудь конструкции до тех пор, пока не определены:
Ответ:
 (1) типы специальных частей 
 (2) типы частей описания 
 (3) типы основных частей 
 (4) типы всех ее составных частей 
Номер 3
Чтобы выяснить правильность оператора присваивания надо знать:
Ответ:
 (1) типы его получателя 
 (2) источника 
 (3) левой части 
 (4) правой части 
Упражнение 2:
Номер 1
Чтобы выяснить, каков тип идентификатора, являющегося, получателем присваивания, надо понять:
Ответ:
 (1) как этот идентификатор был объявлен в программе 
 (2) что представляет собой этот идентификатор 
 (3) как этот идентификатор появился в программе 
 (4) как этот идентификатор был добавлен в программу 
Номер 2
Каждое вхождение идентификатора в программу является либо:
Ответ:
 (1) определяющим 
 (2) не использующим 
 (3) не определяющим 
 (4) использующим 
Номер 3
Определяющим вхождением идентификатора является:
Ответ:
 (1) int i 
 (2) i = 5 
 (3) i+15 
 (4) a+2 
 (5) int a 
 (6) a = 10 
Упражнение 3:
Номер 1
Использующим вхождением идентификатора является:
Ответ:
 (1) i = 10 
 (2) int i 
 (3) int a 
 (4) a+20 
Номер 2
Цель идентификации идентификаторов - это:
Ответ:
 (1) определить тип использующего вхождения идентификатора 
 (2) определить тип определяющего вхождения идентификатора 
 (3) определить тип вхождения идентификатора 
Номер 3
Если все определяющие вхождения идентификаторов должны быть расположены текстуально перед использующими вхождениями, то:
Ответ:
 (1) можно выполнить идентификацию на фазе синтаксического анализа 
 (2) можно выполнить идентификацию на фазе лексического анализа 
 (3) можно выполнить идентификацию на фазе семантического анализа 
 (4) можно выполнить идентификацию на фазе видозависимого анализа 
Упражнение 4:
Номер 1
Таблица идентификаторов содержит:
Ответ:
 (1) ссылку на внешнее представление 
 (2) ссылку на тип 
 (3) ссылку на предыдущее определение идентификатора 
 (4) значение hash-функции для лексемы 
Номер 2
Таблица внешних представлений содержит:
Ответ:
 (1) значение hash-функции для лексемы 
 (2) лексический класс 
 (3) лексическую марку 
 (4) ссылку на внешнее представление 
 (5) ссылку на предыдущее определение идентификатора 
 (6) ссылку на определение идентификатора 
Номер 3
Элемент таблицы идентификаторов можно организовать так:
Ответ:
 (1) struct ReprItem
{
HashInd toHash;
unsigned short LexClass;
unsigned short LexMark;
IdInd toId;
}
 
 (2) struct ReprItem
{
HashInd toHash;
unsigned short LexClass;
unsigned short LexMark;
TypeInd toMode;
}
 
 (3) struct IdItem
{
ReprInd toRepr;
TypeInd toMode;
IdInd toId;
}
 
 (4) struct IdItem
{
ReprInd toRepr;
TypeInd toMode;
unsigned short LexClass;
unsigned short LexMark;
IdInd toId;
}
 
Упражнение 5:
Номер 1
Обработка определяющего вхождения идентификатора происходит:
Ответ:
 (1) на фазе видозависимого анализа 
 (2) на фазе семантического анализа 
 (3) на фазе лексического анализа 
 (4) на фазе синтаксического анализа 
Номер 2
При занесении информации об идентификаторе в таблицу идентификаторов синтаксическим анализатором, происходят следующие действия:
Ответ:
 (1) создается новый элемент таблицы идентификаторов 
 (2) в поле toRepr таблицы идентификаторов помещается rpr 
 (3) в поле toRepr таблицы идентификаторов помещается rpt 
Номер 3
В программе следующей структуры:{int n; …; n++; .. {float n; … n = 3.14; … } …n--; … }при входе во внешний блок:
Ответ:
 (1) идентификатор n будет занесен в таблицу представлений 
 (2) будет создан элемент таблицы представлений 
 (3) будет создан элемент таблицы идентификаторов 
 (4) идентификатор n будет занесен в таблицу идентификаторов 
Упражнение 6:
Номер 1
В программе следующей структуры:{int n; …; n++; .. {float n; … n = 3.14; … } …n--; … }после входа во внутренний блок будет добавлен еще один элемент:
Ответ:
 (1) в таблицу представлений, соответствующий идентификатору n 
 (2) в таблицу идентификаторов, соответствующий идентификатору n 
 (3) в таблицу идентификаторов, не соответствующий идентификатору n 
 (4) в таблицу представлений, не соответствующий идентификатору n 
Номер 2
Примитивными типами являются:
Ответ:
 (1) boolean 
 (2) char 
 (3) array 
 (4) integer 
 (5) real 
 (6) void 
Номер 3
Для построения более сложных типов из примитивных обычно используются следующие конструкторы:
Ответ:
 (1) Массивы 
 (2) Произведение 
 (3) Структуры 
 (4) Указатели 
 (5) Функции 
Упражнение 7:
Номер 1
Конструктор struct применяется к кортежу пар:
Ответ:
 (1) индекс поля, тип поля 
 (2) имя поля, номер поля 
 (3) имя поля, тип поля 
 (4) индекс поля, номер поля 
Номер 2
Тип row строится из примитивных типов следующим образом:
Ответ:
 (1) struct (lexeme*array (1..15, char)) 
 (2) struct ((address*integer)-(lexeme*array (1..15, char))) 
 (3) struct (address*integer+lexeme*array (1..15, char)) 
 (4) struct ((address*integer)x(lexeme*array (1..15, char))) 
Номер 3
Функция, определенная как:function f (a, b: char) : ^integer;имеет тип:
Ответ:
 (1) proc (int *int, int) 
 (2) proc (int *char, int) 
 (3) proc (charxchar, pointer (integer)) 
 (4) proc (charxint, pointer (integer)) 
Упражнение 8:
Номер 1
К способам представления типов можно отнести:
Ответ:
 (1) деревья 
 (2) ориентированные ациклические графы 
 (3) линейное представление деревьев или dag'ов 
 (4) битовые шкалы 
Номер 2
Использование dag'ов более предпочтительно, чем деревьев, поскольку в этом случае происходит:
Ответ:
 (1) значительное сокращение кода 
 (2) экономия времени при компиляции 
 (3) упрощение инструкций 
 (4) иногда весьма значительная экономия памяти 
Номер 3
Какой способ кодирования типов был использован в компиляторе C, разработанном Ричи (D.M.Ritchie)?
Ответ:
 (1) деревья 
 (2) DAG 
 (3) линейное представление dag'ов 
 (4) битовые шкалы 
Упражнение 9:
Номер 1
При кодировании типов с использованием битовых шкал <boolean> имеет значение:
Ответ:
 (1) 0000 
 (2) 0001 
 (3) 0010 
 (4) 0011 
Номер 2
Можно выделить следующие виды контроля типов:
Ответ:
 (1) статический 
 (2) динамический 
 (3) логический 
 (4) линейный 
Номер 3
Если контроль типов осуществляется во время трансляции программы, то - это:
Ответ:
 (1) динамический контроль типов 
 (2) статический контроль типов 
 (3) логический контроль типов 
 (4) линейный контроль типов 
Упражнение 10:
Номер 1
Если контроль типов производится во время исполнения объектной программы, то - это:
Ответ:
 (1) линейный контроль типов 
 (2) логический контроль типов 
 (3) статический контроль типов 
 (4) динамический контроль типов 
Номер 2
Эквивалентность типов бывает:
Ответ:
 (1) структурная 
 (2) именная 
 (3) естественная 
 (4) не структурная 
Номер 3
Если два типа структурно эквивалентны тогда и только тогда, когда они идентичны, то - это:
Ответ:
 (1) естественная эквивалетность типо 
 (2) именная эквивалетность типов 
 (3) структурная эквивалентность типов 
 (4) не структурная эквивалетность типо 
Упражнение 11:
Номер 1
Преобразование, при котором программист должен написать что-нибудь для того, чтобы это преобразование было выполнено называется:
Ответ:
 (1) неявным 
 (2) приведением 
 (3) явным 
 (4) назначением 
Номер 2
Промежуточный язык можно воспринимать как интерфейс между:
Ответ:
 (1) логикой и структурой программы 
 (2) лесическим и синтаксическим анализом 
 (3) внутренней и внешней частью программы 
 (4) анализом и синтезом программы 
Номер 3
Подход, в котором один входной язык проецируется сразу на множество целевых платформ с помощью единого промежуточного языка называется:
Ответ:
 (1) MSIL 
 (2) Java bytecode 
 (3) GNU RTL 
Упражнение 12:
Номер 1
Атрибутное дерево разбора является, самой распространенной формой организации:
Ответ:
 (1) внешнего представления программы 
 (2) логического представления программы 
 (3) внутреннего представления программы 
 (4) системного представления программы 
Номер 2
Выражение (a+b)*(c-d) в польской записи может быть представлено как:
Ответ:
 (1) ab-cd 
 (2) *+cd-ab 
 (3) *ab-cd+ 
 (4) *+ab-cd 
Номер 3
Низкоуровневые формализмы записи промежуточного представления программы, приближающие программу к объектному коду - это:
Ответ:
 (1) триады 
 (2) тетрады 
 (3) деревья 
 (4) DAG