Home » Modeling » TMF (Xtext) » Combining existing Model and own Grammar(EMF-Model + own Grammar = getting stuck? )
Combining existing Model and own Grammar [message #1003972] |
Tue, 22 January 2013 10:46 |
Annika Wießgügel Messages: 11 Registered: January 2013 |
Junior Member |
|
|
Hello everyone,
i have a special problem concering XText, that seems not to be solveable with just asking google.
In the project i'm currently working in, we have a finished EMF Model, that we want to use in XText, so we imported it according to the XText Documentation.
import "link_to_model" as gruml
import "link_to_model/domains" as domains
import "link_to_model/structure" as structure (e.g.)
This already seems to work, now the problem occurs, we want to also use an own grammar that is not equivalent to the emf model. Model and Grammar belong together in a very complicated way, but the rules will not generate the imported model.
Now we started adding statements like:
SchemaName returns structure::Schema:
{name}
packagePrefix=PackageName name=QualifiedName ';'
;
to our grammar. As we are beginners in working with xtext,we now face a problem merging those two different parts into into project.
Is there a possibility to merge them in a right way? Is Xtext capable of using a grammar and an imported model, that don't fit together?
Don't ask why we need this, it is only important for us to get it working. We already read the documentation.
Would be pleased if someone could help us
Greetings
Annika
|
|
|
Re: Combining existing Model and own Grammar [message #1004199 is a reply to message #1003972] |
Tue, 22 January 2013 19:27 |
Henrik Lindberg Messages: 2509 Registered: July 2009 |
Senior Member |
|
|
You can have an external model (not generated from the grammar), and
have the generated parser instantiate that model.
There are certain rules however regarding containment/references,
scoping/linking etc. that affects how the language/support for the
language will behave.
If a good concrete syntax for the language requires a model that is to
far off from the existing model it may be better to perform
transformation in a build step.
Hope that helps.
- henrik
On 2013-22-01 14:35, Annika Wießgügel wrote:
> Hello everyone,
> i have a special problem concering XText, that seems not to be solveable
> with just asking google.
> In the project i'm currently working in, we have a finished EMF Model,
> that we want to use in XText, so we imported it according to the XText
> Documentation.
> import "link_to_model" as gruml
> import "link_to_model/domains" as domains
> import "link_to_model/structure" as structure (e.g.)
>
> This already seems to work, now the problem occurs, we want to also use
> an own grammar that is not equivalent to the emf model. Model and
> Grammar belong together in a very complicated way, but the rules will
> not generate the imported model. Now we started adding statements like:
> SchemaName returns structure::Schema:
> {name}
> packagePrefix=PackageName name=QualifiedName ';'
> ;
>
> to our grammar. As we are beginners in working with xtext,we now face a
> problem merging those two different parts into into project. Is there a
> possibility to merge them in a right way? Is Xtext capable of using a
> grammar and an imported model, that don't fit together?
> Don't ask why we need this, it is only important for us to get it
> working. We already read the documentation.
> Would be pleased if someone could help us :)
> Greetings
> Annika
|
|
| |
Re: Combining existing Model and own Grammar [message #1005214 is a reply to message #1005049] |
Thu, 24 January 2013 16:49 |
Henrik Lindberg Messages: 2509 Registered: July 2009 |
Senior Member |
|
|
On 2013-24-01 12:29, Annika Wießgügel wrote:
> Thanks for your quick answer!
> Since we're beginnners in working with XText, we now wonder, what you
> mean by "perform
> transformation in a build step". Is there a certain java class (like the
> ui-classes for outline etc) to be adjustet the way we want it to provide
> this "building functionality"? If you mean this, is there any tutorial
> or documentation where we can learn how to write such things? (or else,
> how is this done exactly? I think there is nearly no documentation about
> more difficult problems in Xtext...)
>
The "builds" are eclipse workspace builds with a small extension to make
them easy to use with Xtext. In addition to the "build when files are
saved", you can naturally keep things in sync also while editing -
depends on when you want the other resources updated/synced.
Model to Model transformation is either done with your own java logic,
translating one EMF model into another, or by using one of the (many
different) model to model transformation frameworks available.
> Is the "returns" functionality in the grammar a step towards the right
> solution?
Yes, you will need (and want) to specify what rules return.
> Some background knowledge: Our grammar and our model both belong to the
> same language, but as they are used in different contexts (a visual
> editor and a textual editor) we need both representations. To build our
> grammar we used an existing EBNF and shortened it to the appropriate
> level. The model which is build in the background (not the emf-model but
> the one also responsible for the predefined outline view)should
> correspond to the EBNF. That's the reason why we coudn't create our
> grammar according to the EMF-Model, so that is automatically generated
> while building our editor. Now we have to merge them with our XText to
> provide a fluent workflow with both plugins we're working on.
> Greetings, Annika
Not sure I completely understood that.
If you are new to Xtext maybe you want to contract Itemis to help you
out - maybe just to get you on the right track. It may take you some
time to get familiar with all the involved technologies and find the
right approach.
Best of luck
Regards
- henrik
|
|
| |
Re: Combining existing Model and own Grammar [message #1006565 is a reply to message #1006471] |
Thu, 31 January 2013 18:59 |
Henrik Lindberg Messages: 2509 Registered: July 2009 |
Senior Member |
|
|
On 2013-31-01 13:31, Annika Wießgügel wrote:
> Thanks for trying to help us!
> One more question, since the last post didn't help that much: Is there a
> possibility to "skip" certain rules in the grammar?
Not really, although you can write rules that have no assignments you
will always end up with some kind of production of a result. The problem
is where this result is "added to its parent" if it is of a type that is
not supported.
Maybe write your grammar for a model that is derived from the original.
In this model you add the classes you need. If these classes only
contain things from the original grammar (and you don't have to assign
new things to old) then it should be quite easy to achieve.
It sounds like that is the case for you; some kind of top level
container that simply has content from the other model.
Hope that helps
- henrik
> For example you have
> a rule ThisRule and a rule ThatRule and you want to use an Ecore-Model
> that only has ThatRule but not ThisRule, but in your grammar you
> explicitly need ThisRule. Is there a possibility to say "thisRule does
> not correspond to anything in the ecore model, please skip it,
> continuing on ThatRule" ?
> We now have this problem, since in our model (and the visual editor) we
> don't have a part that is included in our grammar. In the grammat it is
> essential and represents the document as a whole, so to say the whole
> model... We cannot transform it in any way...
> Greetings,
> Annika
|
|
| |
Goto Forum:
Current Time: Thu Sep 19 19:35:51 GMT 2024
Powered by FUDForum. Page generated in 0.03625 seconds
|