aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam NAILI2018-06-06 14:31:40 +0200
committerAdam NAILI2018-06-06 14:31:40 +0200
commit901e95ebf54575d24e533383fabfc5e9d916bf39 (patch)
tree45498bf25c66fe97c81ff720458250cc363e136b
parentcc1b72c1093dfd3bb0f41802a6a012402fa9717e (diff)
parent8a5ccc3b6e5e7a3ad064cc5cce1c4a1a9ac74aa8 (diff)
downloadtpc-compiler-901e95ebf54575d24e533383fabfc5e9d916bf39.tar.gz
Merge branch 'master' of https://github.com/pacien/upem-compil-tpc
-rw-r--r--res/test_add_ok.tpc (renamed from res/test_add.tpc)0
-rw-r--r--res/test_array_ok.tpc (renamed from res/test_array.tpc)0
-rw-r--r--res/test_global_ok.tpc (renamed from res/test_global.tpc)0
-rw-r--r--res/test_if_ok.tpc (renamed from res/test_if.tpc)0
-rw-r--r--res/test_mul_ok.tpc (renamed from res/test_mul.tpc)0
-rw-r--r--res/test_nomain_ko.tpc6
-rw-r--r--res/test_parameters_ok.tpc (renamed from res/test_parameters.tpc)0
-rw-r--r--res/test_read_ok.tpc (renamed from res/test_read.tpc)0
-rw-r--r--res/test_return_ok.tpc (renamed from res/test_return.tpc)0
-rw-r--r--res/test_sample_ko.tpc (renamed from res/ko_sample.tpc)0
-rw-r--r--res/test_sample_ok.tpc (renamed from res/ok_sample.tpc)0
-rw-r--r--res/test_table_symbols_ok.tpc (renamed from res/test-table-symboles.tpc)0
-rw-r--r--res/test_while_ok.tpc (renamed from res/test_while.tpc)0
-rw-r--r--src/generator.c5
-rw-r--r--src/generator.h2
-rw-r--r--src/tpc.y2
16 files changed, 12 insertions, 3 deletions
diff --git a/res/test_add.tpc b/res/test_add_ok.tpc
index 848130c..848130c 100644
--- a/res/test_add.tpc
+++ b/res/test_add_ok.tpc
diff --git a/res/test_array.tpc b/res/test_array_ok.tpc
index a968c22..a968c22 100644
--- a/res/test_array.tpc
+++ b/res/test_array_ok.tpc
diff --git a/res/test_global.tpc b/res/test_global_ok.tpc
index d8b7d45..d8b7d45 100644
--- a/res/test_global.tpc
+++ b/res/test_global_ok.tpc
diff --git a/res/test_if.tpc b/res/test_if_ok.tpc
index 054811b..054811b 100644
--- a/res/test_if.tpc
+++ b/res/test_if_ok.tpc
diff --git a/res/test_mul.tpc b/res/test_mul_ok.tpc
index 62a8080..62a8080 100644
--- a/res/test_mul.tpc
+++ b/res/test_mul_ok.tpc
diff --git a/res/test_nomain_ko.tpc b/res/test_nomain_ko.tpc
new file mode 100644
index 0000000..570c5ca
--- /dev/null
+++ b/res/test_nomain_ko.tpc
@@ -0,0 +1,6 @@
1const c = 0;
2
3/* not a main */
4void f(void) {
5 print(c);
6}
diff --git a/res/test_parameters.tpc b/res/test_parameters_ok.tpc
index 479fb60..479fb60 100644
--- a/res/test_parameters.tpc
+++ b/res/test_parameters_ok.tpc
diff --git a/res/test_read.tpc b/res/test_read_ok.tpc
index b88061f..b88061f 100644
--- a/res/test_read.tpc
+++ b/res/test_read_ok.tpc
diff --git a/res/test_return.tpc b/res/test_return_ok.tpc
index f450203..f450203 100644
--- a/res/test_return.tpc
+++ b/res/test_return_ok.tpc
diff --git a/res/ko_sample.tpc b/res/test_sample_ko.tpc
index 9dc344f..9dc344f 100644
--- a/res/ko_sample.tpc
+++ b/res/test_sample_ko.tpc
diff --git a/res/ok_sample.tpc b/res/test_sample_ok.tpc
index c8d3d9d..c8d3d9d 100644
--- a/res/ok_sample.tpc
+++ b/res/test_sample_ok.tpc
diff --git a/res/test-table-symboles.tpc b/res/test_table_symbols_ok.tpc
index b2cc31e..b2cc31e 100644
--- a/res/test-table-symboles.tpc
+++ b/res/test_table_symbols_ok.tpc
diff --git a/res/test_while.tpc b/res/test_while_ok.tpc
index 25d04c6..25d04c6 100644
--- a/res/test_while.tpc
+++ b/res/test_while_ok.tpc
diff --git a/src/generator.c b/src/generator.c
index 601f482..bbb2af5 100644
--- a/src/generator.c
+++ b/src/generator.c
@@ -78,7 +78,7 @@ void gen_prologue_continue(int *bss_done) {
78 *bss_done = 1; 78 *bss_done = 1;
79} 79}
80 80
81void gen_const_declaration() { 81void gen_epilogue() {
82 fprintf(output, "\n_start:\n"); 82 fprintf(output, "\n_start:\n");
83 fprintf(output, "push rbp\nmov rbp, rsp\n\n"); 83 fprintf(output, "push rbp\nmov rbp, rsp\n\n");
84 fprintf(output, "call main\n"); 84 fprintf(output, "call main\n");
@@ -91,6 +91,9 @@ void gen_const_declaration() {
91 loc_display_table(); 91 loc_display_table();
92 fprintf(output, ";function table\n"); 92 fprintf(output, ";function table\n");
93 fun_display_table(); 93 fun_display_table();
94
95 // require a main function
96 fun_lookup("main", 0);
94} 97}
95 98
96void gen_const(const char name[], int value, Scope scope) { 99void gen_const(const char name[], int value, Scope scope) {
diff --git a/src/generator.h b/src/generator.h
index 20a83f9..9d6dd65 100644
--- a/src/generator.h
+++ b/src/generator.h
@@ -16,7 +16,7 @@ FILE *output;
16 16
17void gen_prologue(); 17void gen_prologue();
18void gen_prologue_continue(int *bss_done); 18void gen_prologue_continue(int *bss_done);
19void gen_const_declaration(); 19void gen_epilogue();
20void gen_const(const char name[], int value, Scope scope); 20void gen_const(const char name[], int value, Scope scope);
21 21
22Type gen_function_declaration(const char name[], int return_type); 22Type gen_function_declaration(const char name[], int return_type);
diff --git a/src/tpc.y b/src/tpc.y
index 59fa9d1..74d31c6 100644
--- a/src/tpc.y
+++ b/src/tpc.y
@@ -58,7 +58,7 @@ static char fname[64];
58 58
59%% 59%%
60Prog: { gen_prologue(); } 60Prog: { gen_prologue(); }
61 DeclConsts DeclVars DeclFoncts { gen_const_declaration(); } 61 DeclConsts DeclVars DeclFoncts { gen_epilogue(); }
62; 62;
63DeclConsts: 63DeclConsts:
64 DeclConsts CONST ListConst ';' 64 DeclConsts CONST ListConst ';'