正在编写antlr4语法,并希望计算规则中的标记数

正在编写antlr4语法,并希望计算规则中的标记数,antlr4,bnf,Antlr4,Bnf,我有一个语法规则->动词和动词有3个标记值get,put,change,见下文。如果我要读取一个包含3个以上动词(get、put和change)的文件,我希望解析器打印一条错误消息。最好是将其嵌入到听者中,还是在语法中有一种简洁的方法 例如,有没有一种方法可以计算动词中的标记值 verb : GET | PUT | CHANGE ; 如果我理解你的要求,这将限制输入不超过三个动词。它有点俗气,不适合扩展,但

我有一个语法规则->动词和动词有3个标记值get,put,change,见下文。如果我要读取一个包含3个以上动词(get、put和change)的文件,我希望解析器打印一条错误消息。最好是将其嵌入到听者中,还是在语法中有一种简洁的方法

例如,有没有一种方法可以计算动词中的标记值

    verb    : 
       GET    |   
       PUT    |   
       CHANGE    ;

如果我理解你的要求,这将限制输入不超过三个动词。它有点俗气,不适合扩展,但取决于你想做什么,它可能适合你:

grammar Verb;

verb
 : option option? option? EOF
 ;

option
 : GET
 | PUT
 | CHANGE
 ;

GET    : 'get';
PUT    : 'put';
CHANGE : 'change';

SPACE
 : [ \t\r\n] -> skip
 ;
如果您想要更通用的东西,请查看下面的答案:使用谓词。不过,它是为ANTLR 3编写的