第1题
下面的属性文法G[N]可以将一个二进制小数转换为十进制小数,令N. val为G[N]生成的二进制数的值,例如对输入串 101. 101,N. val= 5. 625.
B→‘1’ {B. val:= 1}
答:
(1) 试消除该属性文法(翻译模式)中的左递归,以便可以得到一个可以进行自上而下进行语义处理(翻译)的翻译模式;
(2) 对变换后的翻译模式,构造一个自上而下预测翻译程序。
7.下面的属性文法G[N]可以将一个二进制小数转换为十进制小数,令N. val为G[N]生成的二进制数的值,例如对输入串 101. 101,N. val= 5. 625.
B→‘1’ {B. val:= 1}
请帮忙给出正确答案和分析,谢谢!
第2题
对于上题(1)所得到的翻译模式(结果应满足L-属性的条件),在进行自下而上的语义处理时,语义栈中的值有两个分量,分别对应文法符号的综合属性val和len。
(1) 若该翻译模式中,嵌在产生式中间的语义规则集中含有除复写规则之外的语义规则,则变换该翻译模式,使嵌在产生式中间的语义规则集中仅含复写规则;
(2) 根据(1)所得到的新翻译模式,文法符号的所有继承属性均可以通过归约前已出现在分析栈中的综合属性进行访问。试写出在按每个产生式归约时语义处理的代码片断(设语义栈由向量v表示,归约前栈顶位置为top,语义值v[i]的两个分量分别用v[i].val和v[i]. len表示)。
请帮忙给出正确答案和分析,谢谢!
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!