Pure and Declarative Syntax Definition: Paradise Lost and Regained, Onward 2010
Pure and Declarative Syntax Definition: Paradise Lost and Regained by Lennart C. L. Kats, Eelco Visser, Guido Wachsmuth from Delft
Syntax definitions are pervasive in modern software systems, and serve as the basis for language processing tools
like parsers and compilers. Mainstream parser generators pose restrictions on syntax definitions that follow from their
implementation algorithm. They hamper evolution, maintainability, and compositionality of syntax definitions. The pureness and declarativity of syntax definitions is lost. We analyze how these problems arise for different aspects of syntax definitions, discuss their consequences for language engineers, and show how the pure and declarative nature of syntax definitions can be regained.
I haven’t compared this version with the Onward 2010 version, but they look essentially the same. It seems a timely to post this paper, considering the other recent story Yacc is dead. There is not a whole lot to argue against in this paper, since we all “know” the other approaches aren’t as elegant and only resort to them for specific reasons such as efficiency. Yet, this is the first paper I know of that tries to state the argument to software engineers.
For example, the Dragon Book, in every single edition, effectively brushes these topics aside. In particular, the Dragon Book does not even mention scannerless parsing as a technique, and instead only explains the “advantages” of using a scanner. Unfortunately, the authors of this paper don’t consider other design proposals, either, such as Van Wyk’s context-aware scanners from GPCE 2007. It is examples like these that made me wish the paper was a bit more robust in its analysis; the examples seem focused on the author’s previous work.
If you are not familiar with the author’s previous work in this area, the paper covers it in the references. It includes Martin Bravenboer‘s work on modular Eclipse IDE support for AspectJ.