Skip to content
This repository has been archived by the owner on Sep 16, 2022. It is now read-only.
/ Naive-SPL-Compiler Public archive

A naive SPL compiler implementation in C++.

Notifications You must be signed in to change notification settings

ekexium/Naive-SPL-Compiler

Repository files navigation

Naive-SPL-Compiler

A naive SPL compiler implementation in C++.

依赖

  • LLVM 6.0

并相应修改CMakeLists.txt中INC_DIR和LINK_DIR

  • gcc/clang
  • CMake

编译

Flex & Bison

  flex -o lexer.cpp --yylineno lexer.l
  bison -d -o parser.cpp parser.y

build

cmake .
make

运行

./splc input.spl splc和system.spl必须在同一目录下

输出

  • output.ll

LLVM �IR。

  • output.s

本机汇编代码。 可以通过 gcc -o test.out output.s生成本机可执行文件。

  • mips.s

MIPS汇编, target = mips-apple-darwin17.6.0。

Checklist

  • 数组 一维
  • record实现
  • 常量不可被重新赋值
  • 类型检查
  • 函数调用
  • 乘除
  • 加减区分 real integer
  • var: call by reference
  • write, writeln
  • read
  • 变量自动赋初值
  • Factor: T_NOT_FACTOR T_MINUS_FACTOR
  • 倒序访问是否有问题
  • 主程序返回值

功能

  1. SPL基本语法
  2. 可视化AST

dependency: graphviz

dot -Tpng -o ast.png ast.dot
  1. 代码生成(default target和MIPS)

default target可在本机编译运行,检查正确性。 MIPS为实验要求。

  1. 超简单的错误提示。

About

A naive SPL compiler implementation in C++.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published