1、第四章 符号表 var a:array1.10of integer; 名字、类型、维数、上下界、 下标类型、数据区首地址等 Procedure search(a:char); 名字、形参、局部变量、过程/ 函数入口地址等 eg. const pi=3.1415926 6 二、符号表的内容(续二) 一个单词一个属性值: 1)常量的属性值为常量本身或者存放常 量的单元地址,也即指向存放常量有关 信息的常量表的入口指针。 2)标识符的属性值为标识符本身或者标 识符表的地址,也即存放标识符有关信 息的符号表的入口指针 7 二、符号表的内容(续三) 符号表的内容 符号的名字 符号的类型 地址码 数组的维
2、数、下标 过程/函数参数 . 8 三、存储分配 begin sum:=sum+I; end; 10 4形参的分配。 eg. Procedure sum1(var sum:integer,I:integer); begin sum:=sum+I; end; 原则: 1、如果形参是按值调用,则分配一个单元存放实参的值 2、如果形参是按名调用,则分配一个单元存放实参的地址 。 三、存储分配 procedure xxx( I:integer) begin end; begin sum:=0; for I:=1 to 100 do sum:=sum+I; end. 12 四、标识符的处理 标识符的出现
3、定义性出现 应用性出现 填表 查表 13 五、符号表的结构和存取 符号表结构: 无序符号表 有序符号表 树结构符号表 栈符号表 hash表 14 六、词法分析 任务: 词法分析阶段: 扫描源程序的ASCII码序列,拼出每一个单词,并把每个 单词的ASCII码序列替换为所谓的机内表示TOKEN形 式(属性字),这时还检查词法错误。 扫描源程序识别单词转换成属性字 15 六、词法分析(续一) 词法分析的两种处理结构 源程序词法分析L1程序 字符单词 符号表 源程序词法分析语法分析 单词 符号表 字符 回送单词 16 1、单词的种类 单词由字符组成。 :=| :=a|b|c|.z|A| B|C|.|Z :=0|1|2|3|.|9 :=+|-|*|/|:=|=8 error Y Y N N Tempword= ; N Y 注:tempword是临时的字符串 22