Скачать книгу

на ЭВМ).

      • Выводы по проделанной работе.

      Основные контрольные вопросы

      • Что такое трансляция, компиляция, транслятор, компилятор?

      • Из каких процессов состоит компиляция? Расскажите об общей структуре компилятора.

      • Какую роль выполняет лексический анализ в процессе компиляции?

      • Что такое лексема? Расскажите, какие типы лексем существуют в языках программирования.

      • Как могут быть связаны между собой лексический и синтаксический анализ?

      • Какие проблемы могут возникать при определении границ лексем в процессе лексического анализа? Как решаются эти проблемы?

      • Что такое таблица лексем? Какая информация хранится в таблице лексем?

      • В чем разница между таблицей лексем и таблицей идентификаторов?

      • Что такое грамматика? Дайте определения грамматики. Как выглядит описание грамматики в форме Бэкуса—Наура.

      • Какие классы грамматик существуют? Что такое регулярные грамматики?

      • Что такое конечный автомат? Дайте определение детерминированного и недетерминированного конечных автоматов.

      • Опишите алгоритм преобразования недетерминированного конечного автомата в детерминированный.

      • Какие проблемы необходимо решить при построении сканера на основе конечного автомата?

      • Объясните общий алгоритм функционирования лексического анализатора.

      Варианты заданий

      1. Входной язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, десятичных чисел с плавающей точкой (в обычной и логарифмической форме), знака присваивания (:=), знаков операций +, —, *, / и круглых скобок.

      2. Входной язык содержит логические выражения, разделенные символом; (точка с запятой). Логические выражения состоят из идентификаторов, констант true и false, знака присваивания (:=), знаков операций or, xor, and, not и круглых скобок.

      3. Входной язык содержит операторы условия типа if … then … else и if … then, разделенные символом; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, десятичные числа с плавающей точкой (в обычной и логарифмической форме), знак присваивания (:=).

      4. Входной язык содержит операторы цикла типа for (…; …; …) do, разделенные символом; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, десятичные числа с плавающей точкой (в обычной и логарифмической форме), знак присваивания (:=).

      5. Входной язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, римских чисел, знака присваивания (:=), знаков операций +, —, *, / и круглых скобок.

      6. Входной язык содержит логические выражения, разделенные символом; (точка с запятой). Логические выражения состоят из идентификаторов, констант 0 и 1, знака присваивания (:=), знаков операций or, xor, and, not и круглых скобок.

      7. Входной язык содержит операторы условия типа if … then … else и if … then, разделенные символом; (точка с запятой).

Скачать книгу