项目简介
本项目致力于实现一个基于Mx语言的编译器,为Mx语言提供完整编译功能。该编译器涵盖词法分析、语法分析、语义分析、代码生成和代码优化等阶段。Mx*语言是一种融合C++和Java特性的编程语言,支持面向对象编程、函数定义、变量声明、表达式计算等功能。
项目的主要特性和功能
- 词法分析:把源代码拆分成关键字、标识符、常量、运算符等词汇单元。
- 语法分析:依据Mx*语言语法规则构建抽象语法树(AST),并开展语法检查。
- 语义分析:对AST进行语义检查,保证源代码语义正确,如类型检查、变量作用域检查。
- 代码生成:将AST转化为目标汇编代码(RISC-V 32bit, Integer Extended)。
- 代码优化:对生成的目标代码进行优化,提升执行效率。
- 支持的语法特性:包含变量声明和赋值、函数定义和调用、类定义和成员访问、条件语句(if - else)、循环语句(for, while)、表达式计算(算术、逻辑、位运算等)以及数组和字符串操作。
安装使用步骤
假设用户已经下载了本项目的源码文件。 1. 编译编译器:使用系统编译器编译编译器代码,生成可执行的编译器。 2. 编译目标代码:使用生成的编译器编译Mx语言源代码,生成目标汇编代码。 3. 执行目标代码*:使用RISC-V模拟器运行生成的目标汇编代码,验证编译结果的正确性。
示例
假设有一个Mx语言的源文件example.mx
,内容如下:
mx
int main() {
int a = 10;
int b = 20;
int sum = a + b;
printInt(sum);
return 0;
}
1. 编译源文件:
bash
./mx_compiler -fsyntax-only example.mx
此命令会对example.mx
进行语法分析,并生成目标汇编代码example.s
。
2. 执行目标代码*:
bash
riscv32-unknown-elf-gcc -o example example.s
spike pk example
该命令会使用RISC-V模拟器运行生成的目标代码,并输出结果。
通过以上步骤,即可成功编译并运行Mx*语言的源代码。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】