编译器---综述

作者: 拉丁吴 | 来源:发表于2015-09-17 20:42 被阅读157次

编译器,就是将编程语言通过 读入代码程序,识别单词(输出token),检查语法(输出抽象语法树),检查语义(输出中间表示),等价优化(输出中间表示),翻译成底层代码的一系列流水线分析过程,转换成可执行文件的一种程序。


实际上,编译器可以分为以下几个步骤:

1. 词法分析

  • 输入:语言程序代码
  • 动作:识别程序源码的单词,检查是否有非法词
  • 输出:一个记号流(每个记号包含一个源程序符号,以及相关的属性)

2. 语法分析

  • 输入:一个记号流
  • 动作:通过读入记号流,检查其是否符合规定的语法,若是,则将其转换成一个抽象语法树,否则报错
  • 输出:抽象语法树

3. 语义分析

  • 输入:抽象语法树
  • 动作:检查变量是否定义,表达式运算是否类型匹配,管理变量作用域,以及相关优化...
  • 输出:某种中间代码

4. 代码生成

  • 输入:中间代码
  • 动作:把中间代码翻译成目标机器上可执行的代码
  • 输出:可执行代码

实际上,在过去,往往语义分析完成后,可以直接生成可执行代码,但是如今的编程语言过于复杂,所以往往需要代码生成这个模块,来减小每一个部分的处理难度。对照上面编译器的分析过程,你会发现,每一个部分,输入和输出的数据结构都不太相同,所以,写编译器之前,需要一些数据结构的知识。

我写的编译器主要由java完成,但是词法分析部分使用python来完成的,主要是因为java的io接口一点都不简洁,所以决定用python完成主要的io过程。编译器用于编译 t语言(自己起了一个名字),但是由于某些原因,最终输出不是可执行代码,而是伪汇编代码,<操作指令,操作数1,操作数2,结果存放>

相关文章

  • 编译器---综述

    编译器,就是将编程语言通过 读入代码程序,识别单词(输出token),检查语法(输出抽象语法树),检查语义(输出中...

  • 文献综述之细则集

    1. 文献综述文献综述是写论文时经常用到的方法,可以迁移到很多地方。例如,竞品综述、客户需求综述、运营综述、...

  • 磨链(mochain)社区-3.31分享-加密数字货币解读

    群内分享 1.中国人民银行数字货币研究所所长姚前:区块链研究进展综述 2.安装Solidity编译器 3.区块链安...

  • 转发股评

    【综述】2019.8.19——好戏 原创: 张德良 德良综述 昨天 【综述】2019.8.19——好戏 张德良SA...

  • 文献综述——站在巨人的肩膀上

    站在巨人的肩膀上。 文献综述, 欢迎来到 论文文献综述课 一、文献综述的概念 ○ 文献综述是针对某一研究领域或专题...

  • 转发财经

    【综述】2019.4.15——平和 张德良 德良综述 今天 【综述】2019.4.15——平和 张德良SAC证书S...

  • 转发股评

    【综述】2019.5.22——锤炼 张德良 德良综述 昨天 【综述】2019.5.22——锤炼 张德良SAC证书S...

  • 简书第118篇——转发股评

    【综述】2019.3.12——简单 张德良 德良综述 今天 【综述】2019.3.12——简单 张德良SAC证书S...

  • 转发股评

    【综述】2019.6.5——制约 张德良 德良综述 今天 【综述】2019.6.5——制约 张德良SAC证书S09...

  • 简书第107篇——转发股评

    【综述】2019.3.6——如期 张德良 德良综述 今天 【综述】2019.3.6——如期 张德良SAC证书S09...

网友评论

    本文标题:编译器---综述

    本文链接:https://www.haomeiwen.com/subject/dwebcttx.html