自己写的C/C++编译器Doctors[软件+文档]

发布于 2022-09-18 02:17:23 字数 5499 浏览 9 评论 0

查看全文: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 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伴随着你 2022-09-25 02:17:23

没代码,说实话,对这种东西提不起兴趣来,还不如改GCC呢,真实想法。

凡间太子 2022-09-25 02:17:23

目前还没能力理解,还是支持一下,这么做也不容易

悟红尘 2022-09-25 02:17:23

感觉WIN还是要和LINUX分开最好

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文