Recursive ascent parser

In computer science, recursive ascent parsing is a technique for implementing an LR parser which uses mutually-recursive functions rather than tables.

It is also (nominally) possible to hand edit a recursive ascent parser, whereas a tabular implementation is nigh unreadable to the average human.

Roberts[2] in 1988 as well as in an article by Leermakers, Augusteijn, Kruseman Aretz[3] in 1992 in the journal Theoretical Computer Science.

Within each function, a multi-branch statement is used to select the appropriate action based on the current token read from the input stream.

This is the goto action, which is essentially a special case of shift designed to handle non-terminals in a production.

This action must be handled after the multi-branch statement, since this is where any reduction results will "resurface" from farther down the call stack.