[ список заданий ]
Синтаксический разбор определяет принадлежность входной цепочки заданному языку. Однако одного разбора недостаточно для генерации кода или его интерпретации. Необходим дополнительный набор действий, которые:
-
определяют смысловую нагрузку объектов анализируемой программы;
-
порождают из синтаксического представления программы (в виде цепочки символов) ее семантическую (смысловую) модель;
-
анализируют корректность использования элементов построенной семантической модели перед построением выходного представления (кода объектной машины).
Эти действия определяются как семантический анализ, заключающийся в формировании семантической модели программы.
Создание и использование имен (идентификаторов) – неотъемлемая часть написания программы на любом языке программирования. Транслятор должен запоминать вводимые пользователем имена, определять конфликты, связанные с использованием объектов, обозначенных именами, запрещать повторное определение имен в пределах единой области их существования. При этом учитывается и то, что в некоторых языках программирования допустимо использование одного и того же имени в различных контекстах в рамках единой области действия.
Цель работы
Изучить применение семантического анализа при построении и использовании таблицы имен. Подключить таблицу имен, к программе распознавателя созданного при выполнении предыдущего задания. Разобраться с особенностями синтаксически управляемого перевода.
Порядок выполнения
-
В соответствии с вариантом задания провести добавление в программу модулей, обеспечивающих работу с таблицей имен.
-
Добавить в программу распознавателя код, определяющий взаимодействие с таблицей имен.
-
Провести тестирование программы, перебрав при этом различные корректные и некорректные ситуации.
-
Оттранслировать примеры, написанные при выполнении первого задания. Проанализировать результаты работы транслятора.
Сведения, необходимые для работы, представлены в лекциях по трансляторам:
Исходные тексты распознавателя DPL с подключенной таблицей имен
Содержание отчета
-
Исходные тексты разработанной программы.
-
Тесты, используемые для проверки правильной работы программы.
-
Протоколы тестирования работы программы с таблицей имен.
[ список заданий ]
|