1 Star 0 Fork 1

mengbai/编译器实验

forked from 翟毅鑫/编译器实验 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
重庆大学 2022 编译原理教改项目

目录结构:
/bin		可执行文件 + 库文件
/build		构建项目的文件
/include	头文件
/src		源代码
/src/...	子模块: IR, frontend, backend, opt
            third_party: 第三方库, 目前使用了 jsoncpp 用于生成和读取 json
/lib        我们提供的库文件, 你需要根据你使用的 linux 或 windows 平台将对应的库文件重命名为 libIR.a 才能通过编译
/test       测试框架, 可以用于自测
/CMakeList.txt
/readme.txt	


编译:
首先进入 /build 若CMakeList修改后应执行 cmake 命令
1. cd /build
2. cmake ..
如果一切正常没有报错 执行make命令
3. make


执行:
1. cd /bin
2. compiler <src_filename> [-step] -o <output_filename> [-O1]
    -step: 支持以下几种输入
        s0: 词法结果 token 串
        s1: 语法分析结果语法树, 以 json 格式输出
        s2: 语义分析结果, 以 IR 程序形式输出                  
        e : 执行 IR 测评机,从 xx.sy 读入源文件,重定向 xx.in 作为 IR 程序的标准输入,并将 IR 的标准输出输出到 <output_filename> 中
        S : RISC-v 汇编                                     ### TODO

测试:
1. cd /test
2. python [files]:
    build.py:   进入到 build 目录, 执行 cmake .. & make
    run.py: 运行可执行文件 compiler 编译所有测试用例, 打印 compiler 返回值和报错, 输出编译结果至 /test/output
        执行方法: python run.py [s0/s1/s2/S]
    score.py: 将 run.py 生成的编译结果与标准结果进行对比并打分
        执行方法: python score.py [s0/s1/s2/S]

    test.py 编译生成 compiler 可执行文件,执行并生成结果,最后对结果进行判断并打分
        执行方法: python test.py [s0/s1/s2/S]

空文件

简介

这个仓库保存着我的编译原理这门课的课程设计,实现一个由SysY(精简版C语言)翻译至RISC-V汇编的编译器。 课程设计包含三个部分:词法和语法分析(s0和s1)、语义分析和中间代码生成(s2)、以及目标代码生成(s3)。 每个部分都依赖前一个部分的结果,逐步构建一个完整的编译器。 展开 收起
C/C++
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/mengbai_love/sysy-compiler.git
[email protected]:mengbai_love/sysy-compiler.git
mengbai_love
sysy-compiler
编译器实验
s3

搜索帮助