欢迎来到天天文库
浏览记录
ID:42000449
大小:458.01 KB
页数:22页
时间:2019-09-06
《属性文法课堂练习》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、属性文法课堂练习题2、写出下面文法的属性文法:Number→DigitNumber1Number→DigitDigit→0
2、1
3、2
4、3
5、4
6、5
7、6
8、7
9、8
10、9
11、1、写出下面文法的属性文法:Number→Number1DigitNumber→DigitDigit→0
12、1
13、2
14、3
15、4
16、5
17、6
18、7
19、8
20、9
21、1、写出下面文法的属性文法:Number→Number1DigitNumber→DigitDigit→0
22、1
23、2
24、3
25、4
26、5
27、6
28、7
29、8
30、9
31、文法规则语义规则Number→Number1DigitNumber.val=Number1.val*10+Digit.valNu
32、mber→DigitNumber.val=Digit.valDigit→0Digit.val=0…………Digit→9Digit.val=92、写出下面文法的属性文法:Number→DigitNumber1Number→DigitDigit→0
33、1
34、2
35、3
36、4
37、5
38、6
39、7
40、8
41、9
42、文法规则语义规则Number→DigitNumber1Number.mul=Number1.mul*10Number.val=Digit.val*Number.mul+Number1.valNumber→DigitNumber.mul=1Number.val=Digit.valDigit→
43、0Digit.val=0…………Digit→9Digit.val=93、给出下列文法中S产生的二进制数值的语义规则,并用堆栈说明该语义的实现过程,例如输入1101.011时,S.val=13.375:S->L.L
44、LL->LB
45、BB->0
46、1{B.Val:=0}B->0{B.Val:=1}B->1{L.val:=B.val;L.length=1}L->B{L.val:=L.val*2+B.valL.length=L.length+1}L->LB{S.val:=L.val}S->L{S.val:=L1.val+L2.val/2^L2.length}S->L1.L2语义
47、规则产生式13_._1_1L.L1L.Val:=L.val*2+B.val(L.ength=2)13_._1L.L1B.Val:=113_._0_1L.LB113_._0_1L.L11L.Val:=B.val(L.length=1)13_._0L.L11B.Val:=113_._0L.B1113_._0L.01113_.L.011L.Val:=L.val*2+B.val(L.length=4)13L.011B.Val:=16_1LB.0116_1L1.011L.val:=L.val*2+B.val(L.length=3)6L1.011B.val:=03_0LB1.0
48、113_0L01.011L.val:=L.val*2+B.val(L.length=2)3L01.011B.val:=11_1LB01.0111_1L101.011L.val:=B.val(L.length=1)1L101.011B.val:=11B101.01111101.011--1101.011使用的语义规则valstate输入S.Val:=L1.val+L2.val/2^L2.length13.375SL.Val:=L.val*2+B.val(L.ength=3)13_._3L.LB.Val:=113_._1_1L.LB13_._1_1L.L1使用的语义规则
49、valstate输入1101.011的分析树1B.val=1L1.val=11B.Val=1L1.val=30B.Val=0L1.val=60B.Val=0L2.val=01B.Val=1L2.val=11B.Val=1L2.val=3.S=13.3751B.Val=1L1.val=134、十进制浮点数的文法修改如下:dnum→num.snumnum→num1digit
50、digitsnum→digitsnum1
51、digitdigit→0
52、1
53、2
54、3
55、4
56、5
57、6
58、7
59、8
60、9(注意:整数、小数分别用左、右递归文法)文法规则语义规则dnum→num.snumdnum.va
61、l=num.val+snum.valnum→num1digitnum.val=num1.val*10+digit.valnum→digitnum.val=digit.valsnum→digitsnum1snum.val=(snum1.val+digit.val)/10snum→digitsnum.val=digit.val/10digit→0digit.val=0…………digit→9digit.val=95、下面文法给出是Pascal说明的文法,写出变量类型的一个属性文法。decl->var-list:typevar-list->var-list,id
62、idt
此文档下载收益归作者所有