首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成模型后误差

生成模型后误差
EN

Stack Overflow用户
提问于 2015-08-01 12:45:48
回答 1查看 409关注 0票数 0

我想学习xtext,多年来我一直在学习xpand和X趋向,并且工作得很好,但是xtext似乎取代了其他两者。在我看来,xtext方式很好。

作为开始,我阅读了后续教程:minutes.html,包括"15分钟教程“和"15分钟教程-扩展”等。所以我创建了一个简单的“模型”

代码语言:javascript
复制
grammar org.bs.test.Test with org.eclipse.xtext.common.Terminals

generate Test "http://www.bs.org/test/Test"

Test:
    main=TMain;

TMain:
    'main' name=ID 
    'done';

按以下方式生成:"GenerateTest.mwe2“>右击>‘以’→形式运行'MWE2 Workflow‘。

然后复印了一份计划。这已经是我第二次或第三次尝试找出我做错了什么。

现在,我将模型更改为以下一行:"main=TMain;“改为"main=TMain?;”。然后我再次使用“MWE2 Workflow”,运行成功,但是在运行之后发生了以下情况:“src/org/bs/Test/Test/”下的所有文件和子文件夹'impl‘和'util’中的文件都被删除。因此,它们被删除了,然后我复制了保存的项目,然后尝试在"Test.xtext“>右键单击> 'Run‘→’生成Xtext工件‘上执行以下操作,结果是相同的。

我有两个问题: 1)“生成Xtext工件”和"MWE2工作流“之间的区别是什么,以及我什么时候需要它们。我无法在教程中了解到这一点,尤其是在什么时候使用它们。2)我做错了什么,我要做什么才能从改变的模型中生成元素

我在这件事上找不到什么,希望有人能帮我。我没有找到两个问题的答案。

编辑1:

当我创建一个完整的新测试项目时,它可以工作:

项目名称: org.test

名称: org.test.MyTest

扩展:我的测试

使用以下xtext:

代码语言:javascript
复制
grammar org.test.MyTest with org.eclipse.xtext.common.Terminals

generate myTest "http://www.test.org/MyTest"

Test:
    main=TMain;

TMain:
    'main' name=ID 
    'done'

但是,当我对以下输入做同样的操作时:

项目名称: org.bs.craass

名称: org.bs.craass.CraAss

分机:疯狂

xtext:

代码语言:javascript
复制
grammar org.bs.craass.CraAss with org.eclipse.xtext.common.Terminals

generate craAss "http://www.bs.org/craass/CraAss"

CraAss:
    main=CAMain;

CAMain:
    'main' name=ID 
    'done';

稍后,我将尝试如下:安装一个新的eclispe并创建一个新的工作区。

EDIT2:

所以我测试了一个新的工作空间,它看起来很像,它正在工作。也许是旧工作空间里的东西。就像在评论中一样,在我得到一个好的“版本”之后,在原来的工作空间中,我想把它放在git (学习原因)上。从那以后这就不管用了。以下是这代人的一些产出:

