⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a_5.11.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>
<head>
<title>5.11的解答</title>
</head>
<body background="../../images/background.gif">
<center><font class="title2"><b>练习5.11</b></font></center><br>
<p>解答:</p>
<p>(a) 假设基础文法含左递归的翻译模式如下:</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A      
-&gt; {A<sub>1</sub>.i:=A.i}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
A<sub>1</sub> {Y.i:=A.i}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
Y {A.a:=g(A<sub>1</sub>.a,Y.y)}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A      
-&gt; {X.i:=A.i}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
X {A.a:=f(X.x)}</p>       
<p>&nbsp;&nbsp;&nbsp; 消除基础文法左递归后的翻译模式如下:&nbsp;</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A      
-&gt; {X.i:=A.i}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
X {R.i:=f(X.x); R.yi:=A.i}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
R {A.a:=R.s}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R      
-&gt; {Y.i:=R.yi}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
Y {R<sub>1</sub>.i:=g(R.i,Y.y); R<sub>1</sub>.yi:=R.yi}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
R<sub>1</sub> {R.s:=R<sub>1</sub>.s}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R      
-&gt; ε {R.s:=R.i}</p>       
<p>&nbsp;&nbsp;&nbsp; 属性R.yi用于传递A.i给Y。</p>       
<p>(b) 设基础文法含左递归的翻译模式如下:</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A-&gt;      
{A<sub>1</sub>.i:=h<sub>1</sub>(A.i)}</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
A<sub>1</sub> {y.i:=h<sub>2</sub>(A.i)}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
Y {A.a:=g(A<sub>1</sub>.a,Y.y)}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A -&gt; {X.i:=h<sub>3</sub>(A.i)}</p>       
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
X {A.a:=f(X.x)}</p>       
<p>&nbsp;&nbsp;&nbsp; 考虑XY<sub>1</sub>Y<sub>2</sub>Y<sub>1</sub>,其继承属性的计算如下:</p>       

<p align=center><img src="a_5.11_a.gif" width="453" height="268" ></p>

<p>&nbsp;&nbsp;&nbsp; 消除基础文法中的左递归后,基础文法为:</p>      
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A -&gt; XR</p>      
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R -&gt; YR     
| ε</p>      
<p>&nbsp;&nbsp;&nbsp; 继承属性的计算如下图所示:<sub>&nbsp;&nbsp;&nbsp;&nbsp;</sub></p>      
<p align=center><img src="a_5.11_b.gif" width="501" height="315"></p>

<p> 当识别出X后,并不能计算出X的继承属性,因而,也就无法计算有关X的其他属性。只好把X的源表示或中间表示作为继承传给R,继续沿R传下去,然后再作为综合属性传回来。直到能计算出X.i,再对X的成分进行翻译。Y1,Y2,Y3的翻译思想和X类似,具体的翻译模式省略。</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>  



</body>

<html><script language="JavaScript">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -