Синтаксический анализ с использованием магазинных автоматов . <...> Построение эквивалентного МП-автомата для заданной КС-грамматики (65). <...> Синтаксический анализатор производит группировку
этих смысловых единиц в отдельные фразы, строя их иерархическое
представление, и проверяет соответствие входных данных синтаксису
исходного языка. <...> На этом рисунке также выделены два важных
6
Оглавление
Исходная программа
Лексический
анализ
Таблица
имен
Синтаксический
анализ
Семантический
анализ
119 <...> Атрибутные грамматики
Обработка
ошибок
Генерация и
оптимизация кода
Целевая программа
компонента компилятора — таблица имен, где содержится вспомогательная информация об идентификаторах, и обработчик ошибок, который осуществляет обнаружение и вывод сообщений об ошибках в
исходной программе. <...> Например,
на стадии лексического анализа используются регулярные выражения и
конечные автоматы, а для стадии синтаксического анализа подходящим
средством являются контекстно-свободные грамматики. <...> Если нетерминал находится в левой части исходного выражения, происходит вызов команды STORE, которая сохраняет
в переменной значение из регистра сумматора. <...> Основы теории перевода
совершать следующие команды (указание переменной для каждой команды начинается со знака $):
Команда
LOAD $a;
STORE $a;
ADD $a;
Семантика
r:=a
a:=r
r:=r+a
Тогда следующая атрибутная грамматика производит перевод арифметических выражений с операцией сложения в корректную последовательность команд для этого вычислителя (нетерминал E ′ здесь введен
для того, чтобы можно было различать атрибут нетерминала E в левой
и правой частях продукции):
S <...> <id>
E.level:=1
T.side:=left
S.code:=E.code "; " T.code ";"
E’.level:=E.level+1
T.side:=right
E.code:=E’.code "; "
"STORE $E[" E.level "]; "
T.code "; ADD $E[" E.level "]"
T.side:=right
E.code:=T.code
if (T.side==right) then
T.code:="LOAD $" id.name
else
T.code:="STORE $" id.name
В этой грамматике нетерминал S имеет единственный атрибут code,
где по окончании анотирования дерева разбора будет содержаться код
для рассматриваемого вычислителя, который <...>
Технологии_трансляции_учебное_пособие.pdf
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Ярославский государственный университет им. П.Г. Демидова
В.А. Соколов, Д.Ю. Чалый
Технологии трансляции
Учебное пособие
Рекомендовано
Научно-методическим советом университета для студентов,
обучающихся по специальности Математическое обеспечение и
администрирование информационных систем
Ярославль 2008
Стр.1