Skip to content

StarryCode-Lang/SNL_Compiler_python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SNL_Compiler_python

项目简介

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 及以上
  • 无需额外第三方库,全部为标准库实现

使用方法

  1. 编译 SNL 源代码为 MIPS 汇编

    在命令行中运行:

    python TargetCode/codegenerator.py <输入SNL源文件> [输出汇编文件]

    例如:

    python TargetCode/codegenerator.py SNL_code_TEST/bubble.txt output.asm

    若未指定输出文件,默认生成 output.asm

  2. 词法分析单独运行

    python Lexer/scanner.py

    默认会分析 SNL_code_TEST/bubble.txt,结果输出到 Lexer/bubble-Lexer.txt

  3. 语法分析与AST可视化

    python Parser/LL1.py

    需根据代码适当修改输入文件路径。

示例

  • SNL_code_TEST/bubble.txt:冒泡排序SNL示例程序
  • output.asm:对应生成的MIPS汇编代码
  • 可在 Mars 或 SPIM 等 MIPS 模拟器中加载 output.asm 进行测试。

参考项目

https://github.com/badmonkey7/SNL_Compiler

About

SNL_Compiler_python 是一个用 Python 实现的 SNL 语言编译器,支持词法、语法、语义分析及生成 MIPS 汇编代码,适用于编译原理学习与实验。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors