TinyCompiler:基于flex(lex),bison(yacc)和LLVM的c编译器,支持LLVM IR和obj代码生成。基于flex,bison以及LLVM,使用c ++ 11实现的类C语法编译器,支持生成中间代码及替换文件-源码

上传者: 42151373 | 上传时间: 2021-05-13 00:02:15 | 文件大小: 2.01MB | 文件类型: ZIP
TinyCompiler 序言 项目概述 本项目是基于flex,bison和LLVM,使用c ++ 11实现的类C语法编译器,使用flexbindingyacc对源代码进行词法,语法分析;在语法分析阶段生成整个源代码相应的抽象语法树后,根据LLVM IR(中间表示)模块中定义的中间代码语法输出与LLVM中间语言语法,机器无关的中间代码;最后,本项目通过调用LLVM后端模块的接口,根据本地指令集与操作系统架构,将中间代码编译成二进制目标代码。编译生成的目标代码之后可直接编译生成初始化文件,或与其他目标代码链接生成替代文件。 本项目解析的语法与是C语言的一个子集,但部分语法存在区别,这些将在最后的测试用例中具体说明。目前已支持的数据类型包括: 虚空 整型 浮动 双 烧焦 串 布尔 自定义结构体 样本(包括多维样本) 支持的主要语法包括: 变量的声明,初始化(包括一维细分初始化,多维序列暂不支持初始化,只能逐个元素赋值使用) 函数声明,函数调用(传递参数类型可以是任意已支持类型) 外部函数声明和调用 控制流语句if-else,for,while和任意层级的嵌套使用 单行注释(#) 二元运算

文件下载

资源详情

[{"title":"( 36 个子文件 2.01MB ) TinyCompiler:基于flex(lex),bison(yacc)和LLVM的c编译器,支持LLVM IR和obj代码生成。基于flex,bison以及LLVM,使用c ++ 11实现的类C语法编译器,支持生成中间代码及替换文件-源码","children":[{"title":"TinyCompiler-master","children":[{"title":"token.l <span style='color:#111;'> 3.27KB </span>","children":null,"spread":false},{"title":"grammar.y <span style='color:#111;'> 7.73KB </span>","children":null,"spread":false},{"title":"ASTNodes.h <span style='color:#111;'> 22.48KB </span>","children":null,"spread":false},{"title":"utils.cpp <span style='color:#111;'> 2.80KB </span>","children":null,"spread":false},{"title":"testmain.cpp <span style='color:#111;'> 569B </span>","children":null,"spread":false},{"title":"tests","children":[{"title":"testArray.input <span style='color:#111;'> 427B </span>","children":null,"spread":false},{"title":"testStruct.png <span style='color:#111;'> 131.57KB </span>","children":null,"spread":false},{"title":"testStructAST.png <span style='color:#111;'> 450.19KB </span>","children":null,"spread":false},{"title":"testExtern.input <span style='color:#111;'> 189B </span>","children":null,"spread":false},{"title":"testArray.png <span style='color:#111;'> 129.13KB </span>","children":null,"spread":false},{"title":"testArrayAST.png <span style='color:#111;'> 523.94KB </span>","children":null,"spread":false},{"title":"testBasic.png <span style='color:#111;'> 175.97KB </span>","children":null,"spread":false},{"title":"testBasic.input <span style='color:#111;'> 436B </span>","children":null,"spread":false},{"title":"testBasicAST.png <span style='color:#111;'> 602.05KB </span>","children":null,"spread":false},{"title":"testStruct.input <span style='color:#111;'> 299B </span>","children":null,"spread":false}],"spread":true},{"title":"Readme.md <span style='color:#111;'> 41.22KB </span>","children":null,"spread":false},{"title":"visualization","children":[{"title":"d3.js <span style='color:#111;'> 318.63KB </span>","children":null,"spread":false},{"title":"disp.html <span style='color:#111;'> 478B </span>","children":null,"spread":false},{"title":"test.js <span style='color:#111;'> 1.28KB </span>","children":null,"spread":false},{"title":"A_tree.json <span style='color:#111;'> 5.88KB </span>","children":null,"spread":false}],"spread":true},{"title":"testmain.ll <span style='color:#111;'> 2.82KB </span>","children":null,"spread":false},{"title":"main.cpp <span style='color:#111;'> 933B </span>","children":null,"spread":false},{"title":"ObjGen.cpp <span style='color:#111;'> 1.98KB </span>","children":null,"spread":false},{"title":"token.cpp <span style='color:#111;'> 52.09KB </span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'> 1.11KB </span>","children":null,"spread":false},{"title":"CMakeLists.txt <span style='color:#111;'> 410B </span>","children":null,"spread":false},{"title":"ObjGen.h <span style='color:#111;'> 207B </span>","children":null,"spread":false},{"title":"Makefile <span style='color:#111;'> 828B </span>","children":null,"spread":false},{"title":"graphs","children":[{"title":"ASTUML.jpg <span style='color:#111;'> 185.37KB </span>","children":null,"spread":false}],"spread":false},{"title":"CodeGen.cpp <span style='color:#111;'> 21.27KB </span>","children":null,"spread":false},{"title":"y.tab.c <span style='color:#111;'> 61.22KB </span>","children":null,"spread":false},{"title":"test.input <span style='color:#111;'> 529B </span>","children":null,"spread":false},{"title":"CodeGen.h <span style='color:#111;'> 4.37KB </span>","children":null,"spread":false},{"title":"TypeSystem.h <span style='color:#111;'> 2.55KB </span>","children":null,"spread":false},{"title":"TypeSystem.cpp <span style='color:#111;'> 5.28KB </span>","children":null,"spread":false},{"title":".vscode","children":[{"title":"settings.json <span style='color:#111;'> 168B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明