Что означают S-attributed и грамматика L-attributed?

Я читаю книгу компилятора и отчасти смущенный, когда она говорит, что "S-атрибутной-грамматикой является также L-атрибутная-грамматика". Не мог понять. Может кто-то прояснять (пример должен быть ярким).Спасибо.

11
задан hobodave 16 March 2010 в 22:19
поделиться

1 ответ

L-атрибутивная грамматика

L-атрибутивные грамматики - это особый тип атрибутивных грамматик. Они позволяют оценивать атрибуты за один проход слева направо по абстрактному синтаксическому дереву. В результате, оценка атрибутов в L-атрибутных грамматиках может быть удобно включена в нисходящий синтаксический разбор. Многие языки программирования являются L-атрибутивными. Специальные типы компиляторов, узкие компиляторы, основаны на некоторой форме L-атрибутированной грамматики. Они сравнимы с S-атрибутированными грамматиками. Используются для синтеза кода.

S-атрибутивная грамматика

S-атрибутивные грамматики - это класс атрибутивных грамматик, характеризующихся отсутствием наследуемых атрибутов. Наследуемые атрибуты, которые должны передаваться от родительских узлов к дочерним узлам абстрактного синтаксического дерева во время семантического анализа в процессе разбора, являются проблемой для синтаксического анализа снизу вверх, поскольку при синтаксическом анализе снизу вверх родительские узлы абстрактного синтаксического дерева создаются после создания всех их дочерних узлов. Оценка атрибутов в S-атрибутивных грамматиках может быть удобно включена как в нисходящий, так и в восходящий синтаксический разбор. Yacc основан на S-атрибутивном подходе.

Любая S-атрибутивная грамматика также является L-атрибутивной грамматикой.

В L-атрибутивных грамматиках оценка атрибутов может быть выполнена при обходе слева направо. Поскольку в S-атрибутивных грамматиках атрибуты не наследуются, это не мешает вам поступать именно так. Поэтому можно сказать, что S-атрибутивная грамматика соответствует этой характеристике L-грамматики.

14
ответ дан 3 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: