LKCompiler
LKCompiler copied to clipboard
small a compiler
LKCompiler是一个小型编译器,LKCompiler使用JavaCC解析器。
LKCompiler目前只写了环境安装部分,词法语法少量的实现,后期需要很多语法和词法参与进来,欢迎大家点个stared或者fork,作者有动力造个轮子,初心就是写个编译器,打造一个编程语言玩玩。
如果大家有想法参与贡献,可以加入,但是这个有基础的,具备编译原理基础,如果没有学习编译原理或者很难学习,可以推荐路线图学习
http://coursegalaxy.com/compilers/learn-design.html
有基础的话可以了解一下整个架构,从词法设计开始参与进来。
///===----------------------------------------------------------------------------------
/// 新增了深度学习模型,为的是大家学习一下这个megcc编译器的支持
///===----------------------------------------------------------------------------------
编译器语法规则: // 库函数运用Java的import,函数名用c函数库 import stdio; int main(int argc, char **argv) { // 打印类似于C语言 printf("Hello, World!\n"); printf("%s\n", "Hello, World!"); return 0; } // 数值运算语法: import stdio;
static int g = 3; static int c;
int main(int argc, char **argv) { int i; int j = 0;
printf("%d",i);
printf(";%d",j);
i = 2;
j = 1;
printf(";%d", i++);
printf(";%d", j++);
printf(";%d", i + g);
printf(";%d", f(5));
printf(";%d", f(5) + 1);
printf(";%d", f(5) + i);
c = 5;
printf(";%d", f(3) + c);
i = 9;
printf(";%d", f(i));
j = 1;
printf(";%d", f(i) + j);
puts("");
return 0;
}
int f(int i) { return i + 1; }
配置要求前提:
* JDK 1.5 or later
* JavaCC 4.0 or later
* ant
* make
运行安装配置要求
* Linux 2.4以上
* util-linux (ld-linux.so.2)
* GNU libc 2.3 以上
* GNU binutils (as, ld)
安装
安装目录 /usr/local/LKCompiler:
# sudo ./install.sh
# sudo ln -s ../LKCompiler/bin/LKCompiler /usr/local/bin/LKCompiler
安装好环境配置 $HOME/lkc:
$ ./install.sh $HOME/LKCompiler
$ ln -s ../LKCompiler/bin/LKCompiler $HOME/bin/LKCompiler
Build
该目录下编辑:
make:
$ vi build.properties
$ make
Test
测试:
$ make test
语法使用测试案例以及架构说明: LKC | |----test:启动文件 | |----example:案例例子测试,文件后缀名为:xxx.l | |----bin:启动脚本文件 | |----src | |----main | | |----IR:中间代码生成文件 | |----parser:解析文件,词法语法规则的设计 | |----system:系统平台,目前是X86,陆续会增加ARM,RISC-V |----compiler:编译器部分核心代码 | |----AST:语法树部分 | |----assembly:汇编语言对象代码