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

📄 4.9.1.1b.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='4.9.1.1.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.9.2.0.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td> 
<td class="content">  
<p>注意,第一个产生式的非终结符term是右部的第三个文法符号,'+' 是第二个。第一个产生式的语义动作把右部的expr和term的值相加,把结果赋给左部非终结符expr的属性值。第二个产生式的语义动作说明省略,因为右部只有一个文法符号时,值的复写是缺省的语义动作,即它的语义动作是{$$=$1;}。</p>
<p>注意,我们加了一个新的开始产生式<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line : expr'\n'&nbsp;&nbsp;&nbsp;&nbsp;
{ printf("%d\n",$1);}
</p>
<p>该产生式的意思是,这个台式计算器的输入是一个表达式后面跟一个换行字符。它的语义动作是打印表达式的十进制值,后面跟一个换行字符。支持例程部分 Yacc源程序的第三部分是一些C写的支持例程。名字为yylex()的词法分析器必须提供给语法分析器。其它的过程,如错误恢复例程,需要的话也加上。</p>
<p><font class="emphasize">支持例程部分   </font>Yacc源程序的第三部分是一些C写的支持例程。名字为yylex()的词法分析器必须提供语法分析器。其他的过程,如错误恢复例程,需要的话也加上。    
</p>

<p>词法分析器yylex()返回二元组(词类记号,属性值),返回的词类记号,如DIGIT,必须在Yacc说明的第一部分声明。属性值必须通过Yacc定义的变量yylval传给分析器。</p>  

<p>图4.29中的词法分析器是非常粗糙的。它用C的函数getchar()每次读一个输入字符,如果是数字字符,取它的值存入变量yylval,返回记号DIGIT,否则把字符本身作为词类符号返回。这可能会引起分析器宣布一个错误而停机。</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='4.9.1.1.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.9.2.0.htm'"></img></td>
</tr>     
</table>     
     
</BODY>     
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

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