Lecture 2: Declarative Syntax Definition

Eelco Visser
Lecture | PDF
September 04, 2020

In this lecture we study declarative syntax definition.

Reading Material

The [SEFM 2020] paper gives an overview of SDF3, the language we will use for syntax definition.

The [LDTA 2012] paper introduced ‘template-based syntax definition’. (This was one of the results of the master’s thesis work of Tobi Vollebregt.)

Tutorial and Talk on SDF3

This is part of a tutorial on Spoofax at the PLDI 2020 conference in June 2020.

This is a talk for the OCAML 2020 workshop at the ICFP 2020 conference.

References

  • LDTA 2012 [pdf, doi, bib, researchr, ]
    Syntax discoverability has been a crucial advantage of structure editors for new users of a language. Despite this advantage, structure editors have not been widely adopted. Based on immediate parsing and analyses, modern textual code editors are also increasingly syntax-aware: structure and textual editors are converging into a new editing paradigm that combines text and templates. Current text-based language workbenches require redundant specification of the ingredients for a template-based editor, which is detrimental to the quality of syntactic completion, as consistency and completeness of the definition cannot be guaranteed. In this paper we describe the design and implementation of a specification language for syntax definition based on templates. It unifies the specification of parsers, unparsers and template-based editors. We evaluate the template language by application to two domain-specific languages used for tax benefits and mobile applications.