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

📄 2.4.2.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>

<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>

<BODY>

<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='2.4.1b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='2.4.3.htm'"></img></td>
</tr>
</table>
<br><br>

<font class="title2"><b>2.4.2 非上下文无关的语言结构</b></font>
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
在我们使用的程序语言中,有些语言结构并不是总能用上下文无关文法描述的。
</p>
<p>
<font class="example">例2.9&nbsp</font> L<sub>1</sub>={wcw|w∈{a,b}<sup>+</sup>}。L<sub>1</sub>是个上下文无关语言,它的每个字的前后是相同的a和b组成的串,中间用c分隔开,例如,aabcaab就是L<sub>1</sub>的一个句子。这个语言是检查程序中标识符的声明应先于引用的抽象,wcw中的第一个w代表标识符w的声明,第二个代表它的引用。这例子说明,类Pascal不是上下文无关语言,它们都要求标识符的声明先于引用,并且允许标识符任意长。由于这个原因,标识符的这种限定是由编译器中的语义分析阶段来检查的。
</p>
<hr color=red width=90%>
<p>
<font class="example">例2.10&nbsp</font> L<sub>2</sub>={a<sup>n</sup>b<sup>m</sup>c<sup>n</sup>d<sup>m</sup>|n≥0且m≥0}不是上下文无关语言,它是检查过程声明的形参个数和过程引用的参数个数一致问题的抽象,a<sup>n</sup>和b<sup>m</sup>代表两个过程声明的形参表中分别由n个和m个参数,c<sup>n</sup>和d<sup>m</sup>分别代表这两个过程调用的实参表。语言中过程定义和引用的语法并不涉及到参数个数,例如,Pascal的过程语句可描述为:
<table align=center width=300>
<tr><td> s-call → id(r-liset) </td></tr>
<tr><td> r-liset → r-liset, r </td></tr>
<tr><td>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp |r </td></tr>
</table>
实参和形参个数的一致性检查也是放在语义分析阶段完成的。 
</p>
</td></tr></table>

<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='2.4.1b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='2.4.3.htm'"></img></td>
</tr>
</table>

</BODY>
</html>

⌨️ 快捷键说明

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