bjfu编译原理整理,仅供参考
编译原理章节整理2
第五章
语义分析的任务
•程序中容易出现各种语义错误:
–标识符未声明 y = x+3;
–操作数的类型与操作符的类型不匹配 y = x*3;
–数组下标变量的类型出错 A[x];
属性文法、语法制导翻译的含义
自底向上和自顶向下语法制导翻译的区别
自底向上:在产生式规约的同时调用相应的语义子程序
自顶向下:将语义子程序嵌入到每个递归过程中
生成中间代码的目的,中间代码的几种形式(后缀式、四元式、三元式、间接三元式、AST、DAG )
具体见PPT,第五章39张开始
掌握PL/0编译程序的语义分析方法
第六章
编译程序在其工作过程中使用最多的数据结构是表,在这些表中,符号表最为重要,它的生存期最长、使用最频繁。
掌握符号表的作用、内容、组织(多采用散列法)
明确错误处理的两种方法:错误校正和局部化处理
掌握PL/0编译程序符号表的填写和查找方法
具体看PPT第六章
第七章
静态存储分配(Fortran)和动态(栈和堆)存储分配(C、Pascal)的含义,能够以C/C++、JAVA语言为例详细阐述
详细阐述PPT上三C++和Java都可以找到详细描述
活动记录的含义及组成
掌握PL/0的存储分配策略(三个联系单元SL、DL、RA的含义)
第八章
明确代码优化的目的和分类
掌握基本块内的三种优化方法:合并常量、删除公共子表达式和删除无用赋值
掌握循环优化的三种优化方法:代码外提、强度削弱和删除归纳变量
第九章
实现一个代码生成器,重点应该考虑两个问题
① 如何使生成的目标代码尽可能的短
② 如何充分利用计算机的寄存器,减少目标代码中访问内存的次数
要求明确目标代码的三种不同形式的优缺点
① 可立即执行的机器语言代码
② 待装配的机器语言代码,又称相对目标代码
③ 汇编语言代码
略,8张PPT