- 1、本文档共136页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
属性的类型(从分析过程中属性值的计算方法来分类): 对于产生式 A?X1 X2 …Xn 例1 综合属性的例子 综合属性的自下而上定值 例2 继承属性的例子 继承属性的自上而下定值 7、写出下列各式的逆波兰表示 (1) -a-(b*c/(c-d) + (-b)*a) (2) -A+B*C↑ (D/E)/F 三元组表示: ① (- , C, D ) ② (* , B, ① ) ③ (+ , A , ② ) ④ (↑ ,F, G ) ⑤ (/ , E, ④ ) ⑥ (- ,③,⑤) 9、写出条件语句 IF a0 THEN x:=x+1 ELSE x:=4*( x- 1) 四元式序列 10、令A是一个10X20的数组即 d1=10, d2=20.那么,求:( 1) 赋值语句 X:= A[I, J ]四元式序列。 (2) 赋值语句A[ I+2 , J+1 ] := M+N四元式序列 A为确定数组 每维的上下限I,U都是常数,长度d,体积A都可以计算。编译时可填所有元素。 由于下标变量度地址的计算涉及的I,U都是已知量,所以运行时可以不要信息向量,理论上只要保留工作单元和一些常数就可以了。 A为可变数组 I,U是变量,体积要在运行时计算确定。 1. 编译时分配向量区,是空架子 2. 编译时产生计算I,U的指令组,填入向量区中 3. 根据I,U,申请内存区的指令 可变数组分配子程序 输入:维数n,界限序列l1,u1,l2,u2…ln,un 类型type以及内情向量表区地址 功能:建立内情向量并分配数组空间 算法 BEGIN i:=1; N:=1; C:=0; WHILE I ≤n DO BEGIN di := ui –li +1; N:= N * di; C := C * di + li; 把Ii,ui和di填入内情向量表区中; i:= i+1 END; 申请N个单元的数组空间,令这片空间的首地址为a; 把n和C,以及type和a填入内情向量区中 1、对于某个压缩了的文法,当把每个文法符号和一组属性相关联,并把产生式附加以 的时候,就得到属性文法。 答案:语义规则 2、文法符号的属性有两种,一种称为 (1) ,另一种称为 (2) 。 答案: (1) 继承属性 (2) 综合属性 例题与习题解答 3、语法制导的编译程序能同时进行 (1) 分析和 (2) 分析。 答案: (1) 语法 (2) 语义 4、编译过程中,常见的中间语言形式有: (1) 、 (2) 、 (3) 、 (4) 。 答案: (1) 逆波兰表示 (2)三元式 (3) 四元式 (4) 树形表示 5、表达式-a+b*(-c+d)的逆波兰式是 。 a. ab+-cd+-* b. a-b+c-d+* c. a-b+cd-+* d. a-bc-d+*+ 答案: d 6、写出算术表达式A+B*(C-D)+E/(C-D)**N的三元式、四元式序列。 解:三元式序列: (1) (-,C,D) (5) (**,(4),N) (2) (*,B,(1)) (6) ( /,E,(5) ) (3) (+,A,(2)) (7) (+,(3),(6)) (4) (-,C,D) 四元式序列: (-,C,D,T1) (*,B,T1,T2) (+,A,T2,T3) (-,C,D,T4) (5) (**,T4,N,T5) (6) ( /,E,T5,T6 ) (7) (+,T3,T6,T7) 8、写出表达式 A+B*(C-D)-E/F↑G 逆波兰表示, 三元组表示, 四元组表示。 解:(1) a-bc*cd-/b-a*+ - (2) A-BCDE/↑*F/+ 解:逆波兰表示:ABCD-*+EFG↑/- 下面讨论一种便于语法分析制导实现的翻译法。 中间码形式 T := E 的中间码 Goto TEST L1: 关于S1的中间码 Goto NEXT L2: 关于S2的中间码 Goto NEXT … Ln-1: 关于Sn-1的中间码 Goto NEXT Ln: 关于Sn的中间码 Got
文档评论(0)