The sbt-rats Parser Generator Plugin for Scala (Tool Paper)
Tools for creating parsers are a key part of a mature language eco-system. Scala has traditionally relied on combinator libraries for defining parsers but being libraries they come with fundamental implementation limitations. An alternative is to use a Java-based parser generator such as ANTLR or Rats! but these tools are quite verbose and not ideal to use with Scala code. We describe our experiences with Scala-focused parser generation that is embodied in our sbt-rats plugin for the Scala Build Tool. At its simplest, sbt-rats provides a bridge to the Rats! parser generator for Java. On top of this bridge, we have a simple grammar definition notation that incorporates annotations for tree construction and pretty-printing. As well as generating a Rats! grammar, sbt-rats can optionally generate case class definitions for the tree structure and a pretty-printer defined using our Kiama language processing library. We explain the sbt-rats grammar notation and describe our positive experiences using it to define grammars for LLVM assembly notation and the SMTLIB input/output language for SMT solvers.
Mon 31 OctDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
15:40 - 17:20 | |||
15:40 25mTalk | Using Scala’s pattern matching features for an attribute grammar formalisation of the CSS layout specification Scala Scott Buckley Macquarie University, Australia | ||
16:05 25mTalk | The sbt-rats Parser Generator Plugin for Scala (Tool Paper) Scala Anthony Sloane Macquarie University, Australia, Franck Cassez Macquarie University, Australia, Scott Buckley Macquarie University, Australia DOI Media Attached | ||
16:30 50mOther | Unconference 2 Scala |