-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathREADME
131 lines (101 loc) · 3.56 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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:汇编语言对象代码