如何使用antlr纯lexer语法定义重复固定次数的模式规则



我试图在Antlr中定义一个纯lexer语法,该语法以十六进制表示法识别32位。

现在我有:

lexer grammar Grammar;
WS : [ rtn]+ -> skip;
fragment HexDigit : ([0-9]|[A-f]|[a-f]);
fragment HexDigitNoZero : ([1-9]|[A-f]|[a-f]);
fragment HexNumber : (HexDigitNoZero)(HexDigit)*;
fragment Eight : HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit;
Hex :'0x'Eight;

我想知道是否有任何方法可以在纯lexer语法中定义范围8。就像Flex处理"a"{8}一样。

您可以使用谓词(与操作相同,但末尾有?

(HexDigitNoZero)(HexDigit)* {getText().lenght!= 8}? {do_something;};

从技术上讲,这是纯lexer,但使用gramar操作

相关内容

  • 没有找到相关文章

最新更新