All Projects → bajdcc → CParser

bajdcc / CParser

Licence: GPL-2.0 license
解析C语言的解释器

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

CParser

**本项目是CMiniLang**的VS编译版本。

自己做的toys,纯属娱乐 :)

本项目中的Lexer由我自己编写,参考了CEval中的部分代码。Parser和VM暂时是使用write-a-C-interpreter项目中的代码,自举文件xc.txt也是。

后期:Parser自己实现生成AST,VM改善指令与VMM兼容,xc.txt中尽量实现AST。

主要功能

  1. 解析C文件
  2. 生成语法树
  3. 构造指令集
  4. 建立虚拟机

进度

  1. Lexer(LL手写识别,比regex库高效)
    1. 识别数字(科学计数+十六进制)
    2. 识别变量名
    3. 识别空白字符
    4. 识别字符(支持所有转义)
    5. 识别字符串(支持所有转义)
    6. 识别注释
    7. 识别关键字
    8. 识别操作符
    9. 错误处理(快速失败)
  2. Parser
    1. 识别函数
    2. 识别枚举
    3. 识别表达式
    4. 识别基本结构
  3. 虚拟机
    1. 实现虚页(已实现,分代码段,数据段,栈,堆)
    2. 实现MALLOC(已实现,参考CLib::memory.h

截图

词法分析

解释器

运行

参考

  1. write-a-C-interpreter
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].