Пример грамматики бизонов для объявления и использования функций
Может ли кто-нибудь привести пример грамматики бизонов для объявления функций и их использования, так что парсер выдает ошибку, если количество аргументов в объявлении и использовании варьируется?
1 ответ
Такое решение не может быть принято с помощью контекстно-свободной грамматики, т. Е. Невозможно записать ее в "чистую" грамматику, используемую Bison ("чистая" означает грамматику, содержащую только правила с символами и без встроенных действий).
Чтобы выполнить вашу задачу, вам нужно добавить семантические действия в соответствующие правила вашей грамматики, которые используют таблицу символов для передачи информации о количестве аргументов функции между объявлением и использованием этой функции (в правиле объявления вы добавляете запись в таблица символов, а в правиле использования функции вы проверяете количество аргументов).
Традиционно такие проверки считаются частью семантического анализа и часто выполняются на отдельном этапе после синтаксического анализа (синтаксический анализ).