Главная » Файлы » Методички » Основы трансляции [ Добавить материал ]

Ввод действий в грамматику и построение синтаксического анализатора

[Скачать с сервера (74.0Kb) - бесплатно] 09.02.2009, 19:53

Цель работы – анализ построения МИ операторов языка программирования и создания синтаксического компилятора.

Содержание:

  • Задачи синтаксического анализа
  • Интерпретация конструкций языка программирования
  • Проект интерпретации арифметического выражения
  • Общий подход к интерпретации
  • Построение синтаксического анализатора
  • Порядок выполнения работы
  • Использование «Учебного компилятора» в л/р №3
  • Содержание отчета
  • Контрольные вопросы
  • ЛИТЕРАТУРА

Фрагменты из методички

Задачи синтаксического анализа

Анализ и синтез в компиляции, хотя их часто удобно рассматривать как отдельные процессы, во многих случаях происходят параллельно. Это совершенно очевидно для однопроходного компилятора, но и во многопроходных компиляторах генерирование объектного или какого-либо промежуточного кода большей частью осуществляется одновременно с синтаксическим анализом. Это происходит потому, что как только синтаксический анализатор распознает присваивание, он, естественно, выдаст код для присваивания в данной точке.

Таким образом, компилятор на этапе синтаксического анализа решает две задачи:

  • распознавание синтаксических единиц программы и проверка их правильности;
  • интерпретация конструкций языка – перевод в промежуточную форму в виде матрицы интерпретации ( МИ).

Для решения первой задачи необходимо выявить в лексической свертке программы, приходящей на синтаксический анализ, структуры вхождений лексем и понятий и проверить, удовлетворяет ли эта структура синтаксису языка. Синтаксическая структура программы показывает существующие в ней связи между соответствующими частями и тем самым помогает вскрывать смысл программы. Так, рассматривая арифметическое выражение А+ В*С и отмечая скобками вхождение понятий, мы приходим к его структуре А+ (В*С) в которой явно показывается, какие части арифметического выражения связаны знаком плюс, а какие – знаком умножения. Если бы соответствующая структура имела бы вид (( А + В ) * С), то арифметическое выражение имело бы совершенно другой смысл (семантику). Результатом решения первой задачи служит построение дерева разбора транслируемой программы. 

Решение второй задачи часто называют семантическим или контекстным анализом. Как правило, он входит в состав синтаксического анализа, но может выделяться и в самостоятельную часть в некоторых случаях ( при однопроходных компиляторов ).

Интерпретация конструкций языка программирования

Под интерпретацией конструкций языка программирования компилятором понимается передача смысла (семантики) конструкции последовательностью команд интерпретации – матрицей интерпретации (МИ). Команды интерпретации можно считать символическими командами некоторой условной вычислительной машины. Среди команд интерпретации преобладают команды, близкие по смыслу к машинным: выполнение арифметических и логических операций, операций сравнения, условных и безусловных переходов, обращения к подпрограмме и т.п. Основное требование к таким командам – очевидность реализации на машинном языке реальной ЭВМ. Другую группу образуют вспомогательные команды интерпретации – разместить метку, начало и конец программы или подпрограммы и т.д. Их основное назначение – сохранение особенностей и общей структуры программы.

Не все конструкции языка программирования отображаются прямо в МИ.

И т.д. (остальное смотрите в приложенном файле).

Похожие материалы:

Добавил: COBA (09.02.2009) | Категория: Основы трансляции
Просмотров: 2241 | Загрузок: 563 | Рейтинг: 0.0/0 |
Теги: грамматика, синтаксис, основы трансляции
Комментарии (0)

Имя *:
Email *:
Код *: