-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgen_igen.h
58 lines (53 loc) · 2.07 KB
/
gen_igen.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
/**
* @file gen_igen.h
* @author Jan Brudný ([email protected])
* @author Antonín Jarolím ([email protected])
* @author Jakub Vlk ([email protected])
* @brief Generator of internal three adress code
* Implementation IFJ22 compiler
*/
#ifndef IFJ22_IGEN_H
#define IFJ22_IGEN_H
#include "common.h"
#include "gen_3adres.h"
#include "gen_gen.h"
#include "gen_postproces.h"
#include "stackIf.h"
#include "symtable.h"
void initIgen(i3Table_t program);
void startFunctionCall(i3Table_t program, token_t token);
void endFunctionCall(i3Table_t program, token_t token);
void functionReturnAssignment(i3Table_t program, symbol_t symbol);
symbolDataType_t tokenTypeToSymbolType(lexType type);
void newStatement(i3Table_t program, token_t token);
void writeLiteral(i3Table_t program, token_t token);
void newVariable(i3Table_t program, token_t token);
void functionDefParamRememberType(lexType type);
void functionDefParam(char *identifier, token_t token);
void functionDefBegin(char *identifier);
void functionDefRet(token_t token);
void flushCommand(i3Table_t program);
void actionPlus(i3Table_t program);
void actionMultiplication(i3Table_t program);
void actionDivision(i3Table_t program);
void actionSubtraction(i3Table_t program);
void actionConcat(i3Table_t program);
void actionGTS(i3InstructionArray_t *program);
void actionLTS(i3InstructionArray_t *program);
void actionEQS(i3InstructionArray_t *program);
void actionLTSEQ(i3InstructionArray_t *program);// >=
void actionGTSEQ(i3InstructionArray_t *program);// <=
void actionNEQS(i3InstructionArray_t *program); // <=
void ifStart();
void elseStart();
void whilestarts(i3InstructionArray_t *program);
void checkIfHaveElseBranch(i3InstructionArray_t *program);
void createNewSymtableFrame();
void createJumpIns(i3Table_t program, const char *label);
void createLabelIns(i3Table_t program, const char *label);
void exitCodeBlock(i3Table_t program);
void enterFunc(i3InstructionArray_t *program, char *identifier);
void exitFunc();
void prepareReturn(i3Table_t program);
void finalGeneration(i3Table_t program);
#endif// IFJ22_IGEN_H