Реферат: Лабораторные работы по Теории вычислительных процессов и структур
С этих позиций коды лексем (дескрипторы) из конечных классов всегда одни и те же в различных программах для данного компилятора. Коды же лексем из бесконечных классов различны для разных программ и формируются всякий раз на этапе лексического анализа.
В ходе лексического анализа значения лексем из бесконечных классов помещаются в таблицы соответствующих классов. Конечность таблиц объясняет ограничения, существующие в языках программирования на длины и соответственно число используемых в программе идентификаторов и констант.
Числовые константы перед помещением их в таблицу могут переводиться из внешнего символьного во внутреннее машинное представление. Содержимое таблиц, в особенности таблицы идентификаторов, в дальнейшем пополняется на этапе семантического анализа исходной программы и используется на этапе генерации объектной программы.
В работе требуется составить программу лексического анализатора (сканер) входного текста для транслятора, которая бы
составляла таблицы и производила бы кодирование идентификаторов, разделителей и констант. Производила бы проверку правильности написания ключевых слов операторов, стандартных функций и использование служебных символов.
Производила бы отображение теста программы с комментариями и исключала бы их из текста, подлежащего трансляции. Отображала
дескрипторный текст.
2. Задание по работе.
2.1. Получить вариант задания у преподавателя.
2.2. В соответствии с выданным вариантом выполнить следующее:
2.2.1. Составит техническое задание (ТЗ) на разработку программы сканера, производящей лексический анализ произвольных текстов в пределах установленного алфавита.
2.2.2. Согласовать ТЗ с преподавателем.
2.2.3. Разработать программу-сканер на языках
Паскаль, С++ или в интегрированных средах по собственному усмотрению.
2.2.4. Провести тестирование программы, особенно для всех случаев выдачи пользователю сообщений об ошибках.
2.2.5. Составить отчёт по работе и приложить к нему ТЗ.
3. Варианты заданий.
Вариант задания включает номер, состоящий из трёх цифр.
Первая цифра означает выбор алфавита входного языка, вторая цифра означает выбор заданных ключевых слов входного языка и третья цифра означает выбор заданных библиотечных функций.
Таблица 1. Алфавит входного языка.
-
№ Алфавит 1 Латинский, строчные буквы 2 Латинский, заглавные буквы 3 Кириллица, строчные буквы 4 Кириллица, заглавные буквы 5 Латинский, строчные + заглавные 6 Кириллица, строчные + заглавные
Таблица 2. Ключевые слова.
-
№ Дополнительные ключевые слова 1 Описание циклов, массивов 2 Описание операторов перехода, структуры типа switch
3 Описание безусловных переходов,
описание функций
Таблица 3. Библиотечные функции.
-
№ Стандартные функции 1 sin, cos, tan, exp 2
sqrt, log, ln, nearby 3 abs, fact, code, sign
Например, 1-2-3 означает, что из первой таблицы необходимо выбрать первую строку, из второй таблицы - вторую строку, из третьей таблицы - третью строку.
Для всех вариантов задаётся общая часть в которую входит следующее. Ключевые слова обозначающие начало и конец программы, описание типа, ввод и вывод, присваивание.
Разделители : +, -, *, :, _, /, (, ), {, }, =, <, >, [, ], ;, “, ‘ , ‘,’ и про-
бел.
Идентификаторы должны начинаться с буквы, не включать в себя разделители, количество позиций не должно превышать 14.