Главная страница

Практическая работа №3. Лексический анализатор. 3 Лексический анализатор. Практическая работа 3. Лексический анализатор Задание на практическую работу


Скачать 19.87 Kb.
НазваниеПрактическая работа 3. Лексический анализатор Задание на практическую работу
АнкорПрактическая работа №3. Лексический анализатор
Дата23.11.2021
Размер19.87 Kb.
Формат файлаdocx
Имя файла3 Лексический анализатор.docx
ТипПрактическая работа
#280346

Практическая работа №3. Лексический анализатор
Задание на практическую работу
Для выполнения лабораторной работы необходимо:
Написать программу, которая выполняет лексический анализ входного текста в соответствии с заданием и порождает таблицу лексем с указанием их типов. Программа должна выдавать сообщения о наличии во входном тексте ошибок, которые могут быть обнаружены на этапе лексического анализа. Можно написать собственное оконное приложение для лексического анализа, либо с помощью Flex. Второй вариант предпочтительнее.

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


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




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




  1. Входной язык содержит операторы условия if … then else и if then, разделённые символом ; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, шестнадцатеричные числа, знак присваивания (:=). Шестнадцатеричными числами считать последовательность цифр и символов a, b, c, d, e, f, начинающуюся с цифры (например, 89, 45ac, 0abc).




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




  1. Входной язык содержит операторы цикла while (…) … done, разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, десятичные числа с плавающей точкой (в обычной и экспоненциальной форме), знак присваивания (:=).




  1. Входной язык содержит операторы цикла do … while (…), разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, римские числа, знак присваивания (:=). Римскими считать числа, записанные большими буквами X, V и I.




  1. Входной язык содержит арифметические выражения, разделённые символом ; (точка с запятой). Арифметические выражения состоят из идентификаторов, римских чисел, знака присваивания (:=), знаков операций +, –, *, / и круглых скобок. Римскими считать числа, записанные большими буквами X, V и I.




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




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




  1. Входной язык содержит операторы цикла for (…; …; …) do , разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, шестнадцатеричные числа, знак присваивания (:=). Шестнадцатеричными числами считать последовательность цифр и символов a, b, c, d, e, f, начинающуюся с цифры (например, 89, 45ac, 0abc).




  1. Входной язык содержит операторы цикла while (…) … done, разделённые символом ; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, строковые константы (последовательность символов в двойных кавычках), знак присваивания (:=).




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




  1. Входной язык содержит арифметические выражения, разделённые символом ; (точка с запятой). Арифметические выражения состоят из идентификаторов, шестнадцатеричных чисел, знака присваивания (:=), знаков операций +, –, *, / и круглых скобок. Шестнадцатеричными числами считать последовательность цифр и символов a, b, c, d, e, f, начинающуюся с цифры (например, 89, 45ac, 0abc)..



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




  1. Входной язык содержит операторы условия if … then else и if then, разделённые символом ; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, римские числа, знак присваивания (:=). Римскими считать числа, записанные большими буквами X, V и I.




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




  1. Входной язык содержит операторы цикла do … while (…), разделённые символом ; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <=, =>, =, строковые константы (последовательность сим-волов в двойных кавычках), знак присваивания (:=).




  1. Входной язык содержит операторы цикла while (…) … done, разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, римские числа, знак присваивания (:=). Римскими считать числа, записанные большими буквами X, V и I.




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




  1. Входной язык содержит логические выражения, разделённые символом ; (точка с запятой). Логические выражения состоят из идентификаторов, шестнадцатеричных чисел, знака присваивания (:=), операций or, xor, and, not и круглых скобок. Шестнадцатеричными числами считать последова-тельность цифр и символов a, b, c, d, e, f, начинающуюся с цифры (напри-

мер, 89, 45ac, 0abc).


  1. Входной язык содержит операторы цикла for (…; …; …) do , разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, римские числа, знак присваивания (:=). Римскими считать числа, записанные большими буквами X, V и I.




  1. Входной язык содержит операторы цикла do … while (…), разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <=, =>, =, шестнадцатеричные числа, знак присваивания (:=). Шестнадцатеричными числами считать последовательность цифр и символов a, b, c, d, e, f, начинающуюся с цифры (например, 89, 45ac, 0abc).




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




  1. Входной язык содержит операторы цикла while (…) … done, разделённые символом ; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, шестнадцатеричные числа, знак присваивания (:=). Шестнадцатеричными числами считать последовательность цифр и символов a, b, c, d, e, f, начинающуюся с цифры (например, 89, 45ac, 0abc).



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



Контрольные вопросы


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

  2. Как связаны лексический и синтаксический анализ?




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




  1. Чем отличаются таблица лексем и таблица идентификаторов? В какую из этих таблиц лексический анализатор не должен помещать ключевые слова, разделители и знаки операций?


написать администратору сайта