Creating grammar mixin [message #653381] |
Wed, 09 February 2011 15:25 |
|
I try to mix some grammars. So I use a grammar for the Data description:
Data.xtext
grammar de.foo.common.Data with org.eclipse.xtext.common.Terminals
generate data "[url]http://www.foo.de/common/Data[/url]"
Datamodel:
(types+=Type)*;
Type:
DataType | Entity;
DataType:
"datatype" name=ID;
Entity:
"entity" name=ID "{"
(features+=Feature)*
"}";
Feature:
type=[Type|ID] name=ID;
And another for the User:
User.xtext
grammar de.foo.common.User with org.eclipse.xtext.common.Terminals
generate user "[url]http://www.bizware.de/common/User[/url]"
Usermodel:
(users+=User)*;
User:
"User" name=ID "!";
Finally I want to reuse the definition in a new grammar Base:
Base.xtext
grammar de.foo.common.Base with de.foo.common.Data,de.foo.common.User
generate base "[url]http://www.foo.de/common/Base[/url]"
Model:
(Datamodel|Usermodel)*;
But Eclipse always told me that it "Couldn't resolve reference to Grammar 'de.foo.common.Data'
Here's my generator (GenerateCommon.mwe2)
module de.foo.common
import org.eclipse.emf.mwe.utils.*
import org.eclipse.xtext.generator.*
import org.eclipse.xtext.ui.generator.*
var grammarURI = "classpath:/de/foo/Base.xtext"
var file.extensions = "base.model"
var projectName = "de.foo.common"
var runtimeProject = "../${projectName}"
Workflow {
bean = StandaloneSetup {
platformUri = "${runtimeProject}/.."
}
component = DirectoryCleaner {
directory = "${runtimeProject}/src-gen"
}
component = DirectoryCleaner {
directory = "${runtimeProject}.ui/src-gen"
}
component = Generator {
pathRtProject = runtimeProject
pathUiProject = "${runtimeProject}.ui"
projectNameRt = projectName
projectNameUi = "${projectName}.ui"
language = {
uri = grammarURI
fileExtensions = file.extensions
// Java API to access grammar elements (required by several other fragments)
fragment = grammarAccess.GrammarAccessFragment {}
// generates Java API for the generated EPackages
fragment = ecore.EcoreGeneratorFragment {
// referencedGenModels = "uri to genmodel, uri to next genmodel"
}
// the serialization component
fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
// a custom ResourceFactory for use with EMF
fragment = resourceFactory.ResourceFactoryFragment {
fileExtensions = file.extensions
}
// The antlr parser generator fragment.
fragment = parser.antlr.XtextAntlrGeneratorFragment {
// options = {
// backtrack = true
// }
}
// java-based API for validation
fragment = validation.JavaValidatorFragment {
composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
// registerForImportedPackages = true
}
// scoping and exporting API
// fragment = scoping.ImportURIScopingFragment {}
// fragment = exporting.SimpleNamesFragment {}
// scoping and exporting API
fragment = scoping.ImportNamespacesScopingFragment {}
fragment = exporting.QualifiedNamesFragment {}
fragment = builder.BuilderIntegrationFragment {}
// formatter API
fragment = formatting.FormatterFragment {}
// labeling API
fragment = labeling.LabelProviderFragment {}
// outline API
fragment = outline.OutlineTreeProviderFragment {}
fragment = outline.QuickOutlineFragment {}
// quickfix API
fragment = quickfix.QuickfixProviderFragment {}
// content assist API
fragment = contentAssist.JavaBasedContentAssistFragment {}
// generates a more lightweight Antlr parser and lexer tailored for content assist
fragment = parser.antlr.XtextAntlrUiGeneratorFragment {}
// project wizard (optional)
// fragment = projectWizard.SimpleProjectWizardFragment {
// generatorProjectName = "${projectName}.generator"
// modelFileExtension = file.extensions
// }
}
}
}
Any ideas why it doesn' recognize it?
[Updated on: Wed, 09 February 2011 15:26] Report message to a moderator
|
|
|
|
|
|
Re: Creating grammar mixin [message #653598 is a reply to message #653472] |
Thu, 10 February 2011 11:24 |
|
what kind of dependency did I need? plugin-dependency, like this manifest.mf:
Require-Bundle: org.eclipse.xtext,
org.eclipse.xtext.generator;resolution:=optional,
org.eclipse.emf.codegen.ecore;resolution:=optional,
org.eclipse.emf.mwe.utils;resolution:=optional,
org.eclipse.emf.mwe2.launch;resolution:=optional,
com.ibm.icu;resolution:=optional,
de.foo.common;bundle-version="1.0.0"
[Updated on: Thu, 10 February 2011 11:24] Report message to a moderator
|
|
|
Re: Creating grammar mixin [message #654127 is a reply to message #653598] |
Mon, 14 February 2011 09:43 |
Sebastian Zarnekow Messages: 3118 Registered: July 2009 |
Senior Member |
|
|
Am 10.02.11 12:24, schrieb Martin:
> what kind of dependency did I need? plugin-dependency, like this
> manifest.mf:
>
> Require-Bundle: org.eclipse.xtext,
> org.eclipse.xtext.generator;resolution:=optional,
> org.eclipse.emf.codegen.ecore;resolution:=optional,
> org.eclipse.emf.mwe.utils;resolution:=optional,
> org.eclipse.emf.mwe2.launch;resolution:=optional,
> com.ibm.icu;resolution:=optional,
> de.foo.common;bundle-version="1.0.0"
> [/quote]
It always depends on the features that you use but it looks good to me
at a first glance for a normal Xtext project.
Regards,
Sebastian
--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
|
|
|
|
Powered by
FUDForum. Page generated in 0.03523 seconds