blob: 430f8d8217cc6a53d8ec9687ef5cadb7f895ef4e (
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
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
|
/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
".syntax source;\n"
".emtcode ESCAPE_TOKEN 0\n"
".emtcode TOKEN_END 0\n"
".emtcode TOKEN_DEFINE 1\n"
".emtcode TOKEN_UNDEF 2\n"
".emtcode TOKEN_IF 3\n"
".emtcode TOKEN_ELSE 4\n"
".emtcode TOKEN_ELIF 5\n"
".emtcode TOKEN_ENDIF 6\n"
".emtcode TOKEN_ERROR 7\n"
".emtcode TOKEN_PRAGMA 8\n"
".emtcode TOKEN_EXTENSION 9\n"
".emtcode TOKEN_LINE 10\n"
".emtcode PARAM_END 0\n"
".emtcode PARAM_PARAMETER 1\n"
".emtcode BEHAVIOR_REQUIRE 1\n"
".emtcode BEHAVIOR_ENABLE 2\n"
".emtcode BEHAVIOR_WARN 3\n"
".emtcode BEHAVIOR_DISABLE 4\n"
".emtcode PRAGMA_NO_PARAM 0\n"
".emtcode PRAGMA_PARAM 1\n"
"source\n"
" optional_directive .and .loop source_element .and '\\0' .emit ESCAPE_TOKEN .emit TOKEN_END;\n"
"source_element\n"
" c_style_comment_block .or cpp_style_comment_block .or new_line_directive .or source_token;\n"
"c_style_comment_block\n"
" '/' .and '*' .and c_style_comment_rest .and .true .emit ' ';\n"
"c_style_comment_rest\n"
" .loop c_style_comment_body .and c_style_comment_end;\n"
"c_style_comment_body\n"
" c_style_comment_char_nostar .or c_style_comment_char_star_noslashstar;\n"
"c_style_comment_char_nostar\n"
" new_line .or '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\n"
"c_style_comment_char_star_noslashstar\n"
" '*' .and c_style_comment_char_star_noslashstar_1;\n"
"c_style_comment_char_star_noslashstar_1\n"
" c_style_comment_char_noslashstar .or c_style_comment_char_star_noslashstar;\n"
"c_style_comment_char_noslashstar\n"
" new_line .or '\\x30'-'\\xFF' .or '\\x01'-'\\x29' .or '\\x2B'-'\\x2E';\n"
"c_style_comment_end\n"
" '*' .and .loop c_style_comment_char_star .and '/';\n"
"c_style_comment_char_star\n"
" '*';\n"
"cpp_style_comment_block\n"
" '/' .and '/' .and cpp_style_comment_block_1;\n"
"cpp_style_comment_block_1\n"
" cpp_style_comment_block_2 .or cpp_style_comment_block_3;\n"
"cpp_style_comment_block_2\n"
" .loop cpp_style_comment_char .and new_line_directive;\n"
"cpp_style_comment_block_3\n"
" .loop cpp_style_comment_char;\n"
"cpp_style_comment_char\n"
" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n"
"new_line_directive\n"
" new_line .and optional_directive;\n"
"new_line\n"
" generic_new_line .emit '\\n';\n"
"generic_new_line\n"
" carriage_return_line_feed .or line_feed_carriage_return .or '\\n' .or '\\r';\n"
"carriage_return_line_feed\n"
" '\\r' .and '\\n';\n"
"line_feed_carriage_return\n"
" '\\n' .and '\\r';\n"
"optional_directive\n"
" directive .emit ESCAPE_TOKEN .or .true;\n"
"directive\n"
" dir_define .emit TOKEN_DEFINE .or\n"
" dir_undef .emit TOKEN_UNDEF .or\n"
" dir_if .emit TOKEN_IF .or\n"
" dir_ifdef .emit TOKEN_IF .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e' .emit 'd'\n"
" .emit ' ' .or\n"
" dir_ifndef .emit TOKEN_IF .emit '!' .emit 'd' .emit 'e' .emit 'f' .emit 'i' .emit 'n' .emit 'e'\n"
" .emit 'd' .emit ' ' .or\n"
" dir_else .emit TOKEN_ELSE .or\n"
" dir_elif .emit TOKEN_ELIF .or\n"
" dir_endif .emit TOKEN_ENDIF .or\n"
" dir_ext .emit TOKEN_EXTENSION .or\n"
" dir_pragma .emit TOKEN_PRAGMA .or\n"
" dir_line .emit TOKEN_LINE;\n"
"dir_define\n"
" optional_space .and '#' .and optional_space .and \"define\" .and symbol .and opt_parameters .and\n"
" definition;\n"
"dir_undef\n"
" optional_space .and '#' .and optional_space .and \"undef\" .and symbol;\n"
"dir_if\n"
" optional_space .and '#' .and optional_space .and \"if\" .and expression;\n"
"dir_ifdef\n"
" optional_space .and '#' .and optional_space .and \"ifdef\" .and symbol;\n"
"dir_ifndef\n"
" optional_space .and '#' .and optional_space .and \"ifndef\" .and symbol;\n"
"dir_else\n"
" optional_space .and '#' .and optional_space .and \"else\";\n"
"dir_elif\n"
" optional_space .and '#' .and optional_space .and \"elif\" .and expression;\n"
"dir_endif\n"
" optional_space .and '#' .and optional_space .and \"endif\";\n"
"dir_ext\n"
" optional_space .and '#' .and optional_space .and \"extension\" .and space .and extension_name .and\n"
" optional_space .and ':' .and optional_space .and extension_behavior;\n"
"dir_line\n"
" optional_space .and '#' .and optional_space .and \"line\" .and expression;\n"
"dir_pragma\n"
" optional_space .and '#' .and optional_space .and \"pragma\" .and symbol .and opt_pragma_param;\n"
"opt_pragma_param\n"
" pragma_param .or .true .emit PRAGMA_NO_PARAM;\n"
"pragma_param\n"
" optional_space .and '(' .emit PRAGMA_PARAM .and optional_space .and symbol_no_space .and optional_space .and ')';\n"
"symbol_no_space\n"
" symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\n"
"symbol\n"
" space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\n"
"opt_parameters\n"
" parameters .or .true .emit PARAM_END;\n"
"parameters\n"
" '(' .and parameters_1 .and optional_space .and ')' .emit PARAM_END;\n"
"parameters_1\n"
" parameters_2 .or .true;\n"
"parameters_2\n"
" parameter .emit PARAM_PARAMETER .and .loop parameters_3;\n"
"parameters_3\n"
" optional_space .and ',' .and parameter .emit PARAM_PARAMETER;\n"
"parameter\n"
" optional_space .and symbol_character .emit * .and .loop symbol_character2 .emit * .and\n"
" .true .emit '\\0';\n"
"definition\n"
" .loop definition_character .emit * .and .true .emit '\\0';\n"
"definition_character\n"
" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n"
"expression\n"
" expression_element .and .loop expression_element .and .true .emit '\\0';\n"
"expression_element\n"
" expression_character .emit *;\n"
"expression_character\n"
" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n"
"extension_name\n"
" symbol_character .emit * .and .loop symbol_character2 .emit * .and .true .emit '\\0';\n"
"extension_behavior\n"
" \"require\" .emit BEHAVIOR_REQUIRE .or\n"
" \"enable\" .emit BEHAVIOR_ENABLE .or\n"
" \"warn\" .emit BEHAVIOR_WARN .or\n"
" \"disable\" .emit BEHAVIOR_DISABLE;\n"
"optional_space\n"
" .loop single_space;\n"
"space\n"
" single_space .and .loop single_space;\n"
"single_space\n"
" ' ' .or '\\t';\n"
"source_token\n"
" space .emit ' ' .or complex_token .or source_token_1;\n"
"source_token_1\n"
" simple_token .emit ' ' .and .true .emit ' ';\n"
"complex_token\n"
" identifier .or number;\n"
"simple_token\n"
" increment .or decrement .or lequal .or gequal .or equal .or nequal .or and .or xor .or or .or\n"
" addto .or subtractfrom .or multiplyto .or divideto .or other;\n"
"identifier\n"
" identifier_char1 .emit * .and .loop identifier_char2 .emit *;\n"
"identifier_char1\n"
" 'a'-'z' .or 'A'-'Z' .or '_';\n"
"identifier_char2\n"
" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\n"
"number\n"
" float .or integer;\n"
"digit_oct\n"
" '0'-'7';\n"
"digit_dec\n"
" '0'-'9';\n"
"digit_hex\n"
" '0'-'9' .or 'A'-'F' .or 'a'-'f';\n"
"float\n"
" float_1 .or float_2;\n"
"float_1\n"
" float_fractional_constant .and float_optional_exponent_part;\n"
"float_2\n"
" float_digit_sequence .and float_exponent_part;\n"
"float_fractional_constant\n"
" float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;\n"
"float_fractional_constant_1\n"
" float_digit_sequence .and '.' .emit '.' .and float_digit_sequence;\n"
"float_fractional_constant_2\n"
" float_digit_sequence .and '.' .emit '.';\n"
"float_fractional_constant_3\n"
" '.' .emit '.' .and float_digit_sequence;\n"
"float_optional_exponent_part\n"
" float_exponent_part .or .true;\n"
"float_digit_sequence\n"
" digit_dec .emit * .and .loop digit_dec .emit *;\n"
"float_exponent_part\n"
" float_exponent_part_1 .or float_exponent_part_2;\n"
"float_exponent_part_1\n"
" 'e' .emit 'e' .and float_optional_sign .and float_digit_sequence;\n"
"float_exponent_part_2\n"
" 'E' .emit 'E' .and float_optional_sign .and float_digit_sequence;\n"
"float_optional_sign\n"
" '+' .emit '+' .or '-' .emit '-' .or .true;\n"
"integer\n"
" integer_hex .or integer_oct .or integer_dec;\n"
"integer_hex\n"
" '0' .emit '0' .and integer_hex_1 .emit * .and digit_hex .emit * .and\n"
" .loop digit_hex .emit *;\n"
"integer_hex_1\n"
" 'x' .or 'X';\n"
"integer_oct\n"
" '0' .emit '0' .and .loop digit_oct .emit *;\n"
"integer_dec\n"
" digit_dec .emit * .and .loop digit_dec .emit *;\n"
"increment\n"
" '+' .emit * .and '+' .emit *;\n"
"decrement\n"
" '-' .emit * .and '-' .emit *;\n"
"lequal\n"
" '<' .emit * .and '=' .emit *;\n"
"gequal\n"
" '>' .emit * .and '=' .emit *;\n"
"equal\n"
" '=' .emit * .and '=' .emit *;\n"
"nequal\n"
" '!' .emit * .and '=' .emit *;\n"
"and\n"
" '&' .emit * .and '&' .emit *;\n"
"xor\n"
" '^' .emit * .and '^' .emit *;\n"
"or\n"
" '|' .emit * .and '|' .emit *;\n"
"addto\n"
" '+' .emit * .and '=' .emit *;\n"
"subtractfrom\n"
" '-' .emit * .and '=' .emit *;\n"
"multiplyto\n"
" '*' .emit * .and '=' .emit *;\n"
"divideto\n"
" '/' .emit * .and '=' .emit *;\n"
"other\n"
" '\\x24'-'\\xFF' .emit * .or '\\x01'-'\\x22' .emit *;\n"
"symbol_character\n"
" 'A'-'Z' .or 'a'-'z' .or '_';\n"
"symbol_character2\n"
" 'A'-'Z' .or 'a'-'z' .or '0'-'9' .or '_';\n"
".string string_lexer;\n"
"string_lexer\n"
" lex_first_identifier_character .and .loop lex_next_identifier_character;\n"
"lex_first_identifier_character\n"
" 'a'-'z' .or 'A'-'Z' .or '_';\n"
"lex_next_identifier_character\n"
" 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\n"
""
|