📄 a_5.14.htm
字号:
<html>
<head>
<title>5.14的解答</title>
</head>
<body background="../../images/background.gif">
<center><font class="title2"><b>练习5.14</b></font></center><br>
<p>解答:</p>
<p>(a) 把表5.10的语法制导定义改写成下面的翻译模式:</p>
<p>
S -> L {B.ps:=L.s}</p>
<p>
B {S.ht:=B.ht}</p>
<p>
L -> ε {L.s:=10}</p>
<p>
B -> {B<sub>1</sub>.ps:=B.ps}</p>
<p>
B<sub>1</sub> {M.i:=B.ps}</p>
<p>
M {B<sub>2</sub>.ps:=M.s}</p>
<p>
B<sub>2</sub> {B.ht:=max(B<sub>1</sub>.ht,B<sub>2</sub>.ht)}</p>
<p>
M -> ε { M.s:=M.i}</p>
<p>
B -> {B<sub>1</sub>.ps:=B.ps}</p>
<p>
B<sub>1</sub></p>
<p>
sub {N.i:=B.ps}</p>
<p>
N {B<sub>2</sub>.ps:=N.s}</p>
<p>
B2 {B.ht:=disp(B<sub>1</sub>.ht,B<sub>2</sub>.ht)}</p>
<p>
B -> text {B.ht:=text.h*B.ps}</p>
<p>
N -> ε {N.s:=shrink(N.i)}</p>
<p>(b) 设一个栈ps,管理继承属性B.ps的值。栈的三个操作为push(ps,值),pop(ps),top(ps).翻译模式如下:</p>
<p>
S -> L {B.ps:=top(ps)}</p>
<p>
B {S.ht:=B.ht}</p>
<p>
L -> ε {push(ps,10)}</p>
<p>
B -> {B<sub>1</sub>.ps:=top(ps)}</p>
<p>
B<sub>1</sub> {B<sub>2</sub>.ps:=top(ps)}</p>
<p>
Bsub>2</sub> {B.ht:=max(B<sub>1</sub>.ht,B<sub>2</sub>.ht)}</p>
<p>
B -> {B<sub>1</sub>.ps:=top(ps)}</p>
<p>
B<sub>1</sub></p>
<p>
sub</p>
<p>
N (B<sub>2</sub>.ps:=top(ps)}</p>
<p>
Bsub>2</sub> {B.ht:=disp(B<sub>1</sub>.ht,B<sub>2</sub>.ht); pop(ps)}</p>
<p>
B -> text {B.ht:=text.h*B.ps}</p>
<p>
N -> ε {push(ps,shrink(top(ps)))}</p>
</body>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -