0

我有一个具有以下规则的语法 - > 动词和动词有 3 个标记值,请参阅下面的更改。如果我要读取一个包含 3 个以上动词(get、put 和 change)的文件,我希望解析器打印一条错误消息。最好将它嵌入到听众中,还是在语法内部有一种巧妙的方法?

例如,有没有办法可以计算动词内的标记值?

    verb    : 
       GET    |   
       PUT    |   
       CHANGE    ;
4

1 回答 1

0

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

grammar Verb;

verb
 : option option? option? EOF
 ;

option
 : GET
 | PUT
 | CHANGE
 ;

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

SPACE
 : [ \t\r\n] -> skip
 ;

如果您想要更通用的东西,请查看这个 SO 答案:在 ANTLR 中,是否有一种快捷表示法来表示某组规则的所有排列的交替?使用谓词。不过,它是为 ANTLR 3 编写的。

于 2013-09-20T03:41:48.430 回答