语义分析 主要内容 语义分析概述(必要性、功能、描述方法) 句符号表 句类型表达式 声明和程序体的语义分析
语义分析 主要内容: 语义分析概述(必要性、功能、描述方法) 符号表 类型表达式 声明和程序体的语义分析
语义分析的必要性 语法和语义的区别; 语法:关于什么样的字符串才是该语言 在组成结构上合法的程序的法规。 语义:关于结构上合法的程序的意义的 法则
语义分析的必要性 语法和语义的区别; 语法:关于什么样的字符串才是该语言 在组成结构上合法的程序的法规。 语义:关于结构上合法的程序的意义的 法则
语义分析的功能 语义种类 静态语义:在编译阶段(从程序文本上)可 以检查的语义。 动态语义:通过程序的执行才能检查的语 义
语义分析的功能 语义种类 静态语义:在编译阶段(从程序文本上)可 以检查的语义。 动态语义:通过程序的执行才能检查的语 义
语义的描述 语义形式化方法: 1.操作语义 2.指称语义 3.公理语义 4.代数语义
语义的描述 语义形式化方法: 1. 操作语义 2. 指称语义 3. 公理语义 4. 代数语义
语义分析的内容: 类型分析; 标识符相关信息; 语义分析的功能: 检查语义错误 构造标识符属性表(符号表) 语义分析的实现: 与语法分析相结合
语义分析的内容: 类型分析; 标识符相关信息; 语义分析的功能: 检查语义错误 构造标识符属性表(符号表) 语义分析的实现: 与语法分析相结合
语义分析的功能图示 语法分析树义分析 符号表 TokenLi st 语义定义 判定 自然语言描述规定
语义分析的功能图示 语义分析 语法分析树 TokenList 语义定义 自然语言描述规定 符号表 判定
三种内部表示 标识符的内部表示 类型的内部表示 ÷值的内部表示
标识符的内部表示 类型的内部表示 值的内部表示 三种内部表示
标识符的内部表示 C标识符种类: 常量名、类型名、变量名、函数名、过程名、域名。 TYPE idkind=( consKind, typeKind, varKind fieldKind, prockind, funckind) C内部表示( Attributer): 常量:Toer| Kind Va al ue 类型: Typeptr|Kind Forward 变量: TypePtr|Kind| Access Level0f 域名:[ TypePtr Kind0| HostType 过函: Off TypePtr Kind Level Class Code Size Forward
Code 标识符的内部表示 标识符种类: 常量名、类型名、变量名、函数名、过程名、域名。 TYPE idkind=( consKind, typeKind, varKind, fieldKind, procKind,funcKind ) 内部表示(AttributeIR): 常量: 类型: 变量: 域名*: 过函: TypePtr Kind Value TypePtr Kind Forward TypePtr Kind Access Level Off TypePtr Kind Off HostType Size Forward TypePtr Kind Level Parm Class Off
2例有声明如下: 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 的属性表示
例有声明如下: 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 的属性表示
÷类型的内部表示 类型的种类:标准、子界、枚举、数组、记录、 集合、文件、指针类型等等。 TypeKind=(intTy, bootY, charT, realTy, enumTy subTys arrayTy, recordTy, setTy, file'Ty, pointerTy 内部表示:( Type IR) 标准类型: Size kind sub. Si Ize Kind HostType Low Up enum Size Kind Elems Leng array:Size kind index Type ElemType
类型的内部表示 类型的种类:标准、子界、枚举、数组、记录、 集合、文件、指针类型等等。 TypeKind=(intTy,boolTy,charTy,realTy,enumTy, subTy,arrayTy,recordTy,setTy,fileTy,pointerTy) 内部表示:(TypeIR) 标准类型: sub: enum: array: Size Kind HostType Low Up Size Kind Elems Leng Size Kind IndexType ElemType Size Kind