基于简化版C0文法的C0编译器
可利用visual studio,vscode,Clion等工具打开直接编译运行,此前请注意3rd_party下的依赖库是否正确安装。
本编译器包括的功能有:所有的基础功能(具体可见指导书),选择的扩展有:注释、字面量、循环跳转语句、switch。
使用的文法可见“基础+部分扩展C0文法.md”
更多的文法以及语义介绍请见指导书
此外要说明的是目前在switch和for循环的实现上有些小错误,其他涉及的部分已经经过验证是正确的。
文件结构介绍:
核心部分:
3rd_party:外部库,其中argparse为命令行处理,catch2位异常处理,fmt为输出处理
analyser:语法制导翻译,语法分析、语义分析、中间代码生成均在此处完成
error:错误处理部分,错误的定义
instruction:指令定义部分,格式和指导书中虚拟机部分所匹配
tokenizer:词法分析部分
main.cpp:核心函数调用部分,包括命令行的处理,文件的相关处理
其余部分:
sample:测试例子
tests:基于测试框架的测试文件
除此之外所有内容均为为了将.s文件转化为.o文件而添加的,具体功能还未深入研究