我对 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 的父级,而不必在最后一个示例中编写它?