编译原理(六) LL(1)文法分析法-分析过程
前情了解
算法分析
预测分析程序的总控程序在任何时候都是按STACK栈顶符号X和当前的输入符号a行事的。如下图所示,对于任何(X,a),总控程序每次都执行下述三种可能的动作之一:
- 若X = a = ‘#’,则宣布分析成功,停止分析过程。
- 若X = a ≠‘#’,则把X从STACK栈顶弹出,让a指向下一个输入符号。
- 若X是一个非终结符,则查看分析表M。
- 若M[X,a]中存放着关于X的一个产生式,那么,先把X弹出STACK栈顶,然后把产生式的右部符号串按反序一一推进STACK栈(若右部符号为ε,则意味着不推什么东西进栈)。
- 在把产生式的右部符号退进栈的同时应该做这个产生式对应的语义动作(目前暂且不管)。
- 若M[X,a]中存放着“出错标志”,则调用出错诊断程序ERROR。