-
Notifications
You must be signed in to change notification settings - Fork 0
/
generate_code.h
170 lines (91 loc) · 2.96 KB
/
generate_code.h
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/**
* Projekt: IFJ2021
*
* @brief Implementace generovani kodu a vestavenych funkci.
*
* @author Vít Janeček [email protected]
* @author Tony Pham [email protected]
*/
#ifndef _GENERATE_CODE_H
#define _GENERATE_CODE_H
#include <stdio.h>
#include <stdbool.h>
#include "Dynamic_string.h"
#include "instruct_dllist.h"
void make_header();
void make_CREATEFRAME();
void make_PUSHFRAME();
void make_POPFRAME();
void make_ADDS();
void make_SUBS();
void make_MULS();
void make_DIVS();
void make_IDIVS();
void make_LTS();
void make_GTS();
void make_EQS();
void make_NOTS();
void make_CALL(char *string);
void make_JUMP_end_fnc(Dynamic_string *string);
void make_JUMP_end_if(int ifCounter);
void make_LABEL_fnc(Dynamic_string *string);
void make_LABEL_else(int ifCounter);
void make_LABEL_endif(int ifCounter);
void make_func_header(Dynamic_string *string);
void make_noVoidReturn(Dynamic_string *string);
void make_DEFVAR_LF(Dynamic_string *string);
void make_DEFVAR_TF(Dynamic_string *string);
void make_MOVE_LF_nil(Dynamic_string *string);
void make_MOVE_TF_nil(char *string);
void make_WRITE_LF(Dynamic_string *string);
void make_WRITE_TF();
void makeWriteCall(Dynamic_string *string);
void make_CREATEFRAME_TMP();
void make_endOfFunc(char *string);
void movePrevious(DLList_Instruct *dlListInstruct);
void moveAfter(DLList_Instruct *dlListInstruct);
void make_POPSandMOVE_tmp1();
void make_POPSandMOVE_tmp2();
void make_INT2FLOATS();
void make_FLOAT2INTS();
void make_POPSandPUSH_float();
void call_NILcompare();
void make_NILcompare();
void make_insertNILcompare();
void make_PUSHS_LF(Dynamic_string *string);
void make_POPS_LF(Dynamic_string *string);
void make_PUSHS_TF(Dynamic_string *string);
void make_PUSHS_int(long long int Integer);
void make_PUSHS_float(double DoubleVal);
void make_PUSHS_string(char *str);
void make_POPS_TF(char *var);
void make_POPS_GF_if();
void make_PUSHS_nil();
void make_CONTAT();
void make_STRLEN();
void make_LT_all(int elseCounter);
void make_LTE_all(int elseCounter);
void make_GT_all(int elseCounter);
void make_GTE_all(int elseCounter);
void make_LT_loop();
void make_LTE_loop();
void make_GT_loop();
void make_GTE_loop();
void make_IF_nil(int elseCounter);
void make_EQ(int elseCounter);
void make_NEQ(int elseCounter);
void make_distribute();
void make_MOVE_TF_to_LF(Dynamic_string *stringTF, Dynamic_string *stringLF);
void make_INT2FLOAT_TF_TF(Dynamic_string *stringTF);
void make_MOVE_TF_INT(Dynamic_string *stringTF , long long int x);
void make_LOOP_TMP(int loopCounter);
void make_LOOP_JUMP(int loopCounter);
void make_MOVE_TF_FLOAT_INT2FLOAT(Dynamic_string *stringTF , long long int x);
void make_MOVE_TF_FLOAT(Dynamic_string *stringTF , double x);
void make_MOVE_TF_STRING(Dynamic_string *stringTF , char *string);
void make_MOVE_RETURN_NIL();
void make_TF_RETURN();
void make_TF_RETURN_to_GF();
void make_MOVE_GF_return_to_TF(char *var);
#endif //_GENERATE_CODE_H
/** @endcode */