kirancodes.me
To Proof Maintenance & Beyond!

Parsimony: an IDE for example-guided synthesis of lexers and parsers

Alan Leung, Sorin Lerner

Abstract

We present Parsimony, a programming-by-example development environment for synthesizing lexers and parsers by example. Parsimony provides a graphical interface in which the user presents examples simply by selecting and labeling sample text in a text editor. An underlying synthesis engine then constructs syntactic rules to solve the system of constraints induced by the supplied examples. Parsimony is more expressive and usable than prior programming-by-example systems for parsers in several ways: Parsimony can (1) synthesize lexer rules in addition to productions, (2) solve for much larger constraint systems over multiple examples, rather than handling examples one-at-a-time, and (3) infer much more complex sets of productions, such as entire algebraic expression grammars, by detecting instances of well-known grammar design patterns. The results of a controlled user study across 18 participants show that users are able to perform lexing and parsing tasks faster and with fewer mistakes when using Parsimony as compared to a traditional parsing workflow.

BibTeX
@inproceedings{Leung-Lerner:ASE17,
  author    = {Alan Leung and
               Sorin Lerner},
  title     = {Parsimony: an {IDE} for example-guided synthesis of lexers and parsers},
  booktitle = {ASE},
  pages     = {815--825},
  publisher = {{IEEE} Computer Society},
  year      = {2017},
}

Related papers