0
我正在寻找一种方法来了解是否使用了可选的子规则。例如:Antlr3 AST创建:如何测试可选的子规则?
my_rule returns [node* n = 0]:
(v = (optional_subrule)?)
{
$n = new node($v ? $v.n : MY_DEFAULT_VALUE);
}
;
但这不起作用。我尝试过很多办法把它写并没有什么似乎无需编写代码是可能的...
my_rule returns [node* n = new node()]:
((optional_subrule { n->set_subrule(...); })?)
;
而当你有一个野牛的背景,你喜欢在你的规则到底有您的AST节点构造...它降低了可读性(想象一个更大的规则)。
有人知道我错过了什么吗?
谢谢。