Изменения
→Нерекурсивный нисходящий парсер
=== Псевдокод ===
<code>
function nonRecursiveParser(w : String):
s : Stack
s.push(bottom)
s.push(Start)
do
X = s.top()
if X == c
c = nextToken()
s.pop()
else if X in Sigma
error("unexpected symbol")
else if M[X, c] == undefined // запись об ошибке
error("unexpected symbol")
else if M[X, c] == X -> Y_1 Y_2 ... Y_k
s.pop()
for i = k downto 1
s.push(Y_i)
while s.top() != bottom
</code>