Hi all!
Newb question here...
I'd like to import one of my existing EPackage in another grammar and make references to the parent EPackage.
Here is a simplified example :
EPackage a :
grammar org . xtext . Langa with org.eclipse.xtext.common.Terminals
generate langa "http : //www . xtext . org / Langa"
Model:
( declarations += ConstantDeclaration)*;
ConstantDeclaration :
'const' name = ID '=' val = INT;
EPackage b :
grammar org.xtext.Langb with org.eclipse.xtext.common.Terminals
generate langb "http : // www . xtext . org / Langb"
import 'platform:/resource/org.xtext.langa/src-gen/org/xtext/Langa.ecore' as langa
Model:
(definitions += ExpressionDefinition)*;
ExpressionDefinition :
'exp' name = ID '=' exp = Expression;
Expression :
Add;
Add returns Expression :
TerminalExpression ({Add.left = current} '+' right = TerminalExpression)*;
TerminalExpression returns Expression :
Reference | '(' Expression ')';
Reference :
referred = [langa::ConstantDeclaration];
I added the EcoreGeneratorFragment to the GenerateLangb.mwe2 workflow :
fragment = ecore.EcoreGeneratorFragment {
referencedGenModels = "platform:/resource/org.xtext.langa/src-gen/org/xtext/Langa.genmodel"
}
However, I have this error message when running said workflow :
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)
and really don't know how to get rid of it...
Any advice would be appreciated!
Romain
ps : sorry for spaces in uris, but I don't have the 5 required messages to post links so...
[Updated on: Fri, 24 June 2011 09:31]
Report message to a moderator