1.接上个作业(P121练习1),完成4),5)两个步骤。
1)计算FIRSTVT和 LASTVT。
2)找三种关系对。
3)构造算符优先关系表。
4)是否算符优先文法?
5)给出输入串(a,(a,a))#的算符优先分析过程。
当出现=时,最近的一个'<',中间'=',到=下面的'>'
归约是归约符号串,归约部分是从现在的>到上面分析过程中最近的'<'
2.尝试编写自下而上的语法分析程序。
可以只写表达式部分。
参考链接:https://max.book118.com/html/2018/0124/150308953.shtm
不太会写,但是知道先要将FirstVT,LastVT求出,然后根据三种关系求出算符优先关系表,最后进行分析
3.给出下面语句的逆波兰式、三元式、四元式。
a*b+(c-d)/e
三元式:(op,arg1,arg2)【(运算符,操作数1,操作数2)】
(1)(-,c,d)
(2)(*,a,b)
(3)(/,(1),e)
(4)(+,(2),(3))
四元式:(op,arg1,arg2,result)【(运算符,操作数1,操作数2,结果)】
(1)(-,c,d,t1)
(2)(*,a,b,t2)
(3)(/,t1,e,t3)
(4)(+,t2,t3,t4)
t1是第一个式子的差,t2是第二个式子的积,t3是t1和e的商,t4是t2,t3的和
逆波兰式:
ab*cd-e/+
有括号所以先算c-d得到cd-,a*b可得ab*,cd-还要除以e,所以cd-e/,最后两部分相加得
ab*cd-e/+