有人可以向我解释 xtext 中生产规则和数据类型规则之间的区别吗?到目前为止,我知道两者都是解析器规则,Datatype Rule 返回一个原始 EDataype,生产规则在 AST 中创建一个 EObject。但我看不出它们的语法定义有什么不同:
数据类型规则:十进制:INT '.' 整数;
生产规则:模型:(stats += Statement)*;
解析器如何知道哪个是什么规则?
解析器使用解析器规则的(推断的)返回类型来区分产生式和数据类型。如果返回的类型是 EMF EDataType,则该规则为数据类型规则,否则为生产规则。
这篇博文试图强调 Xtext 中各种规则之间的一些差异。