![](/img/trans.png)
[英]ANTLR Parsing rule covering block of text containing the “End”-Token
[英]ANTLR: token to text in rewrite rule
我正在使用 ANTLR 构建 AST。 我想写一个匹配这个字符串的作品:
${identifier}
在我的语法文件中,我有:
reference
: DOLLAR LBRACE IDENT RBRACE -> ^(NODE_VAR_REFERENCE IDENT)
;
这工作正常。 我正在使用我自己的适配器来发出树节点。 使用的重写规则为我创建了两个节点:一个用于NODE_VAR_REFERENCE
,一个用于IDENT
。
我想要做的是只创建一个节点(用于NODE_VAR_REFERENCE
令牌),并且该节点必须在其“令牌”字段中具有IDENT
令牌。
这可以使用重写规则吗? 谢谢。
好吧,让IDENT
成为节点NODE_VAR_REFERENCE
的令牌意味着根本没有任何NODE_VAR_REFERENCE
。 令牌由类型( NODE_VAR_REFERENCE
或IDENT
)和此令牌匹配的一些文本组成。 让树节点的标记成为IDENT
意味着类型和文本都将是IDENT
(丢失NODE_VAR_REFERENCE
标记或类型)。
您可能的意思是拥有NODE_VAR_REFERENCE
类型和IDENT
文本的单个节点,在这种情况下,您可以执行以下操作:
reference
: DOLLAR LBRACE IDENT RBRACE -> NODE_VAR_REFERENCE[$IDENT.text]
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.