Wednesday, March 31, 2010

Xtext For Your Ecore Models

The new M6 release of Xtext ships with a new component: The Ecore2Xtext Wizard.

Why should you use the
Ecore2Xtext Wizard?
  • You want your models to be in a syntax that humans can not only read but also understand.
  • You want a model editor that offers all the convenience of a modern IDE.
  • You already have an Ecore model but don't know how to start with Xtext.
  • Your Ecore model is huge and you want a quick start with Xtext. You can easily fine-tune the syntax later on.
How do you use it?
  1. Start the wizard by choosing New -> Xtext -> Xtext Project From Existing Ecore Models.
  2. Select the EMF generator models1 from your workspace for which you want a textual syntax and choose your root element's type.
  3. Fill in all the language metadata on the second page of the wizard. Remember the file extension.
  4. Click Finish and wait until Xtext has generated the two common Xtext plug-ins and the Xtext grammar for your language.
  5. Run the MWE2 workflow located in the same directory as the grammar. Now Xtext generates the language infrastructure (parser, editor, formatter etc) .
  6. Spawn a new Eclipse runtime workbench, create a sample Java Project, and open a new model file with the file extension you have chosen in the wizard. Play around and have fun with your new textual model editor.
1 the genmodel is needed because we need the fully qualified names of the generated Java classes as well as the location of the Ecore file. The genmodel offers both of them.

Watch this short screencast to see it in action:

What is the generated syntax like?

Names of EClasses and EStructuralFeatures become keywords, containment is marked with curly braces, elements in lists are separated by commas, etc... Here's an example of an entity model in the generated language:

What if it doesn't work?

The grammar is the primary artifact of every Xtext language, but there are a couple of further services you might have to configure:
  • A IQualifiedNameProvider to define how the fully qualified name of an element is derived.
  • A IScopeProvider to define which elements are candidates for a cross reference.
  • ...
Please consult the Xtext documentation for more information.

Another geekish meta-confusing example

All right geeks, Ecore itself is defined in Ecore, so let's generate a textual syntax for Ecore and see how Ecore looks in that syntax! Only two adaptions of the generated code where necessary to get this editor:

(The '^' chars are automatically added by Xtext to distinguish identifiers from keywords, which of course collide a lot in this example) It is certainly not as complete as EMFatic, and it has a quite verbose syntax, but it could be the starting point for a nice textual Ecore editor.

Thursday, March 25, 2010

EclipseCon 2010 - Xtext everywhere

It's the last day of this year's EclipseCon. My second time in Santa Clara and I even liked it better than last year: Many intriguing talks around Eclipse, OSGi, e4 and others, interesting people, much time for getting to know each other.

The itemis team has had a fair share on the program: With Moritz and Heiko, I gave a workshop in which we showed how to build an Xtext editor for the e4 workbench model. I also had a lightning talk on my favorite topic "Combining text and graphics in modeling editors". As always, you can download the slides to all talks from slideshare. We also had talks on Xtext, MWE2, Xpand and model-driven iPhone application development.

Xtext has been ubiquitous. We have seen a lot of cool Xtext editors in many talks. Quite a bunch of people came to our booth just to say thank you for the cool piece of software we've been working on for the past years. The absolute highlight was when Xtext received the Eclipse Community Award for the most innovative Eclipse project. It is so inspiring to get such a huge amount of positive feedback.

NASA also sponsored a competition of building a e4 client to control a small robot simulating the Mars Rover. Peter and Heiko have decided not to sleep but to rather build an iPhone client instead. Even though it was not based on e4, people were really impressed. Watch Jeff Norris from NASA driving the rover with an iPhone! By the way, Jeff gave the best keynote I have ever seen on "Rocket Science and the Republic".

Tonight will be the European Reception sponsored by itemis and the conference will end. We'll have another day in San Francisco before returning home to Germany. I hope I will make it next year again. Thanks to the organizational team for giving such a wonderful conference.