作业评论。
重电教务系统
根据表6.1
(P137。)显示的属性语法,
配置表达式(4*7 1)*2的注释语法树。
digitl exval=4 digitl exval=7 digitl exval=1 fval=4 TV al=4 fval=7 tval=28
* *
Eval=28 fval=1 tval=1 eval=29ln
()
f val=29
tval=29 fval=2 digitl exval=2 * tval=58 eval=58
CH.6 .练习问题1 (p164) 3
CH.6 .练习问题2 (p164)。)2 (1)。表达式
((a) (b))根据表6.4(P146)中显示的属性语法构建表达式的提取
就像语法树一样。Idto entry aid
e . NP TRT . nptr(e . nptr)id(e . nptr)t . nptr id
T.nptrE.nptr
(E.nptr )T.nptrT.nptr
To entry b
CH6。练习题3:图a (a a a(a a A))中的Dagdag在这里指属性从属度。
语法:EE TET
表达式T(E)Tid复合属性:E.valT.val的值E.valid (E.val)
Id
E.val
(E.val )T.valT.val
e . val t . valid e . val t . vale . valt . vale . vale . valt . validt . valid
Id E.val T.validT.val5
CH.6 .练习问题5(P164)。)。
5.以下语法通过对整数常数和实数常数应用加法运算符来创建表达式。两个整数相加,结果仍然是整数,否则结果是实数:
EE T | EE T | T Tnum . num | num \(1 1)提供了确定每个子表达式结果类型的属性语法。解释:复合属性E.typt,T.type表示e和t的结果类型,类型值分别为int和real,表示整数和实型。属性语法如下:6
CH.6 .练习问题5(P164)。
教育信息化促进教育公平研究
解读5。(1)提供属性语法(翻译模式),以确定每个子表达式的结果类型。
ee 1t { if e 1 . type=int and t . type=int then e . type :=int
Else E.type:=real} et { e . type :=t . type;} tnum . num { t . type :=real;} tnum { t . type :=int;}7CH.6 .练习题7(P164)。)。
7.下面的语法从起始符号S生成二进制数,让复合属性val给出该数的值,并设计得出S.val的属性语法。其中已知的B的复合属性C提供了B生成的二进制数的结果值。例如,输入101.101时,请输入S.val=5.625。第一个二进制值为4,最后一个二进制值为0.125。SL. L | L S可以有小数点的二进制字符串LLB | B L表示二进制字符串B0 | 1 B表示二进制位8
CH.6 .练习问题7(P164)。)。
解7:题意味着要把二进制字符串(可以包含小数点)翻译成等价的十进制值。S.val、L.val和B.c代表S、L和b的十进制值。整数部分的转换规则是从最高位到低位
最初,val:=最高位值;以后的val:=val*2后面的数字值。小数部分的转换规则是从最后一位到10位。
最初val:=最后一个值;之后val:=val/2下一位值。解法1结合自下而上的语法分析,只能使用综合属性重写语法。9
CH.6 .练习问题7(P164)。)。
解法1。属性语法,m是小数部分的二进制字符串:sl . m s . val :=l . val m . valsl s . val 3360=l . valll1b l
B0 B.c:=0B1 B.c:=1
M am1 m. val:=a. c m1。val/2ma m . val :=a . ca0a . c :=0a1a . c :
CH.6 .练习问题7(P164)。)。
解决方案1。二进制字符串101.101的语法树和自下而上的翻译过程,在合同中执行语义规则。S.v=5.625
高职高专是什么学历
l . v=2b . c=1a . c=0.5m . v=0.25 l . v=1b . c=0a . c=0m . v=0.5b . c=1a
1 111
CH.6 .练习问题7(P164)。)。
解决方案2。复合属性S.val、L.val、B.c表示S、L和b的十进制值;复合属性L.length计算二进制字符串的位数;使用L2.val/2L2.length获得小数部分的10;属性语法:
sl 1 . l 2s . val 3360=l 1 . vall 2 . val/2 l 2 . lengthsl s . val 3360=l . val
ll 1 b l . val :=l 1 . val * 2 b . c;l . length :=l 1 . length 1 lb l . val :=b . c;l . length 3360=1b0b . c :=0b1b . c :=112
CH.6 .练习问题7(P164)。)。
解法2。二进制字符串101.101的语法树和自下而上的翻译过程,在签约时执行语义规则。S.v=5.625(=5 5/8)
l . v=5;L.l=3。l . v=5;l . l=3 l . v=2;l . l=2 b . c=1 l . v=2;l . l=2 b . c=1 l . v=1;l . l=1 b . c=0 l . v=1;L.l=1 B.c=0B.c=1B.c=11
010
1 113
CH.6 .练习问题11 (P165)。)11 .设置以下语法创建变量的类型:描述:(1)构成了将每个标识符的类型存储在符号表中的翻译模式。参考案例6.2 (P138)。)语法的句子(例如,A、B、C : Integer解决方案(1))。翻译模式如下:
D id l {addtype (id.entry,l.type)} l ,id l 1 { l . type 3360=l 1 . type add type(id)l . type)}
S a
L L、SL S
(1)创建属性语法,并输出对括号数。例如,符号字符串(a,(a,a))输出2。(2)配置打印每个a重叠深度的翻译模式。例如,符号字符串((a),a)将打印2,1。15CH.6 .练习题(补充问题)
复合属性S.n,L.n计算成对括号的数量。属性语法如下:
s’sprint(s . n)s(l)s . n :=l . n 1sa s . n :=0 ll 1、s l.n :=
而且,
L.n=0,S.n=0aS.n=0L.n=0
(L.n=0 )S.n=1S.n=2
‘s’印刷(S. n)
CH.6 .练习题(补充问题)
解释(2)。继承属性S.d,L.d设置计数A的嵌套深度,并在移动到A节点时打印S.d值。翻译模式如下:' :S' {S.d :=0} SS
{L.d :=S.d 1 }L)
sa { print(s . d)} l{ l 1 . d :=l . d } l 1,{s.d :=l.d} sl {s
A {pt (s.d=1)} {s.d=1} s {l1.d=1} L1,{s.d=1} s ({l.d .)
A {pt(S.d=2)}符号字符串((a),a)的分析和翻译(见图:)