DevBooststLogotudLogorewerseLogo modelplexLogo
crimsonBG
EMFText
The fastest way to refinable, durable and evolution-resistant textual syntaxes for EMF models!

Whats new and noteworthy in EMFText 1.4.1?

User Interface

Generate All Action


Syntax and Metamodel Code Generation: The 'Generate All' action can be used to generate code for all EMF generator models and all syntax definitions also in multiple projects.

generate_all_action.png

Code generation

Automatic spell checking


EMFText does now integrate with the Eclipse spell checker by default.

spell_checking.png

Support for task items


EMFText does now automatically detect tasks in textual models and creates respective markers that are shown in the Tasks view.

task_item_detection.png

New actions in Outline view


EMFText does now generate a set of useful actions for the Outline view.

outline_view_actions.png

Further improvements


Improved performance of error marker creation

The speed of creating large sets of errors markers has been greatly improved. This will particulary be noticed when editing textual models that contain many errors.

Metamodel for layout information

The information about whitespaces can now not only be preserved in models, but also edited. To do so, DSLs must simply extend the common layout metamodel. Using so-called 'Collect-In'-Tokens is now deprecated.

Default execution environment is now Java 6

As Eclipse has officially moved to Java 6 as minimal execution environment, this is now the default environment for generated resource plug-ins. However, the plug-ins will still compile and run under Java 5.

Generating Eclipse independent code

EMFText does now explicitly offer the option to generate code that does not have any Eclipse dependencies, which is useful to deploy DSLs in non-Eclipse environments (e.g., web servers).

Encoding-aware parsing and printing

EMFText does take care of file encoding when parsing and printing models.

Upgrade to ANTLR 3.4.0

EMFText does now use the most recent version of ANTLR to generate parsers.

Improved printing and code completion

Quite some bugs have been fixed in the printer and the code completion algorithms.

New tools available on the update site

EMFCustomize


EMFCustomize allows to customize operations defined in EMF Ecore models without directly modifying the generated code. EMFCustomize detects subclasses of generated EMF classes and automatically adapts the Ecore model to produce customized EMF Factories that instantiate the custom subclasses instead of the generated Impl classes. As a result, the generated and the hand-written code are cleanly separated, but still the full JDT functionality is available during implementation.
EMFCustomize example

CommentTemplate


CommentTemplate is a lightweight template engine that is tightly integrated with Java. Templates are written in Java, multi-line comments are used to encapsulate template content. CommentTemplate compiles templates written in plain Java file and creates generators in plain Java.
CommentTemplate example

New languages available on the update site

HEDL


HEDL (Hibernate Entity Definition Language) can be used to generate entity classes and data access objects for the Hibernate ORM framework.
HEDL example model

Functions


The Functions DSL can be used to specify system functions and data types on a high level. The DSL is accompanied by a builder that creates a PDF document from this specification.
Functions document

Calc


The Calc DSL can be used to specify simple calculations. It can be used to configure such calculation rules at runtime within applications as it comes with an interpreter.
Calc example

New features for languages available on the update site

eJava


eJava now offers a custom wizard for new files which allows to select a metaclass and then generates a stub for the eJava file.

ejava_new_file_wizard.png

MinimalEcore


MinimalEcore does now automatically reload the EMF generator model after updating the Ecore model. It also supports generics now.


Whats new and noteworthy in EMFText 1.4.0?

Code generation

Support for running/debugging models


EMFText does now automatically add UI elements to execute models.

run_as_menu.png

Support for launch configurations


The execution of DSL models can be parameterized with launch configurations.

launch_configuration.png

Debugging out of the box


EMFText does now automatically generate a full-fledged debugger for DSLs that use an interpreter for execution.

debugging.png

Support for New Project templates


You can replace a default ZIP file with custom content to provide a template for new projects to users of your DSL.

new_dsl_project_wizard.png

New languages available on the update site

DBSchema


Can be used to specify database schemata. The DSL comes with a wizard that can extract existing schemata using JDBC.
DBSchema discovery wizard

Whats new and noteworthy in EMFText 1.3.4?

User Interface

Custom Syntax Wizard


Syntax Generation: The custom syntax wizard allows to configure the syntax generation process with many options.
EMFText Feature CustomSyntaxGenerator.gif

Enhanced New Project Wizard


Creating new projects: Select the code to be generated when creating new projects.

