處理項目中多個Flex/Bison解析器的最佳方式是什麼?多個flex/bison解析器
我寫了一個解析器,現在我需要第二個在同一個項目中。到目前爲止,在parser1.y
的第三部分,我插入了main(..)
方法,並從那裏調用yyparse
。
我想獲得是一種有兩個不同的解析器(parser1.y
和parser2.y
),並能夠從外部函數中使用它們什麼(假設在main.cpp
main
)。
我應該使用哪些預防措施導出yyparse
函數.y
以外的文件以及我應該如何處理兩個解析器?
PS。我使用g ++編譯而不是C++版本的Flex和Bison,我想這樣保持它(所以避免在對象中封裝解析器)。
當我這樣做時,我的詞法分析器和解析器有很多對YYTYPE和YYSTYPE等的引用,編譯失敗。爲什麼沒有被轉換?我究竟做錯了什麼??我不想要一個可重入的解析器,我只想要一個調用兩個解析器之一的解析器,然後程序退出。 – TimeHorse 2017-01-07 01:26:18
@TimeHorse:考慮到回答這個問題和你的評論/問題之間的時間差異,我想你應該問一個新問題,用兩個小詞法/文法例子來解釋你遇到的問題(一個MCVE - [MCVE ])並顯示您正在使用的構建過程以及您收到的錯誤消息。如果你沒有機會提供這些信息,你會得到一個新的問題,我無法給出答案。盡一切辦法回來,在這裏留下評論,讓我看看你的新問題;考慮在你的這個問題中加入一個鏈接。 – 2017-01-07 01:49:22