SNL_Compiler_python 是一个用 Python 实现的 SNL(Simple Nested Language)编译器,支持将 SNL 语言源代码编译为 MIPS 汇编代码。项目包含词法分析、语法分析、语义分析和目标代码生成等完整编译流程,适合编译原理课程学习和相关实验。
Analyzer/ # 语义分析相关模块
Lexer/ # 词法分析相关模块
Parser/ # 语法分析与抽象语法树(AST)模块
TargetCode/ # 目标代码生成(MIPS汇编)模块
SNL_code_TEST/ # SNL 测试用例与中间结果
examples/ # 示例SNL代码
output.asm # 编译生成的MIPS汇编代码示例
- SNL 语言的词法分析、语法分析、语义分析
- 抽象语法树(AST)构建与可视化
- 语义检查与符号表管理
- 生成 MIPS 汇编代码,可在 MIPS 模拟器(如 SPIM、Mars)中运行
- Python 3.6 及以上
- 无需额外第三方库,全部为标准库实现
-
编译 SNL 源代码为 MIPS 汇编
在命令行中运行:
python TargetCode/codegenerator.py <输入SNL源文件> [输出汇编文件]
例如:
python TargetCode/codegenerator.py SNL_code_TEST/bubble.txt output.asm
若未指定输出文件,默认生成
output.asm。 -
词法分析单独运行
python Lexer/scanner.py
默认会分析
SNL_code_TEST/bubble.txt,结果输出到Lexer/bubble-Lexer.txt。 -
语法分析与AST可视化
python Parser/LL1.py
需根据代码适当修改输入文件路径。
SNL_code_TEST/bubble.txt:冒泡排序SNL示例程序output.asm:对应生成的MIPS汇编代码- 可在 Mars 或 SPIM 等 MIPS 模拟器中加载
output.asm进行测试。