我有以下的语法摘录,其中规则Format
似乎覆盖了FieldColumnName
规则。
Statement:
'select * from' table=Table where=WhereClause;
WhereClause:
'where' symbol=FieldColumn op="=" right=STRING;
FieldColumn:
fieldName=FieldColumnName;
FieldColumnName hidden():
ID ('.' ID)?;
enum Format:
iso | de | en;
开发以下语法的DSL-Script我在编辑器中得到验证错误,以下Statement
:
select * from foo where foo.de = 'bar';
错误标记foo.de
中的de
,其消息为:
不匹配的输入'de'期望RULE_ID
我如何在我不期望该关键字的上下文中使用de
等保留字?
关键字中的空格应该非常小心。请尝试重构你的语法,例如用'select' '*' 'from'
代替'select * from'
。要解决您的问题,您必须引入规则ValidID: ID | 'de' |'en' | 'iso';
,并使用validdid代替FieldColumnName中的ID。