blob: 3f16b44c510976539981862db4c9fd65edc4022f (
plain)
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
|
%{
%}
DIGIT [0-9]
UPPER [A-Z]
LOWER [a-z]
NONDIGIT [_a-zA-Z]
%%
/* keywords */
"auto" { return AUTO; }
"break" { return BREAK; }
"case" { return CASE; }
"char" { return CHAR; }
"const" { return CONST; }
"continue" { return CONTINUE; }
"default" { return DEFAULT; }
"do" { return DO; }
"double" { return DOUBLE; }
"else" { return ELSE; }
"enum" { return ENUM; }
"extern" { return EXTERN; }
"float" { return FLOAT; }
"for" { return FOR; }
"goto" { return GOTO; }
"if" { return IF; }
"int" { return INT; }
"long" { return LONG; }
"register" { return REGISTER; }
"return" { return RETURN; }
"short" { return SHORT; }
"signed" { return SIGNED; }
"sizeof" { return SIZEOF; }
"static" { return STATIC; }
"struct" { return STRUCT; }
"switch" { return SWITCH; }
"typedef" { return TYPEDEF; }
"union" { return UNION; }
"unsigned" { return UNSIGNED; }
"void" { return VOID; }
"volatile" { return VOLATILE; }
"while" { return WHILE; }
/* operators */
"[" { return LBRACKET; }
"]" { return RBRACKET; }
"(" { return LPAREN; }
")" { return RPAREN; }
"." { return DOT; }
"->" { return ARROW; }
"++" { return INCREMENT; }
"--" { return DECREMENT; }
"&" { return AMPERSAND; }
"*" { return STAR; }
"+" { return PLUS; }
"-" { return MINUS; }
"~" { return TILDE; }
"!" { return BANG; }
"/" { return SLASH; }
"%" { return PERCENT; }
"<<" { return LSHIFT; }
">>" { return RSHIFT; }
"<" { return LESSTHAN; }
">" { return GREATERTHAN; }
"<=" { return LESSEQUAL; }
">=" { return GREATEREQUAL; }
"==" { return ISEQUAL; }
"!=" { return NOTEQUAL; }
"^" { return CARET; }
"|" { return PIPE; }
"&&" { return ANDAND; }
"||" { return OROR; }
"?" { return QUESTION; }
":" { return COLON; }
"=" { return EQUALS; }
"*=" { return STAREQUALS; }
"/=" { return SLASHEQUALS; }
"%=" { return PERCENTEQUALS; }
"+=" { return PLUSEQUALS; }
"-=" { return MINUSEQUALS; }
"<<=" { return LSHIFTEQUALS; }
">>=" { return RSHIFTEQUALS; }
"&=" { return ANDEQUALS; }
"^=" { return CARETEQUALS; }
"|=" { return PIPEEQUALS; }
"," { return COMMA; }
"#" { return HASH; }
"##" { return HASHHASH; }
/* additional punctuators */
"{" { return LBRACE; }
"}" { return RBRACE; }
";" { return SEMICOLON; }
"..." { return DOTDOTDOT; }
|