Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Xtext dsl file extensions(Splitting grammar across multiple files)
Xtext dsl file extensions [message #708178] Tue, 02 August 2011 10:38 Go to next message
Eclipse UserFriend
I have a DSL as:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals

import "http://www.eclipse.org/emf/2002/Ecore" as ecore

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

Model:
"my invitations:" name=ID ("extends" extensions+=ID (',' extensions+=ID)*)? "{"
invitations=Invitations
"}"
;

Invitations:
greetings+=Greeting+;

Greeting:
'Hello' name=ID '!';

--------------------------------------

My intention is to able to support grammar files like:

invite1.mydsl:
my invitations:invite1{
Hello William!
}


invite2.mydsl:
my invitations:invite2 extends invite1{
Hello Columbus!
}

The above two file should result as:
my invitations:invite2 {
Hello William!
Hello Columbus!
}

Could someone suggest what should be the way to approach this.

Thanks



Re: Xtext dsl file extensions [message #708264 is a reply to message #708178] Tue, 02 August 2011 12:02 Go to previous message
Eclipse UserFriend
A couple of observations:
- do not use space in keywords. Replace
"my invitations:"
with
"my" "invitations" ":"

- Use [ ] for cross references. i.e.
(extensions += [Invite] (',' extensions += [Invite])*)?

- Your Invitation is called "Model" suggest changing that to Invite
(that is what I used in the example above).

Note that [Invite] is shorthand for [Invite|ID] and it cross references
to Invite.name by default. How the cross referencing actually finds
stuff is determined by how you decide to handle scopes in general - if
user needs to import what is to be visible, if it is visible by virtue
of being on the OSGi "classpath", by Eclipse project dependency
configuration (or some other scheme of your own).

Hope that helps.
Regards
- henrik

On 8/2/11 4:38 PM, sungam wrote:
> I have a DSL as:
> grammar org.xtext.example.mydsl.MyDsl with
> org.eclipse.xtext.common.Terminals
>
> import "http://www.eclipse.org/emf/2002/Ecore" as ecore
>
> generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
>
> Model:
> "my invitations:" name=ID ("extends" extensions+=ID (','
> extensions+=ID)*)? "{"
> invitations=Invitations
> "}"
> ;
>
> Invitations:
> greetings+=Greeting+;
>
> Greeting:
> 'Hello' name=ID '!';
>
> --------------------------------------
>
> My intention is to able to support grammar files like:
>
> invite1.mydsl:
> my invitations:invite1{
> Hello William!
> }
>
>
> invite2.mydsl:
> my invitations:invite2 extends invite1{
> Hello Columbus!
> }
>
> The above two file should result as:
> my invitations:invite2 {
> Hello William!
> Hello Columbus!
> }
>
> Could someone suggest what should be the way to approach this.
>
> Thanks
>
>
>
>
Previous Topic:extend xbase with a binary literal
Next Topic:Finding references from builder
Goto Forum:
  


Current Time: Thu Jul 10 02:19:42 EDT 2025

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

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

Back to the top