如何将Kleene闭包的匹配传递给我在ANTLR中的操作?

如何将Kleene闭包的匹配传递给我在ANTLR中的操作?,antlr,Antlr,我的ANTLR语法中有以下内容: rich_newick_string : str=(.*';') { stack.pushRichNewickString($str.text); }; 我希望将一些字符串匹配传递给我的pushRichNewickString方法,但我得到的却是null。我做错了什么 谢谢。您不能将多个词法分析器/语法分析器规则放在括号内,然后为其指定标签: rule : label=(ruleA ruleB ruleC) { /* use $label.te

我的ANTLR语法中有以下内容:

rich_newick_string 
:    str=(.*';') { stack.pushRichNewickString($str.text); };
我希望将一些字符串匹配传递给我的pushRichNewickString方法,但我得到的却是null。我做错了什么


谢谢。

您不能将多个词法分析器/语法分析器规则放在括号内,然后为其指定标签:

rule
  :   label=(ruleA ruleB ruleC) { /* use $label.text in here */ }
  ;
请尝试以下方法:

rule
  :   label=tempRule { /* use $label.text in here */ }
  ;

tempRule
  :  ruleA ruleB ruleC
  ;
另外,您的解析器规则中是否真的有一个.*?您知道这不匹配零个或多个字符,而是匹配零个或多个令牌吗