Spoofax Development¶
This is the reference manual for building and developing Spoofax, as well as information about its internals.
Introduction¶
Spoofax is the integration of many different tools, compilers, (meta-)languages, (meta-)libraries, and runtime components. This integration is made concrete in the spoofax-releng Git repository on GitHub. This repository contains all components via Git submodules, which are updated by our build farm that builds Spoofax whenever one of its components in a submodule changes.
Spoofax currently contains the following subcomponents as submodules:
releng
- Release engineering scripts for managing and building the spoofax-releng repostory.- Java libraries and runtimes
mb-rep
— Libraries for program representation such as abstract termsmb-exec
— Stratego interpreter and utilitiesjsglr
— JSGLR parserspoofax
— Spoofax Core, a cross platform API to Spoofax languagesspoofax-maven
— Maven integration for Spoofax Corespoofax-sunshine
— Command-line integration for Spoofax Corespoofax-eclipse
— Eclipse plugin for Spoofax Corespoofax-intellij
— IntelliJ plugin for Spoofax Core
- Meta-languages and libraries
esv
— Editor service languagesdf
— Syntax Definition Formalisms, containing the SDF2 and SDF 3 languagesstratego
andstrategoxt
— Stratego compiler, runtime, and editornabl
— Name binding languages, containing the NaBL and NaBL2 languages, and support libraries for NaBL2ts
— Type system languagedynsem
— Dynamic semantics languagemetaborg-coq
— Coq signatures and syntax definitionspt
— Spoofax testing languageruntime-libraries
— NaBL support libraries, incremental task engine for incremental name and type analysis
Furthermore, this repository contains a Bash script ./b
that redirects into the Python release engineering scripts in the releng
submodule. These scripts support managing this Git repository, version management, generation of Eclipse instances, building Spoofax, and releasing new versions of Spoofax.
The following how-tos explain how to set up Maven and other required tools for building and developing Spoofax, how to build and develop Spoofax, how to write this documentation, and explains some of the internals of Spoofax components.
- Install Requirements for Spoofax development
- Install Maven for Spoofax
- Build Spoofax
- Develop Spoofax
- Publish Spoofax
Created: October 17, 2024