# compilerSysY **Repository Path**: llyronx/compiler-sysy ## Basic Information - **Project Name**: compilerSysY - **Description**: 2021年全国大学生计算机系统能力大赛——编译系统设计赛(华为毕昇杯)的super.calculate队伍中使用Java实现的SysY语言的编译器。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-08-19 - **Last Updated**: 2023-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: 编译器 ## README # `super.calculate` 这是[2021年全国大学生计算机系统能力大赛——编译系统设计赛(华为毕昇杯)](https://compiler.educg.net/)的`super.calculate`队伍中使用`Java`实现的`SysY`语言的编译器。 *注:由于源程序运行缓慢,决赛中实际提交的是另一个C++版本的编译器,而不是本编译器。* 本编译器基于本人设计的[LYRON编译器框架](https://gitee.com/llyronx/LYRON)构建,由于比赛要求不能解析非`Java`格式的外部文件,因而将语言定义以`Java`代码的形式存放于`pldl`包中,在运行时进行解析。 已经实现的编译特性以及优化: 词法分析 语法分析 语义分析 中间代码生成(使用自己定义的四元式,产生于4tu文件) 基于ARM32架构的SysY必需后端(块级作用域、数组定义、函数传参和返回) 简单的常量优化(如果两个操作数都是常量则直接赋值) 基本块划分和简单的寄存器分配(FIFO块内分配) 简单的数据流分析和死代码删除 在目录`compiler2021`中,你可以找到相关的文档,包括: SysY的语言定义和运行时库 测试用例,包含: 2020年比赛期间公开的功能测试 2021年比赛期间公开的功能测试 2021年比赛期间公开的性能测试 比赛期间自测的功能测试 收集的2020年比赛的一些测试 2021年比赛实际使用的功能测试和性能测试 大赛其他相关文档 将项目导入Intellij IDEA中并传递test参数进行运行,可以编译并进行这些测试。 如果有任何问题或者建议,请联系本人邮箱(3194100053@qq.com),感谢阅读和支持。