编译原理第五章-Read.ppt

编译原理第五章-Read.ppt

第五章:符号表的组织和管理;5.1 符号表的作用 ;例 C语言的变量声明 short int a; float b = 0.0; 把标识符a声明为短整数型,把b声明为浮点类型,而且初始化为0。那么,编译程序对每个变量要记录它的类型,以便执行类型检查和分配存储,比如短整型变量i占2个字节;要记录它在存储器中的位置(相对位移或绝对地址),以便目标程序运行时访问;若像b有初始值,则还需要记录这个初始值。 ;(2) 查找符号的属性 符号表存放了源程序中的各种类型的信息,比如数值、变量类型、参数传递的地址等,在分析和翻译源程序的过程中会被不断地查询。 例如,对于上述的变量声明,如果源程序有代码 a + b时,就需要查找、计算表达式中运算数的类型和值,以便计算出表达式。 又如,在源程序中如果出现了函数调用factory (6),编译程序就需要查找到factory的声明,找到实参6的地址并传给形参n??执行函数factory的体,并返回值等。;(2)检查符号的合法性 例如,对于上述声明,代码 a = a + b,C语言的编译将检查变量a和b的类型,把表达式a + b的结果转换成短整型,仅取整数部分进行赋值。 在其它强类型语言,如Pascal和Ada,表达式运算数的类型必须一致,不能进行隐式类型转换,对于这样的表达式a + b,编译程序在语义分析的过程中将发现并报告类型错误的信息。 又如,面向

文档评论(0)

1亿VIP精品文档

相关文档