# CMiniLang(可自举的C编译器)
在[CParser](https://github.com/bajdcc/CParser)的基础上,改进一些功能。
## 介绍
使用C++14,以及CMake使代码可以跨平台编译(因此舍弃VS)。
更改了CParser项目中的诸多bug。
代码参考[write-a-C-interpreter](https://github.com/lotabout/write-a-C-interpreter)。
本项目中的Lexer由我自己编写,参考了[CEval](https://github.com/bajdcc/CEval)中的部分代码。Parser和VM暂时是使用**write-a-C-interpreter**项目中的代码,自举文件**xc.txt**也是。
特性:
- 手动LL分析
- 生成抽象语法树(结点扁平化、POD,结点由**内存池**提供,无需考虑析构、引用计数、结点多态等问题,内存池由自己实现)
- 根据AST生成指令(带简单的静态类型分析)
- 虚拟机中的任意地址由VMM(软件实现虚页机制)提供转换,与物理内存隔离
- 虚拟机中的MALLOC指令由软件实现(用内存池)
后期:
- 改善虚拟机指令,使之与VMM兼容
- 改善自举代码
----
## 主要功能
1. 解析C文件(完成)
2. 生成抽象语法树(完成)
3. 生成指令(完成)
4. 建立虚拟机(待优化)
## 进度
1. 词法分析(LL手写识别,比regex库高效)
1. 识别数字(科学计数+十六进制)
2. 识别变量名
3. 识别空白字符
4. 识别字符(支持所有转义)
5. 识别字符串(支持所有转义)
6. 识别注释
7. 识别关键字
8. 识别操作符
9. 错误处理(快速失败)
2. 语法分析并生成AST
1. 识别函数
2. 识别枚举
3. 识别表达式
4. 识别基本结构
5. 生成AST(完成**AST打印功能**)
3. 语义分析并生成中间代码
1. 语义分析
2. 生成代码(针对多数AST,完成)
4. 虚拟机
1. 实现虚页(已实现,分代码段,数据段,栈,堆)
2. 实现MALLOC(已实现,参考[CLib::memory.h](https://github.com/bajdcc/learnstl/blob/master/code/02/memory.h))
3. 统一系统调用(计划中)
4. 构建标准库(常用数据结构,计划中)
## 使用
先用CMake进行编译,然后操作:`CMiniLang xc.txt xc.txt test.txt`,注意文件在code文件夹中。
## 截图
### 词法分析

### 解释器

## 参考
1. [write-a-C-interpreter](https://github.com/lotabout/write-a-C-interpreter)

Mmnnnbb123
- 粉丝: 782
最新资源
- 如何利用AI+数智应用技术实现科技管理工作的个性化与深层次价值创造?.docx
- 如何利用AI+数智应用科技管理服务解决科技管理工作中的具体难题?.docx
- 如何利用AI+数智应用破解技术转移机构服务能力不足的难题?.docx
- 如何利用AI+数智应用让技术转移机构的服务方式更便捷?.docx
- 如何利用AI+数智应用让科技管理工作效率与价值创造双提升?.docx
- 如何利用AI+数智应用实现技术转移服务的内容与价值升级?.docx
- 如何利用AI+数智应用在技术转移服务合作中提升效率?.docx
- 如何通过“高校科研管理创新”借助AI+数智应用实现高效管理与价值创造?.docx
- 如何通过AI+数智应用创新科技管理提升现有科技管理系统的价值?.docx
- 如何通过AI+数智应用工具提升科技管理效率与价值创造?.docx
- 如何通过AI+数智应用技术提升科技管理的协同效应?.docx
- 如何通过AI+数智应用科技创新提升科技管理的效率与价值?.docx
- 如何通过AI+数智应用科技创新与管理创新提升科技管理工作的效率和价值?.docx
- 如何通过AI+数智应用科技服务管理能力提升科技管理工作的效率?.docx
- 如何通过AI+数智应用科技管理服务提升科技管理系统的智能化水平?.docx
- 如何通过AI+数智应用科技管理解决方案提升科技管理工作效率?.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


