- 重构
Parser部分:一步生成ast - 重构
LLVM IR生成部分:重新定义类型,不再以LLVMSharp提供的类型作为支持 - ...
这是一个使用 c# 实现的关于 c minus (简称 c-)的简单编译器,它将 c- 代码翻译为 llvm ir ,最后由 LLVM 将 LLVM IR 翻译为目标代码。
该项目目前只支持 linux ,不支持 windows 。
确保 dotnet 版本至少为 8.0.100 。
c minus 是 c 的一个子集语言。
有关 c minus ,可以查看文件 c-minus.pdf
源代码 => 词法分析器 => 语法分析器 => 中间代码生成 => 目标代码生成
词法分析器 Lexer 实现比较简单,使用一个 DFA 进行状态转移。
语法分析器使用递归下降语法分析构造出具体的语法树,之后从构造出的分析树构造出精简的语法分析树。
中间代码生成与语义分析一起,这部分将生成 LLVM IR。
生成的 LLVM IR 将通过 LLVM 生成目标代码。