本代码为编译原理课程的大作业存档,实现了一个将SysY语言编译到X86 AT&T语法汇编的编译器。
代码主要参考了北大编译实践在线文档,对于其中LV1 - LV8和LV9的大部分测试用例, 编译器都能够生成正确的X86汇编。
sysy.l:词法分析器源代码。sysy.y:语法分析器和语义分析器源代码。Makefile:用于生成编译器的可执行文件的 Makefile。tests/:包含测试用例的目录,其中包括1.sy、2.sy、3.sy、4.sy和test.sy。test.sh:测试脚本,用于编译和运行测试用例。
-
使用
make命令生成编译器的可执行文件:make -
使用
./sysy_compiler命令编译 SysY 源代码:./sysy_compiler < input.sy > output.s其中,
input.sy是 SysY 源代码文件的路径,output.s是生成的汇编代码文件的路径。 -
使用
gcc命令将汇编代码文件编译成可执行文件:gcc output.s -o output其中,
output是生成的可执行文件的路径。 -
运行可执行文件:
./output
在使用 make 命令生成编译器的可执行文件后,可以使用 test.sh 脚本来编译和运行测试用例。该脚本支持以下命令行参数:
-a:编译tests/目录下的所有 SysY 源代码文件。-r <filename>:编译并运行指定的 SysY 源代码文件。
例如,要编译并运行 tests/1.sy 文件,可以使用以下命令:
./test.sh -r 1.sy
该命令会将 1.sy 文件编译成汇编代码,并将汇编代码编译成可执行文件,最后运行可执行文件。