Skip to main content
Jump to: navigation, search

Provide an Eclipse IDE generation environment derived from a language grammar

I plan to extend Chris J Daly’s Gymnast (described in Language Toolkits Technology Exchange, EclipseCON 2005) so that it supports:

1. generating EMF-compliant classes for Concrete Syntax Tree nodes. With that, using OCL (Object Constraint Language) becomes possible to check the well-formedness of CSTs before transforming them to ASTs. The author of such transformation may thus employ QVT-style technology, e.g. ATLAS ATL.

2. generating an LPG grammar in addition to those already supported (ANTLR and JavaCC).

3. generate a visitor to unparse a CST into a pretty-printed representation, re-using hints specified in the existing Gymnast grammar format. For example,

 sequence ifConstruct :
    "if" expr
        "then" expr
        "else" expr

would result in unparsing following a similar layout.

4. generate a text editor with usability features. The design patterns to generate have been harvested while implementing the Emfatic extension for EMF Generics. These usability features include:

Outline view, Mark occurrences, folding, Hovers displaying declaration for a given usage, Live problem and warning markers, Navigable hyperlinks, "File New" wizard, AutoEdits such as SmartBrace (i.e. automatically completing with a closing terminal), User-provided templates, Syntax-aware Content Assist. Refactoring will be explored (at the very least, by updating usages-for-declarations)

A common theme consists in making the most out of the input specification. For example, the type-checking rules for expressions in a DSL are usually not specified declaratively. OCL (Object Constraint Language) can uniformly be used to specify static semantics and type-checking rules, as shown in: Rules for Type-checking of Parametric Polymorphism in EMF Generics

Tips on processing OCL are reported in my Eclipse Technical article (under review), at: How to process OCL Abstract Syntax Trees

Once the extensions 1. to 4. have been implemented, an IDE for Gymnast will be bootstrapped with the Gymnast generator. Additionally, a case study will be undertaken to validate the approach, i.e. an IDE will be generated for one of:

  • an ExecutableUML-style language but EMF-based
  • a human-readable notation for UML2

Preparing developer documentation (and community articles) is an integral part of the planned tasks.

Back to the top