Context Free Parser
A parser for a Context Free language converts a linear string of input tokens into a parse tree.
Any program that deals with a tree needs a stack to maintain the list of ancestors of the current node, either as:
These are equivalent: as we shall see, a recursive program is implemented using a runtime stack.