Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Cannot find meta model when reusing parts of XBase
Cannot find meta model when reusing parts of XBase [message #694441] Fri, 08 July 2011 11:43 Go to next message
Eclipse UserFriend
Hi

Disclaimer: Total newbie with XText Smile

Since my DSL needs to support assignments, block expressions, etc. I've chosen to reuse parts of XBase...
But even with the tiniest of reuse (copy from XBase grammar) in a freshly create XText project (XText 2 enabled), it states that it can't find the Type And Meta model for ValidId.

Any pointers to what I'm doing wrong? Smile

grammar dk.example.Dsl with org.eclipse.xtext.common.Terminals

import "http://www.eclipse.org/emf/2002/Ecore" as ecore
import "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
import "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"

generate Dsl "http://www.example.dk/Dsl"

XExpression returns XExpression:
	XAssignment;

XAssignment returns XExpression:
	{XAssignment} feature=[ValidID]
	OpSingleAssign value=XAssignment;

OpSingleAssign:
	'=';

QualifiedName:
  ValidID ('.' ValidID)*;

ValidID:
	ID;


Thanks in advance Smile

/Jeppe
Re: Cannot find meta model when reusing parts of XBase [message #694455 is a reply to message #694441] Fri, 08 July 2011 11:55 Go to previous messageGo to next message
Eclipse UserFriend
Have you set a plug-in dependency to org.eclipse.xbase in the
MANIFEST.MF of your language project?

Am 08.07.11 17:43, schrieb Jeppe Cramon:
> Hi
>
> Disclaimer: Total newbie with XText :)
>
> Since my DSL needs to support assignments, block expressions, etc. I've
> chosen to reuse parts of XBase... But even with the tiniest of reuse
> (copy from XBase grammar) in a freshly create XText project (XText 2
> enabled), it states that it can't find the Type And Meta model for ValidId.
>
> Any pointers to what I'm doing wrong? :)
>
>
> grammar dk.example.Dsl with org.eclipse.xtext.common.Terminals
>
> import "http://www.eclipse.org/emf/2002/Ecore" as ecore
> import "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
> import "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
>
> generate Dsl "http://www.example.dk/Dsl"
>
> XExpression returns XExpression:
> XAssignment;
>
> XAssignment returns XExpression:
> {XAssignment} feature=[ValidID]
> OpSingleAssign value=XAssignment;
>
> OpSingleAssign:
> '=';
>
> QualifiedName:
> ValidID ('.' ValidID)*;
>
> ValidID:
> ID;
>
>
> Thanks in advance :)
>
> /Jeppe


--
Need professional support for Eclipse Modeling?
Go visit: http://xtext.itemis.com
Re: Cannot find meta model when reusing parts of XBase [message #694582 is a reply to message #694455] Fri, 08 July 2011 18:14 Go to previous messageGo to next message
Eclipse UserFriend
Hi Jan

Thanks for the quick reply. I hadn't set the dependency on xbase, but unfortunately it still complains that it can't find the Meta model or type for ValidId, eventhough ValidId is defined within the same grammar.

/Jeppe

Re: Cannot find meta model when reusing parts of XBase [message #694665 is a reply to message #694582] Sat, 09 July 2011 02:20 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

ValidId is a Datatype Rule and not a Parser Rule => There will be not EClass ValidId => You cannot have a crossref to a ValidId.

since you have

import "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
import "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"


the xbase project has to be within your workspace.

http://www.eclipse.org/Xtext/documentation/2_0_0/199-xtext-and-java.php
may give you an idea what to do

~Christian

[Updated on: Sat, 09 July 2011 02:23] by Moderator

Re: Cannot find meta model when reusing parts of XBase [message #694721 is a reply to message #694665] Sat, 09 July 2011 09:06 Go to previous messageGo to next message
Eclipse UserFriend
Hi

I added the suggested plugins (though I couldn't find org.eclipse.xtext.common.types but only org.eclipse.xtext.common.types.shared), but that didn't help.

You mentioned that I was cross referencing ValidId, which shouldn't be possible since it's a DataType Rule, which makes sense. How ever I'm unsure how else to do it?

Short explanation for my simple grammar: I've reproduced a simplification (without references to any java types, as I don't need that, and with some things like the XOrExpression removed just to make the example extra simple) of XBase's XAssignment rule (reproduced below), just to get started:

XAssignment returns XExpression :
{XAssignment} feature=[types::JvmIdentifiableElement|ValidID] OpSingleAssign value=XAssignment |
XOrExpression (
=>({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign]) rightOperand=XAssignment
)?;


/Jeppe
Re: Cannot find meta model when reusing parts of XBase [message #694728 is a reply to message #694721] Sat, 09 July 2011 09:27 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

still don't get it what you want to do. if you want to use xbase you actually have to use xbase Wink
(as described in the docs by inheritance)

so what you actually want to do is maybe "reuse" xbase in sense of "do something similar"
but then you don't need this stuff at all. so in your case if you do not want to reference
nothing from an (X)Assignment then you do not need to do a reference but rather an simple EAttribute
feature=ValidId

but this only works if you don't use the xbase metamodel (your XAssignment may not be the one from xbase)

without knowing what you actually want to do its hard to give further advice

~Christian
Re: Cannot find meta model when reusing parts of XBase [message #694741 is a reply to message #694728] Sat, 09 July 2011 10:15 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian

I want to reuse XBase due to many of its features, but I don't want the ability to reference Java and there are some language elements that I don't want supported.
So to get started fast I chose to reference the existing meta models (the ecore parts) and then copy, the parts of the the XBase grammar that I needed, directly to my own grammar (I plan on copying the ecore models as well so they're trimmed down, but I'm trying to take one step at a time, so I can keep up with it, not doing a good job at it so far Wink ). The copying of the Xbase grammar seemed to work really well, except that XText complains that it can't find the meta model (and type) for ValidId, OpAdd, OpAnd, OpCompare, etc.

After this failed attempt, I tried to cut down the grammar even more to make the simplest example possible (based on XBase) and it still kept complaining about ValidId... It might be due to how I've shaved the XBase grammer (like removing all references to Java types) so it's no longer valid?

Did this explain my endeavor better? Smile

Also if there's a better way of obtaining this I'm all ears Smile


/Jeppe

[Updated on: Sat, 09 July 2011 10:17] by Moderator

Re: Cannot find meta model when reusing parts of XBase [message #694746 is a reply to message #694741] Sat, 09 July 2011 10:22 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

Right but i doubt this one step after another will work the way you try it.
Once more: the ValidId Problem is that the xbase ecore says that there is a reference to a types::JvmIdentifiableElement.
and that in the model file therefore a validid will be parsed. so you can't easly change that there is a Reference to a Type ValidId
that is nowhere defined nor parsed somewhere in your grammar/metamodels.

~Christian
Re: Cannot find meta model when reusing parts of XBase [message #694771 is a reply to message #694746] Sat, 09 July 2011 12:40 Go to previous message
Eclipse UserFriend
Hi

Ah okay, I interpreted it as either a JVM type or a valid...
Think I will roll my own instead. Thanks for your help Smile

/Jeppe
Previous Topic:error detector
Next Topic:Auto edit for multi line comments
Goto Forum:
  


Current Time: Mon Jul 07 04:42:38 EDT 2025

Powered by FUDForum. Page generated in 0.34852 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top