Xtext success story at Google

You are not authorized to post comments.
Session Type: 
Standard [35 minutes]

Xtext provides a solid framework for creating IDE support for Domain-Specific Languages. With only a few clicks, Xtext is capable of generating language interpreters and full-blown editors, all from a single grammar definition.

Even though Xtext provides practical and functional defaults, it is often necessary to customize the looks and behavior of the generated editor. Thanks to Xtext's well-thought architecture, extending the generated editor is usually a painless exercise. Sometimes, depending on the requirements of your language, such customizations can be non-trivial and difficult to achieve.

This session introduces lessons learned while developing custom editors at Google, including:

  • Xtext's usage of dependency injection, and its benefits
  • Xtext's dynamic method dispatching: pros and cons
  • Creating scopes for type resolution
  • Designing grammars for complex languages
  • Testing
  • What to expect from Xtext’s documentation and forum
  • Recommended reading

and more.

Schedule info



Experience level: 

re: The content will be different

That sounds great! Thanks for clarifying.

The content will be different

The content will be different in the sense that this time I will show the grammars of 3 Xtext-based editors that we have here. One of them has all the syntax rules hard-coded in the grammar. The other one has a very generic grammar and all the syntactic and semantic rules are implemented in libraries. The third one shows how to create a grammar when the language rules are too loose and unstructured (e.g. lots of free form text.)

I will walk through the grammars and the editors showing the differences and explain *why* we have different approaches for each editor. I'll talk about testing too.

I also plan to show how the different grammar approaches affect implementations of scope resolution (which is for me, the toughest part of creating an editor.) I'll walk through the code (showing the design decisions we had to make, based on the grammars we had to work with.)

On a more personal note, last year I went through several issues when preparing the talk. My kid got sick days before the conference, and I couldn't practice as much as I wanted. To add insult to injury, I forgot my migraine medicine and I delivered the talk while I was having a serious migraine (I took 6 Tylenol tablets but it didn't help.) It was just awful. I didn't know if I should cancel the talk or just deliver it and try my best. I made the wrong decision then. This year I'll do a better job, if I this proposal gets accepted :)

Same as last year?

Can you describe how this talk would be updated versus what you presented in this talk last year?

Copyright © 2013 The Eclipse Foundation. All Rights Reserved.