0
votes

I wanted to lern xtext, for many years i lerned xpand and xtend and worked fine, but xtext seems to replaced the other both. And the xtext way looks fine to me.

As start i read follwing Tutorials: http://www.eclipse.org/Xtext/documentation/101_five_minutes.html, Including "15 Minutes Tutorial" and "15 Minutes Tutorial - Extended" and others. So i created a simple "Model"

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';

Generated on following way: "GenerateTest.mwe2" > right click > 'Run As' → 'MWE2 Workflow'.

Then made a copy of the Project. It was already my second or third try to find out what i made wrong.

Now i changed in the model following line: "main=TMain;" to "main=TMain?;". Then i used 'MWE2 Workflow' again, which run successful, but after running following happens: Everthing files under 'src-gen/org/bs/test/Test/' and files in the subfolders 'impl' and 'util' are deleted. So they get deleted, then i copied the saved project and try following action on "Test.xtext" > right click > 'Run As' → 'Generate Xtext Artifacts', which result in the same.

There are two question for me: 1) What is the difference between "Generate Xtext Artifacts" and "MWE2 Workflow" and when did i do need them. I cannot figure that out on the Tutorial and especialy when to use them. 2) What did i wrong, and what i have to do to create generate the elements from the changed model

I could not find much on this, i hope someone could help me. I did not find something to both question.

EDIT 1:

When i create a complete new test project it works:

project name: org.test

name: org.test.MyTest

extensions: mytest

with following 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'

But when i do the same with following input:

Project name: org.bs.craass

Name: org.bs.craass.CraAss

Extension: 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';

Later i will try following: install a new eclispe emf and create a new workspace.

EDIT2:

So i tested a new workspace, there it look liks, that it is working. Perhaps something with the old workspace. Like in a comment, in the orginal workspace, after i get a good "version", i wanted to put it on git (learning reason). Since then this not working anymore. Here some output of the generation:

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.

I compared with a run in a other workspace, and the WARN, does not come there. To be hornest, i ignored first, because it was "only" warnings. A run that runs successful:

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.

So far the stand of my troubleshooting.

EDIT 3:

I do not know why, but it accept now the old xtext file i created and while running it occurs following error (but seems to have no big impact), complete log:

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.

The trouble seems, that i have following:

grammar org.bs.craass.CraAss with org.eclipse.xtext.common.Terminals

but on the other side:

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')*;

And in the org.eclipse.xtext.common.Terminals is

terminal INT returns ecore::EInt: ('0'..'9')+;

But i have no what to do with it.

The Problem itself, while generating everthing in srce-gen/, except the generated java files under src-gen/org.bs.craass.craAss and subfolder. Now there are created, too. So more i try to find out, so less the error was reproducable. Well, i will see, when i push it to git again, perhaps the error comes back.

So far thanks

1

1 Answers

0
votes

running the workflow directly or calling generate language artefacts does the very same. the workflow reads your Xtext file and generates all infrastructure Xtext provides for your language. thus you have to call it if you change your grammar or the workflow itself. if you have a misconfiguration on your language or a broken grammar the generation may fail. also the workflow may refer to project names which may have to be adopted as well (dont know how you do the copy and paste - you should use the Xtext Project wizard to create the project to be safe)