编译原理个人作业--第六章——基于 编译原理 国防工业出版社 第三版

2

对表达式((a)+(b))

(1)

按照表6.4属性文法构造抽象语法树

(2)

按6.17翻译模式构造表达式抽象语法树

5(1)

下列文法对整型常数、实型常熟世家加法运算符
+生成表达式,当两个整型数相加,结果为整形,否则结果为实型

E → E + T ∣ T E\rightarrow E+T|T EE+TT
T → n u m , n u m ∣ n u m T\rightarrow num, num| num Tnum,numnum

尝试给出确定每个子表达式结果类型的属性文法

E → E_1 + T     {if(E_1.Type == int) and (T.Type == int) 
                    then E.Type = int
                    else E.Type = real}
E → T           {E.type = T.type}
T → num, num    {T.type = real}
T → num         {T.type = int}

7

下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值
S → L . L ∣ L L → L B ∣ B B → 0 ∣ 1 S\rightarrow L.L|L \\ L\rightarrow LB|B \\ B\rightarrow 0|1 SL.LLLLBBB0∣1
设计S.val的属性文法,其中已知B的综合属性c,给出由B产生的二进制结果值,如输入101.101,S.val = 5.625
其中第一个二进制位值位4,最后一个为0.125
S → L 1 . L 2 { S . v a l = L 1 . v a l + L 2 . v a l / 2 L 2 . l e n } S → L { S . v a l = L . v a l } L → L 1 B { L . v a l = 2 ∗ L 1 . v a l + B . c L . l e n = L 1 . l e n + 1 } L → B { L . v a l = B . c L . l e n = 1 } B → 0 { B . c = 0 } B → 1 { B . c = 1 } S\rightarrow L_1 . L_2\{S.val = L_1.val+L_2.val/2^{L_2.len}\}\\ S\rightarrow L\{S.val = L.val\}\\ L\rightarrow L_1B\{L.val = 2*L_1.val + B.c\quad L.len = L_1.len+1\}\\ L\rightarrow B\{L.val = B.c\quad L.len = 1\}\\ B\rightarrow 0\{B.c = 0\}\\ B\rightarrow 1\{B.c = 1\}\\ SL1.L2{S.val=L1.val+L2.val/2L2.len}SL{S.val=L.val}LL1B{L.val=2L1.val+B.cL.len=L1.len+1}LB{L.val=B.cL.len=1}B0{B.c=0}B1{B.c=1}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理第三版第六章主要介绍了自顶向下语法分析和递归下降语法分析相关内容。其中包括了预测翻译器的设计方法、S-属性文法的定义和使用、语法制导翻译的实现等。具体内容如下: 1. 自顶向下语法分析 自顶向下语法分析是一种从语法的高层符号开始,逐步向下展开,直到推导出输入串的过程。它的主要思想是将输入串与语法规则进行匹配,从而得到语法树。自顶向下语法分析的方法包括了递归下降分析、LL分析和预测分析等。 2. 递归下降语法分析 递归下降语法分析是一种自顶向下语法分析的方法,它的主要思想是将每个非终结符对应的语法规则转化为一个对应的函,然后通过递归调用这些函来实现语法分析。递归下降语法分析的优点是易于理解和实现,但是它也存在一些问题,例如左递归和回溯等。 3. 预测翻译器的设计方法 预测翻译器是一种递归下降语法分析的方法,它的主要思想是通过预测下一个输入符号来选择相应的语法规则进行语法分析。预测翻译器的设计方法包括了FIRST集和FOLLOW集的计算、LL(1)文法的定义和使用等。 4. S-属性文法的定义和使用 S-属性文法是一种语法制导翻译的方法,它的主要思想是将语法规则和属性相结合,通过对语法树的遍历来计算属性值。S-属性文法的定义和使用包括了属性的定义、属性计算规则的定义、属性计算顺序的确定等。 5. 语法制导翻译的实现 语法制导翻译是一种将语法分析和语义分析相结合的方法,它的主要思想是通过对语法树的遍历来实现语义分析。语法制导翻译的实现包括了属性计算的方法、类型检查的方法、中间代码生的方法等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值