编译原理学习笔记10——语法分析|自下而上分析1
10.1 语法分析
语法分析的方法
- 自上而下(Top-down)
- 从文法的开始符号出发,反复使用各种产生式,寻找"匹配"的推导推导∶根据文法的产生式规则,把串中出现的产生式的左部符号替换成右部
- 从树的根开始,构造语法树递归下降分析法、预测分析程序
- 自下而上(Bottom-up)
- 从输入串开始,逐步进行归约,直到文法的开始符号
- 归约∶根据文法的产生式规则,把串中出现的产生式的右部替换成左部符号
- 从树叶节点开始,构造语法树算符优先分析法、LR分析法
- 自下而上分析的基本思想
- 基本思想
- 从输入串开始,逐步归约,直到文法的开始符号
- 归约:根据文法的产生式规则,把串中出现的产生式的右部替换成左部符号
- 从树叶节点开始,构造语法树
- 算符优先分析法
- 按照算符的优先关系和结合性质进行语法分析
- 适合分析表达式
- LR分析法
- 规范归约:句柄作为可归约串
移进-归约分析示例
10.2 短语
短语和直接短语
10.3 分析过程描述
自下而上分析法回顾
自下而上分析法(Bottom-up) 基本思想:
-
从输入串开始,逐步归约,直到文法的开始归约:根据文法的产生式规则,把串中出现式的右部替换成左部符号
-
从树叶节点开始,构造语法树算符优先分析法 按照算符的优先关系和结合性质进行语法分LR分析法 规范归约:句柄作为可归约串
10.4 优先关系与算符优先文法
算符文法
一个文法,如果它的任一产生式的右部都不含两个相继(并列)的非终结符,即不含…QR…形式的产生式右部,则我们称该文法为算符文法。约定:
- a、b代表任意终结符
- P、Q、R代表任意非终结符
- '…’代表由终结符和非终结符组成的任意序列,包括空字
算符优先文法
First vt 和 Last vt 集合
10.5 构造优先关系表
最左素短语
- 最左素短语
- 可归约串,句型,短语
- 一个文法G的句型的素短语是指这样一个短语,它至少含有一个终结符,并且,除它自身之外不再含任何更小的素短语
- 最左素短语是指处于句型最左边的那个素短语
10.6 算符优先分析算法描述
-
使用一个符号栈S,用它寄存终结符和非终结符,k代表符号栈S的使用深度
-
在正确的情况下,算法工作完毕时,符号栈S应呈现:#N#
-
算符优先分析程序构成 总控程序,根据现行栈顶符号和当前输入符号,执行动作
-
优先关系表,用于指导总控程序进行移进-归约分析栈STACK,用于存放文法符号