a DSL for writing rules for Xtext languages

Author Archives: lorenzo

Snapshots for Xsemantics 1.6 for Xtext 2.7

September 11th, 2014 | Posted by lorenzo in News - (Comments Off)

Xsemantics 1.6 built using the new Xtext 2.7 hasn’t been released yet, but snapshots are available using this (probably temporary) update site:


ATTENTION: there are some breaking changes in the runtime:

  • a recompilation of .xsemantics files is required
  • some classes in the runtime subpackages have been moved to the main runtime package (e.g., cache related classes and TraceUtils); if you were using such classes in your program a simple “Organize Imports” should fix the references
  • RuleFailedException now extends RuntimeException so it is not a checked expression anymore (see https://github.com/LorenzoBettini/xsemantics/issues/36)

These are the issues that were also addressed: https://github.com/LorenzoBettini/xsemantics/issues?q=milestone%3A1.6.0+is%3Aclosed

Xsemantics 1.5 for Xtext 2.6.0

May 24th, 2014 | Posted by lorenzo in News - (Comments Off)

Xsemantics 1.5 has been released.  It is built against Xtext 2.6.0 (and it features ‘caching’ mechanism, see the fjcached example). See the download section for details.

Xsemantics 1.4.3

February 23rd, 2014 | Posted by lorenzo in News - (Comments Off)

Some bugs were fixed in this release: https://github.com/LorenzoBettini/xsemantics/issues?milestone=1&page=1&state=closed

This was built using Xtext 2.5.2

Xsemantics 1.4.0 for Xtext 2.5.0

December 11th, 2013 | Posted by lorenzo in News - (Comments Off)

Xtext 2.5.0 will be released tomorrow, but a version of Xsemantics for Xtext 2.5.0 is already available (many thanks to Sebastian Zarnekow for porting Xsemantics to Xtext 2.5.0).

Version 1.4.x (requires Xtext >= 2.5.0)

  • With mirrors: http://sourceforge.net/projects/xsemantics/files/updates/releases/1.4
  • Main site: http://master.dl.sourceforge.net/project/xsemantics/updates/releases/1.4

Git repository moved to Github

October 22nd, 2013 | Posted by lorenzo in News - (Comments Off)

Xsemantics source repository has been moved to Github: https://github.com/LorenzoBettini/xsemantics

Xsemantics 1.3.0 for Xtext 2.4.3

September 4th, 2013 | Posted by lorenzo in News - (Comments Off)

Xsemantics is finally available for Xtext 2.4.3.

Existing Xsemantics files should not need any modifications (though I experienced some problems with some particular lambda expressions where the correct parameter’s type could not be inferred). Of course, the generated Java code corresponding to your Xsemantics input files will be regenerated when you open the files with the new version of Xsemantics; that is the only thing that should be required.

See the Download section for updates.

Xsemantics moving to Xtext 2.4

March 21st, 2013 | Posted by lorenzo in Uncategorized - (Comments Off)

Xtext 2.4 was released yesterday!

However, Xsemantics is still not ready for it (i.e., not compatible with it).

I’ve started the moving to Xtext 2.4, hope it will be ready soon :)

Xsemantics 1.2.0

October 9th, 2012 | Posted by lorenzo in Uncategorized - (Comments Off)

In this new release there are some new features

Injected fields

It is now possible to define injected fields in the system; these will correspond to @Inject fields in the generated Java code. These fields will then be usable in the rules of the system

validatorExtends clause

When defining the system, one can specify the base class of the generated validator; this allows the generated abstract declarative validator to be used directly in your DSL (since it inherits all the basic settings required by a declarative validator). The idea is that you should specify as the base validator the one that Xtext generated for you in the src-gen folder.

System Extension

It is now possible to specify that a system extends another Xsemantics system (in the generated code this will correspond to class inheritance); with this feature is then possible to reuse all the judgments and rules of the base system, and also to override judgments and rules (besides specifying new rules for a judgment with more specific parameters)

When overriding a judgment, one can specify different error specifications (but the parameters types cannot be changed)

Auxiliary Functions

Besides judgments and rules, it is now possible to define auxiliary descriptions and the corresponding auxiliary functions, which can then be used in the system as standard Java methods.

Here’s an example of auxiliary descriptions

Once the auxiliary descriptions are provided you can define auxiliary functions implementations

Of course, for the same auxiliary description, multiple auxiliary functions implementations for different parameters can be provided


You can find all the details of these new features in the documentation (and in the examples).

Xsemantics 1.1.0 (for Xtext 2.3.0)

July 2nd, 2012 | Posted by lorenzo in Uncategorized - (0 Comments)

Xsemantics is now completely ported to Xtext 2.3.0.

Xsemantics now completely relies on Xtext’s JvmModelInferrer so that a partial debugging support is now supported (but this feature has still to be completed).

Xsemantics examples can now be imported in the workspace using the wizards:

For each example language included in Xsemantics, you will then find a wizard which creates a project to experiment with that example language, and a wizard to materialize in the workspace the sources of the projects for that example language.

The documentation is now complete!

You can install Xsemantics plugins directly from the update site (this requires Xtext 2.3.0 SDK to be already installed):


If you still have not Xtext installed in your eclipse, you might want to use this composite site which also has links to Xtext official update sites (so that you can install both Xtext and Xsemantics from this site):


You might want to install the whole Xsemantics SDK (and possibly its sources), which includes all the features for developing with Xsemantics (and the examples).


Xsemantics documentation almost finished

April 10th, 2012 | Posted by lorenzo in Uncategorized - (Comments Off)

The documentation has still to be completed, but at least for the moment there’s some reference documentation and two examples fully detailed: an expression language and Featherweight Java. See the Documentation page.