📄 a_5.9.htm
字号:
<html>
<head>
<title>5.9的解答</title>
</head>
<body background="../../images/background.gif">
<center><font class="title2"><b>练习5.9</b></font></center><br>
<p>解答:</p>
<p>(a) 翻译模式如下:</p>
<p> D -> id
L {addtype(id.entry,L.type)}</p>
<p> L -> ,
id L<sub>1</sub> {L.type:=L1.type;</p>
<p>
addtype(id.entry,L.type)}</p>
<p> L -> :
T {L.type:=T.type}</p>
<p> T ->
integer {T.type:=integer}</p>
<p> T ->
real {T.type:=real}</p>
<p>(b) 预测翻译程序由如下过程组成:</p>
<p>
PROCEDURE D;</p>
<p>
VAR L.type:(integer,real);</p>
<p>
id.entry:^id-entry;</p>
<p>
BEGIN</p>
<p>
id.entry:=id.lexval;</p>
<p>
match(id);</p>
<p>
L.type:=L;</p>
<p>
addtype(id.entry,L.type)</p>
<p>
END;</p>
<p> </p>
<p> FUNCTION
L:(integer,real);</p>
<p>
VAR L.type,L<sub>1</sub>.type:(integer,real);</p>
<p>
id.entry:^id-entry;</p>
<p>
BEGIN</p>
<p>
if(lookahead==',')</p>
<p>
THEN BEGIN</p>
<p>
match(',');</p>
<p>
match(id);</p>
<p>
id.entry:=id.lexval;</p>
<p>
L<sub>1</sub>.type:=L;</p>
<p>
L.type:=L<sub>1</sub>.type;</p>
<p>
addtype(id.entry,L.type);</p>
<p>
END</p>
<p>
ELSE BEGIN</p>
<p>
match(':');</p>
<p>
L.type:=T;</p>
<p>
END;</p>
<p>
return(L.type);</p>
<p>
END; </p>
<p> </p>
<p> FUNCTION T:(integer,real);</p>
<p> VAR T.type:(integer,real);</p>
<p> BEGIN</p>
<p> if(lookahead=='integer')</p>
<p> THEN BEGIN</p>
<p>
match(integer);</p>
<p>
T.type:=id.lexval</p>
<p>
END</p>
<p> ELSE </p>
<p> if(lookahead=='real')</p>
<p> THEN BEGIN</p>
<p>
match(real);</p>
<p>
T.type:=id.lexval;</p>
<p>
END;</p>
<p> ELSE ERROR;</p>
<p> return (T.type);</p>
<p> END; </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</body>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -