- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1.四元式之间的联系是通过_____实现的
A、临时变量B、序列行号C、程序变量D、符号表
2.中间代码生成时所依据的是_________
A、词法规则B、语法规则C、语义规则D、等价变换
3.在编译程序中与生成中间代码的目的无关的是______
A、便于目标代码的优化B、便于存储空间的组织
C、便于目标代码的移植D、便于编译程序的移植;4、在语法制导翻译中,不采用拉链-回填技术的语句是____
A.转向语句B、赋值语句C、条件语句D、循环语句
5、能正确表示算术表达式a+b*c+d的后缀式是____
A、abc*+d+B.abc*d++C.ab+cd*+D.bc*a+d+
6、对_____表进行变动较为困难
A、三元式B、间接三元式C、四元式D、三地址码;7、P202练习5.2.3.有产生式A→BCD,其中四个文法符号均有两个属性,s为综合属性,i为继承属性。
判断是否符合S属性定义;是否符合L属性定义;是否存在和这些规则一致的求值过程
1)A.s=B.i+C.s
2)A.s=B.i+C.s和D.i=A.i+B.s
3)A.s=B.s+D.s
4)A.s=D.i,B.i=A.s+C.s,C.i=B.s和D.i=B.i+C.i;85.3.1E→E+T|TT→num.num|num
1)给出一个SDD来确定每个项T和表达式E的类型
解:重写文法为:E→E1+T|TT→num1.num2|num
引入属性type,type为int表示整型,为float表示实型,给出SDD:
产生式语义规则
E→E1+T if(E1.type==int)(T.type==int)
E.type=int;
elseE.type=float;
E→T E.type=T.type
T→num1.num2 T.type=float
T→num T.type=int;95.4.4为下面的产生式写出与例5.10类似的一个L属性SDD。
S→if(C)S1elseS2
解:语义规则为:
L1 =new();
L2 =new();
C.true=L1;
C.false =L2;
S1.next=S2.next=S.next;
S.code =C.code||label||L1||S1.code||goto||S.next||label||L2||S2.code;105.5.5按照5.5.4节的风格,将5.4.4中得到的每个SDD和一个LR语法分析器一起实现。
解:加入必要的占位符,重写文法为:
S→if(M1C)M2S1elseM3S2
M→ε
假设S.next位于归约之后的栈顶第二条记录:可以给出S识别过程的LR语法分析栈变化及相关代码如下:;?;?;?;11、为下面的表达式构造DAG
((x+y)-((x+y)*(x-y)))+((x+y)*(x-y));12、P237练习6.2.1将算术表达式a+-(b+c)翻译成抽象语法树、四元式序列、三元式序列、间接三元式序列。;12、P237练习6.2.1将算术表达式a+-(b+c)翻译成抽象语法树、四元式序列、三元式序列、间接三元式序列。;13、P237练习6.2.2
a=b[i]+c[j];13、P237练习6.2.2
a[i]=b*c–b*d;14、6.5.1(1)假定图6-26中的函数widen可以处理图6-25a的层次结构中的所有类型,翻译下列表达式。假设x是浮点型,s是短整型,c是字符型。
x=s+c
t1=(short)c
t2=s+t1
t3=(float)t2
x=t3;15、6.4.6(1)一个按行存放的整数数组A[i,j]的i的范围为1-10,下标j的范围为1-20。每个整数占4个字节。假设数组A从0字节开始存放,请给出下列元素的位置:
A[4,5]
[(4-1)*20+(5-1)]*4=256
6.4.7(1)按列存放方式
[(5-1)*10+(4-1)]*
文档评论(0)