3

这是示例。ANTLR4 无法识别此 ($type)。

Number //options { backtrack=true; }
  :  IntegerLiteral { $type = IntegerLiteral; }
  |  FloatLiteral { $type = FloatLiteral; }
  | IntegerLiteral { $type = IntegerLiteral; }
  ;

这可以用什么代替?

谢谢你。

4

2 回答 2

5

在 ANTLR 4 中,这是新的语法:

Foo
  : Bar -> type(SomeType)
  | ...
  ;

但是,对于您上面的规则,您应该删除Number规则并确保FloatLiteralandIntegerLiteral规则不是片段规则。

于 2012-12-04T13:35:07.233 回答
2

在 ANTLR v4 中,执行以下操作:

Number
 : IntegerLiteral {setType(IntegerLiteral);}
 | ...
于 2012-12-01T20:44:02.980 回答