Главная / Программирование /
Разработка компиляторов / Тест 5
Разработка компиляторов - тест 5
Упражнение 1:
Номер 1
Во время лексического анализа программа разбивается на:
Ответ:
 (1) последовательность строк 
 (2) лексемы 
 (3) блоки 
 (4) последовательность секций 
Номер 2
Множество лексем разбивается:
Ответ:
 (1) на непересекающиеся подмножества 
 (2) на лексические классы 
 (3) на пересекающиеся подмножества 
 (4) на специальные классы 
Номер 3
Во время синтаксического анализа все идентификаторы можно считать:
Ответ:
 (1) одинаковыми 
 (2) разными 
 (3) простыми 
 (4) сложными 
Упражнение 2:
Номер 1
В большинстве языков программирования имеются следующие лексические классы:
Ответ:
 (1) ключевые слова 
 (2) идентификаторы 
 (3) строковые литералы 
 (4) числовые константы 
Номер 2
В следующем операторе языка Pascalconst pi = 3.1416;
";" представляет лексический класс:
Ответ:
 (1) Number_LC
 
 (2) Relation_LC
 
 (3) Identifier_LC
 
 (4) Const_LC
 
 (5) Semicolon_LC
 
Номер 3
В следующем операторе языка Pascalconst pi = 3.1416;
"pi" представляет лексический класс:
Ответ:
 (1) Identifier_LC
 
 (2) Number_LC
 
 (3) Semicolon_LC
 
 (4) Const_LC
 
Упражнение 3:
Номер 1
Основной тенденцией современных языков программирования является:
Ответ:
 (1) свободное размещение текста программы 
 (2) открытое размещение текста программы 
 (3) закрытое размещение текста программы 
Номер 2
В Алголе 68 и Фортране, пробелы являются значащими только:
Ответ:
 (1) в логических значениях 
 (2) в строковых литералах 
 (3) в массивах 
 (4) в структурах 
Номер 3
Какие особенности некоторых языков могут существенно затруднять лексический анализ:
Ответ:
 (1) фиксированный формат программы  
 (2) трактовка пробела как незначащего символа  
 (3) использование ключевых слов как идентификаторов  
Упражнение 4:
Номер 1
Сколько атрибутов обычно имеет лексема:
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
 (4) 3 
Номер 2
Если определен тип, соответствующий указателю в эту таблицу - ReprInd
, и тип, служащий для представления позиции в исходном файле - FilePos
, то можно полностью определить лексему следующим образом:
Ответ:
 (1) struct LEXEME {
ushort LexClass;
ReprInd ReprTabPtr;
FilePos beg;
}
 
 (2) struct LEXEME {
ushort LexClass;
ReprInd ReprTabPtr;
FilePos beg;
FilePos end;
FilePos out;
}
 
 (3) struct LEXEME {
ReprInd ReprTabPtr;
FilePos beg;
FilePos end;
}
 
 (4) struct LEXEME {
ushort LexClass;
ReprInd ReprTabPtr;
FilePos beg;
FilePos end;
}
 
Номер 3
Процесс замены идентификаторов на ссылку в таблицу представлений называется:
Ответ:
 (1) свертыванием 
 (2) подменой 
 (3) подстановкой 
 (4) разветыванием 
Упражнение 5:
Номер 1
Простейший вид таблицы представлений – это:
Ответ:
 (1) массив указателей на индексы 
 (2) массив указателей на числа 
 (3) массив указателей на строки 
 (4) массив указателей на символы 
Номер 2
Какой специальный класс содержит система классов .NET, с помощью которого легко реализовать функциональность хэш-таблиц:
Ответ:
 (1) TableFunc
 
 (2) Hash
 
 (3) TableHash
 
 (4) HashTable
 
Номер 3
Для настройки хэш-таблицы на необходимый тип данных нужно реализовать методы:
Ответ:
 (1) GetHashCode
 
 (2) GetHash
 
 (3) Equals
 
 (4) HashFunc
 
Упражнение 6:
Номер 1
На практике чаще используется эквивалентный праволинейным грамматикам механизм:
Ответ:
 (1) встроенных анализаторов 
 (2) регулярных выражений 
 (3) хэш-функций 
 (4) хэш-массивов 
Номер 2
Пустое множество и множество, состоящее только из пустой строки, являются:
Ответ:
 (1) регулярными выражениями 
 (2) хэш-функцией 
 (3) таблицами представлений 
Номер 3
Для любых регулярных выражений P
и Q
следующие множества также являются регулярными выражениями:
Ответ:
 (1) PQ
 
 (2) P|Q
 
 (3) P-Q
 
 (4) P+Q
 
