You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Su Xing 7b731ef437
Merge branch 'exp1' into ref1
3 years ago
antlr Remove ANTLR 4.9.3 jar executable. 3 years ago
doc Merge branch 'exp1' of gitee.com:xsu1989/sysy into exp1 3 years ago
src Implement exp1 3 years ago
test Add README and test 3 years ago
.gitignore Add README and test 3 years ago
CMakeLists.txt Migrate ANTLR from 4.9.3 to 4.12.0 3 years ago
README.md Improve README format 3 years ago

README.md

SysY Compiler

用于实现SysY编译器的代码框架。

Getting Started

建议使用Ubuntu 22.04系统原生版本与WSL版本均可。

Ubuntu下载与安装说明

WSL Ubuntu安装说明

SysY编译器前端基于ANTLR工具实现本仓库已经包含ANTLR 4.9.3版本的可执行程序与C++运行时库但编译ANTLR运行时库存在一些依赖需要提前安装。

sudo apt update
sudo apt install -y uuid-dev libutfcpp-dev pkg-config make git cmake openjdk-11-jre

依赖安装完成后可以开始构建SysY编译器构建过程包含了ANTLR运行时库的构建

git clone https://gitee.com/xsu1989/sysy.git
cd sysy
cmake -S . -B build
cmake --build build

构建完成后,可以运行一个小的测试用例。该测试将逗号分隔的整数或字符串列表进行格式化后重新输出,即将相邻参数之间的分隔统一调整为逗号外加一个空格。

cat /test/funcrparams.sysy
# -> 1,0xa ,  011,	"hellow"
./build/bin/sysyc test/funcrparams.sy
# -> 1, 0xa, 011, "hellow"

Documentation

ANTLR手册

SysY语言规范

SysY运行时库

实验1用ANTLR实现SysY词法/语法分析器

当前的代码框架已经部署好了编译环境,同学们可专注于程序开发。

在实验1中同学们需要完成的任务包括

  • 参照SysY语言规范修改src/SysY.g4文件实现SysY词法/语法的完整定义
  • 修改任意代码后需要重新执行cmake --build build命令重新构建项目ANTLR工具会从SysY.g4生成词法/语法分析器,生成的文件位于./build/src目录
  • (进阶内容)修改src/ASTPrinter.hsrc/ASTPrinter.cpp实现从AST输出源程序但输出的源程序是经过格式化的测试用例为test/format-test.sy,格式化后的参考结果为test/format-ref.sy