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

时间:2024-02-21 07:30:39
【文件属性】:

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

文件大小:2.01MB

文件格式:ZIP

更新时间:2024-02-21 07:30:39

bison flex compiler llvm lex

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


【文件预览】:
TinyCompiler-master
----token.l(3KB)
----grammar.y(8KB)
----ASTNodes.h(22KB)
----utils.cpp(3KB)
----testmain.cpp(569B)
----tests()
--------testArray.input(427B)
--------testStruct.png(132KB)
--------testStructAST.png(450KB)
--------testExtern.input(189B)
--------testArray.png(129KB)
--------testArrayAST.png(524KB)
--------testBasic.png(176KB)
--------testBasic.input(436B)
--------testBasicAST.png(602KB)
--------testStruct.input(299B)
----Readme.md(41KB)
----visualization()
--------d3.js(319KB)
--------disp.html(478B)
--------test.js(1KB)
--------A_tree.json(6KB)
----testmain.ll(3KB)
----main.cpp(933B)
----ObjGen.cpp(2KB)
----token.cpp(52KB)
----.gitignore(1KB)
----CMakeLists.txt(410B)
----ObjGen.h(207B)
----Makefile(828B)
----graphs()
--------ASTUML.jpg(185KB)
----CodeGen.cpp(21KB)
----y.tab.c(61KB)
----test.input(529B)
----CodeGen.h(4KB)
----TypeSystem.h(3KB)
----TypeSystem.cpp(5KB)
----.vscode()
--------settings.json(168B)

网友评论