自己写的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 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
没代码,说实话,对这种东西提不起兴趣来,还不如改GCC呢,真实想法。
目前还没能力理解,还是支持一下,这么做也不容易
感觉WIN还是要和LINUX分开最好