Задачи по программированию по курсу ЯПиМТ. Родионова Т.Е. - 26 стр.

UptoLike

Составители: 

26
функций. Найденные типы заменить мнемоническими именами. Учитывать типы данных,
созданные с помощью TYPE .
ЛАБОРАТОРНАЯ РАБОТА 4. ИЗУЧЕНИЕ ЭТАПА СИНТАКСИЧЕСКОГО
АНАЛИЗА ТРАНСЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Цель работы: изучить функции синтаксического анализатора, методы построения
контекстно-свободных грамматик, построить синтаксический анализатор для заданного
фрагмента языка программирования.
4.1. СИНТАКСИЧЕСКИЙ АНАЛИЗ
В процессе синтаксического анализа исследуется цепочка лексем и устанавливает-
ся, удовлетворяет ли она структурным условиям языка, явно сформулированным в опре-
делении синтаксиса языка. Программа, реализующая этот этап, называется синтаксиче-
ским анализатором, или парсером. Последовательность лексем рассматривается как пред-
ложения контекстно-свободного языка. На этом же этапе выявляются синтаксические
ошибки.
Функции парсера - распознать основные конструкции языка и вызвать соответст-
вующие программы интерпретации, которые будут генерировать промежуточную форму
для этих конструкций. В качестве источника входной информации используется таблица
стандартных символов. Синтаксические правила исходного языка (редукции) содержатся в
таблице редукций.
Алгоритм синтаксического анализа следующий: стек, содержащий таблицу стан-
дартных символов, сравнивается со стеком, содержащим таблицу редукций. Если сравне-
ние успешное вызывается программа интерпретации, и верхушка стека изменяется. Во
время фазы интерпретации дополняется таблица идентификаторов. Формально результа-
том этого этапа является дерево вывода, однако оно обычно не строится явно для даль-
нейших этапов компилятора достаточно последовательности примененных при разборе
правил.
4.2. КОНТЕКСТНО-СВОБОДНЫЕ ГРАММАТИКИ
Контекстно-свободные грамматики играют главную роль при формальном описании и изучении
синтаксиса языков программирования. Этому способствует то, что, с одной стороны, средствами к-с грамма-
тики удается достаточно полно описать синтаксическую структуру языков программирования, а, сдругой
стороны, достаточно хорошо разработаны алгоритмы распознавания к-сязыков, которые составляют основ-
ное содержание блока синтаксического анализатора.
Метод разбора (распознавания) является детерминированным, если при разборе
данной грамматики не требуется делать возврат. Некоторые грамматики можно разбирать
детерминировано только с помощью одного из методов разбора. Разбор цепочки означает
построение вывода и, возможно, синтаксического дерева для нее. Программу разбора на-