我们讨论的自下而上分析法是一种“移进-规约”法。大意是:用一个寄存符号的先进后出的栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(规约成)该产生式的左部符号。
例:有文法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、算符优先分析过程
符号太难打,多谅解,手稿如下:
其他章节:
一、引论
二、高级语言及其语法描述
语法分析之消除左递归、消除回溯
三、词法分析
四、语法分析
算符优先分析