当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

吉林大学:《编译原理》课程教学资源(PPT课件讲稿)类型表达式

资源类别:文库,文档格式:PPT,文档页数:15,文件大小:115KB,团购合买
一、运算分量类型的相容性; 二、赋值语句左右类型的相容性; 三、形参和实参类型的相容性; 四、类型相容: 五、类型等价则相容
点击下载完整版文档(PPT)

类型表达式 类型的等价性 按名等价: type tp= array[1..10] of integer var a, b tp: 则称a,b是相同类型的变量 结构等价: type tp1 array[1..10] of integer type tp2=array [1.10]of integer var a: tpl b: tp2; 则称a,b是相同类型的变量 类型的相容性

类型表达式  类型的等价性 按名等价:type tp=array[1..10]of integer; var a,b:tp; 则称a,b是相同类型的变量 结构等价:type tp1=array[1..10]of integer type tp2=array[1..10]of integer; var a:tp1; b:tp2; 则称a,b是相同类型的变量  类型的相容性

类型相容性 运算分量类型的相容性 ÷赋值语句左右类型的相容性; 形参和实参类型的相容性 类型相容: ◆类型等价则相容 ◆整型或整型子界类型与整型、实型相容 ◆两个子界类型定义的范围相包含则相容 ◆对结构类型,如果同一结构,且子类型 相容则相容

类型相容性 运算分量类型的相容性; 赋值语句左右类型的相容性; 形参和实参类型的相容性; 类型相容: ⬧类型等价则相容 ⬧整型或整型子界类型与整型、实型相容 ⬧两个子界类型定义的范围相包含则相容 ⬧对结构类型,如果同一结构,且子类型 相容则相容

类型的分析 作用:构造类型的内部表示,类型检查。 分析过程:读 Token序列,识别出各种类型, 类型检查,返回类型内部表示的地址 array arrKind ow=1 tp1=intPtr 10 up=10 tp2=intPtr IndexPtr=(1, subTy, intPtr, 1,10) of integer ElemPtr=intPtr size=(up-low+1)*sizeof (int) aPtr:=(size, arrTy, IndexPtr, ElemPtr)

类型的分析 作用:构造类型的内部表示,类型检查。 分析过程:读Token序列,识别出各种类型, 类型检查,返回类型内部表示的地址。 array [ 1 .. 10 ] of integer arrKind … low=1 tp1=intPtr … up=10 tp2=intPtr IndexPtr= (1,subTy, intPtr ,1 ,10) … … ElemPtr=intPtr size=(up-low+1) * sizeof (int) aPtr := ( size, arrTy, IndexPtr, ElemPtr )

类型出现的位置: 类型定义 TYPE id=t; 变量声明 VAR id:t 过/函声明 Proce/ Func p(A1:t…,)(:t 类型的种类: name, subr ange, enum, array record, set file, pointer ÷类型分析模块: 类型检查,返回类型的内部表示地址Pr和 Forward

 类型出现的位置: 类型定义 TYPE id = t; 变量声明 VAR id : t; 过/函声明 Proce/Func P(A1:t1,…)(:t)  类型的种类: name,subrange,enum,array,record,set, file,pointer……  类型分析模块: 类型检查,返回类型的内部表示地址Ptr和 Forward

NameType 形式:id(类型标识符) ÷处理思想: 查符号表→>无声明错 ◆ type ind? ◆ TypePtr为Ptr的值 ◆ Forward:=0

NameType 形式:id (类型标识符) 处理思想: ⬧ 查符号表 → 无声明错 ⬧ typekind ? ⬧ TypePtr 为Ptr的值 ⬧ Forward:=0

EnumTvpe 形式:(a1,…,an) 处理思想: ◆生成a1,l的符号表 EntryList: (a;,Ptr, conskind,i),Ptr需回填 ◆生成内部表示: Ptr: =(enumSize, enumTy, EntryList, n) ◆回填 EntryList中的Ptr值 ◆ Forward:=0

EnumType 形式:(a1,… ,an) 处理思想: ⬧ 生成a1,…an的符号表EntryList: (ai,Ptr,consKind,i),Ptr需回填 ⬧ 生成内部表示: Ptr:=★(enumSize,enumTy,EntryList,n) ⬧ 回填EntryList中的Ptr值 ⬧ Forward:=0

SubRangeType 形式:C1C 处理思想: ◆从G1求出其内部类型地址Ptr1和值N1; ◆从C2求出其内部类型地址Ptr2和值N2; ◆检查Ptr1=Ptr2,N1≤N2; ◆Ptr:=★( subsize, subTy,Ptr1,N,N2) ◆ Forward:=0

SubRangeType 形式:C1..C2 处理思想: ⬧ 从C1 求出其内部类型地址Ptr1和值N1; ⬧ 从C2 求出其内部类型地址Ptr2和值N2; ⬧ 检查Ptr1 =Ptr2,N1  N2; ⬧ Ptr:=★(subSize,subTy,Ptr1 ,N1 ,N2 ) ⬧ Forward := 0

ArrayType 形式: array to of t1 处理思想 ◆返回To,T1的内部表示地址 Indexptr,E| emPtr ◆判定 Indepth是否为下标类型 ◆计算size=( IndexPtr个,Up I ndexPtr1Low+1)×( ElemPtr↑.Size) ◆Ptr:=★(size, arrarY, Indexptr,E| emPtr)

ArrayType 形式:array T0 of T1 处理思想: ⬧ 返回T0,T1的内部表示地址IndexPtr,ElemPtr ⬧ 判定IndexPtr是否为下标类型 ⬧ 计算size = (IndexPtr↑. Up￾IndexPtr↑. Low +1) (ElemPtr↑. Size); ⬧ Ptr:=★(size,arrayTy,IndexPtr,ElemPtr)

Set Type 形式: set of t ÷处理思想: ◆返回T的内部表示地址 BasePtr ◆检查 BasePtr是否为有序类型; ◆Ptr:=★( setsize, setTy, Baseptr)

SetType  形式:set of T  处理思想: ⬧ 返回T的内部表示地址BasePtr; ⬧ 检查BasePtr 是否为有序类型; ⬧ Ptr:=★(setSize,setTy,BasePtr)

File type +形式: file of t +处理思想: 返回T的内部表示地址 compUtr; ◆Ptr:=★( filesize, fileT, CompPtr) 返回地址Ptr

FileType  形式:file of T  处理思想: ⬧ 返回T的内部表示地址compPtr; ⬧ Ptr:=★(fileSize,fileTy,CompPtr) 返回地址Ptr

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共15页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有