ANTLR4:如何解析非根节点?

时间:2017-10-06 14:58:25

标签: java antlr grammar

给出语法

script: statement*;
statement: do | check;
do: 'do';
check: 'check';

如何解析非根节点?换句话说,

ScriptParser sp = new ScriptParser();
StatementContext sc = sp.parse<StatementContext>("do");

我简化了上面的例子。

解决方案是使所有节点都是根节点,如

rootNode: script | statement | do | check;

但我不希望这样,因为它污染了我的语法并且是维护噩梦(每当语法添加/删除节点时,必须更新rootnode,这很容易出错)。 另一种解决方案是使用rootnode规范编写另一个派生语法。这不会污染主要语法,但仍然存在维护问题。

有更好的方法吗?我想使用我的许多节点(*** Context类)并将它们传递给我的域模型类的构造函数。

1 个答案:

答案 0 :(得分:0)

谢谢@Jiri Tousek!答案确实是

undefined === undefined || undefined > undefined