Syntax Definition Formalism
The Syntax Definition Formalism (SDF) is a metasyntax used to define context-free grammars: that is, a formal way to describe formal languages. It can express the entire range of context-free grammars. Its current version is SDF3.[http://www.sleconf.org/2014/parsing-slides/2-sdf3-slides.pdf sleconf.org] A parser and parser generator for SDF specifications are provided as part of the free ASF+SDF Meta Environment. These operate using the SGLR (Scannerless GLR parser). An SDF parser outputs parse trees or, in the case of ambiguities, parse forests.
Overview
Features of SDF:
- Supports the entire range of context-free languages
- Allows modular syntax definitions (grammars can import subgrammars) which enables reuse
- Supports annotations
Examples
The following example defines a simple Boolean expression syntax in SDF2:
module basic/Booleans
exports
sorts Boolean
context-free start-symbols Boolean
context-free syntax
"true" -> Boolean
"false" -> Boolean
lhs:Boolean "|" rhs:Boolean -> Boolean {left}
lhs:Boolean "&" rhs:Boolean -> Boolean {left}
"not" "(" Boolean ")" -> Boolean
"(" Boolean ")" -> Boolean
context-free priorities
Boolean "&" Boolean -> Boolean >
Boolean "|" Boolean -> Boolean
Program analysis and transformation systems using SDF
- ASF+SDF Meta Environment provides SDF
- RascalMPL
- Spoofax/IMP [http://strategoxt.org/Spoofax]
- Stratego/XT
- Strafunski
See also
References
{{reflist}}
Further reading
- [http://ftp.strategoxt.org/pub/stratego/docs/sdfintro.pdf A Quick Introduction to SDF, Visser, J. & Scheerder, J. (2000) CWI]
- [http://homepages.cwi.nl/~daybuild/daily-books/learning-about/sdf/sdf.pdf The Syntax Definition Formalism SDF, Mark van den Brand, Paul Klint, Jurgen Vinju (2007) CWI]
External links
- [http://gdk.sourceforge.net/ Grammar Deployment Kit]
- [http://wiki.di.uminho.pt/twiki/bin/view/Research/PURe/SdfMetz SdfMetz] computes metrics for SDF grammars
- Download SDF from the [http://www.meta-environment.org/ ASF+SDF Meta Environment homepage]
{{metasyntax notations}}
Category:Extensible syntax programming languages
Category:Programming language implementation
{{comp-sci-stub}}