Методы разработки компиляторов. Атрибутные грамматики

Содержание

Слайд 2

Атрибутные грамматики

Курс «Методы разработки компиляторов»

Атрибутные грамматики Курс «Методы разработки компиляторов»

Слайд 3

Определения

Определение. Атрибутная грамматика – расширение КС-грамматики, при котором каждому символу (терминалу, нетерминалу)

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

Курс «Методы разработки компиляторов»

Слайд 4

Пример

 

Курс «Методы разработки компиляторов»

Пример Курс «Методы разработки компиляторов»

Слайд 5

Интерпретатор по атрибутной грамматике

 

Курс «Методы разработки компиляторов»

Интерпретатор по атрибутной грамматике Курс «Методы разработки компиляторов»

Слайд 6

Синтезированные атрибуты

 

Курс «Методы разработки компиляторов»

Синтезированные атрибуты Курс «Методы разработки компиляторов»

Слайд 7

Унаследованные атрибуты

 

Курс «Методы разработки компиляторов»

Унаследованные атрибуты Курс «Методы разработки компиляторов»

Слайд 8

Пример 2

Курс «Методы разработки компиляторов»

 

Пример 2 Курс «Методы разработки компиляторов»

Слайд 9

Пример 2 – AST-дерево и дерево разбора

 

Курс «Методы разработки компиляторов»

AST-дерево и дерево

Пример 2 – AST-дерево и дерево разбора Курс «Методы разработки компиляторов» AST-дерево и дерево вывода
вывода

Слайд 10

Пример 2 – интерпретатор

После построения AST-дерева добавим к каждому узлу метод eval()

Пример 2 – интерпретатор После построения AST-дерева добавим к каждому узлу метод
для вычисления результата поддерева

Курс «Методы разработки компиляторов»

Затем вызовем eval() для корня дерева
Данный подход лучше первого интерпретатора тем, что
Вначале строится дерево и проверяются все ошибки (компилятор в дерево)
Можно запускать программу с различными исходными данными без перекомпиляции (это быстрее)

Слайд 11

Пример 3. Заполнение таблицы символов по описанию переменных

 

Курс «Методы разработки компиляторов»

Пример 3. Заполнение таблицы символов по описанию переменных Курс «Методы разработки компиляторов»

Слайд 12

Пример 3. Заполнение таблицы символов по описанию переменных

 

Курс «Методы разработки компиляторов»

Пример 3. Заполнение таблицы символов по описанию переменных Курс «Методы разработки компиляторов»

Слайд 13

Пример 3 – дерево разбора

 

Курс «Методы разработки компиляторов»

Пример 3 – дерево разбора Курс «Методы разработки компиляторов»

Слайд 14

Вопросы

В каком порядке вычислять атрибуты?
Всегда ли существует порядок, в котором можно вычислить

Вопросы В каком порядке вычислять атрибуты? Всегда ли существует порядок, в котором
все атрибуты?
Можно ли предложить один алгоритм для всех деревьев разбора?

Курс «Методы разработки компиляторов»

Слайд 15

Определения, утверждения

 

Курс «Методы разработки компиляторов»

Определения, утверждения Курс «Методы разработки компиляторов»

Слайд 16

Пример 4. Грамматика для представления рациональных двоичных чисел

 

Курс «Методы разработки компиляторов»

Пример 4. Грамматика для представления рациональных двоичных чисел Курс «Методы разработки компиляторов»

Слайд 17

Пример 4. Грамматика 2 для представления рациональных двоичных чисел

 

Курс «Методы разработки компиляторов»

Пример 4. Грамматика 2 для представления рациональных двоичных чисел Курс «Методы разработки компиляторов»

Слайд 18

Пример 4. Грамматика 2 для представления рациональных двоичных чисел

 

Курс «Методы разработки компиляторов»

Пример 4. Грамматика 2 для представления рациональных двоичных чисел Курс «Методы разработки компиляторов»

Слайд 19

Пример 4. Дерево разбора и граф зависимостей для 101.01

Курс «Методы разработки компиляторов»

Выводы

Пример 4. Дерево разбора и граф зависимостей для 101.01 Курс «Методы разработки компиляторов» Выводы - ?
- ?

Слайд 20

Пример 5. Символьное дифференцирование

 

Курс «Методы разработки компиляторов»

Пример 5. Символьное дифференцирование Курс «Методы разработки компиляторов»

Слайд 21

Пример 5. Символьное дифференцирование (2)

 

Курс «Методы разработки компиляторов»

Пример 5. Символьное дифференцирование (2) Курс «Методы разработки компиляторов»

Слайд 22

S-атрибутные и L-атрибутные грамматики

 

Курс «Методы разработки компиляторов»

S-атрибутные и L-атрибутные грамматики Курс «Методы разработки компиляторов»

Слайд 23

Порядок вычислений в L-атрибутной грамматике

 

Курс «Методы разработки компиляторов»

Порядок вычислений в L-атрибутной грамматике Курс «Методы разработки компиляторов»

Слайд 24

Практический пример 34 + 23

 

Курс «Методы разработки компиляторов»

Практический пример 34 + 23 Курс «Методы разработки компиляторов»

Слайд 25

Калькулятор для нелеворекурсивной грамматики

 

Курс «Методы разработки компиляторов»

Калькулятор для нелеворекурсивной грамматики Курс «Методы разработки компиляторов»

Слайд 26

 

 

Курс «Методы разработки компиляторов»

Курс «Методы разработки компиляторов»

Слайд 27

Калькулятор для нелеворекурсивной грамматики (3)

Граф зависимости атрибутов

Курс «Методы разработки компиляторов»

 

Калькулятор для нелеворекурсивной грамматики (3) Граф зависимости атрибутов Курс «Методы разработки компиляторов»

Слайд 28

Построитель AST-дерева для нелеворекурсивной грамматики 3 + 4 + 5

Курс «Методы разработки

Построитель AST-дерева для нелеворекурсивной грамматики 3 + 4 + 5 Курс «Методы разработки компиляторов»
компиляторов»

Слайд 29

Граф зависимостей для a - 4 + c

Курс «Методы разработки компиляторов»

Граф зависимостей для a - 4 + c Курс «Методы разработки компиляторов»

Слайд 30

В каком порядке вычислять атрибуты

 

Курс «Методы разработки компиляторов»

В каком порядке вычислять атрибуты Курс «Методы разработки компиляторов»
Имя файла: Методы-разработки-компиляторов.-Атрибутные-грамматики.pptx
Количество просмотров: 36
Количество скачиваний: 0