• sxe12.0注入错误 > 符号表与错误处理
  • 符号表与错误处理

    免费下载 下载该文档 文档格式:PPT   更新时间:2007-12-07   下载次数:0   点击次数:1
    文档基本属性
    文档语言:
    文档格式:ppt
    文档作者:李林娜
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    第8章 符号表与错误处理
    第8章 符号表与错误处理
    8.1 符号表
    8.2 错误处理
    8.1 符 号 表
    8.1.1 符号表的作用
    在编译程序工作的过程中,需要不断收集,记录,查证和使用源程序中的一些语法符号(简称为符号)的类型和特征等相关信息.为方便起见,一般的做法是让编译程序在其工作过程中建立并保存一批表格,如常数表,变量名表,数组内情向量表,过程或子程序名表及标号表等,将它们统称为符号表或名字表.
    符号表中的每一项包括两个部分:一部分填入名字(标识符);另一部分是与此名字有关的信息,这些信息将全面地反映各个语法符号的属性以及它们在编译过程中的特征,诸如名字的种属(常数,变量,数组,标号等),名字的类型(整型,实型,逻辑型,字符型等),特征(当前是定义性出现还是使用性出现等),给此名字分配的存储单元地址及与此名语义有关的其它信息等.
    根据编译程序工作阶段的不同划分,名字表中的各种信息将在编译程序工作过程中的适当时候填入.对于在词法分析阶段就建立符号表的编译程序,当扫描源程序识别出一个单词(名字)时,就以此名字查找符号表;若表中无此名的登记项,就将此名字填入符号表中;至于与此名相关的其它信息,可视工作方便分别在语法分析,语义分析及中间代码生成等阶段陆续填入.
    在语义分析时,符号表中的信息可以用于语义检查;在代码优化时,编译程序则利用符号表提供的信息选出恰当的代码进行优化;
    而目标代码生成时,编译程序将依据符号表中的符号名来分配目标地址.几乎在编译程序工作的全过程中,都需要对符号表进行频繁地访问(查表或填表),其耗费的时间在整个编译过程中占有很大的比例.因此,合理地组织符号表并相应选择好的查,填表方法是提高编译程序工作效率的有效办法.

    对于编译程序所用的符号表来说,它所涉及的基本操作大致可以归纳为五类:
    (1) 判断一个给定的名字是否在表中;
    (2) 在表中填入新的名字;
    (3) 对给定的名字访问它在表中的有关信息;
    (4) 对给定的名字填入或更新它在表中的某些信息;
    (5) 从表中删去一个或一组无用的项.
    8.1.2 符号表的组织
    _ 由于处理对象的作用和作用域可以有多种,所以符号表也有多种组织方式.按照处理对象的特点,符号表的组织方式一般可分为直接方式和间接方式.
    直接方式是指在符号表中直接填入源程序中定义的标识符及相关信息(如图8-1所示).在图8–1所示的符号表中,Name(名字)栏的长度是固定的,这种栏目长度固定的表格易于组织,填写或查找,因而是最简单的一种符号表组织方式,它适合于规定标识符长度的程序语言.
    图8-1 直接组织方式的符号表
    然而,并不是所有高级语言都规定标识符的长度,如果对标识符长度不加限制,则上述定长方式必须按最大长度来定长,这显然浪费存储空间.因此,对不定长标识符一般采用间接方式来组织符号表.
    间接方式是指单独设置一个字符串数组来存放所有的标识符,并在符号表的名字栏中设置两项内容:一是指针,用来指向标识符在数组中的起始位置;二是一整数值,用来表示该标识符的长度.图8–2给出了符号表的间接组织方式.
    图8-2 间接组织方式的符号表
    另一种组织方式是按标识符的种属,如简单变量,数组,过程等分别建立不同的符号表,如简单变量名表,数组名表,过程名表等.例如,下面的函数:
    int f(int a,int b)
    {
    int c;
    if(a>b) c=1;
    else c=0;
    return c;
    }
    图8-3 按标识符种属组织的各种符号表
    (a) 简单变量名表;(b) 常数表;(c) 函数入口名表
    经编译前期处理后产生的主要表项有简单变量名表,常数表,函数入口名表等.
    根据符号表名字栏的组织特点,符号表信息栏的组织方式也分为两类:固定信息内容和仅记录信息存放地址.
    如果名字栏中的标识符按种属分类,则因同类标识符其基本特征一致,故可将这些信息一一记录在信息栏中.
    如果符号表的名字不分种属,则由于不同种属的标识符其特征不一致,也即它们所需存储的信息不一致,因而不容易确定一个固定长度的空间来统一安排.这时,可在符号表外另设一组存储空间,并在符号表信息栏中放一指针来指向这个存储空间始址.

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PPT格式下载
  • 您可能感兴趣的
  • sxe注入错误  sxe12.1注入错误  sxe注入失败  sxe注入  sxe12.0启动错误  sxe错误  sxe启动错误  sxe启动错误解决方法  sxe12.1应用程序错误