Парсинг — несколько парсеров, использующих API C ++ в зубрах, конфликтует с stack.hh

Когда вы запускаете bison, он создает класс стека для вас в «stack.hh». Имя файла фиксировано, но содержимое обернуто в пространство имен по вашему выбору.

Если вы используете bison для генерации 2 отдельных грамматик (т.е. 2 * .y файлов) и используете режим C ++, файлы «stack.hh» конфликтуют и перезаписываются.

Подобное происходит с классами location.hh и position.hh, которые генерируются автоматически, но в bison 2.7 есть обходной путь

%define api.location.type "foo::location"

что позволяет вам повторно использовать foo пространство имен грамматики в вашем bar пространство имен грамматики.

Но я никак не могу выполнить это упражнение при работе с файлом «stack.hh».

1

Решение

Самый простой способ справиться с этим — просто поместить файлы Bison в две отдельные директории. Затем, когда вы генерируете код, файлы не будут конфликтовать, предполагая, что каждый набор файлов генерируется в том же месте, что и соответствующий файл Bison.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector