Spoofax 2.3.0

Spoofax 2.3 fixes several minor bugs, upgrades to the latest Eclipse and Java versions, includes improvements to SDF3 and NaBL2, and introduces experimental parse table generation and parsing features.


Eclipse plugin

Update site

  • Eclipse update site: http://artifacts.metaborg.org/content/unzip/releases-unzipped/org/metaborg/org.metaborg.spoofax.eclipse.updatesite/2.3.0/org.metaborg.spoofax.eclipse.updatesite-2.3.0-assembly.zip-unzip/
  • Eclipse update site archive

IntelliJ plugin

  • IntelliJ update site: http://artifacts.metaborg.org/content/repositories/releases/org/metaborg/org.metaborg.intellij.dist/2.3.0/org.metaborg.intellij.dist-2.3.0.zip
  • IntelliJ update site archive

Command-line utilities

Core API

  • Spoofax Core uber JAR
  • Spoofax Core uber Maven artifact: org.metaborg:org.metaborg.spoofax.core.uber:2.3.0

Maven artifacts

Maven artifacts can be found on our artifact server. The Maven version used for this release is 2.3.0. See the instructions on using MetaBorg Maven artifacts for more information.



  • Improvement: made NaBL2 the default static semantics language.
  • Improvement: put deprecated markers on NaBL+TS and Stratego as static semantics languages, and SDF2 as syntax language.
  • Improvement: allow configuration of source folders in metaborg.yaml.
  • Improvement: allow multiple languages in source and export entries.
  • Improvement: add dynsem as a compile dependency to newly generated languages.

Language specification build

  • Fix: occasional NPEs when the build failed.
  • Fix: hidden dependency error when building Stratego concrete syntax extensions.

Eclipse plugin

  • Improvement: updated Eclipse instance generator to generate Eclipse Oxygen instances.
  • Improvement: updated Eclipse instance generator to include JDK 8u144b01.
  • Improvement: do not reanalyze already analyzed files when opening an editor.
  • Improvement: use a default configuration if metaborg.yaml is not present.


  • Improvement: extended Stratego API to query reference resolution.
  • Improvement: add ? and + operators to regexp syntax for path well-formedness.
  • Fix: regexp normalization was only one level deep.
  • Fix: non-termination in name resolution in the cases of a direct cycle between a scope.
  • Update: conform to latest DynSem version.
  • Fix: support all Stratego constructor and sort names, by allowing dashes and single quotes in sort and constructor names.
  • Fix: do not crash if dynsem properties file is missing.


  • Improvement: more stable SDF3 parser generator.
  • Improvement: new parenthesizer that considers deep priority conflicts.
  • Improvement: (experimental) support for lazy parse table generation, where the parse table is generated on-the-fly by the parser.
  • Fix: bug in the SDF3 normalizer for groups of priorities outside of a chain.
  • Fix: added support for generating the parse table from a “permissive” grammar
  • Fix: not necessary to specify the parse table as sdf-new.tbl in the ESV file when using the new parse table generator.


  • Added the new (experimental) SGLR parser implementation JSGLR2.