Xtext - 枚举文字覆盖 id
Xtext - enum literal overrides 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 脚本我在编辑器中收到验证错误,如下 Statement
:
select * from foo where foo.de = 'bar';
错误标记 foo.de
中的 de
,其消息是:
mismatched input 'de' expecting RULE_ID
如何在我不希望使用该关键字的上下文中使用像 de
这样的保留字?
您应该非常小心关键字中的空格。请尝试重构你的语法,例如使用 'select' '*' 'from'
而不是 'select * from'
。
要解决您的问题,您必须引入规则 ValidID: ID | 'de' |'en' | 'iso';
并在 FieldColumnName 中使用 ValidID 而不是 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 脚本我在编辑器中收到验证错误,如下 Statement
:
select * from foo where foo.de = 'bar';
错误标记 foo.de
中的 de
,其消息是:
mismatched input 'de' expecting RULE_ID
如何在我不希望使用该关键字的上下文中使用像 de
这样的保留字?
您应该非常小心关键字中的空格。请尝试重构你的语法,例如使用 'select' '*' 'from'
而不是 'select * from'
。
要解决您的问题,您必须引入规则 ValidID: ID | 'de' |'en' | 'iso';
并在 FieldColumnName 中使用 ValidID 而不是 ID。