new_project_wizard_codegen_page.gif

New languages available on the update site

Minimal Ecore


Can be used to quickly create Ecore models.
Example Minimal Ecore file

WebTest


A basic script language for functional web site testing.
Example WebTest script

Whats new and noteworthy in EMFText 1.3.3?

Syntax specification (CS language)

Syntax for Enumeration Attributes


Defining syntax for enumeration attributes is now even easier.

enumeration_attribute_syntax.gif

Code generation

Default Quick Fixes for unresolved references


EMFText does now automatically add quick fixes for unresolved references.

default_quick_fix.gif

New languages available on the update site

OSGi Manifest files


Can be used to read, transform and write manifest files with EMF tools.
Example Manifest and Outline

OWLCL


OWLCL be used to add OWL constraints to Ecore metamodels.
OWL CL example and corresponding Ecore model

Whats new and noteworthy in EMFText 1.3.2?

EMFText 1.3.2 is a pure bugfix release. It does not contain new features. Please consult the Release Notes to see which bugs have been fixed.

Whats new and noteworthy in EMFText 1.3.1?

User Interface

Java-style Syntax Generator


Syntax Derivation: Similar to HUTN, a Java-like syntax can now be generated.

java_style_generator.gif

Syntax specification (CS language)

Syntax for Boolean Attributes


Defining syntax for boolean attributes is now as easy as it can get.

boolean_attribute_syntax.gif

Improved syntax analysis


The analysis of .cs files has been extended to detect more problems. In particular duplicate and conflicting options are now reported.

Automatic token sorting


Tokens defined in .cs files are now automatically sorted. More specific tokens are preferred over more general ones.

Code generation

Customization of Code Completion Proposals


EMFText does now generate a dedicated class which can be overridden to modify the completion proposals that are computed automatically.

Support for Quick Fixes


EMFText does now support to easily create quick fixes for problems that are detected in DSL documents.

Dynamic Syntax Highlighting


The highlighting of text elements can now be performed dynamically. Instead of assigning color and text style per token type, tokens can be styled depending on their text or position in the document.

Improved features

  • Improved overall performance
    • Code generation for large DSLs is now significantly faster
    • Code completion for large documents performs faster now
  • Improved generated preference pages for syntax highlighting
  • Generated editors do now show occurrences in the overview ruler
  • Generated editors do now include documentation that is found in generator models in the default hover text

Documentation

EMFText is now shipped with a completely revised documentation that is both available from the Eclipse Help menu and the web.

New languages available on the update site

EMFDoc


EMFDoc can be used to add documentation to Ecore models.

EMFText Language EMFDoc.gif

Whats new and noteworthy in EMFText 1.3.0?

User Interface

EMFText Project Wizard


Project Scaffolding: Advanced wizard to create new EMFText projects

new_project_wizard.png


Syntax specification (CS language)

Operator rules


Operator rules can be used for metamodels that have expression-like constructs.

operator_rules.png

EMFText Language SimpleMath.gif

Examples are mathematical expressions, logical expressions or other forms of nested syntax elements. Often these expressions cause problems, because they are left-recursive and require to prioritize one rule over another. EMFText 1.3.0 does now provide special annotations (@Operator) to define such rules, assign priorities as well as associativity. This allows for clean and easy modelling of the expressions.

Examples on how to use these new annotations can be found in the SimpleMath and Three Valued Logic languages.

Partial token definitions


The regular expression for token definitions can now be composed. This is particularly useful when regular expressions contain repeating sequences.

fragment_tokens.png

Rule Overrides


Rules from imported syntaxes can be overridden now. To do so, basically add a new rule for the metaclass, which does already have syntax defined in an imported syntax and tag the new rule with the @Override annotation. One can also remove rules using @Override(remove="true").

Anonymous Attributes


Anonymous attributes can be used if one expects a certain token in a CS rule, but does not want to store the token value in an attribute. This is particularly useful when defining syntax for existing metamodels, where one can not add attributes anymore, but the syntax required tokens at particular spots in CS rules.

anonymous_attributes.png

Code generation

Separation of generated code into two plug-ins


Instead of generating one resource plug-in, EMFText does now generate two separate plug-ins. One contains the parser, printer and EMF integration code. The second one contains anything connected to the UI, for example the editor and preference pages. This enables the usage of DSLs in headless environments.

Generation of builder stub and project nature


