编译原理--概论

编译器:源程序-->目标程序,离线offline

解释器:处理程序的一种程序, 输出的是结果,在线online(把结果打印出来了)

编译原理集中体现了计算机科学的很多核心思想:算法,数据结构,软件工程

编译器本身就是很重要的研究领域。

编译器也可以把功能分为前端,后端。前端可以分为词法分析,语法分析。后端指令生成的部分,指令优化的部分。

汇编代码--->汇编器-->连接器 

 


 

词法分析 主要作用

  • 字符流--词法分析切分为->记号流
  • C语言,字符流所在的集合是ASCII  JAVA的话是UNICODE
  • 记号流:编译器内部定义的数据结构。

手工实现方式 :纯手工写代码,相对来说比较复杂,容易出错,目前流行的实现方法是GCC 4.0之后  , LLVM  优点:有一个精确的控制

  • 转移图,转移图算法
  • 标识符的转移图,关键字是标识符的一部分。
  • 关键字表,构造关键字构成的哈希表H

自动生成器方式 : 快速原型、代码量较少  缺点:较难控制细节


 

语法分析器

记号流--语法分析器->抽象语法树--->语义分析器-->中间代码

 

posted @ 2016-03-05 19:38  dwadwaDDDWDAWD  阅读(194)  评论(0编辑  收藏  举报