编译原理讲义 语法分析 自底向上分析技术
编译原理讲义语法分析--自底向上分析技术 南京大学计算机系 赵建华 概论 从输入符号出发,试图把它归约成识别符号。每一步都寻找特定得某个类型的短语(一般是简单短语)进行归约。 在分析过程中,每次归约的都是最左边的简单短语(或其它短语)。 从语法树的角度,以输入符号为树的末端结点,试图向根结点方向往上构造语法树。 基本问题 如何找出进行直接归约的简单短语? 将找到的简单短语归约到哪个非终结符号? 讨论前提 和自顶向下技术同样,不考虑符号的具体构成方式。 文法是压缩了的。 识别过程是从左到右,自底向上进行的。一般都采用规范归约:每一步都是对句柄进行归约(特例除外)。 基本方法 基本都采用移入-归约方法。 使用一个栈来存放归约得到的符号。 在分析的过程中,识别程序不断地移入符号。移入的符号暂时存放在一个栈中。一旦在栈中已经移入的(或者归约得到的)符号串中包含了一个句柄时,将这个句柄归约成为相应的非终结符号。 基本方法(续) 归约中的动作有4类 移入:读入一个符号并把它归约入栈。 归约:当栈中的部分形成一个句柄(栈顶的符号序列)时,对句柄进行归约。 接受:当栈中的符号仅有#和识别符号的时候,输入符号也到达结尾的时候,执行接受动作。 当识别程序觉察出错误的时候,表明输入符号串不是句子。进行错误处理。 例子 i *i+i i*i+i i E::=i E *i+i E*i+i
原创力文档

文档评论(0)