我的语法符合以下规则 - >动词和动词有3个令牌值get,put change见下文。如果我要读取一个超过3个动词的文件(获取,放置和更改),我希望解析器打印错误消息。将它嵌入到监听器中是否最好还是在语法内部有一个简洁的方法吗?
有没有办法可以计算动词内的标记值?
verb :
GET |
PUT |
CHANGE ;
答案 0 :(得分:0)
如果我明白你要问的是什么,这将把输入限制为不超过三个动词。它有点俗气,不能很好地扩展,但取决于你想要做什么它可能对你有用:
grammar Verb;
verb
: option option? option? EOF
;
option
: GET
| PUT
| CHANGE
;
GET : 'get';
PUT : 'put';
CHANGE : 'change';
SPACE
: [ \t\r\n] -> skip
;
如果您想要更通用的内容,请使用谓词查看此SO答案:In ANTLR, is there a shortcut notation for expressing alternation of all the permutations of some set of rules?。它是为ANTLR 3编写的。