编译原理:动作表与分析表在龙书教材中的应用

需积分: 44 1 下载量 145 浏览量 更新于2024-07-11 收藏 6.83MB PPT 举报
"动作表动作规定如下-编译原理龙书教材课件" 在编译原理中,动作表是解析器设计的关键组成部分,用于指导如何处理输入符号流以构建抽象语法树并验证语法的正确性。这个课件可能来源于《编译原理》这本经典的教材,通常被称为“龙书”。课件提到了动作表的动作规定,包括移进、归约、接受和出错四种情况。 1. **移进 (Shift)**: 当当前输入符号匹配文法的某个非终结符或终结符时,需要移动到下一个输入符号(即移进),并将该非终结符或终结符(ai)进栈。这个过程是解析过程的一部分,确保当前输入符号序列符合文法的规则。 2. **归约 (Reduce)**: 如果当前的栈顶若干个符号组合起来可以匹配文法的一个产生式,就会执行归约操作。例如,action[sm,ai]=归约 rj 表示当前状态sm下,遇到ai,按照规则rj(A→Xm-r+1Xm-r+2…Xm)进行归约。归约意味着将栈顶的符号组合成一个非终结符A,并且更新解析状态到sm-r。 3. **接受 (Accept)**: 当解析过程到达文法的起始符号并且没有更多的输入时,会执行接受操作,表示输入的程序是有效的,可以被接受。在描述中提到的文法G[E']中,E'是起始符号,如果最终状态满足条件s=goto[sm-r, A],则可能表示接受状态。 4. **出错 (Error)**: 如果解析过程中出现不符合文法的情况,如遇到无法处理的输入或者栈与输入符号的组合不匹配,系统会报出错误。 课件中给出的文法G[E']是一个简单的算术表达式文法,包含E', E, T, F四个非终结符,以及+、*、(、id四个终结符。这个文法允许表达式如E' → E,E → E + T,E → T,T → T * F,T → F,F → (E),F → id。对应的分析表是解析过程的关键工具,用于指导如何根据输入符号和当前状态进行操作。 通过学习这个课件,学生可以深入理解编译器的内部工作原理,包括词法分析、语法分析、语义分析和代码生成等阶段。此外,教师辛明影强调了课程的设计理念,采用自顶向下、问题驱动的方式,结合实验和实践,以帮助学生更好地掌握编译原理的概念和技术。课程涵盖了编译器的基本结构、高级语言语法描述、词法分析、语法分析技术、语法制导翻译、存储分配、代码优化和目标代码生成等内容。