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

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

<font class="title2"><b>5.8  类型分析 </b></font>        

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
从某种意义上说,程序是作用在一个数据集合上的运算序列。根据对数据值的不同使用,将其划分成不同的类型,然后进行检查,使得没有数据值被错误使用。这样,能发现程序设计中的大部分错误。 
</p>
</td></tr></table>


<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
每个程序设计语言都有自己的类型机制,包括类型说明和使用。例如Pascal语言,语言系统提供了标准类型<b>integer、real、char</b>和<b>boolean</b>,程序员不仅可以定义简单类型子界、枚举,而且可以定义数组、记录、集合、文件等结构类型,并可以使用指针构造动态数据结构。为保证安全使用数据类型,定义了数据之间的类型关系:同一、相容和赋值相容。 
</p>
</td></tr></table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
类型分析是编译器语义分析的重要组成部分。编译器首先根据类型说明,确定每一个变量和常量的类型,计算其使用存储空间的大小,从而建立其到存储空间的映射。进而,编译器要确定每个语言结构的类型,以完成下面的主要任务: 
</p>
</td></tr></table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
<font class="emphasize">(1) 判定重载算符(函数)在程序中代表是那一个运算。</font>例如,A+B,根据A和B的类型,A+B中的'+'或者代表整数加,或者代表实数加,或者代表两个集合的并。 
</p>
</td></tr></table>


<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
<font class="emphasize">(2) 强调类型转换。</font>例如x+i,若x为real类型,i为integer类型,则要先把i转换成real类型再进行相加。即变成x+int_to_real(i),其中int_to_real是把integer数据转换成real类型数据的运算。 
</p>
</td></tr></table>
    

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
<font class="emphasize">(3) 对语言结构进行类型检查。</font>例如,对Pascal中数据类型的使用要进行同一、相容和赋值相容的检查。 
</p>
</td></tr></table>
    
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
根据程序语言的类型体制,在编译时完成类型检查称为静态类型检查,现在程序语言的类型体制,例如Pascal和C,一般都采用静态类型检查。经过类型检查后,在目标程序运行时将不会发生因类型使用不当而导致的错误,这样的语言称为<font class="emphasize">强类型语言</font>。
</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='5.7.0_3.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.8.1.htm'"></img></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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