繁体   English   中英

Xtext基数元模型

[英]Xtext cardinality meta model

我目前正在从事一个项目,该项目是根据Xtext语法创建要素模型的。 我的任务是将语法语法转换为可导入eclipse插件pure :: variants的CSV文件。

特征模型基本上是特征树。 这些功能是不同的类型(强制性,可选,替代性等)。

为了构造树,我使用了xtext语法的生成的ecore元模型。 该文件(.ecore)基本上是带有语法对象的XML文件。 从中创建树是一致,简单和容易的。

我的问题是,我需要为创建的树的节点分配类型(强制性,替代性等)。 这些类型的功能对应于基数运算符。 这些运算符写在这样XTEXT语法:'?''(没有操作员)','*'和'+'(这可以在XTEXT使用者看到手册第2.1.3节https://www.eclipse.org /Xtext/documentation/1_0_1/xtext.pdf )。 问题是,这些xtext语法的基数似乎找不到任何地方。 我以为它们会出现在.ecore或.genmodel文件中,但是根本没有基数。

我想如果xtext能够检查和控制这些基数,则它必须具有某种元模型,在这些元模型中可以看到这些基数并且很容易获得(类似于.ecore或.genmodel文件的.xml文件)。

所以我的问题是:是否存在某种包含这些基数的xtext生成文件? 如果没有,我将不得不以某种方式从语法本身中去除这些基数,但是这将不必要地耗时且复杂,甚至可能是不可能的,因为书面语法与ecore元模型不完全对应,因此我正在提取特征树真的很复杂。

只有生成的文件XXXXGrammarAccess.java(XXXX代表语法的名称)是我能够找到的,其中包含“可能有用的东西”,它是复杂的生成文件,具有许多库依赖关系,我不知道如何从而消除这些基数甚至是可能的话。 我想这是有可能的,因为该文件使用了很多IGrammarAccess方法,例如getRule(),getKeyword()等,但是我无法使用该文件或从中打印出一些东西,因为它是生成的文件,但我无法自行运行。

如果没有我要寻找的元模型,是否有可能在生成过程中以某种方式获得这些基数?

非常感谢您的回答。

首先,元模型和语法中的基数不必匹配100%。 解析器中的基数验证与ecore中的基数验证不同。

较低的1基数(必需)不存在,以防止出现真正难看的错误消息。 :1或:-1(= *)反映在ecore中。

在10年前创建Xtext时,这是一个故意的决定。

语法访问仅使您可以在运行时访问语法。

您能详细说明您为什么真正在乎吗?

Xtext语法本身就是一个模型,是http://www.eclipse.org/2008/Xtext的实例。 (过去可以通过使用示例反射式Ecore编辑器打开* .xtext文件来演示这一点,但是不幸的是,使用classpath:URI再次破坏了它。)尽管如此,您仍可以以编程方式将* .xtext文件作为EMF打开。掌握资源并查看语法中的所有内容。 参见https://git.eclipse.org/c/ocl/org.eclipse.ocl.git/tree/examples/org.eclipse.ocl.examples.xtext2lpg/src/org/eclipse/ocl/examples/xtext2lpg/xtext2xbnf .qvto用于转换链的第一阶段,该阶段从读取Xtext语法开始,最后以LPG语法结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM