Spoofax 2.5 introduces FlowSpec, a new meta-language for intra-procedural data-flow analysis; layout-sensitive parsing in SDF3; and has several small improvements and bug fixes.
Premade Eclipse installations¶
With embedded JRE:
- Windows 32-bits, embedded JRE
- Windows 64-bits, embedded JRE
- Linux 32-bits, embedded JRE
- Linux 64-bits, embedded JRE
- macOS, embedded JRE
Without embedded JRE:
- IntelliJ update site:
- IntelliJ update site archive
- Spoofax Core uber JAR
- Spoofax Core uber Maven artifact:
We updated the Guice version that Spoofax uses to 4.2.0. This has the
cascading effect that we need Maven 3.5.4, since Spoofax is used in a maven
plugin. Be sure to have this version of Maven installed, or you will run
MethodNotFoundException s for
constraint analyzer was generalized:
constraintanalyzer is now independent of NaBL2, and can be used as a generic analysis mechanism from Stratego. The analysis cycle and the Stratego interface to it are defined ans documented in module
- Fixed a bug where ambiguity errors were not always correctly reported.
This release introduces FlowSpec, a new meta-language for intra-procedural data-flow analysis. See the documentation of the language for more details.
Stratego received some small patches to improve user experience.
- Stratego editor now gives warnings when using
rightand a couple of other variables names as these are also constructors in libstratego-sglr and interpreted as constructor match patterns.
- When the Stratego compiler generates names for code generation, these now
start with the source code name if available or with a constant name related
to the language feature (e.g. a
where(s)is turned into
?where243;s;!where243). Since some generated names turn up in a stack trace from a Stratego, this should improve readability of the stack trace. Complex closures are still named
lifted26, as the compiler cannot replace humans in properly naming things.
Problems related to escaping in string terms of expectations are fixed:
- Double quotes (
") in expectation require escaping using backslashes, but were not unescaped when comparing with actual parse results. This made correct tests containing double quotes in strings fail. This is fixed by unescaping the expectation terms.
- Formatting expectation terms as strings was different than default ATerms
\were not escaped), which was confusing when a test fails and the actual and expected terms were reported. This is fixed by aligning the SPT expectation terms formatting with default ATerm formatting.
Small usability improvements:
- Empty parameter tuples in rules can be omitted.
- Accidentally writing a dot instead of a comma before a recursive rule invocation could make that constraint look like a rule without constraints. Layout is now used to give a warning when such a case is written.
- Fix import problems caused by
nabl2.runtimeexports. The exports are restricted such that layout syntax and DynSem signatures are not exported anymore. The sorts defined by the runtime are all prefixed with
NaBL2to prevent accidental merges with sorts from the importing language.
- Allow all Stratego identifiers to be used as constructor names.
- Adopt new naming convention, with packages named
mb.nabl2.*, and artifacts named
- Add classes for matching and subtitution of terms, independent of unification.
- Use the generalized
constraintanalyzer for the NaBL2 analysis strategy.
The experimental support for generating Scala case classes from an SDF3 specification was removed. It was incomplete, unmaintained and unused.
Added support for Layout Declarations for layout-sensitive parsing and pretty-printing.
Small fixes and improvements:
- Execute builders for languages which have no analysis defined. Previously builders would always wait until an analysis result was produced.
- Cancel running SPT test suites. It is now possible to cancel a running SPT test suite in the progress window.
Small fixes and improvements:
- Can now be installed into any latest IntelliJ, not just the last version we tested
- By default runs in IntelliJ 2018.1.1
- Simplified project structure
- Updated dependencies
- Changes to support Java 9 in the future