在不同词法分析器模式下重用规​​则

时间:2014-09-25 06:56:01

标签: antlr4 lexer

我想使用几种lexer模式,它们共享很多规则。

"分享"规则也应该生成相同的令牌。

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

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

mode otherMode;

Id_otherMode : [a-z]+ {setType(Id);};

有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

Id_otherMode : [a-z]+ {setType(Id);};

可以写成

Id_otherMode :Id -> type(Id);

还有更多"好看" Id可以是片段

但我想你需要听到的是:不,你不能在不同模式下重新标记相同的令牌。也许重新组织模式......