Семантические действия при синтаксическом разборе. Построение синтаксического дерева программы — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая страница: «===Введение=== ===Файл SimpleYacc.y=== ===Комментарии к файлу SimpleYacc.y=== ===Файл SimpleLex.lex === ===Комментар…»)
 
(Введение)
Строка 1: Строка 1:
 
===Введение===
 
===Введение===
 +
'''Синтаксически управляемая трансляция''' состоит в том, что при разборе текста программы на каждое распознанное правило грамматики выполняется некоторое действие.
 +
 +
Данные действия придают смысл трансляции (переводу) и поэтому мы называем их семантическими.
 +
 +
Как правило, при трансляции программа переводится в другую форму, более приспособленную для анализа, дальнейших преобразований и генерации кода.
 +
 +
Мы будем переводить текст программы в так называемое '''синтаксическое дерево'''. Если синтаксическое дерево построено, то программа синтаксически правильная, и ее можно подвергать дальнейшей обработке.
 +
 +
В синтаксическое дерево включаются узлы, соответствующие всем синтаксическим конструкциям языка. Атрибутами этих узлов являются их существенные характеристики.
 +
 +
Например, для узла оператора присваивания AssignNode такими атрибутами являются IdNode - идентификатор в левой части оператора присваивания и ExprNode - выражение в правой части оператора присваивания.
 +
 +
Синтаксическое дерево программы (или '''AST''' - '''Abstract Syntax Tree''') отличается от дерева разбора тем, что в него не добавляются несущественные атрибуты - например, ключевые слова.
  
 
===Файл SimpleYacc.y===
 
===Файл SimpleYacc.y===

Версия 15:04, 17 августа 2014

Введение

Синтаксически управляемая трансляция состоит в том, что при разборе текста программы на каждое распознанное правило грамматики выполняется некоторое действие.

Данные действия придают смысл трансляции (переводу) и поэтому мы называем их семантическими.

Как правило, при трансляции программа переводится в другую форму, более приспособленную для анализа, дальнейших преобразований и генерации кода.

Мы будем переводить текст программы в так называемое синтаксическое дерево. Если синтаксическое дерево построено, то программа синтаксически правильная, и ее можно подвергать дальнейшей обработке.

В синтаксическое дерево включаются узлы, соответствующие всем синтаксическим конструкциям языка. Атрибутами этих узлов являются их существенные характеристики.

Например, для узла оператора присваивания AssignNode такими атрибутами являются IdNode - идентификатор в левой части оператора присваивания и ExprNode - выражение в правой части оператора присваивания.

Синтаксическое дерево программы (или AST - Abstract Syntax Tree) отличается от дерева разбора тем, что в него не добавляются несущественные атрибуты - например, ключевые слова.

Файл SimpleYacc.y

Комментарии к файлу SimpleYacc.y

Файл SimpleLex.lex

Комментарии к файлу SimpleLex.lex

Основные задания

Дополнительные задания