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 の親であるかを知る方法はありますか?