学习:程序设计语言——编译原理(自下而上分析——算符优先分析过程)

时间:2021-10-14 03:52:51

我们讨论的自下而上分析法是一种“移进-规约”法。大意是:用一个寄存符号的先进后出的栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(规约成)该产生式的左部符号。

例:有文法G
S→a | ^ | (T)
T→T,S | S
给出输入串(a,(a,a))的算符优先分析过程。


1、扩展文法

S’ →#S#

2、求FIRSTVT()和LASTVT()集合

firstvt(S)={ a,^,( }
firstvt(T)={ , } ∪ firstvt(S) = {, ,a,^,( }
lastvt(S)= { a,^,) }
lastvt(T) = { , } ∪ lastvt(S) = { , ,a,^,) }

3、求优先关系

3.1 首先找 等于关系(两个vt之间只隔一个vn)
3.2 低于关系(vt在右,vn在左)
3.3 高于关系(vn在左,vt在右)

4、构造优先关系表

5、算符优先分析过程



符号太难打,多谅解,手稿如下:
学习:程序设计语言——编译原理(自下而上分析——算符优先分析过程)


其他章节:

  • 一、引论
  • 二、高级语言及其语法描述
  • 语法分析之消除左递归、消除回溯
  • 三、词法分析
  • 四、语法分析
  • 算符优先分析