- 5
- 0
- 约1.32万字
- 约 41页
- 2017-05-29 发布于北京
- 举报
第四章 语法制导翻译生成中间代码 4.1 语法制导翻译简介4.1.1 语法与语义 4.1.1 语法与语义(续1) 4.1.2 属性与语义规则 4.1.2 属性与语义规则(续1) 4.1.2 属性与语义规则(续2) 4.1.3 语义规则的两种形式 4.1.3 语义规则的两种形式(续1) 4.1.3 语义规则的两种形式(续2) 4.1.3 语义规则的两种形式(续3) 4.1.4 LR分析翻译方案的设计 4.1.4 LR分析翻译方案的设计(续1) 4.1.5 递归下降分析翻译方案的设计 4.2. 中间代码简介 4.2.1 后缀式 3 后缀式计算 4.2.1 后缀式(续1) 4 将后缀式推广到其他语句 4.2.1 后缀式(续2) 4.2.2 三地址码 2 三地址码的种类 3 三地址码的实现:三元式与四元式 ② 三元式的语法制导翻译 3 三地址码的实现(续1) 例4.6 生成x:=a+b*c的三元式(LR分析) 3 三地址码的实现(续2) ③ 四元式 3 三地址码的实现(续2) ④ 四元式的语法制导翻译 3 三地址码的实现(续2) 4.2.3 图形表示 2 树的语法制导翻译 3 树的优化表示-DAG 4 树与其他中间代码的关系 4.3 符号表简介 4.3.1 符号表条目 4.3.2构成名字的字符串的存储 4.3.3 名字的作用域 4.3.3 名字的作用域(续1) 4.3.3 名字的作用域(续2) 4.3.4 线性表 4.3.4 线性表(续1) 4.3.5 散列表 2 散列表上的操作 4.3.5 散列表(续1) 4.3.5 散列表(续2) 3 散列函数的计算 hash: string→ integer 3 散列函数的计算(续1) 程序设计语言的名字可以出现在不同的范围内,并且可以具有不同的意义。 两种划分范围的方式:并列的和嵌套的。 不同的语言采用不同的方式:如Pascal的过程定义可以是嵌套的,而C的过程定义是并列的,但是C允许程序块是嵌套的。 名字的作用域:名字在哪个范围内起作用。并列的两个范围内的名字作用域互不相干,但是分别在嵌套的两个范围内的名字,其作用域的问题就需要制定规则来限定,以使得任何一个名字在任何范围内涵义都是无二义的。 名字的作用域规则:规定一个名字在什么样的范围内应该表示什么意义。 1 静态作用域原则(static-scope rule): 编译时就可以确定名字的作用域,也可以说,仅从静态读程序就可确定名字的作用域。 2 最近嵌套原则(most closely nested): 以程序块为例,也适用于过程。 ① 程序块B中声明的作用域包括B; ② 如果名字x不在B中声明,那么B中x的出现是在外围程序块B的x声明的作用域中,使得 (a) B有x的声明,并且 (b) B比其它任何含x声明的程序块更接近被嵌套的B。 通俗地讲,名字的声明在离其最近的内层起作用,即在名字引用处从内向外看, 它处在所遇到的第一个该名字声明的作用域。 例子:找人 张三;软件学院的张三;计算机学院的张三;西电软件学院的张三 例4.10 说明符合作用域规则的C++程序。 void main() { int a=0, b=0; /* B0层 */ { int b=1; /* B1层,被B0嵌套 */ { int a=2, c=4, d=5; /* B2层,被B1嵌套 */ printf(%d %d\n, a, b); /* 结果为:2,1 */ } { int b=3; /* B3层,与B2并列 */ printf(%d %d\n, a, b); /* 结果为:0,3 */ } printf(%d %d\n, a, b); /* 结果为:0,1 */ } printf(%d %d\n, a, b); /* 结果为:0,0 */ } 声明与作用域: 声 明 作用域 int a=0 B0-B2 int b=0 B0-B1 int b=1 B1-B3 int a=
您可能关注的文档
- 第十五讲里甲、老人、里社:明初的乡村统治.ppt
- 第十八周公式和邮件合并.ppt
- 第十六章 性格.ppt
- 第十六章量子物理基础3-1.ppt
- 第十六课 石榴.ppt
- 第十四章 动画 中央财经大学 张苏.ppt
- 第十四章产品市场与货币市场的均衡.ppt
- 第十四章理论力学.ppt
- 第十四章糖类.ppt
- 第十四讲 八年级(下) Units 7~8.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)