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