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

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]