pavia писал(а):
Согласно Книге дракона синтаксис и грамматика это одно и тоже.
Судя по всему вы имели в виду формальную грамматику.
Вообще-то формальную грамматику не я имел ввиду, а вы, т.к. запись LR(N) - это и есть обозначение
формальной грамматики. Именно в этом плане и следует различать грамматику и порождаемый ей язык (в данном случае синтаксис).
pavia писал(а):
Да я знаю что можно свести. У вас ошибка в рассуждениях. Слово "любой" откуда взялось?
Если A=>B и B=>C, то A=>C. Слово "любой" вытекает из второго пункта.
pavia писал(а):
А зачем тогда потребовались раширения EBNF и собственный формат YACC и раширения бизона?
Исключительно для удобства, т.к. работать ними проще, чем с формальными грамматиками.
pavia писал(а):
1) Они позволяют только повторить то что поддерживает конкретная утилита.
Они позволяют реализовать
любую КСГ.
pavia писал(а):
А что-бы добавить придётся переделывать код.
Естественно, чтобы что-то добавить, надо что-то изменить. Это тавтология.
pavia писал(а):
Дело в том что эти утилиты генерируют не человеко понятный код, а машинно ориентированный. Что усложняет поддержку.
Из первого не следует второе (что, в целом, справедливо для любого компилятора).
pavia писал(а):
Дело в том что у Фримана подход функционального программирования (Термин функциональное программирование по Чёрчу). Так вот в таком подходе не предусмотрено указателей. И как следствие всякое подобие дерева отсутствует. Остаётся только рекурсия.
функциональное программирование, указатели, AST и рекурсия
вообще друг с другом никак не связаны, т.к. ФП - это
парадигма программирования, указатели - это
семантика языка, AST - продукт
синтаксического разбора, я рекурсия - понятие
времени выполнения и оптимизации работы программы.