第6章补充算符优先分析 算符优先文法的定义 算符优先关系表的构造 算符优先分析算法 算符优先分析法的局限性
1 第6章 补充 算符优先分析 算符优先文法的定义 算符优先关系表的构造 算符优先分析算法 算符优先分析法的局限性
算符优先分析 自下而上分析算法模型--移进归约 算符优先分析不是规范归约 算符优先分析的可归约串是句型的最左素短语 定义cfg(上下文无关文法)G的句型的素短语 是一个短语,它至少包含一个终结符,且除自 身外不再包含其他素短语。处于句型最左边的 素短语为最左素短语 文法G[S] s→aA且A称是句型aβ相对于非终 结符A的短语
2 算符优先分析 • 自下而上分析算法 模型----移进归约 • 算符优先分析不是规范归约 算符优先分析的可归约 串是句型的最左素短语 定义 cfg(上下文无关文法) G 的句型的素短语 是一个短语,它至少包含一个终结符,且除自 身外不再包含其他素短语。处于句型最左边的 素短语为最左素短语 文法G[S] S αAδ且A 则称是句型α δ相对于非终 结符A的短语 * +
文法GE] 句型T+TF (1)E→E+T 2)E→T 其短语有 (3)T-T*F T+TF+ (4)T→F T+TF (5)F→P个F|P (6)P→(E) TT☆F (7)P TF E 素短语为:TF,i E 最左素短语为:TF E+T 句型T+T+的素短语为:T+T,i 句型T+T+F的素短语为:T+T
3 文法G[E]: (1) E→E+T (2) E→T (3) T→T*F (4) T→F (5) F→PF|P (6) P→(E) (7) P→i 句型T+T*F+i 其短语有: T+T*F+i T+T*F T T*F i E E + T E + T F T T * F i 最左素短语为:T*F 句型T+T+F的素短语为:T+T E + + T F E 句型T+T+i的素短语为:T+T, i 素短语为:T*F, i E T T i
分析程序模型 输入串# 总控程序 输出 # 将符优先关系表产生式
4 分析程序模型 总控程序 算符优先关系表 产生式 输入串# # 输出
如何确定算符优先吳系? 文法GE]:E→EEE-E|EEEE|ETE|E)i 人为确定: (1)的优先级最高 (1)个优先级次于i,右结合 (2)*和/优先级次之,左结合 《《《《 《《《 《《《《《《 (3)+和-优先级最低,左结合 (4)括号‘()的优先级大于括号外 的运算符,小于括号内的运算符 内括号的优先性大于外括号 (5)#的优先性低于与其相邻的算符 算符优先吴系表
5 如何确定算符优先关系? 人为确定: (1)i的优先级最高 (1) 优先级次于i,右结合 (2)*和/优先级次之,左结合 (3)+和-优先级最低,左结合 (4)括号‘(’ , ‘)’的优先级大于括号外 的运算符,小于括号内的运算符, 内括号的优先性大于外括号 (5)#的优先性低于与其相邻的算符 文法G[E]:E→E+E|E-E|E*E|E/E|EE|(E)|i + - * / ( ) i # + > > < < < < > < > - > > < < < < > < > * > > > > < < > < > / > > > > < < > < > > > > > < < > < > ( < < < < < < = < ) > > > > > > > i > > > > > > > # < < < < < < < = 算符优先关系表