繁体   English   中英

ANTLR:重写规则中的文本标记

[英]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_REFERENCEIDENT )和此令牌匹配的一些文本组成。 让树节点的标记成为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM