-1

我想知道为什么

expr:
a=(.*) 'ing' { System.out.println($a.text};

不工作。

4

1 回答 1

1

一方面,您);在嵌入式代码中丢失了。它不是:

{ System.out.println($a.text}

但:

{ System.out.println($a.text); }

您也不太清楚“不起作用”是什么意思,但我可以做出有根据的猜测。您可能会看到null打印到控制台。这是因为您不能将标签分配给.*a=(.*)无效)。您可以做的是将a应该指向的内容移至子规则:

expr
 : a=sub_rule 'ing' { System.out.println($a.text); }
 ;

sub_rule
 : /* ... something other than '.*' ... */
 ;

应该使用.*内部解析器规则,除非您确切知道自己在做什么。

于 2012-08-21T14:21:40.510 回答