Antlr4 ANTLR 4中$type属性的替换是什么?

Antlr4 ANTLR 4中$type属性的替换是什么?,antlr4,Antlr4,这是一个例子。ANTLR4无法识别此($类型) Number //options { backtrack=true; } : IntegerLiteral { $type = IntegerLiteral; } | FloatLiteral { $type = FloatLiteral; } | IntegerLiteral { $type = IntegerLiteral; } ; 这可以用什么来代替 谢谢。在ANTLR v4中,请执行以下操作: Number : In

这是一个例子。ANTLR4无法识别此($类型)

Number //options { backtrack=true; }
  :  IntegerLiteral { $type = IntegerLiteral; }
  |  FloatLiteral { $type = FloatLiteral; }
  | IntegerLiteral { $type = IntegerLiteral; }
  ;
这可以用什么来代替

谢谢。

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

Number
 : IntegerLiteral {setType(IntegerLiteral);}
 | ...

在ANTLR 4中,这是新语法:

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

但是,对于上面的规则,您应该删除
数字
规则,并确保
FloatLiteral
IntegerLiteral
规则不是片段规则。

啊,是的,我知道我在特伦斯的新书中浏览了一些较短的内容!可能需要提到的是,
->
不是旧v3用户的AST重写操作符:)@280Z28您所说的“删除编号规则”和非碎片规则是什么意思?你能为我澄清一下吗?因为这是我问题的答案。你能接受280Z28的答案吗?这是首选方式(不依赖于目标)。