-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtoken.h
142 lines (117 loc) · 2.94 KB
/
token.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
///////////////////////////////////////////////////////////////////////////////
/* ---------- IMPLEMENTACE INTERPRETU IMPERATIVNÍHO JAZYKA IFJ15 ----------- */
///////////////////////////////////////////////////////////////////////////////
//
// AUTOŘI:
//
// xbedna57 ADAM BEDNÁRIK ()
// xmacha63 ERIK MACHÁČEK ()
// xmalar02 MARTIN MALÁRIK ()
// xklaci00 MICHAL KLACIK ()
// xlengu00 MANH LE NGUYEN ()
//
///////////////////////////////////////////////////////////////////////////////
#ifndef T_Header
#define T_Header
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "memory_manager.h"
#define KEYWORD_SHIFT 26
#define TOKEN_COUNT 52
//Structures
typedef struct TokenStruct{
int typ;
char *data;
}*tTokenPtr;
//Enums
/*Nutno dodefinovat další dle potřeby*/
enum TokenType{
TT_UNDEFINED, /* nikdy by nemelo byt vraceno*/
TT_EOF, /* EOF */
TT_SEMICOLON, /* ; */
TT_STAR, /* * */
TT_PLUS, /* + */
TT_MINUS, /* - */
TT_DIVIDE, /* / */
TT_ASSIGN, /* = */
TT_EQUAL, /* == */
TT_EQUAL_LESS, /* <= */
TT_EQUAL_GREATER, /* >= */
TT_NOT_EQUAL, /* != */
TT_LESS, /* < */
TT_GREATER, /* > */
TT_COMMA, /* , */
TT_EXTRACTION, /* >> */
TT_INSERTION, /* << */
TT_AND, /* && */
TT_OR, /* || */
TT_INCREMENT, /* ++ */
TT_DECREMENT, /* -- */
TT_PAR_L, /* ( */
TT_PAR_R, /* ) */
TT_BRACE_L, /* { */
TT_BRACE_R, /* { */
TT_IDENTIFIER,
//S timhle dolu se nesmi pohybovat
TT_KEYWORD_AUTO,
TT_KEYWORD_CIN,
TT_KEYWORD_COUT,
TT_KEYWORD_DOUBLE,
TT_KEYWORD_ELSE,
TT_KEYWORD_FOR,
TT_KEYWORD_IF,
TT_KEYWORD_INT,
TT_KEYWORD_RETURN,
TT_KEYWORD_STRING,
TT_KEYWORD_BOOL,
TT_KEYWORD_DO,
TT_KEYWORD_WHILE,
TT_KEYWORD_TRUE,
TT_KEYWORD_FALSE,
TT_KEYWORD_LENGTH,
TT_KEYWORD_SUBSTRING,
TT_KEYWORD_CONCAT,
TT_KEYWORD_FIND,
TT_KEYWORD_SORT,
//Konec problemove casti
TT_INT,
TT_DOUBLE,
TT_STRING,
TT_HEX_NUM,
TT_OCT_NUM,
TT_BIN_NUM,
/* Zde si budu uchovavat specialni tokeny pro parser*/
TT_S_DOLLAR,
TT_S_FUNKCE_LS,
TT_S_FUNKCE_HEAD,
TT_S_FUNKCE_HEAD_END,
TT_S_FUNKCE_P,
TT_S_STAT_LS,
TT_S_STAT,
TT_S_VAR_END,
TT_S_CIN_LS,
TT_S_COUT_LS,
TT_S_EXP,
TT_S_TYP_UNIVERSAL,
TT_S_ID_OR_TYP,
}Typ;
//Function prototypes
tTokenPtr T_Init();
void T_Update(char c);
void T_Destroy(tTokenPtr tokenPtr);
void T_Finish(tTokenPtr tokenPtr);
char * T_GetData();
void T_SystemInit();
void T_SystemTerminate();
#if DEBUG
static const char *tokenNames[TOKEN_COUNT] =
{"UNDEFINED", "EOF", "SEMICOLON", "STAR", "PLUS", "MINUS", "DEVIDE", "ASSIGN", "EQUEAL", "EQUAL_LESS",
"EQUAL_GREATER","NOT_EQUEAL", "LESS", "GREATER", "COMMA", "EXTRACTION", "INSERTION", "AND", "OR", "INCREMENT",
"DECREMENT", "PAR_L", "PAR_R", "BRACE_L", "BRACE_R", "IDENTIFIER","AUTO","CIN","COUT","DOUBLE",
"ELSE", "FOR", "IF", "INT", "RETURN", "STRING", "BOOL", "DO", "WHILE", "TRUE",
"FALSE", "LENGHT", "SUBSTR", "CONCAT", "FIND", "SORT", "INT_NUM", "DOUBLE_NUM", "STRING", "HEX_NUM",
"OCT_NUM", "BIN_NUM",
};
#endif
#endif //T_Header