antlr:如何在action内部使用String.format

时间:2012-06-26 21:23:10

标签: java antlr stringtemplate

我的规则定义如下:

metric_expr
  : metric=NAME ('AS' label=NAME)? {System.out.println(String.format("%s: %s", metric, label));}
  ;

我收到错误说:

error(146): com\foo\bar\PRL.g:65:54: invalid StringTemplate % shorthand syntax: '%s'

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

使用单个反斜杠转义%个符号。

如果您想显示令牌的文字,请使用令牌的.text属性:

metric_expr
  : metric=NAME ('AS' label=NAME)? 
    {System.out.printf("\%s: \%s", $metric.text, $label.text);}
  ;