我想知道为什么
expr:
a=(.*) 'ing' { System.out.println($a.text};
不工作。
一方面,您);
在嵌入式代码中丢失了。它不是:
{ 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 '.*' ... */
;
您不应该使用.*
内部解析器规则,除非您确切知道自己在做什么。