hCh7语义分析和中间代码产生II2009Spring.ppt
《hCh7语义分析和中间代码产生II2009Spring.ppt》由会员分享,可在线阅读,更多相关《hCh7语义分析和中间代码产生II2009Spring.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下面要讨论的是只含整型变量的简单赋值句的翻译。它的文法描述:Ai:=E EE+E|E*E|-E|(E)|i (7.1)非终结符A代表“赋值句”。该文法虽然是一个二义性文法,但接受通常对于算符的结合性和优先级的规定,即二义性可以克服。NEWTEMP:函数过程。每次调用时,它都回送一个代表新临时变量名的整数码作为函数值。ENTRY(i):函数过程。E.PLACE:和非终结符E相联系的语义变量,它表示存放E值的变量名在符号表的入口或者整数码(若为临时变量)。GEN(OP,ARG1,ARG2,RESULT):语义过程,把四元式(OP,ARG1,ARG2,RESULT)填入四元式表。(1)Ai:=E G
2、EN(:=,E.PLACE,_,ENTRY(i)(2)EE(1)+E(2)E.PLACE:=NEWTEMP;(3)GEN(+,E(1).PLACE,E(2).PLACE,E.PLACE)(3)EE(1)*E(2)E.PLACE:=NEWTEMP;GEN(*,E(1).PLACE,E(2).PLACE,E.PLACE)(4)E-E(1)E.PLACE:=NEWTEMP;GEN(,E(1).PLACE,_,E.PLACE)(5)E(E(1)E.PLACE:=E(1).PLACE(6)Ei E.PLACE:=ENTRY(i)示例A:=-B*(C+D)EEEEEEEA12345678输入栈PLACE四
3、元式A:=-B*(C+D)-B*(C+D)B*(C+D)*(C+D)*(C+D)i:=i:=-i:=-ii:=-Ei:=Ei:=E*i:=E*(i:=E*(ii:=E*(Ei:=E*(E+i:=E*(E+ii:=E*(E+E*(C+D)(C+D)C+D)+D)+D)D)i:=E*(Ei:=E*(E)i:=E*Ei:=EA:=-B*(C+D)iAA_A_A_BA_BA_T1A_T1_A_T1_A_T1_CA_T1_CA_T1_C_A_T1_C_DA_T1_C_DA_T1_T2A_T_T2_A_T1_T2A_T3(,B,_,T1)(+,C,D,T2)(*,T1,T2,T3)(:=,T3,_,A)前
4、面假定了所有i都是整型。实际上,在一个表达式中可能出现各种不同类型的变量和常数。编译程序或者拒绝混合运算,或者产生有关类型转换的指令。例如:令文法7.1允许混合类型。那么,在进行混合运算时,首先要将整型量转换为实型量。而要进行转换,其前提是对每一个VN必须有类型信息语义变量E.TYPE。因此,对应的产生式要附加关于E.TYPE的语义规则。语义规则:IF E(1).TYPE=int AND E(2).TYPE=int THEN E.TYPE:=int ELSE E.TYPE:=r语义动作的增加,意味着语义子程序的修改,必要时能够产生对运算量进行类型转换的四元式。(itr,A1,_,T)将整型量A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hCh7 语义 分析 中间 代码 产生 II2009Spring
限制150内