Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Using element define in one grammar into another(i wanted to use the element which i have created in one xtext into another xtext)
Using element define in one grammar into another [message #695213] Mon, 11 July 2011 05:45 Go to next message
Eclipse UserFriend
Hi all,
i have a file style.xtext which looks as follow:
External_Style:
	'{'
	('"fill"' ':' fill=(Color | Fill_gradient) (',')?)?
	('"outline"' ':' outline=Color (',')?)?
	('"stroke"' ':' stroke=Stroke (',')?)?
	('"symbol"' ':' symbol=STYLE_SYMBOL (',')?)?
	('"orientation"' ':' orientation=STYLE_ORIENTATION (',')?)?
	('"padding"' ':' padding=(NUMBER | PERCENTAGE) (',')?)?
	('"size"' ':' size=(NUMBER | PERCENTAGE) (',')?)?
	('"font"' ':' font=Font (',')?)?
	('"inside"' ':' inside=STYLE_INSIDE (',')?)?
	('"align"' ':' align=STYLE_ALIGN (',')?)?
	('"valign"' ':' valign=STYLE_ALIGN (',')?)?
	('"effect"' ':' effect=Effect (',')?)?
	'}';


Now i want to use the Style element into another file like this...
VizSpec:
	'{' '"data"' ':' data=(DataEntity | DataArray) ','
	'"grammar"' ':' vizGrammar=(GrammarEntity | GrammarArray) 
	(',' '"legends"' ':' legends=(LegendsEntity | LegendsArray))?
	(',' '"size"' ':' size=Size)?
	(',' '"style"' ':' style=External_Style)?
	'}';

Can any one please provide a solution for it...
I have basically divided the entire grammar into two...
one file containing style element and the other the rest of it...
Code given above is not the whole file....just the part of it...
Thanks in advance
Irfan.
Re: Using element define in one grammar into another [message #695227 is a reply to message #695213] Mon, 11 July 2011 06:18 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

I guess in VizSpec you want to use the style defined in the other file. That means you want a cross reference:
VizSpec:
'{' '"data"' ':' data=(DataEntity | DataArray) ','
'"grammar"' ':' vizGrammar=(GrammarEntity | GrammarArray)
(',' '"legends"' ':' legends=(LegendsEntity | LegendsArray))?
(',' '"size"' ':' size=Size)?
(',' '"style"' ':' style=[External_Style])? //changed to cross reference here
'}';

But an object can only be referenced, if it has a name

External_Style: name=ID
'{'...;

Alex
Re: Using element define in one grammar into another [message #695251 is a reply to message #695227] Mon, 11 July 2011 07:35 Go to previous messageGo to next message
Eclipse UserFriend
thanks for the rply...
now its recognizing the style element,but now when i open my editor it does not provide content assistant for style and does no even recognize its sub element as keywords....

thanks
Irfan

[Updated on: Mon, 11 July 2011 07:35] by Moderator

Re: Using element define in one grammar into another [message #695272 is a reply to message #695251] Mon, 11 July 2011 08:10 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

it is not really clear what you want to achieve. Do you want to define the style within the VizSpec-element or do you want to "reuse" a style defined elsewhere. My solution was for the second case. Of course, your grammar must allow for the Style to be defined somewhere.

Model: 'styles' (styles+=External_Style)* 'vizspecs' (vizspec+=VizSpec)*

Alex
Re: Using element define in one grammar into another [message #695278 is a reply to message #695272] Mon, 11 July 2011 08:20 Go to previous messageGo to next message
Eclipse UserFriend
hi,
i already have a style define in project,now i want to use that style in an another project,which is vizspec...

thanks
irfan

[Updated on: Mon, 11 July 2011 08:20] by Moderator

Re: Using element define in one grammar into another [message #695282 is a reply to message #695278] Mon, 11 July 2011 08:27 Go to previous messageGo to next message
Eclipse UserFriend
This still does not anwer the question whether you want to reuse the grammar for style, so that you can define a new style inline in a vizspec element or whether you simply want to cross reference to an existing style definition in another model file.

Alex
Re: Using element define in one grammar into another [message #695302 is a reply to message #695282] Mon, 11 July 2011 09:18 Go to previous messageGo to next message
Eclipse UserFriend
Hi,
I'll try to be as clear as possible...i want to use style in vizspec by referencing it with style which i hv already created...i dnt want to give an inline defination of it....i simply want my style in vizspec to be able to refer external style.
Thanks for ur rply,
Irfan.
Re: Using element define in one grammar into another [message #695312 is a reply to message #695302] Mon, 11 July 2011 09:29 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

so you want a cross reference. That is, my first post points into the direction you want to go.
You will have to make sure that at least the following conditions are met:
-the style defined in file X is exported (bydefault if it has a name) use "Open Model Element" (shift ctrl F3) to check whether you can find the style in the index
-the style is visible from the vizspec model (if style is in another project, you need a project dependency to that project or have it on the classpath somehow)
-in case the style has a "qualified name", referencing must be done via a corresponding syntax (e.g. [External_Style|Fqn] instead of [External_Style]

I still don't quite understand whether you are working with one or several grammars, i.e. languages (style and vizspec model files have different file extensions).

Alex

P.S.: Hints can only be as specific as the questions and the provided details are.
Re: Using element define in one grammar into another [message #695322 is a reply to message #695312] Mon, 11 July 2011 09:52 Go to previous messageGo to next message
Eclipse UserFriend
Hi alex,
The vizspec and style both have same extension,actually style was part of vizspec grammar it self...but then the size of grammar was too large...an it gave an error in src_gen that the size of some java file cannot be greater then 65kb...which was later register as a bug...so unless the xtext team can come up with a solution of it i was kind of stuck...so i decided to break the grammar into two parts...
Re: Using element define in one grammar into another [message #695324 is a reply to message #695322] Mon, 11 July 2011 09:55 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

so you are saying that you have two different languages that register the same file extension?

Alex
Re: Using element define in one grammar into another [message #695328 is a reply to message #695324] Mon, 11 July 2011 10:04 Go to previous message
Eclipse UserFriend
Yes...because i am not aware of any other way to split the grammar...so i created two different grammar...
Previous Topic:Unordered group problem
Next Topic:C# like #region Preprocessor
Goto Forum:
  


Current Time: Wed Jul 23 14:38:27 EDT 2025

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

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

Back to the top