1
我遇到了ANTLR輸出的一個小問題。 伊夫一個真的小的語法看起來像這樣:ANTLR輸出及其順序
test : states;
states : '.states' state+;
state : stateID=ID {
System.out.println("state: " + $stateID.text);
| stateID=ID '{' state* '}' {
System.out.println("SubState: " + $stateID.text);};
我想分析看起來像這樣的內容:
a{
b
c{
d
}
}
好了,問題是,第一個記號,我會得到的是「 b',然後是'd',然後是'c'。 但我的意圖是將其解析爲我的數據結構,我需要知道他們的父母。 我通過這個命令得知的是,c是d的父親,但是b怎麼辦? 如果我重寫了例子來這種形式:
a{
c{
d
}
b
}
一切都很好。那麼有沒有辦法知道誰是b的父母,而沒有限制在最後一個例子中寫出它?
你不需要創建一個'ParseTreeWalker'的實例。只需使用'ParseTreeWalker.DEFAULT.walk(監聽器,樹);' –