-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathresfig.h
49 lines (36 loc) · 1.1 KB
/
resfig.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
#ifndef RESFIG_H
#define RESFIG_H 1
typedef enum
{
TOKEN_TYPE_NULL,
TOKEN_TYPE_NEWLINE,
TOKEN_TYPE_NAME,
TOKEN_TYPE_FROM,
TOKEN_TYPE_IMPORT,
TOKEN_TYPE_AS,
TOKEN_TYPE_GOTO,
TOKEN_TYPE_LABEL,
} token_type;
#define KEYWORD \
struct { const char *word; size_t word_len; token_type type; }
#define ITEM(STR, TYPE) {STR, (sizeof(STR) - 1), TYPE}
KEYWORD reswords[] = {
ITEM("from", TOKEN_TYPE_FROM),
ITEM("import", TOKEN_TYPE_IMPORT),
ITEM("as", TOKEN_TYPE_AS),
ITEM("goto", TOKEN_TYPE_GOTO),
ITEM("label", TOKEN_TYPE_LABEL),
ITEM("if", TOKEN_TYPE_IF),
ITEM("then", TOKEN_TYPE_THEN),
ITEM("else", TOKEN_TYPE_ELSE),
ITEM("end", TOKEN_TYPE_END),
};
KEYWORD resymbols[] = {
ITEM("==", TOKEN_TYPE_EQ),
ITEM("!=", TOKEN_TYPE_NE),
ITEM("<", TOKEN_TYPE_LT),
ITEM("<=", TOKEN_TYPE_LE),
};
#undef KEYWORD
#undef ITEM
#endif // RESFIG_H