我有一个使用 Antlr 3 的简单语法:
grammar i;
@header {
package com.data;
}
null : 'null';
value : null | STRING;
elements : value? | (value ',' value)+;
STRING : ('a'..'z'|'A'..'Z')+;
WS : (' '|'\t'|'\f'|'\n'|'\r')+ {skip();}; // handle white space between keywords
我想要实现的是我有一个价值。因此,一个值可以是可选的,也可以是一个逗号后跟另一个值的值。例如:
value 可以是 true,或者 value 可以是 true,true,true,true。
当我进行解释时,以下工作:
真的
或真,真
当我尝试 true、true、true 时,树显示为 true、true,但显示 NoViableAltException。
我也试过:
elements: value? | (value ',' value)*;
但这也不起作用。
有什么想法我哪里出错了吗?
编辑:
insert : 'INSERT INTO TABLE' 'VALUES' '('elements')'';';