Реферат: Лабораторные работы по Теории вычислительных процессов и структур
4. В чём состоят задачи лексического анализа?
5. Дайте определение метаязыка.
6. Исходные данные для сканера.
7. Результаты работы сканера.
8. Литература.
1. Бек Л. Введение в системное программирование. М,: Мир, 1988.
-448 с.
2. Компаниец Р.И. и др. Системное программирование.Основы
построения трансляторов.- СПб.: КОРОНА принт, 2000.-256 с.
Министерство образования Российской Федерации
Саратовский государственный технический университет
Применение конечных автоматов
в лексическом анализе
лабораторная работа для студентов
специальности ПВС по курсу « Теория
вычислительных процессов и структур»
Составил доцент кафедры ПВС
Сайкин А.И.
Саратов, 2001 г.
Введение.
Данная лабораторная работа рассчитана на четыре аудиторных часа и ещё четыре часа для изучения материала и оформление отчёта.
Объект исследования процесс трансляции заданного языка программирования в машинные коды. Цель изучения состоит в применении математического аппарата конечных автоматов при лексическом анализе. Лексический анализ это начальный этап трансляции, за которым следуют грамматический разбор и этап генерации машинного кода. Наиболее трудоёмким по затратам машинного времени является этап лексического анализа. Для сокращения общего времени трансляции и упрощения лексического анализа целесообразно использовать математический аппарат конечных автоматов. Метод исследований как раз и базируется на его применении.
Выполнение работы производится в дисплейном классе. Характер исследований состоит в сочетании результатов, полученных на ПЭВМ с их аналитической обработкой студентом.
1. Содержание работы.
Разработка лексического анализатора выполняется достаточно просто, если воспользоваться хорошо разработанным математическим аппаратом - теорией регулярных языков и конечных автоматов. В рамках этой теории классы однотипных лексем (идентификаторы, константы и т.д.) рассматриваются как формальные языки (язык идентификатороф, язык констант и т.д.), множество предложений которых описывается с помощью соответствующей порождающей грамматики. При этом языки эти настолько просты, что они порождаются простейшей из грамматик - регулярной грамматикой. Построенная регулярная грамматика является источником, по которому в дальнейшем конструируется вычислительное устройство, реализующее функцию распознаваний предложений языка, порождаемого данной грамматикой. Для регулярных языков таким устройством является конечный автомат.
Порождающая грамматика G(N,T,P,S), продукции которой имеют вид АаВ или Св, где А,В,С - нетерминальные символы; а,в- терминальные символы, называется регулярной или автоматной. Язык L(G), порождаемый регулярной грамматикой называется регулярным или автоматным или языком с конечным числом состояний. Основной задачей лексического анализа является распознавание лексических единиц. Математической моделью процесса распознавания регулярного языка является вычислительное устройство, которое называется конечным автоматом. Термин «конечный» подчёркивает то, что вычислительное устройство имеет фиксированный конечный объём памяти и обрабатывает последовательность входных символов, принадлежащих некоторому конечному множеству. Существуют различные типы конечных автоматов, если результатом работы является лишь указание на то, что входная последовательность символов допустима или нет, то такой конечный автомат называется конечным распознавателем.
В данной лабораторной работе необходимо построить конечные автоматы для каждого типа распознаваемых лексем. Проводя лексический анализ, конечные автоматы должны сообщать о допустимости или не допустимости конкретных лексем. Программа лексического анализатора должна распечатывать входной текст и выдавать сообщения обо всех недопустимых лексемах. Hеобходимо также составить техническое задание на разрабатываемую программу лексического анализатора.
2. Варианты заданий.
Вариант задания по второй лабораторной работе совпадает с вариантом задания по первой лабораторной работе, т.е. входным для лексического анализатора будет текст программы, составленный из заданного алфавита и заданных ключевых слов в соответствие с вариантом задания первой лабораторной работы.
3. Методические указания.
Любая регулярная грамматика G=(N,T,P,S) может быть представлена направленным графом, с помеченными узлами и дугами. Каждый узел помечаем символом из N. Кроме одного конечного узла, который помечаем символом #. Согласно принятым соглашениям, узел, соответствующий начальному символу S помечаем стрелкой, а конечный изображаем в виде прямоугольника. Каждая дуга графа соответствует только одной продукции заданной грамматики G.
Например, пусть регулярная грамматика G имеет следующие продукции:
SaA|bB
AaA|a
BbB|b,
тогда граф, отображающий данную грамматику G, будет иметь вид, представленный на рис.1. Путь на графе всегда соединяет начальную вершину с конечной вершиной графа. Метки, ассоциированные с дугами, составляющими этот путь, образуют некоторую строку. Множество таких строк совпадают с языком L(G). Конкретные пути на графе будут соответствовать некоторой схеме вывода. Например, SaAaaAaaaA