# 说明
北航计算机学院本科《编译原理》实验课的大作业。要求是用 C 语言或 C++ 实现一个编译器,能编译给定语法的语言(简化版的 Pascal 或 C,这两个一年一换,到我这年正好是类 Pascal 语言)。
难度分为三个等级:最低难度:生成的目标代码是某种中间语言,同时要实现一个关于这种目标语言的解释器,使其能运行;中等难度:生成的目标语言是 MIPS 或 x86 汇编,能直接在汇编器上跑,不需要编译优化;最高难度:生成的目标语言是 MIPS 或 x86 汇编,能直接在汇编器上跑,需要做至少一种编译优化,越多越好。
作业是迭代式的,一次添加一个模块。所以在实现时要考虑后续的扩展。同时,作业的安排也很合理,文档写了很多,很锻炼工程素质。
老师让提交的代码是以 VS 2013 工程的形式打包提交的,这里我把工程文件全部去掉,只上传源代码以及老师让提交的文档等,方便大家学习。
这个作业是在大三时做的,我直接选了最高难度来做。
抱着学习的心态,我选择了用 C++ 来作为我的编程语言,因为之前只是旁听过 C++ 的课,没有真正用 C++ 写过程序,想借此机会学习 C++。选择了目标语言为 x86 汇编,因为之前没接触过 x86 汇编,做计算机组成原理实验时,只学了 MIPS 汇编。
一点遗憾,目标代码生成 Debug 时间太长,导致没有时间写编译优化了,最终只实现了临时寄存器池。
我的很多未实现的思考,以及容易踩到坑的地方,写在了申优文档 "08_最终结果\文档\编译课设申优文档.docx" 里,供后人学习。
欢迎大家批评与交流。
没有合适的资源?快使用搜索试试~ 我知道了~
北航计算机学院本科《编译原理》的大作业 源语言为PASCAL语言,目标语言为x86汇编,编译器用C++语言实现+源代码+设计文档
共106个文件
cpp:37个
h:37个
txt:20个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 69 浏览量
2024-01-07
19:13:53
上传
评论
收藏 1.24MB ZIP 举报
温馨提示
北航计算机学院本科《编译原理》的大作业。源语言为PASCAL语言,目标语言为x86汇编,编译器用C++语言实现+源代码+设计文档 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
北航计算机学院本科《编译原理》的大作业 源语言为PASCAL语言,目标语言为x86汇编,编译器用C++语言实现+源代码+设计文档 (106个子文件)
assemble.asm 13KB
编译结果.asm 13KB
GrammarAnalyzer.cpp 45KB
GrammarAnalyzer.cpp 45KB
GrammarAnalyzer.cpp 43KB
GrammarAnalyzer.cpp 31KB
TargetCodeGenerator.cpp 18KB
TargetCodeGenerator.cpp 18KB
SemanticAnalyzer.cpp 16KB
SemanticAnalyzer.cpp 16KB
SemanticAnalyzer.cpp 15KB
LexicalAnalyzer.cpp 9KB
LexicalAnalyzer.cpp 9KB
LexicalAnalyzer.cpp 9KB
LexicalAnalyzer.cpp 9KB
LexicalAnalyzer.cpp 9KB
SymbolTableManager.cpp 6KB
SymbolTableManager.cpp 6KB
ErrorHandler.cpp 6KB
ErrorHandler.cpp 6KB
ErrorHandler.cpp 5KB
RegisterPool.cpp 5KB
RegisterPool.cpp 5KB
GrammarAnalyzer.cpp 5KB
SymbolTableManager.cpp 4KB
main.cpp 4KB
main.cpp 4KB
main.cpp 4KB
Quadruples.cpp 3KB
Quadruples.cpp 3KB
Quadruples.cpp 3KB
StackManager.cpp 2KB
StackManager.cpp 2KB
main.cpp 1KB
main.cpp 1KB
test.cpp 575B
test.cpp 575B
ErrorHandler.cpp 148B
SymbolTableManager.cpp 121B
源代码阅读.doc 134KB
编译课设文档.docx 604KB
设计文档.docx 341KB
编译课设申优文档.docx 226KB
文法解读.docx 42KB
词法分析结果.docx 26KB
测试结果说明.docx 16KB
type.h 9KB
type.h 9KB
type.h 9KB
SemanticAnalyzer.h 5KB
SemanticAnalyzer.h 5KB
SemanticAnalyzer.h 5KB
LexicalAnalyzer.h 4KB
type.h 4KB
x86_instruction.h 3KB
x86_instruction.h 3KB
GrammarAnalyzer.h 3KB
RegisterPool.h 3KB
RegisterPool.h 3KB
LexicalAnalyzer.h 3KB
TargetCodeGenerator.h 3KB
TargetCodeGenerator.h 3KB
LexicalAnalyzer.h 3KB
LexicalAnalyzer.h 3KB
LexicalAnalyzer.h 3KB
GrammarAnalyzer.h 3KB
GrammarAnalyzer.h 3KB
GrammarAnalyzer.h 2KB
SymbolTableManager.h 2KB
SymbolTableManager.h 2KB
Quadruples.h 2KB
Quadruples.h 2KB
StackManager.h 2KB
StackManager.h 2KB
SymbolTableManager.h 2KB
GrammarAnalyzer.h 2KB
ErrorHandler.h 1KB
ErrorHandler.h 1KB
ErrorHandler.h 1KB
Quadruples.h 1KB
SymbolTableManager.h 419B
TargetCodeGenerator.h 301B
ErrorHandler.h 191B
LICENSE 34KB
README.md 1KB
test.txt_result.txt 17KB
result.txt 12KB
test.txt 3KB
示例程序t.txt 3KB
test.txt 3KB
test.txt 3KB
测试程序.txt 3KB
test.txt 3KB
测试程序.txt 3KB
扩充PL_0文法.txt 3KB
示例程序运行结果.txt 2KB
目标代码运行结果.txt 2KB
README.txt 1KB
README.txt 688B
README.txt 500B
共 106 条
- 1
- 2
资源评论
机智的程序员zero
- 粉丝: 1553
- 资源: 4128
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功