正在编写antlr4语法,并希望计算规则中的标记数
我有一个语法规则->动词和动词有3个标记值get,put,change,见下文。如果我要读取一个包含3个以上动词(get、put和change)的文件,我希望解析器打印一条错误消息。最好是将其嵌入到听者中,还是在语法中有一种简洁的方法 例如,有没有一种方法可以计算动词中的标记值正在编写antlr4语法,并希望计算规则中的标记数,antlr4,bnf,Antlr4,Bnf,我有一个语法规则->动词和动词有3个标记值get,put,change,见下文。如果我要读取一个包含3个以上动词(get、put和change)的文件,我希望解析器打印一条错误消息。最好是将其嵌入到听者中,还是在语法中有一种简洁的方法 例如,有没有一种方法可以计算动词中的标记值 verb : 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编写的