ANTR3接受字符的数量令牌(ANTR3 set the number of accepted ch

2019-10-16 16:04发布

我要创建一个词法分析器将例如只接受,如果它有一个最大的8位整数。 这里是一个替代去做,而不是仅仅写它这样吗?

INTEGER : (DIG | DIG DIG | DIG DIG DIG | ...)

Answer 1:

这可以通过使用门控语义断言这样做:

INTEGER
@init{int n = 1;}
  :  ({n <= 8}?=> DIGIT {n++;})+
  ;

fragment DIGIT : '0'..'9';

关于这种谓词的详细信息,请参阅: 什么是ANTLR一个“语义谓词”?



文章来源: ANTR3 set the number of accepted characters for a token