-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtokens.h
96 lines (78 loc) · 1.63 KB
/
tokens.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
/*
* arbre
*
* (c) 2011, Alexis Sellier
*
* tokens.h
*
*/
extern const char *TOKEN_STRINGS[];
typedef enum {
/* Special */
T_EOF,
T_COMMENT, // -- I'm a comment
T_ILLEGAL,
/* Indentation tokens */
T_INDENT,
T_DEDENT,
/* Whitespace */
T_SPACE, // ' '
T_LF, // '\n'
T_UNDER,
T_AT,
/* Operands */
T_IDENT, // Fnord
T_ATOM, // fnord
T_INT, // 12345
T_FLOAT, // 123.45
T_CHAR, // 'a'
T_STRING, // "fnord"
/* Operators */
T_PLUS, // +
T_MINUS, // -
T_STAR, // *
T_SLASH, // /
T_DIV, // ÷
T_BSLASH, // '\'
T_PERCENT, // %
T_AND, // &
T_OR, // |
T_XOR, // ^
/* Definition/declaration */
T_DEFINE, // :=
/* Logical operators */
T_LAND, // &&
T_LOR, // ||
T_PIPE, // |
T_QUESTION, // ?
T_LEQ,
T_LNOT_EQ,
/* Arrows */
T_LARROW, // <-
T_RARROW, // ->
T_LRARROW, // <->
T_LEQARROW, // <=
T_REQARROW, // =>
T_LREQARROW, // <=>
T_LDARROW, // <<
T_RDARROW, // >>
/* Comparison operators */
T_EQ, // =
T_NOT_EQ, // ≠
T_LT, // <
T_GT, // >
/* Other operators */
T_ELLIPSIS, // ...
T_BANG, // !
/* Delimiters */
T_LPAREN, // (
T_RPAREN, // )
T_LBRACK, // [
T_RBRACK, // ]
T_LBRACE, // {
T_RBRACE, // }
T_COMMA, // ,
T_PERIOD, // .
T_SEMICOLON, // ;
T_COLON // :
} TOKEN;