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.