Нет решения, которое можно реализовать в файле грамматики. Извините.
Bison не предоставляет никаких средств для условного включения.
Он предоставляет объявление %require
, в котором указывается минимальная версия бизона. Это, вероятно, не очень полезно в этом случае. (Кроме того, он не позволяет указывать диапазон версий, поэтому вы не можете ограничить грамматику устаревшей версией бизона.)
Насколько я знаю, обычной стратегией также является включение сгенерированного парсера в дистрибутив, позволяющий скомпилировать ваш проект в системе с несовместимой версией зубра или даже без зубра. Если по какой-либо причине конечный пользователь желает восстановить синтаксический анализатор, он несет ответственность за получение правильной версии, что, конечно, должно быть задокументировано в инструкциях по сборке.
Вы можете предварительно обработать файл грамматики на основе версия зубров. Автоинструменты могут помочь вам в этом, если вы их используете. Но это, вероятно, излишне.