- •Теория автоматов и формальных языков (бакалавриат и спец.)
- •Методический пример
- •3) Графическое описание цикла (различные варианты). Графическое описание цикла, близкое к программированию. Перевод конструкций б/с в операторы инструментального языка программирования.
- •Правая часть
- •1) Дерево разбора – основа построения транслирующего средства.
- •2) Общие требования при построении транслятора.
Теория автоматов и формальных языков (бакалавриат и спец.)
Лекция 1. Лексический анализатор.
2) Лексический анализатор. Назначение, способы реализации. Первая часть транслятора. Описание лексики применительно к реализации транслирующих средств. В каких случаях при реализации транслирующих средств без него можно обойтись.
Вход, выход (на входе тексты на исходном проблемно-ориентированном языке; на выходе – лексемы). Анализирующая и генерирующая части (анализирующая часть – проверка всех лексических ошибок; генерирующая часть – формирование лексем). Избавление входного текста от комментария. Необходимость перехода от смешенного буквенно-цифрового исходного текста к однородной цифровой информации. Неудобство работы со словами разной длины. Лексемы. Два правила лексемы: одинаковая длина и однородная цифровая информация.
текст на входном языке
Лексический
анализатор
набор лексемм
Лексема может, например, состоять из двух байтов. Первая часть лексемы показывает «Тип» данной части текста, например:
Тип
Содержание
2 – целое число
3 – специальный символ и т.д.
Во второй части лексемы «Содержание», например, если это служебное слово, то 1 - “Begin”, 2 - “End” и т.п.
Лексические ошибки: четыре наиболее распространенные (неправильная буква в слове, отсутствует одна буква, одна лишняя буква, две рядом стоящие буквы переставлены в тексте. Возможность их исправления.
Лекция 2. Синтаксический анализатор.
1) Синтаксический анализатор. Назначение, способы реализации. Вход и выход (на входе – лексемы; на выходе – промежуточные таблицы). Анализирующая и генерирующая части (анализирующая часть проверяет все синтаксические ошибки; генерирующая часть – строит промежуточные таблицы). Обоснование максимального использования ветви ИНАЧЕ в качестве ошибочной.
набор лексемм
Синтаксический
анализатор
промежуточные таблицы
2) Синтаксически-управляемый перевод. Примеры (соответствий блок-схем исходным предложениям БНФ). Соответствие числа предложений БНФ числу б/с и, соответственно, предопределение структуры транслятора видом описания проблемно-ориентированного входного языка программирования, заданного предложениями БНФ. Контекстно-свободные грамматики. Контекстные ограничения.
Пример:
Язык = “Начало” Множества Операторы “Конец”
Множества = Множ “;” . . . Множ.
Операторы = Опер . . . Опер
Язык Множества Операторы
Вход
Вход
Вход
Начало
Мно-жества
Опер
Множ
Опера-
раторы
