2015-03-31 2 views
2

Я переношу старую грамматику в лимон, и у меня есть все символы терминалов, уже определенные в файле заголовка; Я хотел бы использовать их с этими значениями вместо тех, которые сгенерированы в parser.h лимоном: возможно ли это?
Overwriting parser.h полностью бесполезен, потому что это просто зеркало того, что происходит внутри, согласованные значения будут оставаться одинаковыми.
(С лимонных акциями много кода с Bison Я думаю, что решение зубров бы решить проблему лимона тоже)Использование анализатора Lemon с пользовательскими значениями токена

ответ

2

С зубрами, вы можете вручную присвоить значение лексем, объявляя их в %token директиве (%token TOK 263 , например). Однако этот вариант недоступен в лимоне (насколько я знаю).

В любом случае вышеуказанное не соответствует вашему запросу, поскольку оно не позволяет вам считывать значения токена из внешнего файла заголовка. Это не было бы тривиальным требованием для генератора парсера. Чтобы построить таблицы синтаксического анализа, генератор синтаксического анализатора, будь то бизон или лимон, должен действительно знать значение, связанное с каждым токеном, и задача анализа заголовка для извлечения этой информации выходит за рамки сложности генератора парсера; для этого потребуется встроенный анализатор C.

Я бы рекомендовал просто дать генератору синтаксического анализа генерировать заголовочный файл, а затем использовать его вместо определений в существующем файле заголовка. Единственная стоимость (afaics) заключается в том, что вам нужно перекомпилировать любые части проекта, которые ссылаются на значения токена, которые обычно ограничиваются лексером.

Смежные вопросы