Chinaunix

标题: 自己写的C/C++编译器Doctors[软件+文档] [打印本页]

作者: relipmoc    时间: 2009-08-20 02:31
标题: 自己写的C/C++编译器Doctors[软件+文档]
查看全文:http://blog.csdn.net/huyansoft
更新版本1.0.1:该版本解决了之前1.0.0版本中找不到链接库libc.lib的问题,以及IDE下点击Project菜单出现的BUG。
另一处下载地址:http://download.csdn.net/source/1597132
压缩包内含软件、实现文档和使用说明

简介:
Doctors是标准C++语言子集的编译器,它可以将C++源程序编译链接成Win32平台上可执行的EXE文
件。代码采用OOP语言完全手写而成,提供了IDE界面和命令行二种使用方式,其设计初衷是为程序提供更多的诊断功能。

文档内容摘要:

目录
第一节 初衷和目标
        一 排错工具
        二 多线程
        三 Unicode

第二节 开发方法
        一 为什么不用Yacc和Lex
        (一)Yacc的缺点
                1库
                2编程方法和多线程
                3错误诊断
                4二义性和错误恢复
        (二)Lex的缺点
                1状态冗余
                2紧耦合
                3行号
                4效率
        (三)小结
        二 OOP的优缺点
        (一)算法由数据结构表达
        (二)核心多态
        (三)编码反馈出设计的优劣

第三节 整体结构和流程
        一 整体结构
        二 整体流程
        三 编译流程

第四节 词法分析器
        一 记号
        (一)记号的类别
        (二)支持的C++记号
        二 词法分析过程

第五节 数据类型
        一 基本类型
        二 数组类型

第六节 符号表
        一 前端符号表
        (一)构造与析构
        (二)前端符号表的作用
                1查找名字的定义
                2存储预分配
        二 后端符号表
        (一)常量表
        (二)变量表
                1全局变量
                2静态变量
                3外部变量
        (三)字符串表

第七节 语法分析器
        一 支持的语法
        二 调整语法
        (一)从产生式到BNF
        (二)消除二义性
        三 抽象语法树的设计
        (一)函数的AST结点
        (二)语句的AST结点
        (三)表达式的AST结点
        四 语法分析过程
        五 语义分析
        六 错误恢复
        (一)错误的应对
                1词法错误
                2语义错误
                3语法错误
        (二)错误恢复机制
                1继续分析
                (1)假设、虚构
                (2)忽略、推迟
                (3)跳跃
                (4)调整文法
                2防止误报

第八节 中间代码的设计
        一 中间代码的结构
        二 中间代码具体格式
        (一)赋值
                1一元赋值
                2二元赋值
                3函数调用
                4数组元素访问
        (二)标号
        (三)跳转
                1无条件跳转
                2条件跳转
                (1)布尔跳转
                (2)关系跳转

附录:参考资料

[ 本帖最后由 relipmoc 于 2009-8-22 23:30 编辑 ]

Doctors1.0.0.rar

391.4 KB, 下载次数: 75

Doctors1.0.1.rar

437.43 KB, 下载次数: 92


作者: prolj    时间: 2009-08-20 09:07
没代码,说实话,对这种东西提不起兴趣来,还不如改GCC呢,真实想法。
作者: harry_he    时间: 2009-08-25 13:00
目前还没能力理解,还是支持一下,这么做也不容易
作者: liubo1977    时间: 2009-08-28 17:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: aaaaa5aa    时间: 2009-08-29 09:08
感觉WIN还是要和LINUX分开最好




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2