Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Need help getting started on a grammar (again) (SOLVED)
Need help getting started on a grammar (again) (SOLVED) [message #1380003] Sat, 24 May 2014 20:14 Go to next message
Eclipse UserFriend
Some of you may remember me from earlier this year in that I was completely unable to get Xtext working at all and managed to waste quite a fair bit of people's time in the process. The thread ended with a resolution to buy Lorenzo Bettini's book, Implementing Domain-Specific Languages with Xtext and Xtend.

I finally had a chance this weekend to crack open the book and follow along, and I'm running into a problem. I learned from my last shot at this that trying to fix it myself without some expert advice isn't going to get me anywhere.

Here's my grammar resulting from following the book through about halfway down page 38:
grammar org.example.entities.Entities with org.eclipse.xtext.common.Terminals

generate entities "http://www.example.org/entities/Entities"

Model:
	entities += Entity*;
	
Entity:
	'entity' name = ID ('extends' superType=[Entity])? '{'
		attributes += Attribute*
	'}'
;

Attribute:
		type=[Entity] array?=('[' ']')? name=ID ';'
;


The grammar was previously working; since, the only modification was to change '[]' to '[' ']' to allow arbitrary whitespace between the square brackets.

I get a syntax error under ']' claiming: extraneous input "]" expecting ')'

I've dug around the web a little and found examples of this sort of putting two string literals right next to each other, so I suspect it's not so much an issue with the grammar as a problem with my setup. Any ideas on how to proceed would be greatly appreciated.

[Updated on: Sat, 24 May 2014 20:16] by Moderator

Re: Need help getting started on a grammar (again) (SOLVED) [message #1380012 is a reply to message #1380003] Sat, 24 May 2014 20:19 Go to previous messageGo to next message
Eclipse UserFriend
The error was in that not only should array's value be optional, but the entire field (feature?).

Copying from a paper reference is surprisingly difficult when you don't know what you're doing!
Re: Need help getting started on a grammar (again) (SOLVED) [message #1381425 is a reply to message #1380012] Sun, 25 May 2014 10:52 Go to previous messageGo to next message
Eclipse UserFriend
I don't know enough about it to offer you a specific answer. My suggestion would be to separate mandatory features from nice-to-haves (such as allowing arbitrary whitespace). Get the thing working first so at least you can get something done. Then later you can try to add convenience options.

I struggled for about a month getting two DSLs working. Didn't have the slightest idea what I was doing especially at first. I wasn't spoonfed any answers here for sure, but got enough hints and persevered.
Re: Need help getting started on a grammar (again) [message #1383799 is a reply to message #1380003] Mon, 26 May 2014 10:47 Go to previous message
Eclipse UserFriend
On 25/05/2014 02:14, Jordan Wallet wrote:
> Some of you may remember me from earlier this year in that I was
> completely unable to get Xtext working at all and managed to waste quite
> a fair bit of people's time in the process. The thread ended with a
> resolution to buy Lorenzo Bettini's book, Implementing Domain-Specific
> Languages with Xtext and Xtend.
>
> I finally had a chance this weekend to crack open the book and follow
> along, and I'm running into a problem. I learned from my last shot at
> this that trying to fix it myself without some expert advice isn't going
> to get me anywhere.
>
> Here's my grammar resulting from following the book through about
> halfway down page 38:
> grammar org.example.entities.Entities with
> org.eclipse.xtext.common.Terminals
>
> generate entities "http://www.example.org/entities/Entities"
>
> Model:
> entities += Entity*;
>
> Entity:
> 'entity' name = ID ('extends' superType=[Entity])? '{'
> attributes += Attribute*
> '}'
> ;
>
> Attribute:
> type=[Entity] array?=('[' ']')? name=ID ';'
> ;
>
>

On page 38 the modified rule is

Attribute: type=[Entity] (array?='[' ']')? name=ID ';';


--
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
HOME: http://www.lorenzobettini.it
Xtext Book:
http://www.packtpub.com/implementing-domain-specific-languages-with-xtext-and-xtend/book
Previous Topic:Deploy xtext plugin and install the correct version of xtext automatically in the client
Next Topic:Extending a DSL with Plugins
Goto Forum:
  


Current Time: Sun Jul 27 09:31:43 EDT 2025

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

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

Back to the top