Skip to content

creating001/SNL-Compiler

Repository files navigation

SNL-Compiler

简介

SNL-Compiler 是一个简单的编译器,支持 SNL 语言的词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成。

编译器的各个模块包括:

  • 词法分析器:将源代码转换为Token序列。
  • 语法分析器:将Token序列转换为语法树。
  • 语义分析器:检查语法树的语义正确性并生成符号表。
  • 中间代码生成器:将语法树转换为中间代码。
  • 优化器:对中间代码进行优化。
  • 目标代码生成器:将中间代码转换为目标代码。

文件架构

SNL-Compiler
├── cmake-build-debug
├── input(测试文件)
│   ├── common
│   ├── complex
│   ├── error
│   ├── optimize
├── output(输出文件)
│   ├── 1-lexer.txt
│   ├── 2-parser.txt
│   ├── 3-analyzer.txt
│   ├── 4-interCode.txt
│   ├── 5-optimizer.txt
│   ├── 6-objectCode.txt
├── header(头文件)
│   ├── 0-util.h
│   ├── 1-lexer.h
│   ├── 2-parser.h
│   ├── 2-syntaxTree.h
│   ├── 3-analyzer.h
│   ├── 4-interCode.h
│   ├── 5-optimizer.h
│   ├── 6-objectCode.h
├── source(源文件)
│   ├── 0-util.cpp
│   ├── 1-lexer.cpp
│   ├── 2-parser.cpp
│   ├── 2-syntaxTree.cpp
│   ├── 3-analyzer.cpp
│   ├── 4-interCode.cpp
│   ├── 5-optimizer.cpp
│   ├── 6-objectCode.cpp
├── main.cpp
├── README.md
├── CMAKELists.txt
├── Mars for Compile 2022.jar(mips代码运行器)

运行环境

  • Windows
  • Clion 2024.3.5
  • Java 1.8+ (for Mars)

运行步骤

  1. clone 本项目
  2. 使用 Clion 打开项目
  3. 运行 main.cpp
  4. 输入 input 目录下的测试文件的相对路径(例如:input/complex/0-bubbleSort.txt)
  5. 查看 output 目录下的输出文件
  6. 在 Mars for Compile 2022.jar 中打开 output/6-objectCode.txt 文件,编译运行 mips 代码

About

SNL语言编译器

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published