December 2021
Beginner
840 pages
47h 29m
English
Recall from Chapter 3 that the hallmark of a recursive-descent parser is that the program code implementing it naturally reflects the grammar. That is, there is a one-to-one correspondence between each non-terminal in the grammar and each function in the parser, where each function is responsible for recognizing a subsentence in the language starting from that non-terminal. Often Scheme predicates can be viewed in the same way.
Consider the following predicate for determining whether an argument is an atom (Friedman and Felleisen 1996a, Preface, p. xii):
We can extend this idea by trying to recognize a list of atoms—in other ...