diff options
author | Adam NAILI | 2018-06-06 01:49:21 +0200 |
---|---|---|
committer | Adam NAILI | 2018-06-06 01:49:21 +0200 |
commit | 8902053fa7cc5cf6b3ef64a805844455971b99d6 (patch) | |
tree | 7130f8cb0af97ea81b79d3006447bef7b8759bf6 | |
parent | 68bc689e3e47ed57eb43a531c793d08d9231af4e (diff) | |
download | tpc-compiler-8902053fa7cc5cf6b3ef64a805844455971b99d6.tar.gz |
Fixing \n in errors, updating commands in report
-rw-r--r-- | doc/rapport.md | 9 | ||||
-rw-r--r-- | src/generator.c | 10 |
2 files changed, 12 insertions, 7 deletions
diff --git a/doc/rapport.md b/doc/rapport.md index d3adc07..1909bbb 100644 --- a/doc/rapport.md +++ b/doc/rapport.md | |||
@@ -4,6 +4,15 @@ author: [Pacien TRAN-GIRARD, Adam NAILI] | |||
4 | date: 2018-02-20 | 4 | date: 2018-02-20 |
5 | ... | 5 | ... |
6 | 6 | ||
7 | # Usage | ||
8 | Après un `make`, `./tcompil < prog.tpc [-o prog.asm]` | ||
9 | |||
10 | Pour faciliter les tests, | ||
11 | `make test FILE_TEST=test_file` | ||
12 | test_file est en réalité un fichier d'extension .tpc placé dans le répertoire res. (exemple: res/test_file.tpc). | ||
13 | Ceci génère un executable `test_file` dans le répertoire out. | ||
14 | |||
15 | |||
7 | # Analyse lexicale | 16 | # Analyse lexicale |
8 | 17 | ||
9 | L'analyse lexicale est réalisée avec Flex et est contenue dans le fichier `tpc.lex`. | 18 | L'analyse lexicale est réalisée avec Flex et est contenue dans le fichier `tpc.lex`. |
diff --git a/src/generator.c b/src/generator.c index 5c51d3b..1dfe8f3 100644 --- a/src/generator.c +++ b/src/generator.c | |||
@@ -121,7 +121,7 @@ void gen_function_end_declaration(const char name[], int return_type, | |||
121 | 121 | ||
122 | void gen_function_return(Type expect, Type actual) { | 122 | void gen_function_return(Type expect, Type actual) { |
123 | if (actual != expect) { | 123 | if (actual != expect) { |
124 | fprintf(stderr, "Return type mismatch at line %d.", lineno); | 124 | fprintf(stderr, "Return type mismatch at line %d.\n", lineno); |
125 | exit(1); | 125 | exit(1); |
126 | } | 126 | } |
127 | if (actual != VOID_T) | 127 | if (actual != VOID_T) |
@@ -487,15 +487,11 @@ int gen_value_tab(const char ident[], Scope scope) { | |||
487 | } | 487 | } |
488 | } | 488 | } |
489 | int gen_num(int value, Scope scope) { | 489 | int gen_num(int value, Scope scope) { |
490 | if (scope == LOCAL) | 490 | fprintf(output, "push %d\n", value); |
491 | fprintf(output, "push %d\n", value); // TODO: remove if? | ||
492 | // stored for the semantic analysis. | ||
493 | |||
494 | return INT; | 491 | return INT; |
495 | } | 492 | } |
496 | 493 | ||
497 | int gen_char(int value, Scope scope) { | 494 | int gen_char(int value, Scope scope) { |
498 | if (scope == LOCAL) | 495 | fprintf(output, "push %d\n", value); |
499 | fprintf(output, "push %d\n", value); // TODO: remove if? | ||
500 | return CHAR; | 496 | return CHAR; |
501 | } | 497 | } |