Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[xtext-dev] Split grammar (multiple grammars) in 1 project?

Hello All,

In a researchproject (called CC/Castle) I have two related grammars. Or actually two file-extensions:  *.Moat and *.Caste. The syntax that is allowed in a .Moat-file is a subset of that of that in a .Castle-file
I want to use xtext to build a eclipse editor (and compiler) for those two filetypes. But I run into problems. So some advice is welcome.

I assumed I should create 1 project-set (ccCastle, ccCastle.ui, ccCastle.generator; as made by the xtext(1.0.1) project-wizzard. And define both grammars there. 

I started by the Moat one. And was able to build a editor for it. Great.
But adding the Castle one didn't worked, at least not as I expected.  Writinge a Castle.xtext file is not a problem but getting it working in the project

I have a file starting with "grammar nl.softwareBeterMaken.ccCastle.Castle with nl.softwareBeterMaken.ccCastle.Moat" . This seams to work, as the rules that are "inherited" form the Moat.xtext file a recognized.
To compile it, I copied the file "GenerateMoat.mwe2" to "GenerateCastle.mwe2" and replaced the strings 'moat' to 'castle'. I was able to run that file as MWE2-workflow. But it doesn't really work. I tried several
alternatives (including importing the Moat.xtext file instead of the with statement). and all other things I could think of. Nothings seams to work ..

Some details/errors
* PROBLEM: AbstractCastleProposalProvider can not resolved to a type  (CastleProposalProvider.java)
* PROBLEM: The import nl.softwareBeterMaken.ccCastle.ui.contentassist.AbstractCastleProposalProvider cannot be resolved (CastleProposalProvider.java)
* PROLEM: Package 'nl.softwareBeterMaken.ccCastle.castle.impl' does not exist in this plug-in	(MANIFEST.MF)
* BUILD ERROR: org.eclipse.emf.mwe.core.WorkflowInterruptedException: The generated EPackage references an external EPackage, but 'referencedGenModels' hasn't been registered.
	See below for full log.

Now I'm wondering: is it possible to define two extensions/grammars in 1 project? Or did I change so many items, Eclispe is out of sync (I see some java file appearing in src/ too. Is that correct, should they be in src-gen?) Are I mad?


Any advice is welcome. Please ask for details when needed.

Note: I'm not really a java-expert, nor a Eclipse-guru. But I assume I don't have to, to design a language. 
I do no about languages, compilers parsers and stuff.  I did use yacc/bison, C and Emacs in the past. I assume that would to to..


--Groetjes
ALbert Mietus
   Send prive mail to:          ALbert at ons-huis dot net
   Don't send spam mail!
   http://albert.mietus.nl	http://SoftwareBeterMaken.nl


Console log
0    [main] INFO  lipse.emf.mwe.utils.StandaloneSetup  - Registering platform uri '/Users/albert/work/CC.Castle'
956  [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning /Users/albert/work/CC.Castle/nl.softwareBeterMaken.ccCastle/../nl.softwareBeterMaken.ccCastle/src-gen
966  [main] INFO  ipse.emf.mwe.utils.DirectoryCleaner  - Cleaning /Users/albert/work/CC.Castle/nl.softwareBeterMaken.ccCastle/../nl.softwareBeterMaken.ccCastle.ui/src-gen
1157 [main] INFO  ipse.xtext.generator.LanguageConfig  - generating infrastructure for nl.softwareBeterMaken.ccCastle.Castle with fragments : ImplicitRuntimeFragment, ImplicitUiFragment, GrammarAccessFragment, EcoreGeneratorFragment, ParseTreeConstructorFragment, ResourceFactoryFragment, XtextAntlrGeneratorFragment, JavaValidatorFragment, ImportNamespacesScopingFragment, QualifiedNamesFragment, BuilderIntegrationFragment, FormatterFragment, LabelProviderFragment, TransformerFragment, OutlineNodeAdapterFactoryFragment, QuickOutlineFragment, QuickfixProviderFragment, JavaBasedContentAssistFragment, XtextAntlrUiGeneratorFragment
org.eclipse.emf.mwe.core.WorkflowInterruptedException: The generated EPackage references an external EPackage, but 'referencedGenModels' hasn't been registered.
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.checkGenModelExists(EcoreGeneratorFragment.java:222)
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.proxifyExternalReferences(EcoreGeneratorFragment.java:214)
	at org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment.generate(EcoreGeneratorFragment.java:158)
	at org.eclipse.xtext.generator.CompositeGeneratorFragment.generate(CompositeGeneratorFragment.java:81)
	at org.eclipse.xtext.generator.LanguageConfig.generate(LanguageConfig.java:69)
	at org.eclipse.xtext.generator.Generator.generate(Generator.java:296)
	at org.eclipse.xtext.generator.Generator.invokeInternal(Generator.java:106)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
	at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
	at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
	at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:31)
	at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:80)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
	at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
10715 [main] INFO  or.validation.JavaValidatorFragment  - executing generate for org.eclipse.xtext.generator.validation.JavaValidatorFragment
14802 [main] INFO  .emf.mwe2.runtime.workflow.Workflow  - Done.









Back to the top