
Support for running/debugging models
| EMFText does now automatically add UI elements to execute models. |
|
Support for launch configurations
| The execution of DSL models can be parameterized with launch configurations. |
|
Debugging out of the box
| EMFText does now automatically generate a full-fledged debugger for DSLs that use an interpreter for execution. |
|
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. |
|
DBSchema
| Can be used to specify database schemata. The DSL comes with a wizard that can extract existing schemata using JDBC. |
Custom Syntax Wizard
| Syntax Generation: The custom syntax wizard allows to configure the syntax generation process with many options. |
Enhanced New Project Wizard
| Creating new projects: Select the code to be generated when creating new projects. |
|
Minimal Ecore
| Can be used to quickly create Ecore models. |
WebTest
| A basic script language for functional web site testing. |
Syntax for Enumeration Attributes
| Defining syntax for enumeration attributes is now even easier. |
|
Default Quick Fixes for unresolved references
| EMFText does now automatically add quick fixes for unresolved references. |
|
OSGi Manifest files
| Can be used to read, transform and write manifest files with EMF tools. |
OWLCL
| OWLCL be used to add OWL constraints to Ecore metamodels. |
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.
Java-style Syntax Generator
| Syntax Derivation: Similar to HUTN, a Java-like syntax can now be generated. |
|
Syntax for Boolean Attributes
| Defining syntax for boolean attributes is now as easy as it can get. |
|
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.
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.
EMFText is now shipped with a completely revised documentation that is both available from the Eclipse Help menu and the web.
EMFDoc
| EMFDoc can be used to add documentation to Ecore models. |
EMFText Project Wizard
| Project Scaffolding: Advanced wizard to create new EMFText projects |
|
Operator rules
| Operator rules can be used for metamodels that have expression-like constructs. |
|
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. |
|
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. |
|
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.
Augmented Backus Naur Form (ABNF)
| ABNF is an IEEE standard for defining context-free syntax. |
Java Properties Files
| Java Properties Files are often used by Java programmers to store configuration data or externalized information (e.g., language-specific messages). |
Theater DSL
| Theater DSL is a DSL to describe scripts for theater plays. |
Texthover
| Contextual Insight: Editor provides selection sensitive information hover for all model elements. |
|
Occurrence Highlighting
| Specification Context: Highlighting of specifcation and usage of model objects. |
|
Folding
| Hide and Reveal: Editor provides code folding that can be enabled by annotating rules in the syntax specification. |
|
Bracket Handling
| Efficiency and Comprehension: Editor completes and highlights corresponding brackets while typing. |
|
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.
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. |
Ecore Facade
| Ecore Facade is a language to add additional annotations to existing Ecore models |
Syntax Highlighting
| Customisable Beauty: Syntax highlighting is customisable per language (syntax specification) and per user (workspace preferences). |
|
Code Completion
| Intelligent Code Proposals: Automatic derivation of code proposals from syntax specifications and metamodel references. |
|
Outline View
| Structural Overview: Integration of text editor and selection sensitive outline view. |
|
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.). |
|
HUTN Generator
| Kickstart for syntax specification: Added action for EMF .genmodel that automatically generates a default HUTN syntax from the metamodel. |
[[1]] |
Syntax Import
| Reuse: Import metamodels and existing syntax specifications. |
|
Java 5
| A complete specification of Java 5 together with its meta model.
See also: http://www.jamopp.org |
Ecore TEXT
| Textual metamodelling within the EMF:
Ecore TEXT is a textual syntax for EMF's meta modelling language. |
Manchester Syntax for OWL2
| Ontology Modelling: A language implementing the Manchester Syntax for OWL2. |