符号表组织符号表组织语义分析之一.pptVIP

  • 5
  • 0
  • 约1.08万字
  • 约 36页
  • 2019-02-15 发布于天津
  • 举报

符号表组织符号表组织语义分析之一.ppt

符号表组织符号表组织语义分析之一

第 6 章 符号表组织 6.1 符号表的地位和功能 符号表是标识符的动态语义词典,属于编译中语义分析的知识库;主要内容: 6.2 符号表的组织与管理 6.3 符号表的结构设计 【例6.1】有下列函数过程: ※ 符号表的体系结构设计 由于标识符的种类不同,导致语义属性也不尽相同;怎样组织符号表?下面提供一个符号表的体系结构: 6.3.1 符号表总表(SYNBL) 6.3.2 类型表(TAPEL) 6.3.3 数组表(AINFL) 6.3.4 结构表(RINFL) 6.3.5 函数表(PFINFL) 6.3.6 其他表(…) 6.4 符号表的构造过程示例: ※ 习题: 【习题6.1】解释下述词语: ⑴ 符号表 ; ⑵ 标识符的语义信息; ⑶ 符号表的功能;(4)c语言符号表的管理方式。 第5章 习题解答【习题5.10】 : 第5章 习题解答【习题5.10】 : 第5章 习题解答【习题5.11】 : 第5章 习题解答【习题5.11】 : ※ 一个函数过程的符号表组织 【习题6.2】设有程序片断如下,试填写符号表: float exe(x,y) int x, y[5][10]; { float a; int b[5][10]; … b[2,5]=15; … } ※ 如何确定下表变量 b[2][5]的地址? Z-S1 (0) S-a2A3(1)|b4B5 (2) A-06A7 (3)|18 (4) B-09B10(5)|111 (6) 【习题5.10】 P100_4.10 考虑文法:G(S) S-aA|bB ; A-0A|1 ; B-0B|1 ⑴ 构造活前缀的DFA(即句柄识别器) 【解】 ※扩展文法,编码: ① ② ③ ⑥ ⑦ ⑧ ⑨ ⑩ 0 + S a A 0 OK r(1) r(3) r(4) r(2) b A 1 B 0 ④ 0 B r(5) r(6) 11 1 0 1 1 ※活前缀的DFA(即句柄识别器): ∵ 句柄识别器(DFA)中无冲突状态! ∴ G(S)是LR(0)文法! ⑵ 是LR(0)文法吗? ⑤ B10 111 09 9 r(5) r(5) r(5) r(6) r(5) 10 S1 S A7 A3 A OK 1 r(2) r(2) r(2) r(2) r(2) 5 b4 a2 0 B5 111 09 4 r(4) r(4) r(4) r(4) r(4) 8 r(6) r(3) 18 r(1) 18 1 r(6) r(3) r(1) # 06 6 r(3) r(3) r(3) 7 r(6) r(6) r(6) 11 r(1) r(1) r(1) 3 2 B 0 b a 06 ⑶ G(S)的 LR(0)分析表: Z-S1 (0) S-r2D3 (1) D-D3,4i5 (2)|i6 (3) 【习题5.11】 P100_4.9 设有文法 G(S): S-rD ; D-D,i|i 【解】 ⑴ 构造活前缀的DFA(即句柄识别器) ※扩展文法,编码: 0 + S r D OK r(1) r(2) r(3) , i i ② ③ ④ ⑤ ⑥ ① # ∵ 在状态③处出现(移进、归约)冲突! ∴ G(S)不是LR(0)文法! ⑵ ∵ follow(S)={#},可以解决冲突: 即 若 当前单词为“ ,”, 则 移进 ,4 当前单词为“ # ”, 则 归约 r(1) ∴ G(S)是 SLR(1)文法!! D3 D S1 S r(3) r(2) r(1) ok # i , r r2 0 1 i6 2 r(3) r(3) r(3) 6 r(2) r(2) r(2) 5 i5 4 ,4 3 ⑶ 文法G(S)的SLR(1)分析表: * * 内容提要: ---- 语义分析之一 6.1 符号表的地位和作用 6.2 符号表的组织与管理 6.3 符号表的结构设计 6.4 符号表的构造过程示例 6.5 运行时刻存储分配 ⑴ 名字 — 标识符源码,用作查询关键字; ⑵ 类型 -- 该标识符的数据类型及其相关信息; ⑶ 种类 -- 该标识符在源程序中的语义角色; ⑷ 地址 -- 与值单元相关的一些信息; ① 定义和重定义检查; ② 类型匹

文档评论(0)

1亿VIP精品文档

相关文档