我想学习xtext,多年来我一直在学习xpand和X趋向,并且工作得很好,但是xtext似乎取代了其他两者。在我看来,xtext方式很好。
作为开始,我阅读了后续教程:minutes.html,包括"15分钟教程“和"15分钟教程-扩展”等。所以我创建了一个简单的“模型”
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:
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:
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 (学习原因)上。从那以后这就不管用了。以下是这代人的一些产出:
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.我与其他工作区中的运行进行了比较,而警告没有出现。最可怕的是,我首先忽略了它,因为它是“只”警告。成功运行的运行:
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文件,在运行它时会发生错误(但似乎没有太大的影响),完成日志:
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.麻烦似乎是,我有以下几点:
grammar org.bs.craass.CraAss with org.eclipse.xtext.common.Terminals但在另一边:
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中是
terminal INT returns ecore::EInt: ('0'..'9')+;但我不知道该怎么办。
这个问题本身,除了在srce/org.bs.Craass.crass和子文件夹下生成的java文件之外,在srce-gen/中生成所有内容。现在也有了创造。所以我试着找的越多,错误就越难复制。好吧,我会看到,当我再把它推到git,也许错误会回来。
到目前为止谢谢
发布于 2015-08-02 06:27:05
直接运行工作流或调用也是如此。工作流读取Xtext文件并生成Xtext为您的语言提供的所有基础设施。因此,如果您更改了语法或工作流本身,则必须调用它。如果你在你的语言上有一个错误的配置或一个错误的语法,那一代人可能会失败。此外,工作流还可能引用项目名称,这些名称可能也必须采用(不知道如何复制和粘贴-您应该使用Xtext向导来创建项目以确保安全)
https://stackoverflow.com/questions/31761991
复制相似问题