9 Parser combinators

 

This chapter covers

  • Introducing parser combinators
  • Designing and using APIs without implementations

In this chapter, we’ll work through the design of a combinator library for creating parsers. We’ll use JSON parsing (http://mng.bz/DpNA) as a motivating use case. Like chapters 7 and 8, this chapter is not so much about parsing as it is about providing further insight into the process of functional design.

9.1 Designing an algebra first

9.2 A possible algebra

9.2.1 Slicing and nonempty repetition

9.3 Handling context sensitivity

9.4 Writing a JSON parser

9.4.1 The JSON format

9.4.2 A JSON parser

9.5 Error reporting

9.5.1 A possible design

9.5.2 Error nesting

9.5.3 Controlling branching and backtracking

9.6 Implementing the algebra

9.6.1 One possible implementation