EMFText does now generate a builder class for DSLs and a project nature. The builder can easily be customized to transform or compile DSL documents whenever these are saved.

Generation of interpreter stub


To ease the implementation of interpreters for DSLs, a stub class is generated, which implements a stack-based interpretation pattern. For each metaclass a method, responsible for interpreting instances of this class is added to the stub. By subclassing the abstract interpreter stub one can easily program interpreters. Examples can be found in the SimpleMath and Three Valued Logic languages.

EMF Validation


The EMF Validation framework is now used to check textual models by default. This way, the same validation classes registered for a metamodel can be used both in graphical and textual editors.

Incremental Code Generation


EMFText does now override only classes that have changed. This speeds up both the code generation as well as the compilation of generated plug-ins.

Improved features

  • Improved printing of models
  • Layout of textual models (e.g., whitespace and linebreaks) is preserved now
  • Improved default token resolving (integrated EMF data type handlers)
  • Improved default reference resolving (external references are now resolved automatically)
  • Updated ANTLR to version 3.2.0

Breaking changes

  • The escape mechanism for keywords has been changed. Keywords are now handled exactly like strings in Java source code. There is no need to additionally escape backslashes as before.
  • The following languages have new feature IDs. Before installing them, make sure to remove the older versions that are installed. Otherwise you may end up with two versions of the same language.
    • Custom Sandwich
    • Featherweight Java
    • Primitive Types
    • Simple Math
    • Simple GUI
    • Template Concepts

New languages available on the update site

Augmented Backus Naur Form (ABNF)


ABNF is an IEEE standard for defining context-free syntax.

EMFText Language ABNF.gif


Java Properties Files


Java Properties Files are often used by Java programmers to store configuration data or externalized information (e.g., language-specific messages).

EMFText Language JavaProperties.gif

Theater DSL


Theater DSL is a DSL to describe scripts for theater plays.

EMFText Language Theater.png



Whats new and noteworthy in EMFText 1.2.0?

User Interface

Texthover


Contextual Insight: Editor provides selection sensitive information hover for all model elements.

hover.png

Occurrence Highlighting


Specification Context: Highlighting of specifcation and usage of model objects.

occurence_highlighting.png

Folding


Hide and Reveal: Editor provides code folding that can be enabled by annotating rules in the syntax specification.

program_folding.png

Bracket Handling


Efficiency and Comprehension: Editor completes and highlights corresponding brackets while typing.

bracket_handling.png

Code generation

Runtime independence


Removal of EMFText runtime dependencies. All code required by DSL plug-ins is now generated. Thus, there are no runtime dependencies to a specific EMFText version.

New languages available on the update site

eJava


Specify Ecore's EOperation bodies with Java. To provide the implementation for EOperations one simply puts an eJava file next to the Ecore model.
EMFText Language Java eJava.png

Ecore Facade


Ecore Facade is a language to add additional annotations to existing Ecore models
EMFText Language Ecore Facade.png

Whats new and noteworthy in EMFText 1.1.0?

User Interface

Syntax Highlighting


Customisable Beauty: Syntax highlighting is customisable per language (syntax specification) and per user (workspace preferences).

highlighting_cs.png


highlighting_preferences.png

Code Completion


Intelligent Code Proposals: Automatic derivation of code proposals from syntax specifications and metamodel references.

code_completion.png

Outline View


Structural Overview: Integration of text editor and selection sensitive outline view.

outline_view.png

Syntax specification (CS language)

Syntax Specification Analysis


Check and Report: Structural and semantic analysis of syntax specifcations w.r.t. a given metamodel and further consistency rules (e.g., Token conflicts, rule recursion, etc.).

cs_error_reporting.png

HUTN Generator


Kickstart for syntax specification: Added action for EMF .genmodel that automatically generates a default HUTN syntax from the metamodel.

HUTN_syntax_generation.png

Syntax Import


Reuse: Import metamodels and existing syntax specifications.

syntax_import.png

New languages available on the update site

Java 5


A complete specification of Java 5 together with its meta model.

See also: http://www.jamopp.org

EMFText Language Java.gif

Ecore TEXT


Textual metamodelling within the EMF:

Ecore TEXT is a textual syntax for EMF's meta modelling language.

EMFText Language Ecore.gif

Manchester Syntax for OWL2


Ontology Modelling: A language implementing the Manchester Syntax for OWL2.

EMFText Language Owl.gif