Упражнение 7:
Номер 1
По имеющемуся регулярному выражению легко написать:
Ответ:
 (1) синтаксический анализатор вручную 
 (2) стандартный анализатор вручную 
 (3) лексический анализатор вручную 
 (4) семантический анализатор вручную 
Номер 2
Lex
, состоит из:
Ответ:
 (1) Lex-языка
 
 (2) Lex-компилятора
 
 (3) Lex-интерпретатора
 
 (4) Lex-транслятора
 
Номер 3
Спецификации лексического анализатора на языке Lex
подготавливаются в виде программы:
Ответ:
 (1) lex.l
 
 (2) lex
 
 (3) .lex
 
 (4) lex.1x
 
Упражнение 8:
Номер 1
В Lex
действия, связанные с реакцией на встреченные регулярные выражения, пишутся непосредственно на:
Ответ:
 (1) C 
 (2) C++ 
 (3) C# 
 (4) Pascal 
Номер 2
Большинство средств для создания лексических анализаторов основывается:
Ответ:
 (1) на специальных функциях 
 (2) на регулярных выражениях 
 (3) на таблицах представлений 
 (4) на хэш-функциях 
Номер 3
Общая схема работы Lex
заключается в преобразовании Lex-программы
:
Ответ:
 (1) в объектную программу на целевом языке 
 (2) в открытую программу на целевом языке 
 (3) в регулярные выражения 
 (4) в исходный код 
Упражнение 9:
Номер 1
Lex-программа
состоит из следующих частей:
Ответ:
 (1) описаний 
 (2) правил трансляции 
 (3) методов 
 (4) процедур 
Номер 2
В Lex-программе
секция описаний включает:
Ответ:
 (1) описания переменных 
 (2) констант 
 (3) определения макросимволов 
 (4) регулярных определений 
Номер 3
В Lex-программе
функция yywrap()
определяет:
Ответ:
 (1) что делать при достижении автоматом конца выходного файла 
 (2) что делать при достижении автоматом конца входного файла 
 (3) что делать при достижении автоматом конца строки 
 (4) что делать при достижении автоматом конца инструкции 
Упражнение 10:
Номер 1
В регулярных выражениях в Lex-программе
специальные символы записываются после префикса:
Ответ:
 (1) "/"
 
 (2) "$"
 
 (3) "\"
 
 (4) "#"
 
Номер 2
В регулярных выражениях в Lex-программе
допустимы следующие способы кодирования символа а
:
Ответ:
 (1) a
 
 (2) "a"
 
 (3) /a
 
 (4) \a
 
Номер 3
Следующая грамматика регулярного выражения:<p><p>
в Lex-программе
обозначает:
Ответ:
 (1) повторение m раз 
 (2) необязательный фрагмент 
 (3) любое из выражений 
 (4) фрагмент в конце строки 
 (5) фрагмент в начале строки 
 (6) конкатенацию 
Упражнение 11:
Номер 1
В Lex-программе
регулярному выражению<
соответствует следующий лексический класс:
Ответ:
 (1) relop_LC 
 (2) Identifier_LC 
 (3) if_LC 
 (4) else_LC 
Номер 2
В Lex'е указателем на отождествленную цепочку символов, оканчивающуюся нулем является:
Ответ:
 (1) yyleng
 
 (2) yytext
 
 (3) yymore()
 
 (4) yylval
 
Номер 3
В Lex'е вернуть последние n
символов цепочки обратно во входной поток можно с помощью:
Ответ:
 (1) yyless(n)
 
 (2) yyunput(c)
 
 (3) yyleng
 
 (4) yytext
 
Упражнение 12:
Номер 1
При лексическом анализе программ на C# после прочтения символа > необходимо прочитать:
Ответ:
 (1) последующие символы 
 (2) предыдущие символы 
 (3) специальные символы 
Номер 2
В .NET использовать механизм регулярных выражений можно с помощью следующих клссов:
Ответ:
 (1) Regex 
 (2) Match 
 (3) Text 
 (4) RegularExpressions 
Номер 3
В данном примере:void DumpHrefs(String inputString)
{
Regex r;
Match m;
r = new Regex("href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))",
RegexOptions.IgnoreCase|RegexOptions.Compiled);
for (m = r.Match(inputString); m.Success; m = m.NextMatch())
{
Console.WriteLine("Found href " + m.Groups[1] + " at "
+ m.Groups[1].Index);
}
}
класс Regex
:
Ответ:
 (1) обрабатывает результаты применения регулярного выражения 
 (2) задает регулярное выражение для поиска 
 (3) применяет результаты регулярного выражения