11 - Parsing
Published online by Cambridge University Press: 05 November 2014
Summary
A parser is a function that analyses a piece of text to determine its logical structure. The text is a string of characters describing some value of interest, such as an arithmetic expression, a poem or a spreadsheet. The output of a parser is a representation of the value, such as a tree of some kind for an arithmetic expression, a list of verses for a poem, or something more complicated for a spreadsheet. Most programming tasks involve decoding the input in some way, so parsing is a pervasive component of computer programming. In this chapter we will describe a monadic approach to parsing, mainly designing simple parsers for expressions of various kinds. We will also say a little more about the converse process of encoding the output as a string; in other words, more about the type class Show. This material will be used in the final chapter.
Parsers as monads
Parsers return different values of interest, so as a first cut we can think of a parser as a function that takes a string and returns a value:
type Parser a = String → a
This type is basically the same as that of the standard prelude function
read :: Read a ⇒ String → a
Indeed, read is a parser, though not a very flexible one. One reason is that all the input must be consumed.
- Type
- Chapter
- Information
- Thinking Functionally with Haskell , pp. 276 - 297Publisher: Cambridge University PressPrint publication year: 2014