SLE is defined as the application of systematic, disciplined, and measurable approaches to the development, deployment, use, and maintenance of software languages — SLEBoK (Software Language Engineering Body of Knowledge)
This is a collection of software language engineering (SLE) tools, frameworks and books.
With a focus on maintained and open-source projects.
Pull requests are very welcome!
Table of content
Language Workbench
A language workbench is a software development tool designed to define, reuse and compose domain-specific languages together with their integrated development environment. Language workbenches support language-oriented programming. Language workbenches were introduced and popularized by Martin Fowler in 2005. - Wikipedia
- The GEMOC Studio: http://gemoc.org/studio.html
- Monticore: http://www.monticore.de/
- MPS: https://www.jetbrains.com/mps/
- Neverlang: http://neverlang.di.unimi.it/
- Rascal: http://www.rascal-mpl.org/
- Spoofax: www.metaborg.org/
- Xtext: https://www.eclipse.org/Xtext/
- Racket: https://racket-lang.org/
Attribute grammar
An attribute grammar is a formal way to define attributes for the productions of a formal grammar, associating these attributes with values. The evaluation occurs in the nodes of the abstract syntax tree, when the language is processed by some parser or compiler. - Wikipedia
- Silver: http://melt.cs.umn.edu/silver/
- JastAdd: http://jastadd.org/web/
Metalanguages
Broadly, any metalanguage is language or symbols used when language itself is being discussed or examined. In logic and linguistics, a metalanguage is a language used to make statements about statements in another language (the object language). Expressions in a metalanguage are often distinguished from those in an object language by the use of italics, quotation marks, or writing on a separate line. The structure of sentences and phrases in a metalanguage can be described by a metasyntax. - Wikipedia
General purpose
- Xtend: https://www.eclipse.org/xtend/
- Converge: https://convergepl.org/
- Kiama: https://wiki.mq.edu.au/display/plrg/Kiama
Visual syntax
- Sirius: https://www.eclipse.org/sirius/
Parser
- Copper: http://melt.cs.umn.edu/copper/
- ANTLR4: https://www.antlr.org/
Code Generation
- Javapoet: https://github.com/square/javapoet
- Epsilon EGL: https://www.eclipse.org/epsilon/doc/egl/
- Acceleo: https://www.eclipse.org/acceleo/
Syntax
- Eclipse Modeling Framework (EMF): https://www.eclipse.org/modeling/emf/
- Spoofax SDF3: http://www.metaborg.org/en/latest/source/langdev/meta/lang/sdf3/.
Semantics
- ALE: http://gemoc.org/ale-lang/
- Kermeta 3: http://diverse-project.github.io/k3/
- Spoofax DynSem: http://www.metaborg.org/en/latest/source/langdev/meta/lang/dynsem/index.html
- CBS (component-based specification of programming languages): https://plancomps.github.io/CBS-beta/
Static semantics
- Epsilon EVL: https://www.eclipse.org/epsilon/doc/evl/
Model transformation
Type system
- Xsemantics: http://xsemantics.sourceforge.net/
Books
- The Software Languages Book - Syntax, semantics, and metaprogramming: http://www.softlang.org/book
- Engineering Modeling Languages - Turning Domain Knowledge Into Tools: http://mdebook.irisa.fr/
- DSL Engineering: http://dslbook.org/
- Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers)
- Compilers: Principles, Techniques, and Tools (2nd Edition)
- Principles of Software Language Design for Model-Driven Software Engineering, Andrzej Wasowski and Thorsten Berger, [Coming soon] https://mdsebook.bitbucket.io/
Blogs
Talks
License
To the extent possible under law, Manuel Leduc has waived all copyright and related or neighboring rights to this work. Title image Designed by Freepik.