我看过 ANTLR 的书,但我还没有找到一种方法来获取给定规则的下一个可能规则。
例如,使用像这样的测试语法
grammar ArrayInit;
init : '{' value (',' value)* '}' ;
value : init
| INT
;
INT : [0-9]+ ;
WS : [ \t\r\n]+ -> skip ;
有没有办法迭代遍历规则并列出下一个可能的规则?
对于像上面的语法,我希望能够从
init
规则开始。当我给出 init
规则时,我希望得到下一个可能的选项 {
、value
、(,
和 value
)和 }
.
这样我就可以弄清楚下一个可能的标记是什么。我将能够从
init
规则开始,并迭代地遍历语法,看到 init
-> { value }
可能与逗号变体。
我浏览了 ANTLR 课程。我能够使用解析器的
getRuleNames
函数来获取所有规则。但是,我不能用它来确定哪些规则遵循给定规则。