系统 使用LLVM框架的Sysy2020语言编译器 LLVM框架语言:LLVM 12.0.0 编译环境:cmake 3.13 + Deepin 20.1 Beta 编译时若出错请注意LLVM版本号 目前支持程度 函数定义参数 二元表达式 &&,|| +,-,*,/,%,!= 函数调用 传参基础类型,矩阵,多维矩阵传参 条件分支关键字如果 循环关键字 为了 尽管 休息继续 函数...
SYsU 是 C 语言的子集,同时也是SysY语言的超集,在后者的基础上进行了一些调整,以适应课程需要: 源代码后缀名由.sy调整为.sysu.c。 元素类型增加char、long long。 常量类型增加字符串常量。多行字符串只支持多个""的拼接,不支持斜杠\语法。 不支持字符常量,而应当用字符串常量与下标寻址表示(如"c"[0])。
将SysY源码转为IR后传入LLVM完成后端处理,以单独测试编译器的前端实现。 将NNVM编译程序运行的输出与GCC编译程序运行的输出而非官方提供的结果对比,实现differential test,使得非官方测试用例也能快速得到测试。 调用Csmith生成测试用例,经过脚本处理后传入NNVM编译运行,结合difftest实现模糊测试。
【资源说明】 基于C语言实现的一个简单的编译器项目源码+使用教程.zip 一个简单的编译器,能将fdmj语言编译成llvm ir或者RPI(树莓派) arm # 运行方法 RPI 使用`make RPI`命令生成RPI编译器 使用`./RPI xx.fmj` 生成`xx.s`文件 使用 `arm-linux-gnueabihf-gcc -mcpu=cortex-a72 xx.s libsysy.a --stati...
getLastArgValue(OPT_sysyroot_EQ).str(); OutputFilename = InputArgs.getLastArgValue(OPT_outfile_EQ).str(); InputFileNames = InputArgs.getAllArgValues(OPT_INPUT); if (InputFileNames.empty()) reportCmdLineError("no input file"); IncludeFileNames = InputArgs.getAllArgValues(OPT_...
SYsU 是 C 语言的子集,同时也是SysY语言的超集,在后者的基础上进行了一些调整,以适应课程需要: 源代码后缀名由.sy调整为.sysu.c。 元素类型增加char、long long。 常量类型增加字符串常量。多行字符串只支持多个""的拼接,不支持斜杠\语法。 不支持字符常量,而应当用字符串常量与下标寻址表示(如"c"[0])。