我有一個問題,使用(可重入)Flex +檸檬解析。我使用簡單的語法和詞法分析器here。當我運行它時,我會輸入一個數字後跟一個EOF標記(Ctrl-D)。打印輸出結果將改爲: 89
found int of .
AST=0.
其中第一行是我放的數量從理論上講,AST值應該是一切,我把總和 編輯:。當我打電話解析( )手動它運行正確。 此外,即使令牌爲0(停止令牌),檸檬似乎也運行atom
我能夠通過跟隨this question一起添加對我的解析器交替字符的語法(例如ababa或baba)的支持。 我現在正在通過允許重複字符來擴展它。 例如,我希望能夠支持abaaabab和aababaaa以及。在我的情況下,只允許重複a,但允許重複b的解決方案也是有用的。 給出的規則從另一個問題: expr ::= A | B
A ::= "a" B | "a"
B ::= "b" A | "
我試了幾次。在Google上,re2c + lemon只有幾個教程。 目前所有的例子出現了類似像一堆的錯誤: In file included from main.cpp:2:0:
parser.y:44:5: error: ‘yygotominor’ was not declared in this scope
A.int_value = B.int_value * C.int_va
我試圖使用檸檬分析器生成器生成分析器表,但運行lemon grammar.y時生成的.out文件僅包含自動機的狀態。 有沒有辦法讓非終端的goto表,不僅是自動機的狀態? 或者這隻能通過讀取生成的代碼來完成? 是否有其他工具可以生成動作和goto表? PS: 的.out文件(由檸檬產生)爲一個簡單的語法看起來像這樣: State 0:
start ::= * e
e :