【开源】司马编译器结构
来源:互联网 发布:linux系统能玩lol吗 编辑:程序博客网 时间:2024/06/11 22:07
编译器前段部分:源代码经过预处理模块处理之后,剔除了一些空格,跟注释,把源代码重新组织给了词法分析器,词法分析器处理后形成了记号流,记号(终结符、非终结符)被存放到了词法表中。语法分析器根据词法表中的终结符、非终结符开始语法分析。需要注意的是,在该体系结构中,词法分析器、语法分析器、语义分析器之间没有接口存在。这样做是有好处的,例如当改动语法分析器的时候,影响不到词法分析器,反之亦然,提高了维护性。
驱动整个编译前端的是词法表,产生式的所有元素都存在这里面。对符号表的引用是在语义分析阶段开始的,该结构使得各个阶段的模块关系都比较简单,虽然这样会降低在时间上的性能,因为把语义分析让语法分析器完成是可行的,但这会降低维护性能。
处理模块处理之后,剔除了一些空格,跟注释,把源代码重新组织给了词法分析器,词法分析器处理后形成了记号流,记号(终结符、非终结符)被存放到了词法表中。语法分析器根据词法表中的终结符、非终结符开始语法分析。需要注意的是,在该体系结构中,词法分析器、语法分析器、语义分析器之间没有接口存在。这样做是有好处的,例如当改动语法分析器的时候,影响不到词法分析器,反之亦然,提高了维护性。
编译器后端部分:一个可移植性高的编译器它的后端必须尽可能的跟“具体语言”无关。“中间代码生成”从符号表、二叉树、词法表中获得“表达式”“控制结构”后将其翻译为三地址码。优化器把“三地址码表”中的代码优化之后又存入到了三地址码中,三地址码跟汇编码有很直接的对应模式,所以从三地址码到汇编码的转换并不会很麻烦,存储空间分配也是在这个“时刻”进行的,最终汇编代码会被存入“汇编码表”。“机器码生成”模块把“汇编码表”中的代码一对一映射到了二进制的机器码,这一步最简单。
司马编译器:
开发:
项目地址:
http://gforge.osdn.net.cn/projects/unixtok/
- 【开源】司马编译器结构
- 【开源】司马编译器 Smart Compiler
- 【开源】司马编译器 Smart Compiler 符号表
- 【司马编译器】“命名空间”分析
- 司马氏
- Saipan编译器结构
- 编译器结构层次猜想
- 编译器基本结构
- 编译器的结构
- 编译器优化填充结构体
- 编译器的结构(2)
- FW:司马他
- 司马迁与《史记》
- 闻乐天授江州司马
- 编译器编译之后的目标文件结构
- hive源码结构分析(编译器)
- 编译器对switch case结构的优化
- hive源码结构分析(编译器)
- hei ]
- 手把手教你捕获数据包
- DRTM/SRTM
- c语言良好的程序设计习惯(4)
- kosaraju+缩点
- 【开源】司马编译器结构
- 再找不到工作,我就跳楼
- Swing(1) - architecture
- 工作=生活=游戏
- [收藏]Strtok详解
- POJ 1236 Network of Schools
- 神秘欢喜佛:男女双修的西藏密宗法门
- 视频时代的反思
- 基于MyEclipse6.5的SSH整合