PLSEJul 8, 2019

parboiled2: a macro-based approach for effective generators of parsing expressions grammars in Scala

arXiv:1907.03436v12 citationsHas Code
AI Analysis

This provides a practical tool for developers in the Scala ecosystem who need efficient and type-safe parsing for tasks such as handling logs, queries, and HTTP interfaces, though it is incremental as it builds on existing PEG concepts with Scala-specific enhancements.

The paper tackles the problem of generating parsing expression grammars (PEGs) in Scala by introducing parboiled2, a macro-based library that uses Scala typing and macros to verify DSL integrity and expand grammars into efficient runtime code, resulting in adoption by several open-source libraries like akka-http and Sangria.

In today's computerized world, parsing is ubiquitous. Developers parse logs, queries to databases and websites, programming and natural languages. When Java ecosystem maturity, concise syntax, and runtime speed matters, developers choose parboiled2 that generates grammars for parsing expression grammars (PEG). The following open source libraries have chosen parboiled2 for parsing facilities: - akka-http is the Streaming-first HTTP server/module of Lightbend Akka - Sangria is a Scala GraphQL implementation - http4s is a minimal, idiomatic Scala interface for HTTP - cornichon is Scala DSL for testing HTTP JSON API - scala-uri is a simple Scala library for building and parsing URIs The library uses a wide range of Scala facilities to provide required functionality. We also discuss the extensions to PEGs. In particular, we show the implementation of an internal Scala DSL that features intuitive syntax and semantics. We demonstrate how parboiled2 extensively uses Scala typing to verify DSL integrity. We also show the connections to inner structures of parboiled2, which can give the developer a better understanding of how to compose more effective grammars. Finally, we expose how a grammar is expanded with Scala Macros to an effective runtime code.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes