Antlr4 不同lexer模式下的重用规则

Antlr4 不同lexer模式下的重用规则,antlr4,lexer,Antlr4,Lexer,我想使用几种lexer模式,它们共享一部分规则 “共享”规则也应该生成相同的令牌 到目前为止,我必须这样做: Id : [a-z]+; // 50 other shared rules... mode otherMode; Id_otherMode : [a-z]+ {setType(Id);}; 有没有更好的方法来实现这一点 Id_otherMode : [a-z]+ {setType(Id);}; 可以写成 Id_otherMode :Id -> type(Id); 此外,为

我想使用几种lexer模式,它们共享一部分规则

“共享”规则也应该生成相同的令牌

到目前为止,我必须这样做:

Id : [a-z]+;
// 50 other shared rules...

mode otherMode;

Id_otherMode : [a-z]+ {setType(Id);};
有没有更好的方法来实现这一点

Id_otherMode : [a-z]+ {setType(Id);};
可以写成

Id_otherMode :Id -> type(Id);
此外,为了更“精确”,Id可以是一个片段

但我想你需要听到的是:不,你不能在不同的模式下重拨相同的代币。也许重新组织模式