-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoken.h
80 lines (69 loc) · 1.68 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
/**
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* Projekt IFJ *
* *
* Implementace překladače imperativního jazyka IFJ18. *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
Súbor:
token.h
Popis:
Hlavickovy subor obsahuje definiciu typu Token_t
pouzivanych v parser a fsm, definuje aj pomocne
typy pouzivane v Token_t (TokenType_t, TokenOperationType_t
TokenKewordType_t)
Autori:
Marek Vaško (xvasko16)
Handzuš Daniel (xhandz01)
Alexaj Adam (xalexa07)
*/
#ifndef TOKEN_H
#define TOKEN_H
typedef enum {
T_IDENTIFIER,
T_INTEGER,
T_DOUBLE,
T_STRING,
T_KEYWORD,
T_OPERATION,
T_EOL,
T_EOF
} TokenType_t;
typedef enum {
TK_DEF,
TK_DO,
TK_ELSE,
TK_END,
TK_IF,
TK_NOT,
TK_NIL,
TK_THEN,
TK_WHILE
} TokenKewordType_t;
typedef enum {
TO_LESSER_THAN,
TO_GREATER_THAN,
TO_ASSIGNMENT,
TO_EQUAL_TO,
TO_NOT_EQUAL_TO,
TO_MULTIPLY,
TO_DIVIDE,
TO_ADD,
TO_SUBTRACT,
TO_GREATER_EQUAL_THAN,
TO_LESSER_EQUAL_THAN,
TO_LBRACKET,
TO_RBRACKET,
TO_COMMA
} TokenOperationType_t;
typedef struct {
TokenType_t type;
union{
TokenKewordType_t keywordType;
TokenOperationType_t operationType;
int intValue;
double doubleValue;
};
} Token_t;
#endif