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

📄 7.5.0.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='7.4.4b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.6.1.htm'"></img></td>
</tr>
</table>
<br><br>

<font class="title2"><b>7.5 CASE语句</b></font>  
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
许多程序设计语言中含有“switch”语句或“case”语句。假定switch语句的语法如下: <BR>&nbsp;&nbsp;&nbsp; <B>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">switch</font></B>  
expression <BR>&nbsp;&nbsp;&nbsp; <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">begin</font> </B><BR>&nbsp;&nbsp;&nbsp; <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">case</font></B>  
 value<SPAN class=down><sub>1</sub></SPAN>: statement<SPAN class=down><sub>1</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp;   
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">case</font></B>  
value<SPAN class=down><sub>2</sub></SPAN>: statement<SPAN   
class=down><sub>2</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;......................... <BR>&nbsp;&nbsp;&nbsp;   
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">case</font></B> value<SPAN class=down><sub>n-1</sub></SPAN> statement<SPAN   
class=down><sub>n-1</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp; <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">defalt</font></B>:statement<SPAN  
class=down><sub>n</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp; <B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">end</font></B>  
<BR>&nbsp;&nbsp;&nbsp;&nbsp;这里expression是一个表达式,称为选择器,它将被计算出一个值。表达式后面跟随的value<SPAN 
class=down><sub>1</sub></SPAN>,value<SPAN class=down><sub>2</sub></SPAN>,…,value<SPAN 
class=down><sub>n-1</sub></SPAN>是表达式可能取的值,default称为"缺席值" 它用来在expression的值不等于任何value<sub>i</sub>时来匹配expression。对于switch的语句的预期翻译可表示如下: <BR>&nbsp;&nbsp;&nbsp; 1.对表达式求值;   
<BR>&nbsp;&nbsp;&nbsp; 2.在列出的value<SPAN class=down><sub>1</sub></SPAN>,value<SPAN  
class=down><sub>2</sub></SPAN>,…,value<SPAN 
class=down><sub>n-1</sub></SPAN>这些值中寻找与表达式的值相等的值。如果没有这样的值存在,则让“缺席值”与表达式匹配; <BR>&nbsp;&nbsp;&nbsp;   
3.执行在(2)中寻找到的值相联系的话句(某个statement)。 <BR>&nbsp;&nbsp;&nbsp; 这样,switch语句的目标代码结构可作如下安排: <BR>&nbsp;&nbsp;&nbsp;   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对expression求值并置于t的有关代码 <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto test <BR>&nbsp;&nbsp;&nbsp;   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L<SPAN class=down><sub>1</sub></SPAN>:&nbsp;&nbsp; 有关statement<SPAN class=down><sub>1</sub></SPAN>的代码  
<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto next <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L<SPAN   
class=down><sub>2</sub></SPAN>:&nbsp;&nbsp;有关statement<SPAN class=down><sub>2</sub></SPAN>的代码 <BR>&nbsp;&nbsp;&nbsp;   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto next <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L<SPAN class=down><sub>n-1</sub></SPAN>:&nbsp;有关statement<SPAN  
class=down><sub>n-1</sub></SPAN>的代码 <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto next <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L<SPAN   
class=down><sub>n</sub></SPAN>:&nbsp;&nbsp; 有关statement<sub>n</sub>的代码 <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto next <BR>&nbsp;&nbsp;&nbsp;   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test:if t=value<SPAN class=down><sub>1</sub></SPAN> goto L<SPAN class=down><sub>1</sub></SPAN>  
<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if t=value<SPAN class=down><sub>2</sub></SPAN> goto L<SPAN   
class=down><sub>2</sub></SPAN> <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.................<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if t=value<SPAN class=down><sub>n-1</sub>   
</SPAN>goto L<SPAN class=down><sub>n-1</sub></SPAN><br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto L<SPAN   
class=down><sub>n</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next: <BR>&nbsp;&nbsp;&nbsp;   
&nbsp;Pascal语言中的case语句与上述switch语句在形式上类似。
</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='7.4.4b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.6.1.htm'"></img></td>
</tr>
</table>

⌨️ 快捷键说明

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