欢迎来到天天文库
浏览记录
ID:42430259
大小:154.14 KB
页数:22页
时间:2019-09-14
《【精品】编译原理课件18》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、心杰忠镒代盘毋盞能司Addr;中国昏安友谊昏路127鬥55信箱Zip:710072TeI:86・29・6495B21Fax:86^29-8495772Web;wwwxo-thinkxom5.9说明语句的翻译逆明语与的作用是指朗彼说朗的量的一些具体属性,如类型.种属.存储分配特点及其它属性等等。编译程序对说明语旬进行处理的主要任务是把若关属性填入符号表相应參记项中。•说明语旬主要有变量定丈(也称类型说蹈)语句.赦爼说闕语句及类型定丈语句等西gjyoL代盘曙盞低冷hjAddr中国昏安友谊丙路127子755信箱Zip:710072TeI:86・29・&495321Fax:B6^9
2、-8495772Web;wwwxo-thinkxom5.9.1类變说明语句的翻译Varabletiden<$$=Entry($l);/*itA符号表中序号*/VarList[$$].CAT=SimVar西gjyoL代盘曙盞低冷hjAddr中国昏安友谊丙路127子755信箱Zip:710072TeI:86・29・&495321Fax:B6^9-8495772Web;wwwxo-thinkxom西gjyoL代盘曙盞低冷hjIArrayMSG,number..numberDIM+l;$$=$1;VarList[$$].ADDRA
3、rrayVar—ArrayMSG]{/*传递数组名在表中序号*/$$=$1;FillArrMSG_C($$);/*计算并填写数组内情向量的C值*/}Type—int{$$.Type=INT;}
4、real{$$.Type=REAL;}boolean{$$.Type=BOOL;}SelfDef{$$.Type=$1.Type;}DefVarableTypeVarable{FillVarType($2,$1.Type);$$.Type=$1.Type;}
5、DefVarable,Varable{FillVarType($3,$1.Type);$$.Type=$1.Type;西硫盘恵
6、紐盘您盞曲司Addn中国昏安友萌丙路127》755倍箱Zip:710072Tel:86・298495«21Fax:B6^29-8495772Web;wwwxo-thinkxom在上面的厲牲明译丈法中,我们引入了两个辅助函数voidFillVarType(intNOJntTYPE)和voidFillArrMSG_C(intNO)第一个函数完成将类型信息TYPE填写到符号表中的第N0项之类型(type)域的工作;第二个函数计算并填写符号表中第N0登记项ADDR所指示的内情向量中的C(CONSTPART)值。非终结符SelfDef用于描述用户囱更丈救裾类變,其文法定义将在5.9.
7、2节中讨论,这里,我们只需知道它具有一个属性Type西硫盘恵紐盘您盞曲司Addn中国昏安友萌丙路127》755倍箱Zip:710072Tel:86・298495«21Fax:B6^29-8495772Web;wwwxo-thinkxom在上面的厲牲明译丈法中,我们引入了两个辅助函数voidFillVarType(intNOJntTYPE)和voidFillArrMSG_C(intNO)第一个函数完成将类型信息TYPE填写到符号表中的第N0项之类型(type)域的工作;第二个函数计算并填写符号表中第N0登记项ADDR所指示的内情向量中的C(CONSTPART)值。非终结符Se
8、lfDef用于描述用户囱更丈救裾类變,其文法定义将在5.9.2节中讨论,这里,我们只需知道它具有一个属性Type(用大于零的整型数表示)。西gjyoL代盘曙盞低冷hjAddr中国昏安友谊丙路127子755信箱Zip:710072TeI:86・29・&495321Fax:B6^9-8495772Web;wwwxo-thinkxom对于简单数据类憂(如real、int等),我们规定用负整数表示;为了便于阅读,这里使用了助记符(常量定义)。另外,还利用符号表(VarList)的ADDR域作为指针,指向一个结构struct{intDIM;int*Vector;}其中,DIM用于描述
9、数组的维数,Vector是一3*DIM+2个整型数组成的向量,用于存放除n(维数)外的为情向量信息,其中存放首地址a的单元暂为空。由于各个数组的维数可以不同,这里采用了动态申请(不断增大)空间的方法保存上述信息。另外,为保持一致性,当说明简单变量时,将其ADDR域赋值为NULLo在上面的文法中,我们假定数细各確的2下尿佝昱常数.有些语言(ALGOL)允许£下界昱可麦的,在这种情况下,数组的内情向量信息就无法在编译时具体填入。此外,由于在编译时不能确定数组的体积,故也无法为其分配存储空间。可见,对于变界数组内情向量的
此文档下载收益归作者所有