Content deleted Content added
No edit summary |
performant is proscribed jargon |
||
Line 1:
Recursive ascent parsing is a technique for implementing an [[LALR]] parser which uses mutually-recursive functions rather than tables. Thus, the parser is ''directly encoded'' in the host language similar to [[recursive descent]]. Direct encoding usually yields a parser which is faster than its table-driven equivalent<ref>{{cite web|title=Very fast LR parsing|author=Thomas J Penello|year=1986|url=http://portal.acm.org/citation.cfm?id=13310.13326}}</ref> for the same reason that compilation is faster than interpretation. It is also (nominally) possible to hand edit a recursive ascent parser, whereas a tabular implementation is nigh unreadable to the average human.
Recursive ascent was first described by Thomas Penello in his article {{cite web|title=Very fast LR parsing|url=http://portal.acm.org/citation.cfm?id=13310.13326}} in 1986. He was not intending to create a hand-editable implementation of an LR parser, but rather a maintainable and
Recursive ascent has also been merged with recursive descent, yielding a technique known as [[recursive ascent/descent]]. This implementation technique is arguably easier to hand-edit due to the reduction in states and fact that some of these states are more intuitively top-down rather than bottom up. It can also yield some minimal performance improvements over conventional recursive ascent<ref>{{cite web|title=ScalaBison
|