Каков наилучший способ обработки нескольких парсеров Flex/Bison внутри проекта?Множественные анализаторы гибких/бизонов
Я написал парсер, и теперь мне нужен второй в том же проекте. До сих пор в третьем разделе parser1.y
я ввел метод main(..)
и назвал его yyparse
.
То, что я хочу, чтобы получить это имеет два различных парсеров (parser1.y
и parser2.y
) и быть в состоянии использовать их из внешней функции (давайте предположим main
в main.cpp
).
Какие меры предосторожности следует использовать для экспорта yyparse
функций за пределами .y
файлов и как я должен обрабатывать два парсера?
PS. Я использую g ++ для компиляции, но не для C++-версий Flex и Bison, и я хотел бы сохранить их таким образом (чтобы избежать инкапсуляции парсера внутри объекта).
Когда я это делаю, у моего lexer и parser есть много ссылок на YYTYPE и YYSTYPE и т. Д., И компиляция терпит неудачу. Почему они не обращаются? Что я делаю не так?? Я не хочу реентерабельный синтаксический анализатор, я просто хочу, чтобы одноразовый парсер вызывал один из двух парсеров, затем программа выходила. – TimeHorse
@TimeHorse: Учитывая количество времени между ответом на этот вопрос и вашим комментарием/вопросом, я думаю, вы должны задать новый вопрос, иллюстрирующий проблему, с которой вы столкнулись с двумя примерами лексики/грамматики (MCVE - [MCVE ]) и показывая процесс сборки, который вы используете, и сообщения об ошибках, которые вы получаете. Если вы не воспользуетесь возможностью предоставить эту информацию, которую вы получите с новым вопросом, я не могу дать ответ. Во что бы то ни стало вернитесь и оставите комментарий здесь, прося меня посмотреть на ваш новый вопрос; подумайте о включении ссылки на этот вопрос и в ваш. –