首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xtext基数元模型

Xtext基数元模型
EN

Stack Overflow用户
提问于 2019-03-06 16:49:55
回答 2查看 179关注 0票数 0

我目前正在做一个项目,我正在用Xtext语法创建一个特征模型。我的任务是将语法语法转换为CSV文件,可导入eclipse插件pure::variants。

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

为了构建树,我使用了生成的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()等等,但是我不能使用这个文件,也不能打印出来,因为它是一个生成的文件,我不能在它自己上运行它。

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

非常感谢你的回答。

EN

回答 2

Stack Overflow用户

发布于 2019-03-07 03:28:09

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

较低的基数1(表示必需的)并不是为了防止真正丑陋的错误消息。但是:1或:-1 (=*)会反映在ecore中。

这是10年前创建Xtext时经过深思熟虑的决定。

语法访问只是让您在运行时访问语法。

你能详细解释一下为什么你真的关心吗?

票数 0
EN

Stack Overflow用户

发布于 2019-03-14 02:46:08

Xtext语法本身就是一个模型,是http://www.eclipse.org/2008/Xtext的一个实例。(过去可以通过使用示例反射Ecore Editor打开一个*.xtext文件来演示这一点,但不幸的是,类路径: URIs的使用再次破坏了它。)尽管如此,您可以以编程方式将*.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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55018918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档