代码语言:javascript
复制
0    [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Registering platform uri 'C:\workspaces\emf_01'
401  [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass at 'file:/C:/workspaces/emf_01/org.bs.craass/' and using 'file:/C:/workspaces/emf_01/error_01/org.bs.craass/' instead.
926  [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass at 'file:/C:/workspaces/emf_01/error_01/org.bs.craass/' and using 'file:/C:/workspaces/emf_01/org.bs.craass/' instead.
939  [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass.sdk at 'file:/C:/workspaces/emf_01/error_01/org.bs.craass.sdk/' and using 'file:/C:/workspaces/emf_01/org.bs.craass.sdk/' instead.
970  [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass.tests at 'file:/C:/workspaces/emf_01/error_01/org.bs.craass.tests/' and using 'file:/C:/workspaces/emf_01/org.bs.craass.tests/' instead.
1090 [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass.ui at 'file:/C:/workspaces/emf_01/error_01/org.bs.craass.ui/' and using 'file:/C:/workspaces/emf_01/org.bs.craass.ui/' instead.
1749 [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass at 'file:/C:/workspaces/emf_01/org.bs.craass/' and using 'file:/C:/workspaces/emf_01/save_01/org.bs.craass/' instead.
1762 [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass.sdk at 'file:/C:/workspaces/emf_01/org.bs.craass.sdk/' and using 'file:/C:/workspaces/emf_01/save_01/org.bs.craass.sdk/' instead.
1820 [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass.tests at 'file:/C:/workspaces/emf_01/org.bs.craass.tests/' and using 'file:/C:/workspaces/emf_01/save_01/org.bs.craass.tests/' instead.
2082 [main] WARN  lipse.emf.mwe.utils.StandaloneSetup  - Skipping conflicting project org.bs.craass.ui at 'file:/C:/workspaces/emf_01/org.bs.craass.ui/' and using 'file:/C:/workspaces/emf_01/save_01/org.bs.craass.ui/' instead.
2577 [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Adding generated EPackage 'org.eclipse.xtext.xbase.XbasePackage'
4253 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/Xtext/Xbase/XAnnotations' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
4265 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xtype' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
4335 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xbase' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
4335 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/common/JavaVMTypes' from 'platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel'
6234 [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Adding generated EPackage 'org.eclipse.xtext.common.types.TypesPackage'
6267 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf_01\org.bs.craass\..\org.bs.craass\src-gen
6326 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf_01\org.bs.craass\..\org.bs.craass\model\generated
6330 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf_01\org.bs.craass\..\org.bs.craass.ui\src-gen
6378 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf_01\org.bs.craass\..\org.bs.craass.tests\src-gen
9146 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.bs.org/craass/CraAss' from 'file:/C:/workspaces/emf_01/org.bs.craass/model/generated/CraAss.genmodel'
15709 [main] INFO  text.generator.junit.Junit4Fragment  - generating Junit4 Test support classes
15731 [main] INFO  text.generator.junit.Junit4Fragment  - generating Compare Framework infrastructure
15973 [main] INFO  .emf.mwe2.runtime.workflow.Workflow  - Done.

我与其他工作区中的运行进行了比较,而警告没有出现。最可怕的是,我首先忽略了它,因为它是“只”警告。成功运行的运行:

代码语言:javascript
复制
0    [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Registering platform uri 'C:\workspaces\emf'
541  [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Adding generated EPackage 'org.eclipse.xtext.xbase.XbasePackage'
1020 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/Xtext/Xbase/XAnnotations' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
1031 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xtype' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
1064 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xbase' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
1064 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/common/JavaVMTypes' from 'platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel'
2307 [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Adding generated EPackage 'org.eclipse.xtext.common.types.TypesPackage'
2355 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass\src-gen
2382 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass\model\generated
2390 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass.ui\src-gen
2407 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass.tests\src-gen
4446 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.bs.org/craass/CraAss' from 'platform:/resource/org.bs.craass/model/generated/CraAss.genmodel'
11647 [main] INFO  text.generator.junit.Junit4Fragment  - generating Junit4 Test support classes
11719 [main] INFO  text.generator.junit.Junit4Fragment  - generating Compare Framework infrastructure
11997 [main] INFO  .emf.mwe2.runtime.workflow.Workflow  - Done.

到目前为止我的疑难解答立场。

编辑3:

我不知道为什么,但是它现在接受了我创建的旧的xtext文件,在运行它时会发生错误(但似乎没有太大的影响),完成日志:

代码语言:javascript
复制
0    [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Registering platform uri 'C:\workspaces\emf'
664  [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Adding generated EPackage 'org.eclipse.xtext.xbase.XbasePackage'
1864 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/Xtext/Xbase/XAnnotations' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
1882 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xtype' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
1987 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xbase' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
1987 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.eclipse.org/xtext/common/JavaVMTypes' from 'platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel'
3982 [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Adding generated EPackage 'org.eclipse.xtext.common.types.TypesPackage'
4018 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass\src-gen
4061 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass\model\generated
4064 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass.ui\src-gen
4087 [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning C:\workspaces\emf\org.bs.craass\..\org.bs.craass.tests\src-gen
7153 [main] INFO  clipse.emf.mwe.utils.GenModelHelper  - Registered GenModel 'http://www.bs.org/craass/CraAss' from 'platform:/resource/org.bs.craass/model/generated/CraAss.genmodel'
error(208): ../org.bs.craass/src-gen/org/bs/craass/parser/antlr/internal/InternalCraAss.g:1199:1: The following token definitions can never be matched because prior tokens match the same input: RULE_INT
error(208): ../org.bs.craass.ui/src-gen/org/bs/craass/ui/contentassist/antlr/internal/InternalCraAss.g:2688:1: The following token definitions can never be matched because prior tokens match the same input: RULE_INT
16642 [main] INFO  text.generator.junit.Junit4Fragment  - generating Junit4 Test support classes
16661 [main] INFO  text.generator.junit.Junit4Fragment  - generating Compare Framework infrastructure
16804 [main] INFO  .emf.mwe2.runtime.workflow.Workflow  - Done.

麻烦似乎是,我有以下几点:

代码语言:javascript
复制
grammar org.bs.craass.CraAss with org.eclipse.xtext.common.Terminals

但在另一边:

代码语言:javascript
复制
terminal INTEGER : '-'?('0'..'9')+;

terminal VAR_TERMINAL       : '_' ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

terminal REGISTER_TERMINAL  : ('ax' | 'bx' );

terminal FUNCTION_TERMINAL  : (('a'..'z'|'_'|'0'..'9')*'.')?('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

在org.eclipse.xtext.common.Terminals中是

代码语言:javascript
复制
terminal INT returns ecore::EInt: ('0'..'9')+;

但我不知道该怎么办。

这个问题本身,除了在srce/org.bs.Craass.crass和子文件夹下生成的java文件之外,在srce-gen/中生成所有内容。现在也有了创造。所以我试着找的越多,错误就越难复制。好吧,我会看到,当我再把它推到git,也许错误会回来。

到目前为止谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-08-02 06:27:05

直接运行工作流或调用也是如此。工作流读取Xtext文件并生成Xtext为您的语言提供的所有基础设施。因此,如果您更改了语法或工作流本身,则必须调用它。如果你在你的语言上有一个错误的配置或一个错误的语法,那一代人可能会失败。此外,工作流还可能引用项目名称,这些名称可能也必须采用(不知道如何复制和粘贴-您应该使用Xtext向导来创建项目以确保安全)

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

https://stackoverflow.com/questions/31761991

复制
相关文章

相似问题

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