A non-recursive predictive parser uses an explicit stack instead of recursion to mimic leftmost derivations in a grammar. The parser has an input buffer, stack, parsing table, and output stream. It uses the parsing table to shift and reduce based on the top of the stack and next input symbol to produce a leftmost derivation if the input is in the language, otherwise reporting an error. The moves of the parser on a sample input correspond to the sentential forms in the leftmost derivation of that input string.