【发布时间】:2019-08-09 15:02:01
【问题描述】:
给定以下语法(在 ANTLR v3 中):
test : value0 COMMA_KEYWORD value1 (COMMA_KEYWORD value2)*;
我们如何从 ANTLR 构建的 AST 树中排除(跳过)COMMA_KEYWORD(并且不使用写入规则)?
【问题讨论】:
给定以下语法(在 ANTLR v3 中):
test : value0 COMMA_KEYWORD value1 (COMMA_KEYWORD value2)*;
我们如何从 ANTLR 构建的 AST 树中排除(跳过)COMMA_KEYWORD(并且不使用写入规则)?
【问题讨论】:
使用重写规则的替代方法是使用树构造操作符:
https://theantlrguy.atlassian.net/wiki/spaces/ANTLR3/pages/2687090/Tree+construction
您可以使用! 运算符从 AST 中省略标记或子树:
test : value0 COMMA_KEYWORD! value1 (COMMA_KEYWORD! value2)*;
【讨论】: