enum文字覆盖id



我有以下的语法摘录,其中规则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。

最新更新