初学编译原理       

##初学编译原理

###编译&链接 编译单个文件至目标文件,目标文件中还有变量和函数的符号表
链接器根据符号表来链接整个工程 ###鸡和鸡蛋

旧编译器编译新的编译程序至新编译器,意味着用旧编译器所能翻译的语言编写新的编译程序以翻译扩展的或者新的语言.例如我们用C语言写出C++编译器程序,该程序由C语言编译器编译成C++的编译器.(这里只是打个比方,不知道C++的编译器是不是用C写的)

最早的编译器当然是由低级语言所编写.

###词法分析

  1. 扫描器
  2. 把字符串源程序转成符号串源程序,对各类符号进行分类

###语法分析

  1. 语法检查
  2. 输出语法树
  3. 短语就是树或者子树的叶子。简单短语就是只有叶子的子树的叶子。最左边的直接短语就是句柄
  4. 自顶向下、自底向上

####自顶向下

  1. 向下递归
  2. 采用栈数据结构LL(1),根据follow和first集合构造分析表
    ####自底向上

###语法制导翻译技术

  1. 翻译文法就是在原有的输入文法基础上,在规则右部适当位置加入动作符号
  2. 输出动作序列即为语法制导翻译

###符号表管理 ###语义分析
检查语法正确的语句语义是否正确,并分析意图生成中间代码。
###中间代码生成
根据语义分析,生成中间代码(波兰后缀表示、N-元表示、抽象机代码) ###中间代码优化

以上是编译器的前端,下面则是编译器的后端过程
###目标代码生成 ###目标代码优化