1、(1) a*(-b+c) :ab-c+* (3) abcde/+*+ (4) AB∧C D∨∨
(7) xy+z*0=sab+c*:=sab*c*:=¥(注:¥表示if-then-else 运算)
2、
三元式 (1) (+ a, b)
(2) (+ c, d)
(3) (* (1), (2))
(4) (- (3), /)
(5) (+ a, b)
(6) (- (4), (5))
4、(0) S′→E { if error≠1 then print E.VAL}
(1) E→E1+E2 { if E1.TYPE=int AND E2.TYPE=int then
begin
E.VAL:=E1.VAL + E2.VAL;
E.YTPE:=int;
end
else if E1.TYPE=real AND E2.TYPE=real then
begin
E.VAL:=E1.VAL + E2.VAL;
E.YTPE:=real;
end
else error=1
}
(2) E→E1*E2 { if E1.TYPE=int AND E2.TYPE=int then
begin
E.VAL:=E1.VAL * E2.VAL;;
E.YTPE:=int;
end
else if E1.TYPE=real AND E2.TYPE=real then
begin
E.VAL:=E1.VAL * E2.VAL;;
E.YTPE:=real;
end
else error=1
}
(3) E→(E1) { E.VAL:=E1.VAL;
E.TYPE:=E1.TYPE }
(4) E→n { E.VAL:=n.LEXVAL;
E.TYPE:=n.LEXTYPE }
5