【发布时间】:2011-08-15 01:16:22
【问题描述】:
我有一个规则来匹配一个看起来像这样的字符串:
STRING
: '"' ( ~( '"' | '\\' ) | '\\' . )* '"'
;
我不希望引号成为标记文本的一部分。在 Antlr2 中,我只需将 '!' 放在引号之后,告诉 Antlr 不要将它们添加到文本中。
注意下面的 '!'。
STRING
: '"'! ( ~( '"' | '\\' ) | '\\' . )* '"'!
;
但是在 Antlr3 中我不能再这样做了,因为我得到了错误:
warning(149): Crv__.g:0:0: rewrite syntax or operator with no output option; setting output=AST
我不知道我是否可以在这里使用重写规则,因为我不知道如何编写匹配所有令牌'。'
我唯一的另一个想法是获取匹配的文本并在不带引号的情况下返回它,但我不确定如何执行此操作,因为尚未创建令牌。
我正在使用 C Antlr 运行时。 我怎样才能做到这一点?
【问题讨论】: