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

时间:2011-09-07 15:30:41

标签: antlr

我的ANTLR语法中包含以下内容:

rich_newick_string 
:    str=(.*';') { stack.pushRichNewickString($str.text); };

我希望将一些字符串匹配传递给我的pushRichNewickString方法,但我得到的是null。我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

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

rule
  :   label=(ruleA ruleB ruleC) { /* use $label.text in here */ }
  ;

请改为尝试:

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

tempRule
  :  ruleA ruleB ruleC
  ;

另外,您的解析器规则中是否真的有.*?您是否知道匹配零个或多个字符,而零个或多个令牌