Presentation is loading. Please wait.

Presentation is loading. Please wait.

语义分析 主要内容:  语义分析概述 ( 必要性、功能、描述方法 )  符号表  类型表达式  声明和程序体的语义分析.

Similar presentations


Presentation on theme: "语义分析 主要内容:  语义分析概述 ( 必要性、功能、描述方法 )  符号表  类型表达式  声明和程序体的语义分析."— Presentation transcript:

1 语义分析 主要内容:  语义分析概述 ( 必要性、功能、描述方法 )  符号表  类型表达式  声明和程序体的语义分析

2 语义分析的必要性  语法和语义的区别; 语法:关于什么样的字符串才是该语言 在组成结构上合法的程序的法规。 语义:关于结构上合法的程序的意义的 法则。

3 语义分析的功能  语义种类 静态语义:在编译阶段 ( 从程序文本上 ) 可 以检查的语义。 动态语义:通过程序的执行才能检查的语 义。

4  语义的描述 语义形式化方法: 1. 操作语义 2. 指称语义 3. 公理语义 4. 代数语义

5  语义分析的内容: 类型分析; 标识符相关信息;  语义分析的功能: 检查语义错误 构造标识符属性表(符号表)  语义分析的实现: 与语法分析相结合

6 语义分析的功能图示 语义分析 语法分析树 TokenList 语义定义 自然语言描述规定 符号表 判定

7  标识符的内部表示  类型的内部表示  值的内部表示 三种内部表示

8 Cod e  标识符的内部表示  标识符种类: 常量名、类型名、变量名、函数名、过程名、域名。 TYPE idkind=( consKind, typeKind, varKind, fieldKind, procKind,funcKind )  内部表示( AttributeIR ): 常量: 类型: 变量: 域名 * : 过函: ValueKindTypePtr ForwardKindTypePtr OffLevelAccessKindTypePtr HostTypeOffKindTypePtr SizeForward ClassPar m LevelKindTypePtr Off

9  例有声明如下: CONST pai= 3.14 ; TYPE vector=ARRAY[1..10] OF integer; VAR x, y : real ; r, s : vector ; 设当前层数和可用 offset 值分别为 L 和 0 ,构 造标识符 pai, vector, x, y, r 和 s 的属性表示。

10  类型的内部表示  类型的种类: 标准、子界、枚举、数组、记录、 集合、文件、指针类型等等。 TypeKind=(intTy,boolTy,charTy,realTy,enumTy, subTy,arrayTy,recordTy,setTy,fileTy,pointerTy)  内部表示: (TypeIR) 标准类型: sub: enum: array: UpLowHostTypeKindSize LengElemsKindSize ElemTypeIndexTypeKindSize KindSize

11 record: FixBody: VariBody: set: file: pointer: VariBodyFixBodyKindSize NextOffFixUnitTypeid VariUnitsCaseUnit NextVariBodyFixBody OffCaseTypeid BaseTypeKindSize CompTypeKindSize TypeNameKindSize

12  例有如下的类型定义: at = ARRAY [1..10] OF ARRAY[1..100] OF integer; rt = RECORD x : real ; a : at; CASE u: boolean OF false:(k : integer); true:(y: real; b: boolean) END 构造类型的内部表示。

13  值的内部表示  非结构类型值的内部表示: 实型: 指针: 有序类型:整数形式

14 有序类型的常量表示:  整型常量: ord(N) = N  布尔常量: ord(false)=0, ord(true) = 1  字符常量: ord(C) = ASC Ⅱ (C)  枚举常量:设有枚举类型 (D,A,B), 则有 ord(D)=0,ord(A)=1,ord(B)=2  子界常量:设有子界类型 C 1..C 2, 则值空间 为 [ord(C 1 )...ord(C 2 )]


Download ppt "语义分析 主要内容:  语义分析概述 ( 必要性、功能、描述方法 )  符号表  类型表达式  声明和程序体的语义分析."

Similar presentations


Ads by Google