4.1语法制导的翻译 a+5*b的语法树的构造 E.np E.nptr T.nptr F.nptr. .nptr- ....9 num num 5 指向符号表中a的入口 指向符号表中b的入口
4 1. 语法制导的翻译 a+5b的语法树的构造 E.nptr T.nptr E.nptr + T.nptr T.nptr F.nptr + F.nptr id F.nptr id id num id num 5 id 指向符号表中a 的入口 指向符号表中b 的入口
4.1语法制导的翻译 a+5*b的语法树的构造 E.np E.nptr T.nptr- F.nptr .nptr- ....9 num num 5 指向符号表中a的入口 指向符号表中b的入口
4 1. 语法制导的翻译 a+5b的语法树的构造 E.nptr T.nptr E.nptr + T.nptr T.nptr F.nptr + F.nptr id F.nptr id id num id num 5 id 指向符号表中a 的入口 指向符号表中b 的入口
4.1语法制导的翻译 a+5*b的语法树的构造 E.n E.nptr T.nptr F.nptr .nptr .....9 num num 5 指向符号表中a的入口 指向符号表中b的入口
4 1. 语法制导的翻译 a+5b的语法树的构造 E.nptr T.nptr E.nptr + T.nptr T.nptr F.nptr + F.nptr id F.nptr id id num id num 5 id 指向符号表中a 的入口 指向符号表中b 的入口
4.1语法制导的翻译 4.1.4翻译方案中属性的自下而上计算 在LR分析器的栈中增加一个域来保存综合属性值 若产生式A→XYZ的语义动作是 A.a=f(X.x,Y.y,Z.3), Z Z. 那么归约后: top 4.0 栈 state val
4 1. 语法制导的翻译 4.1.4 翻译方案中属性的自下而上计算 在LR分析器的栈中增加一个域来保存综合属性值 若产生式A →XYZ的语义动作是 A.a = f (X.x, Y.y, Z.z), . . . . . . Z Z top . z 那么归约后: Y Y. y . . . . . . A A.a top y X X.x . . . . . . . . . . . . 栈 state val
4.1语法制导的翻译 台式计算器的语法制导定义改成栈操作代码 产生式 语义动作 L→En print (E.val) E→E,+T E.val=E.val +Tval E→T E.yal Tyal top Z.z T→T,*F Tyal T.val Eval T→F Tyal Eyal F→(E) Eyal E.yal F→digit Fval digit.lexval 栈 state val
4 1. 语法制导的翻译 台式计算器的语法制导定义改成栈操作代码 产生式 语义动作 L E n print (E.val) E E1 + T E.val =E1 .val +T.val E T E l T l . . . . . . Z Z. z top E T E.val = T.val T T1 F T.val = T1.val F.val Y Y. y 1 1 T F T.val = F.val F (E) Fval E val X X.x F (E) F.val = E.val F digit F.val = digit.lexval . . . . . . 栈 state val state val