1
2 #line 3 "lacheck.c"
3
4 #define YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 39
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
34
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
37 */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t;
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56
57 /* Limits of integral types. */
58 #ifndef INT8_MIN
59 #define INT8_MIN (-128)
60 #endif
61 #ifndef INT16_MIN
62 #define INT16_MIN (-32767-1)
63 #endif
64 #ifndef INT32_MIN
65 #define INT32_MIN (-2147483647-1)
66 #endif
67 #ifndef INT8_MAX
68 #define INT8_MAX (127)
69 #endif
70 #ifndef INT16_MAX
71 #define INT16_MAX (32767)
72 #endif
73 #ifndef INT32_MAX
74 #define INT32_MAX (2147483647)
75 #endif
76 #ifndef UINT8_MAX
77 #define UINT8_MAX (255U)
78 #endif
79 #ifndef UINT16_MAX
80 #define UINT16_MAX (65535U)
81 #endif
82 #ifndef UINT32_MAX
83 #define UINT32_MAX (4294967295U)
84 #endif
85
86 #endif /* ! C99 */
87
88 #endif /* ! FLEXINT_H */
89
90 #ifdef __cplusplus
91
92 /* The "const" storage-class-modifier is valid. */
93 #define YY_USE_CONST
94
95 #else /* ! __cplusplus */
96
97 /* C99 requires __STDC__ to be defined as 1. */
98 #if defined (__STDC__)
99
100 #define YY_USE_CONST
101
102 #endif /* defined (__STDC__) */
103 #endif /* ! __cplusplus */
104
105 #ifdef YY_USE_CONST
106 #define yyconst const
107 #else
108 #define yyconst
109 #endif
110
111 /* Returned upon end-of-file. */
112 #define YY_NULL 0
113
114 /* Promotes a possibly negative, possibly signed char to an unsigned
115 * integer for use as an array index. If the signed char is negative,
116 * we want to instead treat it as an 8-bit unsigned char, hence the
117 * double cast.
118 */
119 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
120
121 /* Enter a start condition. This macro really ought to take a parameter,
122 * but we do it the disgusting crufty way forced on us by the ()-less
123 * definition of BEGIN.
124 */
125 #define BEGIN (yy_start) = 1 + 2 *
126
127 /* Translate the current start state into a value that can be later handed
128 * to BEGIN to return to the state. The YYSTATE alias is for lex
129 * compatibility.
130 */
131 #define YY_START (((yy_start) - 1) / 2)
132 #define YYSTATE YY_START
133
134 /* Action number for EOF rule of a given start state. */
135 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
136
137 /* Special action meaning "start processing a new file". */
138 #define YY_NEW_FILE yyrestart(yyin )
139
140 #define YY_END_OF_BUFFER_CHAR 0
141
142 /* Size of default input buffer. */
143 #ifndef YY_BUF_SIZE
144 #define YY_BUF_SIZE 16384
145 #endif
146
147 /* The state buf must be large enough to hold one state per character in the main buffer.
148 */
149 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
150
151 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
152 #define YY_TYPEDEF_YY_BUFFER_STATE
153 typedef struct yy_buffer_state *YY_BUFFER_STATE;
154 #endif
155
156 #ifndef YY_TYPEDEF_YY_SIZE_T
157 #define YY_TYPEDEF_YY_SIZE_T
158 typedef size_t yy_size_t;
159 #endif
160
161 extern yy_size_t yyleng;
162
163 extern FILE *yyin, *yyout;
164
165 #define EOB_ACT_CONTINUE_SCAN 0
166 #define EOB_ACT_END_OF_FILE 1
167 #define EOB_ACT_LAST_MATCH 2
168
169 #define YY_LESS_LINENO(n)
170 #define YY_LINENO_REWIND_TO(ptr)
171
172 /* Return all but the first "n" matched characters back to the input stream. */
173 #define yyless(n) \
174 do \
175 { \
176 /* Undo effects of setting up yytext. */ \
177 int yyless_macro_arg = (n); \
178 YY_LESS_LINENO(yyless_macro_arg);\
179 *yy_cp = (yy_hold_char); \
180 YY_RESTORE_YY_MORE_OFFSET \
181 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
182 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
183 } \
184 while ( 0 )
185
186 #define unput(c) yyunput( c, (yytext_ptr) )
187
188 #ifndef YY_STRUCT_YY_BUFFER_STATE
189 #define YY_STRUCT_YY_BUFFER_STATE
190 struct yy_buffer_state
191 {
192 FILE *yy_input_file;
193
194 char *yy_ch_buf; /* input buffer */
195 char *yy_buf_pos; /* current position in input buffer */
196
197 /* Size of input buffer in bytes, not including room for EOB
198 * characters.
199 */
200 yy_size_t yy_buf_size;
201
202 /* Number of characters read into yy_ch_buf, not including EOB
203 * characters.
204 */
205 yy_size_t yy_n_chars;
206
207 /* Whether we "own" the buffer - i.e., we know we created it,
208 * and can realloc() it to grow it, and should free() it to
209 * delete it.
210 */
211 int yy_is_our_buffer;
212
213 /* Whether this is an "interactive" input source; if so, and
214 * if we're using stdio for input, then we want to use getc()
215 * instead of fread(), to make sure we stop fetching input after
216 * each newline.
217 */
218 int yy_is_interactive;
219
220 /* Whether we're considered to be at the beginning of a line.
221 * If so, '^' rules will be active on the next match, otherwise
222 * not.
223 */
224 int yy_at_bol;
225
226 int yy_bs_lineno; /**< The line count. */
227 int yy_bs_column; /**< The column count. */
228
229 /* Whether to try to fill the input buffer when we reach the
230 * end of it.
231 */
232 int yy_fill_buffer;
233
234 int yy_buffer_status;
235
236 #define YY_BUFFER_NEW 0
237 #define YY_BUFFER_NORMAL 1
238 /* When an EOF's been seen but there's still some text to process
239 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
240 * shouldn't try reading from the input source any more. We might
241 * still have a bunch of tokens to match, though, because of
242 * possible backing-up.
243 *
244 * When we actually see the EOF, we change the status to "new"
245 * (via yyrestart()), so that the user can continue scanning by
246 * just pointing yyin at a new input file.
247 */
248 #define YY_BUFFER_EOF_PENDING 2
249
250 };
251 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
252
253 /* Stack of input buffers. */
254 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
255 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
256 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
257
258 /* We provide macros for accessing buffer states in case in the
259 * future we want to put the buffer states in a more general
260 * "scanner state".
261 *
262 * Returns the top of the stack, or NULL.
263 */
264 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
265 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
266 : NULL)
267
268 /* Same as previous macro, but useful when we know that the buffer stack is not
269 * NULL or when we need an lvalue. For internal use only.
270 */
271 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
272
273 /* yy_hold_char holds the character lost when yytext is formed. */
274 static char yy_hold_char;
275 static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
276 yy_size_t yyleng;
277
278 /* Points to current character in buffer. */
279 static char *yy_c_buf_p = (char *) 0;
280 static int yy_init = 0; /* whether we need to initialize */
281 static int yy_start = 0; /* start state number */
282
283 /* Flag which is used to allow yywrap()'s to do buffer switches
284 * instead of setting up a fresh yyin. A bit of a hack ...
285 */
286 static int yy_did_buffer_switch_on_eof;
287
288 void yyrestart (FILE *input_file );
289 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
290 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
291 void yy_delete_buffer (YY_BUFFER_STATE b );
292 void yy_flush_buffer (YY_BUFFER_STATE b );
293 void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
294 void yypop_buffer_state (void );
295
296 static void yyensure_buffer_stack (void );
297 static void yy_load_buffer_state (void );
298 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
299
300 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
301
302 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
303 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
304 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
305
306 void *yyalloc (yy_size_t );
307 void *yyrealloc (void *,yy_size_t );
308 void yyfree (void * );
309
310 #define yy_new_buffer yy_create_buffer
311
312 #define yy_set_interactive(is_interactive) \
313 { \
314 if ( ! YY_CURRENT_BUFFER ){ \
315 yyensure_buffer_stack (); \
316 YY_CURRENT_BUFFER_LVALUE = \
317 yy_create_buffer(yyin,YY_BUF_SIZE ); \
318 } \
319 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
320 }
321
322 #define yy_set_bol(at_bol) \
323 { \
324 if ( ! YY_CURRENT_BUFFER ){\
325 yyensure_buffer_stack (); \
326 YY_CURRENT_BUFFER_LVALUE = \
327 yy_create_buffer(yyin,YY_BUF_SIZE ); \
328 } \
329 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
330 }
331
332 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
333
334 /* Begin user sect3 */
335
336 typedef unsigned char YY_CHAR;
337
338 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
339
340 typedef int yy_state_type;
341
342 extern int yylineno;
343
344 int yylineno = 1;
345
346 extern char *yytext;
347 #define yytext_ptr yytext
348
349 static yy_state_type yy_get_previous_state (void );
350 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
351 static int yy_get_next_buffer (void );
352 static void yy_fatal_error (yyconst char msg[] );
353
354 /* Done after the current pattern has been matched and before the
355 * corresponding action - sets up yytext.
356 */
357 #define YY_DO_BEFORE_ACTION \
358 (yytext_ptr) = yy_bp; \
359 yyleng = (size_t) (yy_cp - yy_bp); \
360 (yy_hold_char) = *yy_cp; \
361 *yy_cp = '\0'; \
362 (yy_c_buf_p) = yy_cp;
363
364 #define YY_NUM_RULES 88
365 #define YY_END_OF_BUFFER 89
366 /* This struct is not used in this scanner,
367 but its presence is necessary. */
368 struct yy_trans_info
369 {
370 flex_int32_t yy_verify;
371 flex_int32_t yy_nxt;
372 };
373 static yyconst flex_int16_t yy_acclist[361] =
374 { 0,
375 89, 87, 88, 87, 88, 4, 88, 87, 88, 43,
376 87, 88, 81, 87, 88, 87, 88, 87, 88, 87,
377 88, 87, 88, 87, 88, 9, 87, 88, 10, 87,
378 88, 87, 88, 87, 88, 87, 88, 87, 88, 87,
379 88, 87, 88, 49, 88, 88, 49, 88, 59, 88,
380 59, 88, 52, 88, 51, 52, 88, 53, 88, 52,
381 88, 85, 88, 85, 88, 88, 83, 88, 82, 88,
382 83, 88, 56, 88, 55, 88, 56, 88, 31, 88,
383 4, 88, 31, 88, 31, 88, 29, 31, 88, 30,
384 31, 88, 41, 88, 40, 41, 88, 41, 88, 35,
385
386 88, 35, 88, 35, 88, 33, 35, 88, 34, 35,
387 88, 27, 88, 25, 27, 88, 4, 25, 88, 13,
388 27, 88, 27, 88, 13, 27, 88, 24, 27, 88,
389 24, 27, 88, 13, 27, 88, 27, 88, 13, 27,
390 88, 9, 27, 88, 11, 27, 88, 26, 27, 88,
391 12, 27, 88, 12, 27, 88, 27, 88, 27, 88,
392 12, 27, 88, 27, 88, 12, 27, 88, 10, 27,
393 88, 80, 63, 42, 44, 3, 79, 7, 2, 36,
394 37, 17, 38, 1, 39, 5, 6,16445, 8, 63,
395 79,16445, 49, 1, 49, 59, 1, 59, 1, 85,
396
397 1, 85, 80, 13, 13, 13, 79, 13, 18, 13,
398 12, 12, 12, 16, 12, 78,16444, 3, 66, 68,
399 16446,16445, 77, 77, 77, 14, 68,16446,16445, 78,
400 16444, 13,16446, 12,16446,16460,16460, 15,16444, 3,
401 3,16460,16460, 77, 77, 73, 73, 77, 22, 22,
402 77, 19, 19, 77, 8253, 25,16444, 23, 67, 67,
403 8268, 67, 67, 8252, 67, 3, 67, 8268, 8254, 28,
404 28, 77, 28, 58, 57, 8, 63, 67, 67, 67,
405 67, 71, 3, 3, 67, 28, 77, 28, 77, 74,
406 74, 74, 77, 74, 74, 54, 54, 54, 77, 54,
407
408 67, 67, 67, 70, 3, 67, 3, 48, 47, 9,
409 10, 84, 74, 75, 75, 75, 77, 75, 75, 67,
410 29, 30, 33, 34, 9, 11, 10, 3, 64, 75,
411 3, 69, 65, 65, 65, 3, 65, 46, 46, 77,
412 86, 77, 86, 65, 72, 3, 65, 65, 65, 3,
413 45, 45, 77, 3, 20, 20, 77, 21, 50, 32
414 } ;
415
416 static yyconst flex_int16_t yy_accept[954] =
417 { 0,
418 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
419 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
420 1, 1, 1, 1, 1, 1, 1, 2, 4, 6,
421 8, 10, 13, 16, 18, 20, 22, 24, 26, 29,
422 32, 34, 36, 38, 40, 42, 44, 46, 47, 49,
423 51, 53, 55, 58, 60, 62, 64, 66, 67, 69,
424 71, 73, 75, 77, 79, 81, 83, 85, 87, 90,
425 93, 95, 98, 100, 102, 104, 106, 109, 112, 114,
426 117, 120, 123, 125, 128, 131, 134, 137, 139, 142,
427 145, 148, 151, 154, 157, 159, 161, 164, 166, 169,
428
429 172, 172, 172, 172, 172, 173, 173, 173, 173, 173,
430 173, 173, 173, 174, 174, 174, 175, 175, 176, 176,
431 177, 177, 177, 177, 177, 177, 177, 177, 178, 178,
432 179, 180, 181, 182, 183, 183, 183, 184, 185, 186,
433 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
434 186, 186, 186, 186, 186, 186, 187, 188, 189, 189,
435 190, 191, 191, 191, 191, 191, 191, 191, 191, 191,
436 192, 192, 193, 193, 194, 196, 197, 199, 200, 200,
437 201, 203, 203, 203, 203, 203, 204, 204, 204, 204,
438 204, 205, 206, 208, 209, 210, 210, 210, 210, 210,
439
440 210, 210, 210, 211, 212, 213, 214, 215, 215, 215,
441 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
442 216, 216, 216, 216, 216, 216, 217, 217, 217, 217,
443 217, 217, 217, 217, 217, 217, 218, 218, 218, 218,
444 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
445 219, 219, 219, 219, 219, 220, 220, 220, 220, 221,
446 222, 223, 224, 225, 226, 226, 226, 226, 226, 226,
447 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
448 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
449 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
450
451 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
452 226, 227, 228, 229, 230, 230, 230, 230, 230, 230,
453 230, 230, 230, 230, 230, 231, 231, 231, 231, 232,
454 234, 234, 234, 234, 234, 234, 234, 234, 234, 236,
455 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
456 236, 237, 238, 238, 238, 238, 238, 239, 239, 239,
457 239, 239, 239, 239, 239, 240, 240, 240, 240, 240,
458 240, 240, 240, 241, 241, 241, 241, 242, 242, 242,
459 242, 242, 243, 244, 244, 244, 244, 244, 244, 244,
460 244, 244, 244, 244, 244, 244, 244, 244, 245, 246,
461
462 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
463 247, 249, 249, 249, 249, 249, 249, 249, 249, 249,
464 250, 252, 252, 252, 252, 252, 252, 252, 252, 253,
465 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
466 255, 255, 255, 255, 255, 256, 256, 256, 256, 256,
467 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
468 256, 256, 256, 256, 256, 256, 256, 256, 256, 257,
469 258, 258, 258, 258, 258, 259, 259, 259, 259, 259,
470 259, 259, 259, 259, 259, 260, 260, 260, 261, 261,
471 261, 261, 262, 262, 262, 262, 262, 262, 262, 262,
472
473 262, 262, 262, 262, 263, 264, 264, 264, 264, 264,
474 264, 265, 265, 265, 265, 265, 265, 266, 266, 267,
475 267, 268, 268, 268, 268, 269, 269, 269, 269, 269,
476 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
477 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
478 270, 270, 270, 271, 273, 274, 274, 274, 274, 274,
479 274, 275, 275, 275, 275, 276, 276, 276, 276, 276,
480 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
481 276, 276, 276, 276, 277, 278, 278, 278, 278, 278,
482 278, 278, 278, 279, 280, 280, 280, 280, 280, 280,
483
484 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
485 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
486 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
487 281, 281, 282, 282, 283, 283, 283, 283, 283, 284,
488 285, 285, 285, 286, 286, 286, 286, 286, 286, 286,
489 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
490 286, 286, 286, 286, 288, 290, 290, 290, 290, 290,
491 290, 290, 290, 290, 290, 290, 290, 291, 292, 292,
492 294, 295, 296, 296, 296, 296, 296, 296, 296, 296,
493 297, 298, 300, 301, 301, 301, 301, 301, 301, 301,
494
495 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
496 302, 302, 302, 302, 302, 302, 302, 303, 303, 303,
497 303, 303, 303, 303, 304, 304, 304, 305, 306, 306,
498 307, 308, 308, 308, 308, 308, 308, 308, 308, 308,
499 308, 308, 309, 309, 309, 310, 311, 311, 311, 311,
500 311, 311, 311, 311, 312, 312, 312, 312, 312, 313,
501 313, 314, 314, 314, 314, 314, 315, 316, 316, 318,
502 319, 320, 320, 320, 320, 321, 321, 321, 322, 323,
503 324, 325, 326, 327, 327, 328, 328, 328, 328, 328,
504 328, 328, 328, 329, 329, 329, 329, 329, 329, 330,
505
506 330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
507 330, 330, 330, 330, 330, 331, 331, 331, 331, 331,
508 331, 331, 331, 331, 331, 331, 331, 331, 331, 332,
509 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
510 332, 332, 332, 332, 333, 333, 333, 333, 333, 333,
511 333, 333, 333, 334, 334, 334, 335, 335, 335, 335,
512 335, 336, 336, 337, 337, 338, 338, 338, 338, 338,
513 338, 338, 338, 338, 338, 338, 338, 339, 341, 342,
514 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
515 344, 345, 345, 345, 346, 347, 347, 347, 348, 348,
516
517 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
518 348, 348, 348, 348, 348, 349, 349, 349, 349, 349,
519 350, 351, 351, 351, 351, 351, 351, 351, 352, 354,
520 354, 354, 354, 354, 354, 354, 354, 355, 355, 355,
521 355, 356, 358, 358, 359, 359, 360, 360, 360, 360,
522 360, 361, 361
523 } ;
524
525 static yyconst flex_int32_t yy_ec[256] =
526 { 0,
527 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
528 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
529 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
530 1, 4, 5, 6, 6, 7, 8, 6, 9, 10,
531 11, 12, 13, 14, 15, 16, 17, 18, 18, 18,
532 18, 18, 18, 18, 18, 18, 18, 19, 20, 6,
533 6, 6, 21, 22, 23, 23, 23, 23, 23, 23,
534 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
535 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
536 24, 25, 26, 6, 1, 27, 28, 29, 30, 31,
537
538 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
539 42, 43, 37, 44, 45, 46, 47, 48, 49, 50,
540 51, 37, 52, 1, 53, 54, 1, 1, 1, 1,
541 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
547 1, 1, 1, 1, 1, 1, 55, 55, 1, 1,
548
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 55, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 1, 1, 1, 56, 56,
552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 56, 1, 1,
554 1, 1, 1, 1, 1
555 } ;
556
557 static yyconst flex_int32_t yy_meta[57] =
558 { 0,
559 1, 2, 3, 2, 4, 1, 5, 6, 7, 8,
560 8, 1, 1, 9, 1, 10, 1, 8, 8, 8,
561 11, 12, 13, 1, 14, 1, 15, 16, 16, 16,
562 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
563 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
564 16, 17, 18, 19, 20, 21
565 } ;
566
567 static yyconst flex_int16_t yy_base[1045] =
568 { 0,
569 0, 56, 110, 111, 112, 113, 115, 117, 118, 119,
570 5108, 5107, 120, 121, 122, 123, 124, 126, 134, 136,
571 150, 159, 212, 0, 268, 0, 5131, 155, 323, 179,
572 179, 180, 171, 378, 181, 361, 410, 373, 187, 184,
573 462, 405, 465, 478, 515, 360, 0, 5134, 5105, 0,
574 5104, 5134, 5134, 5134, 167, 0, 5103, 5102, 5134, 5134,
575 5101, 5134, 5134, 5100, 5134, 5134, 5121, 470, 5134, 5134,
576 5134, 5134, 5098, 5134, 5119, 475, 5134, 5134, 315, 570,
577 624, 388, 472, 397, 322, 569, 675, 714, 758, 507,
578 324, 585, 463, 583, 589, 593, 809, 373, 860, 385,
579
580 618, 612, 660, 667, 657, 0, 914, 688, 701, 940,
581 968, 5105, 5134, 704, 719, 5134, 571, 5134, 5113, 5134,
582 712, 1012, 784, 745, 779, 5086, 817, 5134, 596, 5134,
583 5134, 5134, 5134, 5134, 5072, 5069, 5134, 814, 5134, 462,
584 474, 853, 545, 860, 384, 688, 109, 491, 369, 645,
585 711, 134, 570, 401, 719, 5134, 5134, 801, 891, 5065,
586 5062, 987, 865, 901, 1018, 5001, 414, 1035, 796, 1043,
587 897, 1067, 838, 0, 0, 0, 0, 5134, 4956, 0,
588 0, 4934, 4931, 4900, 4879, 5134, 0, 4883, 619, 729,
589 766, 1114, 782, 823, 5134, 4840, 596, 4762, 4774, 4703,
590
591 462, 4684, 837, 801, 1115, 913, 5134, 597, 4671, 939,
592 1059, 1130, 1010, 4649, 4621, 4594, 4587, 4535, 4487, 4485,
593 4447, 0, 1139, 4455, 4448, 1169, 1150, 1196, 1209, 1249,
594 4414, 4393, 4346, 128, 559, 990, 1304, 4323, 1230, 1311,
595 1189, 1314, 536, 170, 468, 509, 382, 694, 390, 565,
596 786, 0, 1143, 1335, 5134, 1326, 1241, 4290, 5134, 1003,
597 1062, 4298, 4297, 4296, 624, 467, 677, 753, 452, 696,
598 714, 803, 1102, 1372, 632, 808, 1128, 313, 813, 1428,
599 734, 914, 880, 784, 909, 1194, 1484, 178, 749, 601,
600 855, 1145, 926, 976, 989, 996, 1104, 1051, 1238, 1299,
601
602 980, 1300, 0, 0, 1016, 0, 4299, 1539, 1564, 1532,
603 5134, 1571, 1580, 1590, 1596, 1599, 1623, 4298, 4282, 4268,
604 4267, 4266, 4265, 4305, 4297, 1070, 1308, 1540, 1673, 1606,
605 4261, 4256, 0, 0, 4270, 4254, 4265, 4243, 1678, 4242,
606 0, 4220, 1066, 0, 4229, 1685, 1698, 1333, 1702, 4191,
607 1269, 1634, 4183, 4167, 4190, 0, 5134, 1727, 1717, 0,
608 1736, 1743, 1781, 1345, 1751, 4148, 4139, 4141, 1761, 1806,
609 4122, 1796, 1211, 4150, 1192, 1814, 1822, 1776, 1824, 1846,
610 906, 1768, 1771, 1204, 1077, 0, 4113, 4147, 1682, 0,
611 1850, 4118, 87, 4072, 4045, 1853, 1711, 4044, 4039, 558,
612
613 1234, 1129, 844, 1288, 1164, 1310, 1313, 1105, 1300, 5134,
614 4038, 1547, 1329, 1908, 1523, 1522, 1179, 1242, 1139, 5134,
615 4037, 1963, 1536, 1584, 1589, 1597, 867, 1032, 5134, 4035,
616 1528, 1601, 1694, 1669, 1608, 1661, 1719, 1195, 1592, 1662,
617 1727, 1225, 1367, 1856, 5134, 1864, 1856, 4053, 4050, 4024,
618 4048, 1878, 0, 1881, 1966, 2015, 1882, 1979, 2040, 1986,
619 2047, 2050, 4034, 1809, 4006, 4005, 4004, 4003, 2094, 1888,
620 2058, 2076, 4002, 4001, 5134, 4010, 4001, 4010, 4010, 3996,
621 3997, 0, 3986, 3950, 5134, 1879, 3913, 3912, 1973, 3883,
622 2004, 5134, 3887, 3882, 2084, 3917, 2104, 1951, 0, 1681,
623
624 3916, 2119, 3901, 2010, 2022, 3868, 0, 3883, 2126, 2133,
625 5134, 2151, 3878, 3907, 1799, 3905, 3904, 2056, 1978, 1748,
626 1874, 2136, 2004, 2143, 3903, 963, 1797, 3902, 2161, 0,
627 1963, 3901, 3842, 3840, 3842, 3837, 3829, 2164, 2148, 5134,
628 2158, 1745, 1810, 1823, 1998, 1695, 2176, 1847, 1875, 2219,
629 1769, 1938, 2254, 2284, 0, 2035, 2049, 1979, 2069, 2334,
630 5134, 3871, 1797, 2052, 5134, 2096, 2063, 2109, 1824, 2072,
631 2386, 2148, 2091, 2054, 2151, 2152, 2092, 2150, 2153, 2160,
632 2442, 1957, 2204, 3864, 3863, 3840, 2337, 0, 2172, 3866,
633 2344, 3854, 2347, 2353, 2497, 2500, 2507, 2510, 2307, 3819,
634
635 3819, 3818, 3817, 3812, 2525, 2534, 2541, 3811, 3810, 3813,
636 3818, 3813, 2545, 3776, 3790, 3814, 2595, 3802, 3808, 3802,
637 3758, 3751, 3769, 2598, 3764, 3748, 3787, 2605, 2614, 3775,
638 3783, 3782, 3743, 5134, 3748, 2623, 0, 3776, 2630, 3764,
639 2180, 3773, 3770, 2154, 2504, 2181, 2345, 3769, 2639, 3725,
640 3721, 3727, 3730, 3716, 2517, 2169, 2654, 2321, 2343, 2182,
641 2341, 3729, 2344, 0, 0, 2349, 3724, 2353, 2504, 3750,
642 2512, 2517, 2351, 2526, 2647, 2166, 5134, 2699, 0, 3727,
643 3726, 2657, 2484, 1852, 2519, 2509, 2524, 2750, 2664, 5134,
644 3732, 3721, 3720, 3705, 3732, 2669, 2676, 3717, 3722, 3721,
645
646 2805, 3690, 3676, 3672, 3669, 3662, 2689, 3647, 3641, 3617,
647 3624, 2808, 3605, 3604, 2545, 3639, 3638, 2700, 3591, 3590,
648 3584, 2813, 3619, 3618, 2816, 3574, 5134, 2628, 3612, 3611,
649 2823, 2560, 2341, 1719, 2824, 3335, 3347, 3333, 2832, 2582,
650 2848, 5134, 3374, 2593, 5134, 3354, 2597, 2346, 2659, 2588,
651 2618, 2673, 2687, 3353, 2623, 2665, 2188, 2688, 5134, 2899,
652 0, 2676, 2818, 2801, 2820, 5134, 2946, 0, 3352, 3351,
653 2861, 3327, 2868, 3368, 3367, 2871, 3325, 5134, 5134, 5134,
654 5134, 5134, 5134, 3323, 5134, 3322, 2688, 2879, 3321, 3320,
655 2906, 3318, 2836, 2888, 2672, 2840, 3318, 2913, 5134, 2904,
656
657 3359, 2641, 2831, 2693, 2845, 2837, 2873, 2865, 2996, 3308,
658 3357, 2189, 2900, 2689, 0, 3316, 2933, 3328, 3258, 3257,
659 3276, 3003, 2913, 3250, 3237, 3167, 2885, 3010, 3017, 2945,
660 2276, 1870, 2932, 0, 3030, 3166, 2169, 3160, 2908, 3055,
661 3111, 2903, 3134, 5134, 0, 2921, 2930, 2543, 3182, 3153,
662 3024, 3023, 5134, 3002, 3033, 3032, 3166, 2994, 2942, 0,
663 2891, 3168, 3015, 2953, 2957, 3170, 1323, 2998, 0, 3007,
664 2855, 2772, 2684, 2638, 2584, 2846, 5134, 2590, 5134, 2542,
665 2941, 3008, 3000, 2993, 0, 2471, 2473, 2402, 2370, 2277,
666 2275, 2107, 2099, 5134, 2024, 3172, 1971, 1969, 2819, 2030,
667
668 1839, 3175, 1714, 1598, 1589, 1529, 3200, 3235, 3158, 3022,
669 1523, 1525, 1334, 1308, 1228, 3256, 1128, 1112, 1046, 999,
670 3259, 2278, 3262, 3258, 895, 817, 687, 5134, 679, 3162,
671 3294, 615, 0, 0, 3260, 485, 3261, 2894, 428, 3248,
672 5134, 308, 155, 5134, 2920, 5134, 3329, 0, 75, 0,
673 0, 5134, 3381, 3402, 3423, 3444, 3465, 3486, 3507, 3528,
674 3549, 3570, 3591, 3604, 3624, 3645, 3666, 3687, 3707, 3725,
675 3743, 3761, 3779, 3799, 3820, 3840, 3262, 3264, 3860, 3881,
676 3896, 3908, 3929, 3950, 3971, 3992, 4013, 3275, 4033, 4042,
677 4063, 4084, 4105, 4126, 4135, 4156, 4177, 4198, 4219, 4240,
678
679 4261, 4281, 4301, 4322, 4343, 4364, 4385, 3340, 4406, 4427,
680 4448, 4469, 4490, 4511, 4532, 4553, 4574, 4595, 4616, 4637,
681 4658, 4679, 4700, 4721, 3342, 4742, 4763, 4784, 4805, 4826,
682 4847, 4868, 4889, 4910, 4931, 4952, 4973, 4994, 5015, 5036,
683 5057, 5078, 3176, 5099
684 } ;
685
686 static yyconst flex_int16_t yy_def[1045] =
687 { 0,
688 952, 952, 953, 953, 954, 954, 955, 955, 956, 956,
689 957, 957, 958, 958, 959, 959, 960, 960, 961, 961,
690 962, 962, 952, 23, 952, 25, 952, 952, 952, 29,
691 952, 952, 963, 952, 952, 964, 952, 964, 952, 952,
692 952, 965, 965, 965, 952, 45, 966, 952, 966, 967,
693 967, 952, 952, 952, 952, 968, 968, 952, 952, 952,
694 952, 952, 952, 952, 952, 952, 963, 952, 952, 952,
695 952, 952, 952, 952, 963, 952, 952, 952, 952, 969,
696 969, 970, 963, 970, 952, 952, 971, 952, 971, 952,
697 952, 952, 972, 972, 952, 952, 973, 88, 973, 952,
698
699 952, 952, 952, 952, 974, 975, 976, 974, 974, 952,
700 952, 110, 952, 952, 952, 952, 111, 952, 963, 952,
701 963, 963, 952, 952, 117, 952, 964, 952, 127, 952,
702 952, 952, 952, 952, 977, 978, 952, 952, 952, 978,
703 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
704 978, 978, 978, 978, 978, 952, 952, 979, 127, 952,
705 952, 952, 952, 965, 965, 117, 117, 965, 45, 965,
706 45, 952, 45, 966, 966, 967, 967, 952, 952, 968,
707 968, 952, 952, 952, 952, 952, 980, 981, 982, 982,
708 970, 89, 970, 89, 952, 952, 952, 952, 952, 952,
709
710 952, 952, 89, 972, 99, 99, 952, 952, 952, 99,
711 952, 983, 952, 952, 952, 952, 952, 952, 952, 952,
712 952, 984, 952, 952, 952, 976, 952, 985, 952, 952,
713 110, 110, 952, 952, 952, 230, 952, 952, 963, 952,
714 986, 963, 963, 963, 963, 963, 963, 963, 963, 963,
715 952, 987, 952, 952, 952, 952, 952, 952, 952, 952,
716 952, 988, 977, 988, 978, 978, 978, 978, 978, 978,
717 978, 978, 978, 952, 978, 978, 978, 978, 978, 952,
718 978, 978, 978, 978, 978, 978, 952, 978, 978, 978,
719 978, 978, 978, 978, 978, 978, 978, 978, 989, 989,
720
721 990, 990, 991, 992, 952, 993, 952, 952, 994, 952,
722 952, 965, 965, 965, 989, 989, 952, 317, 952, 952,
723 952, 952, 952, 952, 981, 995, 982, 982, 995, 970,
724 952, 952, 996, 997, 952, 952, 952, 952, 972, 952,
725 998, 952, 952, 999, 952, 983, 983, 952, 952, 952,
726 952, 952, 952, 952, 952, 1000, 952, 230, 952, 1001,
727 983, 1002, 985, 952, 1002, 952, 952, 952, 1003, 1003,
728 952, 963, 952, 1004, 963, 1005, 983, 1005, 963, 963,
729 963, 963, 963, 963, 963, 1006, 952, 952, 952, 1007,
730 952, 952, 952, 952, 952, 952, 952, 1008, 1008, 978,
731
732 978, 978, 978, 978, 978, 978, 978, 978, 978, 952,
733 1008, 978, 978, 952, 978, 978, 978, 978, 978, 952,
734 1008, 978, 978, 978, 978, 978, 978, 978, 952, 1008,
735 978, 978, 978, 978, 978, 978, 978, 978, 978, 978,
736 978, 978, 989, 989, 952, 989, 990, 952, 952, 952,
737 952, 952, 1009, 983, 965, 994, 952, 952, 952, 989,
738 989, 989, 317, 952, 952, 952, 952, 952, 995, 952,
739 1003, 1003, 952, 952, 952, 952, 952, 952, 952, 952,
740 952, 1010, 952, 952, 952, 983, 1011, 952, 983, 952,
741 952, 952, 952, 952, 952, 952, 952, 952, 1012, 952,
742
743 952, 983, 1013, 1002, 1002, 952, 1014, 952, 1003, 1003,
744 952, 1003, 952, 1015, 963, 963, 963, 1005, 983, 1016,
745 963, 1005, 963, 963, 963, 963, 963, 952, 952, 1017,
746 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
747 952, 978, 978, 978, 978, 978, 978, 978, 978, 952,
748 978, 978, 414, 414, 414, 978, 978, 978, 978, 952,
749 952, 1018, 978, 978, 952, 978, 978, 978, 978, 978,
750 952, 978, 978, 978, 978, 978, 978, 978, 978, 978,
751 952, 978, 989, 952, 952, 952, 952, 1019, 952, 952,
752 983, 1020, 965, 965, 952, 952, 952, 989, 952, 952,
753
754 952, 952, 952, 952, 1003, 1003, 1003, 952, 952, 952,
755 952, 952, 581, 952, 952, 952, 952, 1021, 952, 952,
756 952, 952, 952, 952, 952, 952, 952, 952, 952, 1022,
757 952, 952, 952, 952, 952, 1003, 1023, 963, 952, 952,
758 1024, 963, 963, 963, 963, 963, 952, 952, 952, 952,
759 952, 952, 952, 952, 952, 978, 978, 978, 978, 978,
760 978, 550, 978, 554, 554, 978, 550, 978, 978, 1018,
761 978, 978, 978, 978, 978, 978, 952, 571, 678, 1025,
762 978, 678, 978, 978, 978, 978, 978, 952, 978, 952,
763 613, 1025, 978, 952, 952, 952, 952, 1026, 952, 952,
764
765 952, 952, 952, 952, 952, 952, 1003, 952, 952, 952,
766 952, 952, 952, 952, 952, 952, 952, 983, 952, 952,
767 952, 952, 952, 952, 983, 952, 952, 952, 963, 963,
768 983, 963, 963, 963, 952, 952, 952, 952, 952, 978,
769 952, 952, 1027, 978, 952, 978, 978, 978, 978, 978,
770 978, 978, 978, 978, 978, 978, 978, 978, 952, 1028,
771 1029, 978, 978, 978, 978, 952, 688, 767, 1025, 978,
772 767, 952, 952, 952, 952, 983, 952, 952, 952, 952,
773 952, 952, 952, 952, 952, 952, 983, 1030, 952, 952,
774 983, 952, 983, 1031, 963, 963, 952, 952, 952, 952,
775
776 1027, 978, 978, 978, 978, 978, 978, 978, 1028, 1032,
777 952, 978, 978, 978, 1033, 952, 983, 952, 952, 952,
778 952, 1030, 952, 952, 952, 952, 963, 1031, 1030, 963,
779 963, 963, 952, 1034, 952, 952, 952, 952, 978, 952,
780 952, 978, 1032, 952, 678, 978, 978, 978, 952, 952,
781 952, 952, 952, 1030, 1035, 952, 1030, 952, 952, 1036,
782 963, 1031, 1030, 1037, 963, 1031, 963, 963, 1038, 952,
783 952, 952, 952, 952, 952, 978, 952, 1025, 952, 1025,
784 978, 978, 978, 978, 767, 952, 952, 952, 1039, 952,
785 952, 952, 952, 952, 952, 1040, 963, 963, 963, 963,
786
787 952, 952, 952, 952, 952, 952, 952, 978, 978, 978,
788 952, 952, 952, 952, 952, 1030, 952, 952, 963, 963,
789 1030, 963, 963, 952, 952, 952, 952, 952, 1025, 978,
790 952, 952, 1041, 1042, 1030, 952, 1030, 963, 952, 978,
791 952, 1025, 952, 952, 978, 952, 978, 1043, 1043, 1044,
792 1044, 0, 952, 952, 952, 952, 952, 952, 952, 952,
793 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
794 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
795 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
796 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
797
798 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
799 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
800 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
801 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
802 952, 952, 952, 952
803 } ;
804
805 static yyconst flex_int16_t yy_nxt[5191] =
806 { 0,
807 28, 29, 30, 29, 31, 28, 32, 33, 28, 28,
808 28, 28, 34, 28, 34, 35, 28, 28, 28, 28,
809 31, 28, 36, 28, 37, 28, 28, 38, 38, 38,
810 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
811 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
812 38, 39, 40, 41, 36, 38, 28, 29, 30, 29,
813 42, 28, 32, 33, 43, 43, 43, 28, 34, 43,
814 34, 44, 28, 43, 43, 43, 42, 28, 45, 28,
815 37, 28, 43, 46, 46, 46, 46, 46, 46, 46,
816 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
817
818 46, 46, 46, 46, 46, 46, 46, 39, 40, 41,
819 45, 46, 48, 48, 48, 48, 53, 54, 53, 54,
820 48, 48, 60, 60, 63, 63, 66, 950, 66, 534,
821 264, 67, 535, 67, 49, 49, 51, 51, 72, 55,
822 72, 55, 57, 57, 61, 61, 64, 64, 68, 72,
823 68, 72, 66, 285, 72, 264, 72, 75, 73, 367,
824 73, 66, 48, 48, 48, 48, 75, 351, 101, 294,
825 48, 48, 120, 120, 76, 69, 70, 69, 70, 102,
826 114, 115, 114, 76, 121, 116, 118, 116, 160, 160,
827 160, 178, 101, 101, 101, 122, 126, 101, 179, 264,
828
829 101, 77, 78, 117, 102, 117, 431, 946, 102, 382,
830 77, 78, 79, 80, 81, 80, 82, 79, 79, 83,
831 84, 84, 84, 79, 79, 85, 79, 86, 79, 84,
832 84, 84, 82, 79, 87, 79, 88, 79, 84, 89,
833 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
834 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
835 89, 89, 89, 90, 91, 92, 87, 89, 79, 80,
836 81, 80, 93, 79, 79, 83, 79, 94, 94, 79,
837 79, 79, 79, 95, 79, 94, 94, 94, 96, 79,
838 97, 79, 98, 79, 79, 99, 99, 99, 99, 99,
839
840 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
841 99, 99, 99, 99, 99, 99, 99, 99, 99, 90,
842 100, 92, 97, 99, 103, 104, 103, 105, 101, 398,
843 106, 107, 108, 108, 264, 101, 109, 101, 105, 102,
844 108, 108, 108, 105, 418, 110, 102, 111, 102, 108,
845 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
846 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
847 112, 112, 112, 112, 101, 172, 113, 110, 112, 123,
848 123, 123, 173, 127, 120, 102, 101, 128, 158, 207,
849 264, 101, 120, 124, 116, 159, 288, 102, 101, 128,
850
851 289, 101, 125, 952, 208, 264, 163, 163, 163, 102,
852 101, 116, 117, 209, 173, 127, 130, 131, 165, 132,
853 133, 102, 264, 385, 952, 283, 134, 159, 383, 166,
854 311, 135, 136, 137, 138, 139, 296, 140, 141, 142,
855 143, 144, 145, 146, 147, 148, 136, 136, 149, 136,
856 150, 151, 136, 152, 153, 154, 136, 155, 136, 146,
857 136, 156, 157, 161, 161, 161, 163, 163, 163, 116,
858 120, 952, 799, 264, 120, 101, 101, 131, 165, 163,
859 163, 163, 131, 264, 116, 121, 162, 117, 264, 167,
860 265, 165, 266, 168, 178, 264, 122, 404, 182, 178,
861
862 334, 183, 166, 184, 337, 267, 185, 268, 160, 160,
863 160, 120, 264, 383, 401, 113, 163, 163, 163, 164,
864 101, 156, 157, 164, 164, 164, 156, 157, 165, 351,
865 164, 286, 164, 164, 164, 164, 287, 169, 120, 167,
866 384, 170, 171, 171, 171, 171, 171, 171, 171, 171,
867 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
868 171, 171, 171, 171, 171, 171, 264, 120, 382, 169,
869 171, 103, 104, 103, 186, 116, 276, 187, 188, 264,
870 277, 116, 101, 101, 126, 186, 161, 161, 161, 952,
871 186, 264, 189, 117, 111, 116, 101, 352, 101, 116,
872
873 952, 368, 101, 952, 126, 542, 101, 102, 287, 162,
874 382, 261, 295, 117, 219, 220, 952, 117, 159, 211,
875 211, 211, 264, 113, 189, 114, 115, 114, 186, 332,
876 340, 187, 188, 212, 326, 333, 341, 101, 113, 186,
877 214, 327, 213, 215, 186, 264, 189, 216, 111, 433,
878 159, 217, 218, 264, 943, 219, 220, 221, 223, 223,
879 223, 103, 104, 103, 186, 400, 264, 222, 114, 115,
880 114, 186, 413, 327, 222, 186, 290, 113, 189, 191,
881 186, 224, 186, 191, 191, 191, 291, 186, 101, 223,
882 223, 223, 191, 191, 191, 191, 120, 192, 264, 102,
883
884 398, 193, 227, 227, 227, 114, 115, 114, 186, 264,
885 402, 222, 224, 239, 240, 239, 228, 264, 278, 186,
886 237, 237, 237, 186, 186, 229, 222, 241, 284, 192,
887 195, 799, 264, 382, 186, 264, 242, 405, 138, 186,
888 264, 406, 196, 238, 329, 197, 254, 254, 254, 198,
889 297, 327, 199, 292, 200, 264, 293, 255, 201, 255,
890 124, 202, 191, 298, 422, 423, 191, 191, 191, 256,
891 264, 101, 952, 158, 264, 191, 191, 191, 191, 952,
892 203, 432, 102, 327, 193, 251, 251, 251, 952, 952,
893 952, 252, 257, 386, 257, 952, 403, 257, 257, 124,
894
895 313, 124, 299, 300, 299, 264, 952, 952, 253, 164,
896 387, 313, 203, 204, 952, 423, 313, 258, 204, 204,
897 307, 260, 101, 301, 264, 952, 204, 204, 204, 264,
898 952, 205, 260, 102, 264, 128, 952, 260, 261, 127,
899 414, 952, 214, 128, 407, 215, 415, 952, 939, 216,
900 952, 164, 952, 217, 218, 301, 419, 219, 220, 221,
901 173, 952, 307, 205, 204, 264, 163, 163, 163, 204,
902 204, 127, 306, 101, 264, 158, 264, 204, 204, 204,
903 269, 264, 210, 270, 102, 545, 128, 271, 264, 307,
904 278, 272, 173, 279, 273, 952, 274, 275, 434, 280,
905
906 281, 264, 163, 163, 163, 568, 952, 952, 120, 282,
907 164, 952, 314, 159, 210, 223, 223, 223, 108, 173,
908 425, 307, 107, 108, 108, 307, 952, 108, 261, 108,
909 264, 108, 108, 108, 108, 264, 523, 952, 224, 799,
910 108, 223, 223, 223, 108, 159, 426, 264, 108, 108,
911 108, 173, 952, 108, 952, 230, 424, 108, 108, 108,
912 108, 437, 231, 952, 224, 120, 108, 232, 232, 232,
913 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
914 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
915 232, 369, 370, 369, 231, 232, 214, 264, 645, 215,
916
917 233, 937, 301, 216, 396, 397, 396, 217, 218, 438,
918 264, 234, 235, 221, 120, 214, 439, 264, 215, 308,
919 308, 308, 216, 349, 952, 349, 217, 218, 349, 349,
920 219, 305, 221, 309, 301, 440, 163, 163, 163, 350,
921 243, 952, 310, 244, 163, 163, 163, 245, 937, 952,
922 312, 246, 247, 264, 352, 248, 249, 250, 450, 307,
923 343, 343, 343, 299, 300, 299, 344, 307, 315, 316,
924 315, 164, 264, 482, 212, 164, 164, 164, 569, 120,
925 164, 212, 164, 213, 164, 164, 164, 164, 442, 317,
926 483, 307, 189, 164, 318, 318, 318, 318, 318, 318,
927
928 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
929 318, 318, 318, 318, 318, 318, 318, 318, 330, 339,
930 527, 317, 318, 264, 189, 264, 264, 952, 952, 260,
931 260, 346, 346, 346, 330, 260, 192, 205, 952, 952,
932 223, 223, 223, 351, 408, 347, 356, 441, 409, 264,
933 264, 359, 359, 359, 348, 550, 257, 360, 257, 936,
934 264, 257, 257, 224, 544, 212, 264, 416, 192, 205,
935 223, 223, 223, 108, 229, 417, 435, 108, 108, 108,
936 559, 258, 108, 436, 108, 264, 108, 108, 108, 108,
937 376, 377, 376, 224, 120, 108, 345, 361, 361, 361,
938
939 264, 345, 345, 345, 378, 517, 120, 345, 345, 547,
940 345, 363, 345, 379, 558, 264, 264, 345, 482, 345,
941 364, 345, 349, 427, 349, 357, 212, 349, 349, 578,
942 935, 372, 373, 372, 526, 483, 428, 374, 350, 443,
943 444, 443, 251, 251, 251, 241, 264, 345, 345, 345,
944 223, 223, 223, 108, 242, 264, 124, 108, 108, 108,
945 582, 543, 108, 264, 108, 253, 108, 108, 108, 108,
946 491, 110, 491, 224, 414, 108, 112, 112, 112, 112,
947 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
948 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
949
950 446, 300, 446, 110, 112, 237, 237, 237, 186, 264,
951 935, 222, 343, 343, 343, 158, 120, 546, 344, 186,
952 492, 264, 301, 952, 186, 120, 212, 380, 238, 380,
953 327, 264, 380, 380, 264, 213, 389, 389, 389, 391,
954 551, 391, 390, 381, 391, 391, 489, 255, 489, 255,
955 264, 489, 489, 548, 301, 392, 552, 549, 489, 256,
956 489, 357, 327, 489, 489, 934, 899, 393, 443, 444,
957 443, 394, 410, 410, 410, 410, 410, 410, 410, 410,
958 410, 410, 410, 410, 410, 410, 410, 410, 410, 410,
959 410, 410, 410, 411, 136, 410, 410, 410, 410, 136,
960
961 136, 412, 136, 136, 136, 136, 136, 136, 136, 136,
962 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
963 136, 136, 136, 410, 410, 410, 410, 410, 420, 420,
964 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
965 420, 420, 420, 420, 420, 420, 420, 420, 420, 421,
966 136, 420, 420, 420, 420, 136, 136, 136, 136, 136,
967 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
968 136, 136, 136, 136, 136, 136, 136, 136, 136, 420,
969 420, 420, 420, 420, 429, 429, 429, 429, 429, 429,
970 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
971
972 429, 429, 429, 429, 429, 430, 136, 429, 429, 429,
973 429, 136, 136, 136, 136, 136, 136, 136, 136, 136,
974 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
975 136, 136, 136, 136, 136, 429, 429, 429, 429, 429,
976 452, 452, 452, 264, 264, 349, 453, 349, 311, 264,
977 349, 349, 556, 557, 212, 470, 933, 264, 932, 570,
978 927, 350, 327, 310, 345, 454, 454, 454, 264, 345,
979 345, 345, 163, 163, 163, 345, 345, 952, 345, 456,
980 345, 458, 459, 458, 566, 345, 952, 345, 457, 345,
981 550, 315, 316, 315, 327, 307, 952, 460, 461, 460,
982
983 462, 316, 462, 306, 307, 264, 306, 396, 397, 396,
984 264, 567, 952, 264, 307, 345, 345, 345, 264, 952,
985 307, 579, 264, 307, 163, 163, 163, 164, 926, 264,
986 952, 164, 164, 164, 550, 491, 164, 491, 164, 550,
987 164, 164, 164, 164, 925, 317, 571, 307, 575, 164,
988 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
989 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
990 463, 463, 463, 463, 471, 472, 471, 317, 463, 396,
991 397, 396, 264, 264, 952, 492, 486, 486, 486, 530,
992 264, 952, 487, 580, 255, 189, 255, 357, 488, 346,
993
994 346, 346, 952, 343, 343, 343, 531, 576, 574, 348,
995 350, 488, 541, 347, 541, 264, 264, 212, 223, 223,
996 223, 120, 348, 572, 499, 573, 213, 189, 497, 497,
997 497, 105, 212, 540, 106, 107, 659, 502, 502, 502,
998 264, 500, 105, 503, 223, 223, 223, 105, 264, 488,
999 120, 498, 369, 370, 369, 581, 504, 796, 577, 799,
1000 364, 643, 509, 510, 509, 540, 264, 224, 356, 524,
1001 120, 524, 524, 120, 524, 224, 550, 376, 377, 376,
1002 113, 345, 361, 361, 361, 224, 345, 345, 345, 521,
1003 264, 378, 345, 345, 505, 345, 363, 345, 120, 120,
1004
1005 379, 120, 345, 514, 345, 364, 345, 512, 370, 512,
1006 599, 241, 599, 356, 662, 518, 519, 518, 264, 525,
1007 515, 520, 525, 486, 486, 486, 120, 521, 381, 487,
1008 224, 264, 345, 345, 345, 488, 646, 522, 379, 522,
1009 671, 924, 522, 522, 264, 264, 348, 372, 373, 372,
1010 656, 389, 389, 389, 538, 539, 538, 583, 300, 583,
1011 600, 241, 255, 657, 255, 583, 444, 583, 264, 675,
1012 242, 261, 120, 264, 256, 540, 120, 660, 301, 163,
1013 163, 163, 591, 591, 591, 588, 618, 517, 592, 471,
1014 472, 471, 488, 212, 488, 489, 264, 489, 311, 763,
1015
1016 489, 489, 589, 952, 868, 457, 661, 540, 553, 553,
1017 301, 553, 553, 553, 553, 553, 553, 553, 553, 553,
1018 553, 553, 553, 553, 553, 553, 553, 553, 553, 554,
1019 555, 553, 553, 553, 553, 555, 555, 555, 555, 555,
1020 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
1021 555, 555, 555, 555, 555, 555, 555, 555, 555, 264,
1022 553, 553, 553, 553, 560, 561, 560, 163, 163, 163,
1023 562, 921, 952, 921, 486, 486, 486, 663, 264, 593,
1024 595, 596, 595, 233, 264, 618, 306, 460, 461, 460,
1025 307, 488, 392, 306, 625, 626, 563, 348, 564, 550,
1026
1027 264, 540, 952, 307, 393, 491, 120, 491, 394, 668,
1028 307, 223, 223, 223, 565, 345, 454, 454, 454, 264,
1029 345, 345, 345, 223, 223, 223, 345, 345, 594, 345,
1030 456, 345, 120, 540, 224, 504, 345, 853, 345, 457,
1031 345, 597, 163, 597, 658, 644, 224, 306, 598, 316,
1032 598, 598, 461, 598, 306, 492, 264, 306, 640, 605,
1033 606, 605, 540, 641, 307, 952, 345, 345, 345, 521,
1034 264, 307, 923, 264, 307, 264, 666, 607, 472, 607,
1035 119, 685, 952, 952, 264, 497, 497, 497, 186, 667,
1036 264, 222, 672, 264, 540, 497, 497, 497, 186, 186,
1037
1038 952, 187, 188, 673, 186, 497, 497, 497, 186, 186,
1039 676, 222, 264, 264, 186, 669, 189, 264, 498, 186,
1040 629, 629, 629, 687, 186, 572, 630, 509, 510, 509,
1041 264, 684, 488, 356, 636, 370, 636, 518, 519, 518,
1042 356, 918, 917, 224, 524, 120, 524, 113, 189, 655,
1043 224, 655, 636, 510, 636, 674, 120, 224, 356, 541,
1044 379, 541, 251, 251, 251, 538, 539, 538, 252, 264,
1045 540, 264, 264, 264, 264, 224, 124, 123, 123, 123,
1046 540, 264, 120, 120, 689, 253, 540, 264, 311, 683,
1047 264, 124, 686, 730, 525, 688, 547, 264, 740, 732,
1048
1049 253, 350, 540, 264, 547, 583, 444, 583, 734, 264,
1050 264, 873, 540, 748, 874, 808, 846, 760, 540, 410,
1051 410, 410, 410, 410, 410, 410, 410, 410, 410, 410,
1052 410, 410, 410, 410, 410, 410, 410, 410, 410, 410,
1053 411, 136, 410, 410, 410, 410, 136, 136, 136, 136,
1054 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1055 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1056 410, 410, 410, 410, 410, 553, 553, 916, 120, 916,
1057 120, 553, 553, 553, 553, 553, 553, 553, 553, 553,
1058 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
1059
1060 553, 553, 553, 553, 553, 664, 665, 867, 599, 938,
1061 599, 665, 665, 665, 665, 665, 665, 665, 665, 665,
1062 665, 665, 665, 665, 665, 665, 665, 665, 665, 665,
1063 665, 665, 665, 665, 665, 560, 561, 560, 163, 163,
1064 163, 562, 264, 120, 306, 697, 697, 697, 163, 163,
1065 163, 698, 386, 952, 163, 163, 163, 488, 600, 952,
1066 124, 307, 264, 746, 264, 264, 593, 264, 307, 387,
1067 264, 307, 264, 747, 264, 550, 749, 307, 550, 752,
1068 795, 757, 750, 915, 550, 565, 677, 678, 679, 678,
1069 677, 677, 677, 677, 677, 677, 677, 677, 677, 677,
1070
1071 677, 677, 677, 677, 677, 677, 677, 680, 681, 677,
1072 682, 677, 677, 681, 681, 681, 681, 681, 681, 681,
1073 681, 681, 681, 681, 681, 681, 681, 681, 681, 681,
1074 681, 681, 681, 681, 681, 681, 681, 677, 677, 677,
1075 677, 677, 690, 690, 913, 690, 690, 690, 690, 690,
1076 690, 690, 690, 691, 690, 690, 690, 690, 690, 690,
1077 690, 690, 690, 692, 693, 690, 690, 690, 690, 693,
1078 693, 693, 693, 693, 693, 693, 693, 693, 693, 693,
1079 693, 693, 693, 693, 693, 693, 693, 693, 693, 693,
1080 693, 693, 693, 690, 690, 690, 690, 690, 595, 596,
1081
1082 595, 701, 163, 701, 306, 264, 120, 306, 597, 163,
1083 597, 598, 461, 598, 306, 912, 911, 306, 655, 540,
1084 655, 307, 540, 762, 307, 264, 605, 606, 605, 540,
1085 264, 307, 952, 264, 307, 707, 472, 707, 264, 540,
1086 264, 952, 707, 606, 707, 264, 754, 264, 952, 952,
1087 733, 540, 482, 755, 540, 765, 758, 764, 952, 756,
1088 212, 540, 120, 398, 264, 952, 690, 690, 547, 483,
1089 884, 540, 690, 690, 690, 690, 690, 690, 690, 690,
1090 690, 690, 690, 690, 690, 690, 690, 690, 690, 690,
1091 690, 690, 690, 690, 690, 690, 343, 343, 343, 223,
1092
1093 223, 223, 344, 264, 794, 356, 359, 359, 359, 264,
1094 212, 398, 360, 550, 264, 223, 223, 223, 264, 213,
1095 212, 356, 224, 906, 636, 510, 636, 485, 550, 229,
1096 356, 343, 343, 343, 803, 482, 802, 344, 224, 264,
1097 389, 389, 389, 212, 264, 212, 390, 224, 759, 804,
1098 759, 255, 483, 255, 213, 741, 742, 741, 677, 952,
1099 677, 743, 264, 256, 677, 161, 161, 161, 264, 806,
1100 452, 452, 452, 905, 120, 264, 453, 163, 163, 163,
1101 264, 677, 839, 306, 212, 264, 264, 744, 772, 485,
1102 707, 606, 707, 310, 264, 618, 952, 264, 759, 550,
1103
1104 307, 486, 486, 486, 550, 745, 761, 487, 264, 264,
1105 264, 807, 952, 952, 264, 812, 831, 113, 805, 675,
1106 677, 677, 904, 848, 348, 550, 677, 677, 677, 677,
1107 677, 677, 677, 677, 677, 677, 677, 677, 677, 677,
1108 677, 677, 677, 677, 677, 677, 677, 677, 677, 677,
1109 766, 767, 768, 767, 766, 766, 766, 766, 766, 766,
1110 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1111 766, 769, 770, 766, 771, 766, 766, 770, 770, 770,
1112 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
1113 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
1114
1115 770, 766, 766, 766, 766, 766, 701, 163, 701, 161,
1116 161, 161, 306, 903, 223, 223, 223, 502, 502, 502,
1117 499, 120, 264, 503, 486, 486, 486, 540, 212, 307,
1118 487, 530, 772, 798, 798, 798, 255, 500, 255, 264,
1119 364, 264, 120, 618, 799, 814, 799, 348, 531, 741,
1120 742, 741, 264, 813, 922, 743, 800, 902, 264, 540,
1121 952, 113, 766, 952, 766, 550, 264, 264, 766, 163,
1122 163, 163, 591, 591, 591, 588, 550, 550, 592, 840,
1123 822, 822, 822, 212, 832, 766, 264, 120, 907, 828,
1124 829, 828, 589, 120, 264, 457, 120, 842, 861, 745,
1125
1126 810, 810, 810, 823, 810, 810, 810, 629, 629, 629,
1127 810, 810, 830, 630, 833, 833, 833, 835, 841, 835,
1128 834, 264, 835, 835, 264, 799, 857, 799, 857, 264,
1129 224, 857, 857, 836, 697, 697, 697, 800, 382, 869,
1130 698, 264, 264, 847, 799, 837, 799, 120, 881, 838,
1131 810, 264, 810, 815, 876, 120, 870, 307, 866, 120,
1132 866, 882, 264, 866, 866, 947, 898, 766, 766, 893,
1133 861, 883, 908, 766, 766, 766, 766, 766, 766, 766,
1134 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1135 766, 766, 766, 766, 766, 766, 766, 810, 810, 810,
1136
1137 120, 810, 810, 810, 854, 854, 854, 810, 810, 889,
1138 855, 862, 863, 862, 264, 856, 856, 864, 854, 854,
1139 854, 264, 889, 865, 855, 900, 952, 823, 856, 264,
1140 856, 833, 833, 833, 830, 910, 836, 892, 414, 952,
1141 909, 823, 799, 264, 799, 853, 891, 810, 837, 810,
1142 888, 887, 838, 931, 800, 877, 877, 877, 877, 877,
1143 877, 877, 877, 877, 877, 877, 877, 877, 877, 877,
1144 877, 877, 877, 877, 877, 877, 878, 136, 877, 877,
1145 877, 877, 136, 136, 136, 136, 136, 136, 136, 136,
1146 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1147
1148 136, 136, 136, 136, 136, 136, 877, 877, 877, 877,
1149 877, 879, 879, 879, 879, 879, 879, 879, 879, 879,
1150 879, 879, 879, 879, 879, 879, 879, 879, 879, 879,
1151 879, 879, 880, 136, 879, 879, 879, 879, 136, 136,
1152 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1153 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1154 136, 136, 879, 879, 879, 879, 879, 854, 854, 854,
1155 895, 862, 863, 862, 120, 896, 833, 833, 833, 264,
1156 886, 865, 834, 264, 885, 920, 844, 799, 949, 799,
1157 823, 949, 119, 940, 830, 875, 872, 930, 860, 800,
1158
1159 928, 928, 928, 928, 928, 928, 928, 928, 928, 928,
1160 928, 928, 928, 928, 928, 928, 928, 928, 928, 928,
1161 928, 929, 136, 928, 928, 928, 928, 136, 136, 136,
1162 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1163 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1164 136, 928, 928, 928, 928, 928, 264, 854, 854, 854,
1165 854, 854, 854, 855, 120, 869, 855, 889, 889, 264,
1166 799, 859, 799, 263, 263, 136, 136, 263, 550, 136,
1167 823, 858, 870, 823, 952, 952, 399, 399, 945, 853,
1168 399, 852, 851, 382, 941, 941, 941, 941, 941, 941,
1169
1170 941, 941, 941, 941, 941, 941, 941, 941, 941, 941,
1171 941, 941, 941, 941, 941, 942, 136, 941, 941, 941,
1172 941, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1173 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1174 136, 136, 136, 136, 136, 941, 941, 941, 941, 941,
1175 264, 399, 399, 399, 399, 399, 850, 399, 450, 845,
1176 844, 742, 255, 826, 825, 824, 820, 819, 818, 817,
1177 817, 816, 264, 398, 264, 264, 742, 255, 797, 255,
1178 948, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1179 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1180
1181 47, 47, 50, 50, 50, 50, 50, 50, 50, 50,
1182 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
1183 50, 50, 50, 52, 52, 52, 52, 52, 52, 52,
1184 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
1185 52, 52, 52, 52, 56, 56, 56, 56, 56, 56,
1186 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
1187 56, 56, 56, 56, 56, 48, 48, 48, 48, 48,
1188 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1189 48, 48, 48, 48, 48, 48, 59, 59, 59, 59,
1190 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
1191
1192 59, 59, 59, 59, 59, 59, 59, 62, 62, 62,
1193 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
1194 62, 62, 62, 62, 62, 62, 62, 62, 65, 65,
1195 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1196 65, 65, 65, 65, 65, 65, 65, 65, 65, 71,
1197 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
1198 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
1199 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
1200 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
1201 74, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1202
1203 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1204 119, 119, 129, 793, 793, 792, 129, 129, 129, 129,
1205 791, 791, 790, 129, 129, 164, 164, 164, 164, 789,
1206 164, 164, 164, 164, 164, 788, 164, 164, 164, 164,
1207 787, 787, 786, 164, 164, 174, 174, 785, 174, 174,
1208 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1209 174, 174, 784, 174, 174, 174, 176, 176, 760, 176,
1210 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
1211 176, 176, 176, 783, 176, 176, 176, 180, 180, 782,
1212 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
1213
1214 180, 180, 180, 180, 781, 180, 180, 180, 190, 190,
1215 190, 780, 190, 190, 779, 190, 190, 190, 778, 190,
1216 190, 777, 190, 776, 776, 190, 190, 190, 191, 191,
1217 775, 191, 191, 191, 773, 191, 113, 191, 191, 191,
1218 191, 264, 398, 690, 191, 191, 194, 264, 398, 194,
1219 194, 194, 561, 194, 753, 194, 194, 194, 194, 751,
1220 739, 738, 194, 194, 204, 204, 737, 736, 204, 204,
1221 255, 735, 731, 204, 204, 731, 204, 485, 728, 113,
1222 204, 204, 206, 726, 725, 725, 206, 206, 724, 722,
1223 368, 206, 206, 206, 206, 367, 721, 720, 206, 206,
1224
1225 108, 108, 108, 719, 718, 108, 108, 108, 108, 108,
1226 718, 108, 108, 108, 108, 717, 715, 714, 108, 108,
1227 225, 225, 713, 225, 225, 225, 225, 225, 225, 225,
1228 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1229 225, 226, 226, 226, 712, 711, 226, 226, 226, 226,
1230 226, 710, 226, 226, 226, 226, 709, 708, 706, 226,
1231 226, 302, 302, 705, 704, 703, 702, 700, 696, 694,
1232 304, 303, 302, 561, 654, 302, 653, 652, 651, 302,
1233 302, 324, 324, 650, 324, 324, 324, 324, 324, 324,
1234 324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
1235
1236 324, 324, 325, 649, 647, 120, 120, 639, 325, 120,
1237 637, 325, 635, 633, 632, 325, 325, 328, 628, 624,
1238 328, 623, 622, 328, 621, 485, 620, 328, 328, 345,
1239 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
1240 345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
1241 355, 355, 617, 355, 355, 355, 355, 355, 355, 355,
1242 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
1243 355, 362, 362, 362, 362, 362, 362, 362, 362, 362,
1244 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
1245 362, 362, 375, 375, 375, 375, 375, 375, 375, 375,
1246
1247 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
1248 375, 375, 375, 388, 388, 350, 388, 388, 388, 388,
1249 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
1250 388, 388, 388, 388, 445, 445, 615, 614, 613, 612,
1251 611, 610, 609, 608, 604, 603, 602, 601, 445, 314,
1252 587, 586, 585, 445, 447, 584, 398, 447, 398, 398,
1253 398, 447, 447, 448, 448, 398, 448, 448, 448, 448,
1254 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
1255 448, 448, 448, 448, 449, 449, 537, 449, 449, 449,
1256 449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
1257
1258 449, 449, 449, 449, 449, 451, 451, 536, 451, 451,
1259 451, 451, 451, 451, 451, 451, 451, 451, 451, 451,
1260 451, 451, 451, 451, 451, 451, 455, 455, 455, 455,
1261 455, 455, 455, 455, 455, 455, 455, 455, 455, 455,
1262 455, 455, 455, 455, 455, 455, 455, 190, 533, 529,
1263 190, 258, 120, 513, 190, 190, 475, 475, 475, 475,
1264 475, 475, 475, 475, 475, 475, 475, 475, 508, 475,
1265 475, 507, 475, 475, 475, 475, 475, 429, 429, 429,
1266 429, 429, 429, 429, 429, 429, 429, 429, 429, 506,
1267 429, 429, 495, 429, 429, 429, 429, 429, 420, 420,
1268
1269 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
1270 494, 420, 420, 493, 420, 420, 420, 420, 420, 484,
1271 484, 490, 484, 484, 484, 484, 484, 484, 484, 484,
1272 484, 484, 484, 484, 484, 484, 484, 484, 484, 484,
1273 496, 496, 485, 496, 496, 496, 496, 496, 496, 496,
1274 496, 496, 496, 496, 496, 496, 496, 496, 496, 496,
1275 496, 501, 501, 481, 501, 501, 501, 501, 501, 501,
1276 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
1277 501, 501, 108, 108, 108, 480, 479, 108, 108, 108,
1278 108, 108, 478, 108, 108, 108, 108, 477, 476, 474,
1279
1280 108, 108, 511, 511, 473, 952, 511, 469, 468, 467,
1281 466, 465, 464, 172, 511, 311, 511, 398, 262, 398,
1282 395, 511, 516, 516, 516, 516, 516, 516, 516, 516,
1283 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
1284 516, 516, 516, 375, 375, 375, 375, 375, 375, 375,
1285 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
1286 375, 375, 375, 375, 528, 528, 371, 528, 528, 528,
1287 528, 528, 528, 528, 528, 528, 528, 528, 528, 528,
1288 528, 528, 528, 528, 528, 532, 532, 366, 532, 532,
1289 532, 532, 532, 532, 532, 532, 532, 532, 532, 532,
1290
1291 532, 532, 532, 532, 532, 532, 590, 590, 365, 590,
1292 590, 590, 590, 590, 590, 590, 590, 590, 590, 590,
1293 590, 590, 590, 590, 590, 590, 590, 616, 616, 108,
1294 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
1295 616, 616, 616, 616, 616, 616, 616, 616, 619, 619,
1296 358, 619, 619, 619, 619, 619, 619, 619, 619, 619,
1297 619, 619, 619, 619, 619, 619, 619, 619, 619, 627,
1298 627, 357, 627, 627, 627, 627, 627, 627, 627, 627,
1299 627, 627, 627, 627, 627, 627, 627, 627, 627, 627,
1300 631, 631, 351, 631, 631, 631, 631, 631, 631, 631,
1301
1302 631, 631, 631, 631, 631, 631, 631, 631, 631, 631,
1303 631, 634, 634, 634, 634, 634, 634, 634, 634, 634,
1304 634, 634, 634, 352, 634, 634, 351, 634, 634, 634,
1305 634, 634, 638, 638, 638, 638, 638, 638, 638, 638,
1306 638, 638, 638, 638, 638, 638, 638, 638, 638, 638,
1307 638, 638, 638, 642, 642, 642, 642, 642, 642, 642,
1308 642, 642, 642, 642, 642, 642, 642, 642, 642, 642,
1309 642, 642, 642, 642, 648, 648, 354, 648, 648, 648,
1310 648, 648, 648, 648, 648, 648, 648, 648, 648, 648,
1311 648, 648, 648, 648, 648, 670, 670, 670, 670, 670,
1312
1313 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
1314 670, 670, 670, 670, 670, 670, 695, 695, 353, 695,
1315 695, 695, 695, 695, 695, 695, 695, 695, 695, 695,
1316 695, 695, 695, 695, 695, 695, 695, 699, 699, 352,
1317 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
1318 699, 699, 699, 699, 699, 699, 699, 699, 716, 716,
1319 351, 716, 716, 716, 716, 716, 716, 716, 716, 716,
1320 716, 716, 716, 716, 716, 716, 716, 716, 716, 723,
1321 723, 351, 723, 723, 723, 723, 723, 723, 723, 723,
1322 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
1323
1324 727, 727, 727, 727, 727, 727, 727, 727, 727, 727,
1325 727, 727, 342, 727, 727, 338, 727, 727, 727, 727,
1326 727, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1327 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1328 729, 729, 774, 774, 336, 774, 774, 774, 774, 774,
1329 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
1330 774, 774, 774, 801, 801, 801, 801, 801, 801, 801,
1331 801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
1332 801, 801, 801, 801, 809, 809, 809, 809, 809, 809,
1333 809, 809, 809, 809, 809, 809, 809, 809, 809, 809,
1334
1335 809, 335, 809, 809, 809, 811, 811, 334, 811, 811,
1336 811, 811, 811, 811, 811, 811, 811, 811, 811, 811,
1337 811, 811, 811, 811, 811, 811, 821, 821, 821, 821,
1338 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
1339 821, 821, 821, 821, 821, 821, 821, 827, 827, 827,
1340 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1341 827, 827, 827, 827, 827, 827, 827, 827, 843, 843,
1342 843, 843, 843, 331, 843, 843, 843, 843, 843, 843,
1343 843, 843, 843, 843, 843, 843, 843, 843, 843, 849,
1344 849, 188, 849, 849, 849, 849, 849, 849, 849, 849,
1345
1346 849, 849, 849, 849, 849, 849, 849, 849, 849, 849,
1347 871, 871, 323, 871, 871, 871, 871, 871, 871, 871,
1348 871, 871, 871, 871, 871, 871, 871, 871, 871, 871,
1349 871, 890, 890, 322, 890, 890, 890, 890, 890, 890,
1350 890, 890, 890, 890, 890, 890, 890, 890, 890, 890,
1351 890, 890, 894, 894, 894, 894, 894, 894, 894, 894,
1352 894, 894, 894, 894, 321, 894, 894, 320, 894, 894,
1353 894, 894, 894, 897, 897, 897, 897, 897, 897, 897,
1354 897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
1355 897, 897, 897, 897, 901, 901, 319, 901, 901, 901,
1356
1357 901, 901, 901, 901, 901, 901, 901, 901, 901, 901,
1358 901, 901, 901, 901, 901, 914, 914, 311, 914, 914,
1359 914, 914, 914, 914, 914, 914, 914, 914, 914, 914,
1360 914, 914, 914, 914, 914, 914, 919, 919, 919, 919,
1361 919, 919, 919, 919, 919, 919, 919, 919, 919, 919,
1362 919, 919, 919, 919, 919, 919, 919, 944, 944, 944,
1363 944, 944, 944, 944, 944, 944, 944, 944, 944, 304,
1364 944, 944, 303, 944, 944, 944, 944, 944, 941, 941,
1365 941, 941, 941, 941, 941, 941, 941, 941, 941, 941,
1366 264, 941, 941, 262, 941, 941, 941, 941, 941, 951,
1367
1368 951, 259, 951, 951, 951, 951, 951, 951, 951, 951,
1369 951, 951, 951, 951, 951, 120, 951, 951, 951, 951,
1370 236, 120, 178, 120, 178, 178, 178, 181, 177, 175,
1371 952, 58, 58, 27, 952, 952, 952, 952, 952, 952,
1372 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1373 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1374 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1375 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1376 952, 952, 952, 952, 952, 952, 952, 952, 952, 952
1377 } ;
1378
1379 static yyconst flex_int16_t yy_chk[5191] =
1380 { 0,
1381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1385 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1386 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
1387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1388 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1389 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1391
1392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1393 2, 2, 3, 4, 5, 6, 7, 7, 8, 8,
1394 9, 10, 13, 14, 15, 16, 17, 949, 18, 393,
1395 147, 17, 393, 18, 3, 4, 5, 6, 19, 7,
1396 20, 8, 9, 10, 13, 14, 15, 16, 17, 19,
1397 18, 20, 21, 147, 19, 152, 20, 21, 19, 234,
1398 20, 22, 3, 4, 5, 6, 22, 234, 28, 152,
1399 9, 10, 244, 33, 21, 17, 17, 18, 18, 28,
1400 30, 30, 30, 22, 33, 31, 32, 35, 39, 39,
1401 39, 55, 31, 32, 35, 33, 35, 40, 55, 288,
1402
1403 39, 21, 21, 31, 32, 35, 288, 943, 40, 244,
1404 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
1405 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1406 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1407 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1408 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1409 23, 23, 23, 23, 23, 23, 23, 23, 25, 25,
1410 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1411 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1412 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1413
1414 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1415 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1416 25, 25, 25, 25, 29, 29, 29, 29, 79, 942,
1417 29, 29, 29, 29, 278, 85, 29, 91, 29, 79,
1418 29, 29, 29, 29, 278, 29, 85, 29, 91, 29,
1419 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1420 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1421 29, 29, 29, 29, 36, 46, 29, 29, 29, 34,
1422 34, 34, 46, 36, 247, 36, 38, 36, 38, 98,
1423 149, 34, 249, 34, 82, 38, 149, 38, 100, 38,
1424
1425 149, 82, 34, 84, 98, 145, 42, 42, 42, 100,
1426 84, 42, 82, 98, 46, 36, 37, 37, 42, 37,
1427 37, 84, 154, 247, 167, 145, 37, 38, 249, 42,
1428 167, 37, 37, 37, 37, 37, 154, 37, 37, 37,
1429 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1430 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
1431 37, 37, 37, 41, 41, 41, 43, 43, 43, 93,
1432 245, 43, 939, 269, 83, 41, 93, 68, 43, 44,
1433 44, 44, 76, 140, 44, 83, 41, 93, 266, 43,
1434 140, 44, 140, 44, 68, 141, 83, 269, 68, 76,
1435
1436 201, 68, 44, 76, 201, 141, 76, 141, 90, 90,
1437 90, 246, 148, 245, 266, 41, 45, 45, 45, 45,
1438 90, 68, 68, 45, 45, 45, 76, 76, 45, 936,
1439 45, 148, 45, 45, 45, 45, 148, 45, 243, 45,
1440 246, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1441 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1442 45, 45, 45, 45, 45, 45, 143, 250, 243, 45,
1443 45, 80, 80, 80, 80, 86, 143, 80, 80, 400,
1444 143, 117, 86, 80, 86, 80, 92, 92, 92, 94,
1445 80, 153, 80, 86, 80, 95, 94, 235, 92, 96,
1446
1447 129, 235, 95, 117, 95, 400, 96, 94, 153, 92,
1448 250, 129, 153, 95, 117, 117, 129, 96, 129, 101,
1449 101, 101, 290, 80, 80, 81, 81, 81, 81, 197,
1450 208, 81, 81, 101, 189, 197, 208, 81, 92, 81,
1451 102, 189, 101, 102, 81, 265, 81, 102, 81, 290,
1452 129, 102, 102, 275, 932, 102, 102, 102, 105, 105,
1453 105, 103, 103, 103, 103, 265, 150, 103, 104, 104,
1454 104, 104, 275, 189, 104, 103, 150, 81, 81, 87,
1455 103, 105, 104, 87, 87, 87, 150, 104, 87, 108,
1456 108, 108, 87, 87, 87, 87, 248, 87, 267, 87,
1457
1458 929, 87, 109, 109, 109, 114, 114, 114, 114, 146,
1459 267, 114, 108, 121, 121, 121, 109, 270, 146, 114,
1460 115, 115, 115, 115, 114, 109, 115, 121, 146, 87,
1461 88, 927, 151, 248, 115, 271, 121, 270, 88, 115,
1462 155, 271, 88, 115, 190, 88, 124, 124, 124, 88,
1463 155, 190, 88, 151, 88, 281, 151, 124, 88, 124,
1464 124, 88, 89, 155, 281, 281, 89, 89, 89, 124,
1465 289, 89, 191, 89, 268, 89, 89, 89, 89, 191,
1466 89, 289, 89, 190, 89, 123, 123, 123, 193, 125,
1467 191, 123, 125, 251, 125, 193, 268, 125, 125, 123,
1468
1469 169, 251, 158, 158, 158, 284, 193, 204, 123, 169,
1470 251, 169, 89, 97, 204, 284, 169, 125, 97, 97,
1471 169, 127, 97, 158, 272, 204, 97, 97, 97, 276,
1472 127, 97, 127, 97, 279, 97, 194, 127, 194, 127,
1473 276, 127, 138, 127, 272, 138, 276, 194, 926, 138,
1474 203, 173, 203, 138, 138, 158, 279, 138, 138, 138,
1475 173, 203, 173, 97, 99, 403, 163, 163, 163, 99,
1476 99, 127, 163, 99, 142, 99, 291, 99, 99, 99,
1477 142, 144, 99, 142, 99, 403, 99, 142, 427, 163,
1478 144, 142, 173, 144, 142, 159, 142, 142, 291, 144,
1479
1480 144, 283, 164, 164, 164, 427, 159, 164, 381, 144,
1481 171, 159, 171, 159, 99, 107, 107, 107, 107, 171,
1482 283, 171, 107, 107, 107, 164, 206, 107, 206, 107,
1483 285, 107, 107, 107, 107, 282, 381, 206, 107, 925,
1484 107, 110, 110, 110, 110, 159, 285, 293, 110, 110,
1485 110, 171, 210, 110, 210, 110, 282, 110, 110, 110,
1486 110, 293, 110, 210, 110, 526, 110, 110, 110, 110,
1487 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1488 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1489 110, 236, 236, 236, 110, 110, 111, 294, 526, 111,
1490
1491 111, 920, 301, 111, 260, 260, 260, 111, 111, 294,
1492 295, 111, 111, 111, 122, 162, 295, 296, 162, 165,
1493 165, 165, 162, 213, 165, 213, 162, 162, 213, 213,
1494 162, 162, 162, 165, 301, 296, 168, 168, 168, 213,
1495 122, 168, 165, 122, 170, 170, 170, 122, 919, 170,
1496 168, 122, 122, 428, 305, 122, 122, 122, 305, 168,
1497 211, 211, 211, 261, 261, 261, 211, 170, 172, 172,
1498 172, 172, 298, 343, 211, 172, 172, 172, 428, 385,
1499 172, 343, 172, 211, 172, 172, 172, 172, 298, 172,
1500 343, 172, 326, 172, 172, 172, 172, 172, 172, 172,
1501
1502 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
1503 172, 172, 172, 172, 172, 172, 172, 172, 192, 205,
1504 385, 172, 172, 273, 326, 297, 408, 192, 205, 192,
1505 205, 212, 212, 212, 192, 205, 192, 205, 192, 205,
1506 223, 223, 223, 918, 273, 212, 223, 297, 273, 277,
1507 402, 227, 227, 227, 212, 408, 253, 227, 253, 917,
1508 419, 253, 253, 223, 402, 227, 292, 277, 192, 205,
1509 226, 226, 226, 226, 227, 277, 292, 226, 226, 226,
1510 419, 253, 226, 292, 226, 405, 226, 226, 226, 226,
1511 241, 241, 241, 226, 375, 226, 228, 228, 228, 228,
1512
1513 417, 228, 228, 228, 241, 375, 384, 228, 228, 405,
1514 228, 228, 228, 241, 417, 286, 438, 228, 373, 228,
1515 228, 228, 229, 286, 229, 229, 373, 229, 229, 438,
1516 915, 239, 239, 239, 384, 373, 286, 239, 229, 299,
1517 299, 299, 257, 257, 257, 239, 442, 228, 228, 228,
1518 230, 230, 230, 230, 239, 401, 257, 230, 230, 230,
1519 442, 401, 230, 418, 230, 257, 230, 230, 230, 230,
1520 351, 230, 351, 230, 418, 230, 230, 230, 230, 230,
1521 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1522 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1523
1524 300, 300, 300, 230, 230, 237, 237, 237, 237, 404,
1525 914, 237, 240, 240, 240, 302, 242, 404, 240, 237,
1526 351, 409, 302, 327, 237, 867, 240, 242, 237, 242,
1527 327, 406, 242, 242, 407, 240, 254, 254, 254, 256,
1528 409, 256, 254, 242, 256, 256, 348, 254, 348, 254,
1529 413, 348, 348, 406, 302, 256, 413, 407, 364, 254,
1530 364, 364, 327, 364, 364, 913, 867, 256, 443, 443,
1531 443, 256, 274, 274, 274, 274, 274, 274, 274, 274,
1532 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
1533 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
1534
1535 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
1536 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
1537 274, 274, 274, 274, 274, 274, 274, 274, 280, 280,
1538 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1539 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1540 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1541 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1542 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1543 280, 280, 280, 280, 287, 287, 287, 287, 287, 287,
1544 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1545
1546 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1547 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1548 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1549 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1550 308, 308, 308, 416, 415, 310, 308, 310, 310, 431,
1551 310, 310, 415, 416, 308, 328, 912, 423, 911, 431,
1552 906, 310, 328, 308, 309, 309, 309, 309, 412, 309,
1553 309, 309, 312, 312, 312, 309, 309, 312, 309, 309,
1554 309, 313, 313, 313, 423, 309, 313, 309, 309, 309,
1555 412, 314, 314, 314, 328, 312, 314, 315, 315, 315,
1556
1557 316, 316, 316, 315, 313, 424, 316, 330, 330, 330,
1558 425, 424, 330, 439, 314, 309, 309, 309, 426, 330,
1559 315, 439, 432, 316, 317, 317, 317, 317, 905, 435,
1560 330, 317, 317, 317, 425, 352, 317, 352, 317, 426,
1561 317, 317, 317, 317, 904, 317, 432, 317, 435, 317,
1562 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
1563 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
1564 317, 317, 317, 317, 329, 329, 329, 317, 317, 339,
1565 339, 339, 436, 440, 339, 352, 346, 346, 346, 389,
1566 434, 339, 346, 440, 389, 329, 389, 500, 346, 347,
1567
1568 347, 347, 339, 349, 349, 349, 389, 436, 434, 346,
1569 500, 347, 397, 347, 397, 433, 546, 349, 359, 359,
1570 359, 734, 347, 433, 359, 433, 349, 329, 358, 358,
1571 358, 358, 359, 397, 358, 358, 546, 361, 361, 361,
1572 437, 359, 358, 361, 362, 362, 362, 358, 441, 361,
1573 520, 358, 365, 365, 365, 441, 362, 734, 437, 903,
1574 361, 520, 369, 369, 369, 397, 542, 362, 369, 382,
1575 382, 382, 383, 383, 383, 365, 542, 378, 378, 378,
1576 358, 363, 363, 363, 363, 369, 363, 363, 363, 378,
1577 551, 378, 363, 363, 363, 363, 363, 363, 372, 527,
1578
1579 378, 515, 363, 372, 363, 363, 363, 370, 370, 370,
1580 464, 372, 464, 370, 551, 376, 376, 376, 563, 382,
1581 372, 376, 383, 377, 377, 377, 379, 376, 515, 377,
1582 370, 543, 363, 363, 363, 377, 527, 379, 376, 379,
1583 563, 901, 379, 379, 544, 569, 377, 380, 380, 380,
1584 543, 391, 391, 391, 396, 396, 396, 444, 444, 444,
1585 464, 380, 391, 544, 391, 446, 446, 446, 548, 569,
1586 380, 447, 832, 684, 391, 396, 521, 548, 447, 452,
1587 452, 452, 454, 454, 454, 452, 486, 521, 454, 470,
1588 470, 470, 486, 452, 454, 457, 549, 457, 457, 684,
1589
1590 457, 457, 452, 486, 832, 454, 549, 396, 414, 414,
1591 447, 414, 414, 414, 414, 414, 414, 414, 414, 414,
1592 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
1593 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
1594 414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
1595 414, 414, 414, 414, 414, 414, 414, 414, 414, 552,
1596 414, 414, 414, 414, 422, 422, 422, 455, 455, 455,
1597 422, 898, 455, 897, 489, 489, 489, 552, 582, 455,
1598 458, 458, 458, 498, 422, 519, 458, 460, 460, 460,
1599 455, 519, 531, 460, 498, 498, 422, 489, 422, 582,
1600
1601 558, 458, 519, 458, 531, 491, 523, 491, 531, 558,
1602 460, 504, 504, 504, 422, 456, 456, 456, 456, 545,
1603 456, 456, 456, 505, 505, 505, 456, 456, 456, 456,
1604 456, 456, 900, 458, 504, 505, 456, 895, 456, 456,
1605 456, 459, 459, 459, 545, 523, 505, 459, 461, 461,
1606 461, 462, 462, 462, 461, 491, 556, 462, 518, 471,
1607 471, 471, 459, 518, 459, 471, 456, 456, 456, 518,
1608 557, 461, 900, 564, 462, 574, 556, 472, 472, 472,
1609 518, 574, 471, 472, 567, 495, 495, 495, 495, 557,
1610 559, 495, 564, 570, 459, 469, 469, 469, 469, 495,
1611
1612 472, 469, 469, 567, 495, 497, 497, 497, 497, 469,
1613 570, 497, 573, 577, 469, 559, 469, 566, 469, 497,
1614 502, 502, 502, 577, 497, 566, 502, 509, 509, 509,
1615 568, 573, 502, 509, 510, 510, 510, 522, 522, 522,
1616 510, 893, 892, 502, 524, 524, 524, 469, 469, 539,
1617 509, 539, 512, 512, 512, 568, 644, 510, 512, 541,
1618 522, 541, 529, 529, 529, 538, 538, 538, 529, 572,
1619 539, 578, 575, 576, 579, 512, 529, 547, 547, 547,
1620 541, 580, 641, 646, 579, 529, 538, 676, 589, 572,
1621 656, 547, 575, 641, 524, 578, 576, 547, 656, 644,
1622
1623 547, 589, 539, 660, 580, 583, 583, 583, 646, 757,
1624 812, 837, 541, 660, 837, 757, 812, 676, 538, 550,
1625 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
1626 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
1627 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
1628 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
1629 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
1630 550, 550, 550, 550, 550, 553, 553, 891, 831, 890,
1631 922, 553, 553, 553, 553, 553, 553, 553, 553, 553,
1632 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
1633
1634 553, 553, 553, 553, 553, 554, 554, 831, 599, 922,
1635 599, 554, 554, 554, 554, 554, 554, 554, 554, 554,
1636 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
1637 554, 554, 554, 554, 554, 560, 560, 560, 587, 587,
1638 587, 560, 658, 733, 587, 591, 591, 591, 593, 593,
1639 593, 591, 647, 593, 594, 594, 594, 591, 599, 594,
1640 647, 587, 661, 658, 659, 663, 594, 748, 591, 647,
1641 666, 593, 673, 659, 668, 663, 661, 594, 748, 666,
1642 733, 673, 661, 889, 668, 560, 571, 571, 571, 571,
1643 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1644
1645 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1646 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1647 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1648 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1649 571, 571, 581, 581, 888, 581, 581, 581, 581, 581,
1650 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
1651 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
1652 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
1653 581, 581, 581, 581, 581, 581, 581, 581, 581, 581,
1654 581, 581, 581, 581, 581, 581, 581, 581, 595, 595,
1655
1656 595, 596, 596, 596, 595, 683, 645, 596, 597, 597,
1657 597, 598, 598, 598, 597, 887, 886, 598, 655, 595,
1658 655, 595, 596, 683, 596, 669, 605, 605, 605, 597,
1659 686, 597, 605, 671, 598, 606, 606, 606, 672, 655,
1660 685, 606, 607, 607, 607, 687, 669, 674, 607, 605,
1661 645, 595, 715, 671, 596, 686, 674, 685, 606, 672,
1662 715, 597, 732, 880, 848, 607, 613, 613, 687, 715,
1663 848, 655, 613, 613, 613, 613, 613, 613, 613, 613,
1664 613, 613, 613, 613, 613, 613, 613, 613, 613, 613,
1665 613, 613, 613, 613, 613, 613, 617, 617, 617, 624,
1666
1667 624, 624, 617, 740, 732, 624, 628, 628, 628, 750,
1668 617, 878, 628, 740, 744, 629, 629, 629, 747, 617,
1669 628, 629, 624, 875, 636, 636, 636, 629, 747, 628,
1670 636, 639, 639, 639, 750, 728, 744, 639, 629, 751,
1671 649, 649, 649, 728, 755, 639, 649, 636, 675, 751,
1672 675, 649, 728, 649, 639, 657, 657, 657, 682, 682,
1673 682, 657, 802, 649, 682, 689, 689, 689, 675, 755,
1674 696, 696, 696, 874, 795, 657, 696, 697, 697, 697,
1675 749, 682, 802, 697, 696, 689, 756, 657, 689, 697,
1676 707, 707, 707, 696, 752, 787, 707, 762, 675, 749,
1677
1678 697, 718, 718, 718, 752, 657, 678, 718, 753, 758,
1679 814, 756, 787, 707, 804, 762, 795, 689, 753, 758,
1680 678, 678, 873, 814, 718, 804, 678, 678, 678, 678,
1681 678, 678, 678, 678, 678, 678, 678, 678, 678, 678,
1682 678, 678, 678, 678, 678, 678, 678, 678, 678, 678,
1683 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
1684 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
1685 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
1686 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
1687 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
1688
1689 688, 688, 688, 688, 688, 688, 701, 701, 701, 712,
1690 712, 712, 701, 872, 722, 722, 722, 725, 725, 725,
1691 722, 899, 764, 725, 731, 731, 731, 701, 722, 701,
1692 731, 735, 712, 739, 739, 739, 735, 722, 735, 763,
1693 725, 765, 796, 793, 739, 764, 739, 731, 735, 741,
1694 741, 741, 803, 763, 899, 741, 739, 871, 806, 701,
1695 793, 712, 771, 771, 771, 765, 805, 876, 771, 773,
1696 773, 773, 776, 776, 776, 773, 803, 805, 776, 806,
1697 788, 788, 788, 773, 796, 771, 808, 827, 876, 794,
1698 794, 794, 773, 861, 807, 776, 938, 808, 827, 741,
1699
1700 760, 760, 760, 788, 760, 760, 760, 791, 791, 791,
1701 760, 760, 794, 791, 798, 798, 798, 800, 807, 800,
1702 798, 813, 800, 800, 842, 798, 823, 798, 823, 839,
1703 791, 823, 823, 800, 817, 817, 817, 798, 938, 833,
1704 817, 945, 846, 813, 833, 800, 833, 830, 842, 800,
1705 760, 847, 760, 767, 839, 864, 833, 817, 830, 865,
1706 830, 846, 881, 830, 830, 945, 864, 767, 767, 859,
1707 865, 847, 881, 767, 767, 767, 767, 767, 767, 767,
1708 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
1709 767, 767, 767, 767, 767, 767, 767, 809, 809, 809,
1710
1711 868, 809, 809, 809, 822, 822, 822, 809, 809, 854,
1712 822, 828, 828, 828, 884, 854, 822, 828, 829, 829,
1713 829, 883, 863, 828, 829, 868, 854, 822, 863, 882,
1714 829, 835, 835, 835, 828, 884, 870, 858, 882, 863,
1715 883, 829, 835, 910, 835, 856, 855, 809, 870, 809,
1716 852, 851, 870, 910, 835, 840, 840, 840, 840, 840,
1717 840, 840, 840, 840, 840, 840, 840, 840, 840, 840,
1718 840, 840, 840, 840, 840, 840, 840, 840, 840, 840,
1719 840, 840, 840, 840, 840, 840, 840, 840, 840, 840,
1720 840, 840, 840, 840, 840, 840, 840, 840, 840, 840,
1721
1722 840, 840, 840, 840, 840, 840, 840, 840, 840, 840,
1723 840, 841, 841, 841, 841, 841, 841, 841, 841, 841,
1724 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
1725 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
1726 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
1727 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
1728 841, 841, 841, 841, 841, 841, 841, 857, 857, 857,
1729 862, 866, 866, 866, 896, 862, 902, 902, 902, 909,
1730 850, 862, 902, 930, 849, 896, 843, 902, 1043, 902,
1731 857, 1043, 862, 930, 866, 838, 836, 909, 826, 902,
1732
1733 907, 907, 907, 907, 907, 907, 907, 907, 907, 907,
1734 907, 907, 907, 907, 907, 907, 907, 907, 907, 907,
1735 907, 907, 907, 907, 907, 907, 907, 907, 907, 907,
1736 907, 907, 907, 907, 907, 907, 907, 907, 907, 907,
1737 907, 907, 907, 907, 907, 907, 907, 907, 907, 907,
1738 907, 907, 907, 907, 907, 907, 908, 916, 916, 916,
1739 921, 921, 921, 916, 923, 924, 921, 935, 937, 940,
1740 924, 825, 924, 977, 977, 978, 978, 977, 908, 978,
1741 916, 824, 924, 921, 935, 937, 988, 988, 940, 821,
1742 988, 820, 819, 923, 931, 931, 931, 931, 931, 931,
1743
1744 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
1745 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
1746 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
1747 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
1748 931, 931, 931, 931, 931, 931, 931, 931, 931, 931,
1749 947, 1008, 1008, 1025, 1025, 1008, 818, 1025, 816, 811,
1750 810, 801, 797, 792, 790, 789, 786, 784, 777, 775,
1751 774, 772, 770, 769, 754, 746, 743, 738, 737, 736,
1752 947, 953, 953, 953, 953, 953, 953, 953, 953, 953,
1753 953, 953, 953, 953, 953, 953, 953, 953, 953, 953,
1754
1755 953, 953, 954, 954, 954, 954, 954, 954, 954, 954,
1756 954, 954, 954, 954, 954, 954, 954, 954, 954, 954,
1757 954, 954, 954, 955, 955, 955, 955, 955, 955, 955,
1758 955, 955, 955, 955, 955, 955, 955, 955, 955, 955,
1759 955, 955, 955, 955, 956, 956, 956, 956, 956, 956,
1760 956, 956, 956, 956, 956, 956, 956, 956, 956, 956,
1761 956, 956, 956, 956, 956, 957, 957, 957, 957, 957,
1762 957, 957, 957, 957, 957, 957, 957, 957, 957, 957,
1763 957, 957, 957, 957, 957, 957, 958, 958, 958, 958,
1764 958, 958, 958, 958, 958, 958, 958, 958, 958, 958,
1765
1766 958, 958, 958, 958, 958, 958, 958, 959, 959, 959,
1767 959, 959, 959, 959, 959, 959, 959, 959, 959, 959,
1768 959, 959, 959, 959, 959, 959, 959, 959, 960, 960,
1769 960, 960, 960, 960, 960, 960, 960, 960, 960, 960,
1770 960, 960, 960, 960, 960, 960, 960, 960, 960, 961,
1771 961, 961, 961, 961, 961, 961, 961, 961, 961, 961,
1772 961, 961, 961, 961, 961, 961, 961, 961, 961, 961,
1773 962, 962, 962, 962, 962, 962, 962, 962, 962, 962,
1774 962, 962, 962, 962, 962, 962, 962, 962, 962, 962,
1775 962, 963, 963, 963, 963, 963, 963, 963, 963, 963,
1776
1777 963, 963, 963, 963, 963, 963, 963, 963, 963, 963,
1778 963, 963, 964, 730, 729, 726, 964, 964, 964, 964,
1779 724, 723, 721, 964, 964, 965, 965, 965, 965, 720,
1780 965, 965, 965, 965, 965, 719, 965, 965, 965, 965,
1781 717, 716, 714, 965, 965, 966, 966, 713, 966, 966,
1782 966, 966, 966, 966, 966, 966, 966, 966, 966, 966,
1783 966, 966, 711, 966, 966, 966, 967, 967, 710, 967,
1784 967, 967, 967, 967, 967, 967, 967, 967, 967, 967,
1785 967, 967, 967, 709, 967, 967, 967, 968, 968, 708,
1786 968, 968, 968, 968, 968, 968, 968, 968, 968, 968,
1787
1788 968, 968, 968, 968, 706, 968, 968, 968, 969, 969,
1789 969, 705, 969, 969, 704, 969, 969, 969, 703, 969,
1790 969, 702, 969, 700, 699, 969, 969, 969, 970, 970,
1791 698, 970, 970, 970, 695, 970, 694, 970, 970, 970,
1792 970, 693, 692, 691, 970, 970, 971, 681, 680, 971,
1793 971, 971, 670, 971, 667, 971, 971, 971, 971, 662,
1794 654, 653, 971, 971, 972, 972, 652, 651, 972, 972,
1795 650, 648, 643, 972, 972, 642, 972, 640, 638, 635,
1796 972, 972, 973, 633, 632, 631, 973, 973, 630, 627,
1797 626, 973, 973, 973, 973, 625, 623, 622, 973, 973,
1798
1799 974, 974, 974, 621, 620, 974, 974, 974, 974, 974,
1800 619, 974, 974, 974, 974, 618, 616, 615, 974, 974,
1801 975, 975, 614, 975, 975, 975, 975, 975, 975, 975,
1802 975, 975, 975, 975, 975, 975, 975, 975, 975, 975,
1803 975, 976, 976, 976, 612, 611, 976, 976, 976, 976,
1804 976, 610, 976, 976, 976, 976, 609, 608, 604, 976,
1805 976, 979, 979, 603, 602, 601, 600, 592, 590, 586,
1806 585, 584, 979, 562, 537, 979, 536, 535, 534, 979,
1807 979, 980, 980, 533, 980, 980, 980, 980, 980, 980,
1808 980, 980, 980, 980, 980, 980, 980, 980, 980, 980,
1809
1810 980, 980, 981, 532, 528, 525, 517, 516, 981, 514,
1811 513, 981, 508, 506, 503, 981, 981, 982, 501, 496,
1812 982, 494, 493, 982, 490, 488, 487, 982, 982, 983,
1813 983, 983, 983, 983, 983, 983, 983, 983, 983, 983,
1814 983, 983, 983, 983, 983, 983, 983, 983, 983, 983,
1815 984, 984, 484, 984, 984, 984, 984, 984, 984, 984,
1816 984, 984, 984, 984, 984, 984, 984, 984, 984, 984,
1817 984, 985, 985, 985, 985, 985, 985, 985, 985, 985,
1818 985, 985, 985, 985, 985, 985, 985, 985, 985, 985,
1819 985, 985, 986, 986, 986, 986, 986, 986, 986, 986,
1820
1821 986, 986, 986, 986, 986, 986, 986, 986, 986, 986,
1822 986, 986, 986, 987, 987, 483, 987, 987, 987, 987,
1823 987, 987, 987, 987, 987, 987, 987, 987, 987, 987,
1824 987, 987, 987, 987, 989, 989, 481, 480, 479, 478,
1825 477, 476, 474, 473, 468, 467, 466, 465, 989, 463,
1826 451, 450, 449, 989, 990, 448, 430, 990, 421, 411,
1827 399, 990, 990, 991, 991, 398, 991, 991, 991, 991,
1828 991, 991, 991, 991, 991, 991, 991, 991, 991, 991,
1829 991, 991, 991, 991, 992, 992, 395, 992, 992, 992,
1830 992, 992, 992, 992, 992, 992, 992, 992, 992, 992,
1831
1832 992, 992, 992, 992, 992, 993, 993, 394, 993, 993,
1833 993, 993, 993, 993, 993, 993, 993, 993, 993, 993,
1834 993, 993, 993, 993, 993, 993, 994, 994, 994, 994,
1835 994, 994, 994, 994, 994, 994, 994, 994, 994, 994,
1836 994, 994, 994, 994, 994, 994, 994, 995, 392, 388,
1837 995, 387, 374, 371, 995, 995, 996, 996, 996, 996,
1838 996, 996, 996, 996, 996, 996, 996, 996, 368, 996,
1839 996, 367, 996, 996, 996, 996, 996, 997, 997, 997,
1840 997, 997, 997, 997, 997, 997, 997, 997, 997, 366,
1841 997, 997, 355, 997, 997, 997, 997, 997, 998, 998,
1842
1843 998, 998, 998, 998, 998, 998, 998, 998, 998, 998,
1844 354, 998, 998, 353, 998, 998, 998, 998, 998, 999,
1845 999, 350, 999, 999, 999, 999, 999, 999, 999, 999,
1846 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
1847 1000, 1000, 345, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1848 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1849 1000, 1001, 1001, 342, 1001, 1001, 1001, 1001, 1001, 1001,
1850 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
1851 1001, 1001, 1002, 1002, 1002, 340, 338, 1002, 1002, 1002,
1852 1002, 1002, 337, 1002, 1002, 1002, 1002, 336, 335, 332,
1853
1854 1002, 1002, 1003, 1003, 331, 325, 1003, 324, 323, 322,
1855 321, 320, 319, 318, 1003, 307, 1003, 264, 263, 262,
1856 258, 1003, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
1857 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
1858 1004, 1004, 1004, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
1859 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
1860 1005, 1005, 1005, 1005, 1006, 1006, 238, 1006, 1006, 1006,
1861 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006,
1862 1006, 1006, 1006, 1006, 1006, 1007, 1007, 233, 1007, 1007,
1863 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007,
1864
1865 1007, 1007, 1007, 1007, 1007, 1007, 1009, 1009, 232, 1009,
1866 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
1867 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1010, 1010, 231,
1868 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
1869 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1011,
1870 225, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
1871 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1012,
1872 1012, 224, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
1873 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
1874 1013, 1013, 221, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
1875
1876 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
1877 1013, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
1878 1014, 1014, 1014, 220, 1014, 1014, 219, 1014, 1014, 1014,
1879 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
1880 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
1881 1015, 1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
1882 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
1883 1016, 1016, 1016, 1016, 1017, 1017, 218, 1017, 1017, 1017,
1884 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
1885 1017, 1017, 1017, 1017, 1017, 1018, 1018, 1018, 1018, 1018,
1886
1887 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
1888 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 217, 1019,
1889 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
1890 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1020, 1020, 216,
1891 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
1892 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1021,
1893 215, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
1894 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1022,
1895 1022, 214, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
1896 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
1897
1898 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
1899 1023, 1023, 209, 1023, 1023, 202, 1023, 1023, 1023, 1023,
1900 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1901 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1902 1024, 1024, 1026, 1026, 200, 1026, 1026, 1026, 1026, 1026,
1903 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
1904 1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1905 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1906 1027, 1027, 1027, 1027, 1028, 1028, 1028, 1028, 1028, 1028,
1907 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028,
1908
1909 1028, 199, 1028, 1028, 1028, 1029, 1029, 198, 1029, 1029,
1910 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029,
1911 1029, 1029, 1029, 1029, 1029, 1029, 1030, 1030, 1030, 1030,
1912 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
1913 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031, 1031,
1914 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031,
1915 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032,
1916 1032, 1032, 1032, 196, 1032, 1032, 1032, 1032, 1032, 1032,
1917 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,
1918 1033, 188, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
1919
1920 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
1921 1034, 1034, 185, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
1922 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
1923 1034, 1035, 1035, 184, 1035, 1035, 1035, 1035, 1035, 1035,
1924 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035,
1925 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
1926 1036, 1036, 1036, 1036, 183, 1036, 1036, 182, 1036, 1036,
1927 1036, 1036, 1036, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
1928 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
1929 1037, 1037, 1037, 1037, 1038, 1038, 179, 1038, 1038, 1038,
1930
1931 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
1932 1038, 1038, 1038, 1038, 1038, 1039, 1039, 166, 1039, 1039,
1933 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
1934 1039, 1039, 1039, 1039, 1039, 1039, 1040, 1040, 1040, 1040,
1935 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
1936 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 1041,
1937 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 161,
1938 1041, 1041, 160, 1041, 1041, 1041, 1041, 1041, 1042, 1042,
1939 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
1940 136, 1042, 1042, 135, 1042, 1042, 1042, 1042, 1042, 1044,
1941
1942 1044, 126, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,
1943 1044, 1044, 1044, 1044, 1044, 119, 1044, 1044, 1044, 1044,
1944 112, 75, 73, 67, 64, 61, 58, 57, 51, 49,
1945 27, 12, 11, 952, 952, 952, 952, 952, 952, 952,
1946 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1947 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1948 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1949 952, 952, 952, 952, 952, 952, 952, 952, 952, 952,
1950 952, 952, 952, 952, 952, 952, 952, 952, 952, 952
1951 } ;
1952
1953 extern int yy_flex_debug;
1954 int yy_flex_debug = 0;
1955
1956 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
1957 static char *yy_full_match;
1958 static int yy_lp;
1959 static int yy_looking_for_trail_begin = 0;
1960 static int yy_full_lp;
1961 static int *yy_full_state;
1962 #define YY_TRAILING_MASK 0x2000
1963 #define YY_TRAILING_HEAD_MASK 0x4000
1964 #define REJECT \
1965 { \
1966 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
1967 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
1968 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
1969 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
1970 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
1971 ++(yy_lp); \
1972 goto find_rule; \
1973 }
1974
1975 #define yymore() yymore_used_but_not_detected
1976 #define YY_MORE_ADJ 0
1977 #define YY_RESTORE_YY_MORE_OFFSET
1978 char *yytext;
1979 #line 1 "lacheck.l"
1980 /* -*- Mode: C -*-
1981 *
1982 * lacheck.lex - A consistency checker checker for LaTeX documents
1983 *
1984 * Copyright (C) 1991, 1992 Kresten Krab Thorup.
1985 * Copyright (C) 1993 --- 1998 Per Abrahamsen.
1986 *
1987 * This program is free software; you can redistribute it and/or modify
1988 * it under the terms of the GNU General Public License as published by
1989 * the Free Software Foundation; either version 1, or (at your option)
1990 * any later version.
1991 *
1992 * This program is distributed in the hope that it will be useful,
1993 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1994 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1995 * GNU General Public License for more details.
1996 *
1997 * You should have received a copy of the GNU General Public License
1998 * along with this program; if not, write to the Free Software
1999 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
2000 *
2001 * Please send bugs, suggestions, and queries to auc-tex_mgr@sunsite.auc.dk.
2002 *
2003 * $Revision: 1.26 $
2004 * Author : Kresten Krab Thorup
2005 * Created On : Sun May 26 18:11:58 1991
2006 *
2007 * HISTORY
2008 * 07-Mar-1998 Per Abrahamsen
2009 * Added return to yywrap. Patch by Fabrice POPINEAU
2010 * <popineau@esemetz.ese-metz.fr>.
2011 * 14-Jan-1998 Per Abrahamsen
2012 * Added GPL blurp.
2013 * 27-Oct-1997 Per Abrahamsen
2014 * Count newline after newenvironment and newcommand.
2015 * 12-Jan-1996 Per Abrahamsen
2016 * \\} used not to end a group in definitions. Reported by Piet
2017 * van Oostrum <piet@cs.ruu.nl>.
2018 * 03-Jan-1995 Per Abrahamsen
2019 * Fix bug which prevented detection of multiple illegal characters
2020 * in labels. Reported by eeide@jaguar.cs.utah.edu (Eric Eide).
2021 * 30-Jul-1994 Per Abrahamsen
2022 * Define dummy yywrap so we no longer depend on `libl.a'.
2023 * 26-Apr-1994 Per Abrahamsen
2024 * Removed a few warnings, by Richard Lloyd <R.K.Lloyd@csc.liv.ac.uk>.
2025 * 23-Apr-1994 Per Abrahamsen
2026 * Changed all `%i' to `%d' for VMS portability. Reported by
2027 * Stephen Harker <PHS172M@vaxc.cc.monash.edu.au>.
2028 * 16-Feb-1994 Per Abrahamsen
2029 * Try file name with `.tex' appended before trying it bare. This
2030 * will make the case where a directory and a TeX file share the
2031 * same name work.
2032 * 19-Jan-1994 Per Abrahamsen
2033 * Comments don't imply whitespace. Pointed out by Jacco van
2034 * Ossenbruggen <jrvosse@cs.vu.nl>.
2035 * 14-Jan-1994 Per Abrahamsen
2036 * Don't complain about \ref at the beginning of a paragraph.
2037 * Suggested by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
2038 * 11-Jan-1994 Per Abrahamsen
2039 * Added version string to usage message. Suggested by Uwe Bonnes
2040 * <bon@LTE.E-TECHNIK.uni-erlangen.de> .
2041 * 04-Jan-1994 Per Abrahamsen
2042 * Warn about newlines in \verb. Suggested by Mark Burton
2043 * <markb@ordern.demon.co.uk>. The LaTeX Book agrees (p. 168).
2044 * 10-Sep-1993 Per Abrahamsen
2045 * Removed complain about missing ~ before \cite. Requested by
2046 * Nelson H. F. Beebe <beebe@math.utah.edu>. The LaTeX Book seems
2047 * to agree.
2048 * 03-Sep-1993 Per Abrahamsen
2049 * Check for illegal characters in labels.
2050 * 16-Aug-1993 Per Abrahamsen
2051 * Recognize \endinput. Suggested by Stefan Farestam
2052 * <Stefan.Farestam@cerfacs.fr>.
2053 * 13-Aug-1993 Per Abrahamsen
2054 * } was eaten after display math. Reported by Eckhard R�ggeberg
2055 * <eckhard@ts.go.dlr.de>.
2056 * 13-Aug-1993 Per Abrahamsen
2057 * Recognize \verb*. Reported by Eckhard R�ggeberg
2058 * <eckhard@ts.go.dlr.de>.
2059 * 08-Aug-1993 Per Abrahamsen
2060 * Better catch begin and end without arguments.
2061 * 08-Aug-1993 Per Abrahamsen
2062 * Removed free(NULL) as reported by Darrel R. Hankerson
2063 * <hankedr@mail.auburn.edu>.
2064 * 08-Aug-1993 Per Abrahamsen
2065 * Removed declaration of realloc for some C compilers. Reported by
2066 * Darrel R. Hankerson <hankedr@mail.auburn.edu>
2067 * 30-Jul-1993 Per Abrahamsen
2068 * Added check for italic correction after normal text.
2069 * 29-Jul-1993 Per Abrahamsen
2070 * Added cast for (char*) malloc as suggested by John Interrante
2071 * <interran@uluru.Stanford.EDU>.
2072 * 29-Jul-1993 Per Abrahamsen
2073 * Added check for missing and extra italic correction.
2074 * 29-Jul-1993 Per Abrahamsen
2075 * Made line number counting more reliable (but it still needs a rewrite)!
2076 * 28-Jul-1993 Per Abrahamsen
2077 * Added check for italic correction before point or comma.
2078 * 6-Jun-1992 Kresten Krab Thorup
2079 * Last Modified: Sat Jun 6 16:37:44 1992 #48 (Kresten Krab Thorup)
2080 * Added test for whitespace before punctuation mark
2081 * 17-Dec-1991 (Last Mod: Tue Dec 17 21:01:24 1991 #41) Kresten Krab Thorup
2082 * Added 'word word` and missing ~ before cite and ref
2083 * 18-Jun-1991 (Last Mod: Tue Jun 18 19:20:43 1991 #17) Kresten Krab Thorup
2084 * Added check (or rather management) for \newenvironment and
2085 * \newcommand - as suggested by Per Abrahamsen abrham@hugin.dk
2086 * 30-May-1991 (Last Mod: Thu May 30 02:22:33 1991 #15) Kresten Krab Thorup
2087 * Added check for `$${punct}' and `{punct}$' constructions
2088 * 30-May-1991 (Last Mod: Wed May 29 10:31:35 1991 #6) Kresten Krab Thorup
2089 * Improved (dynamic) stack management from Andreas Stolcke ...
2090 * <stolcke@ICSI.Berkeley.EDU>
2091 * 26-May-1991 Kresten Krab Thorup
2092 * Initial distribution version.
2093 */
2094 #line 119 "lacheck.l"
2095
2096 #include <stdio.h>
2097 #include <string.h>
2098
2099 /* #include <sys/param.h> */
2100
2101 /* extern char *realloc(); */
2102
2103 #ifdef NEED_STRSTR
2104 char *strstr();
2105 #endif
2106
2107 #define GROUP_STACK_SIZE 10
2108 #define INPUT_STACK_SIZE 10
2109
2110 #define PROGNAME "LaCheck"
2111
2112 /* macros */
2113
2114 #define CG_NAME gstack[gstackp-1].s_name
2115 #define CG_TYPE gstack[gstackp-1].s_type
2116 #define CG_LINE gstack[gstackp-1].s_line
2117 #define CG_ITALIC gstack[gstackp-1].italic
2118 #define CG_FILE gstack[gstackp-1].s_file
2119
2120 void pop(void);
2121 void push(const char *p_name, int p_type, int p_line);
2122 void linecount(void);
2123 void g_checkend(int n);
2124 void e_checkend(int n, char *name);
2125 void f_checkend(char *name);
2126 void input_file(char *file_nam);
2127 void print_bad_match(char *end_command, int type);
2128 int check_top_level_end(char *end_command, int type);
2129
2130 /* global variables */
2131
2132 int line_count = 1;
2133 int warn_count = 0;
2134 char *file_name;
2135 char verb_char;
2136
2137 /* the group stack */
2138
2139 typedef struct tex_group
2140 {
2141 char *s_name;
2142 int s_type;
2143 int s_line;
2144 int italic;
2145 char *s_file;
2146 } tex_group;
2147
2148 tex_group *gstack;
2149 int gstack_size = GROUP_STACK_SIZE;
2150 int gstackp = 0;
2151
2152 typedef struct input_
2153 {
2154 YY_BUFFER_STATE stream;
2155 char *name;
2156 int linenum;
2157 } input_;
2158
2159 input_ *istack;
2160 int istack_size = INPUT_STACK_SIZE;
2161 int istackp = 0;
2162
2163 int def_count = 0;
2164
2165
2166
2167 #line 2168 "lacheck.c"
2168
2169 #define INITIAL 0
2170 #define B_ENVIRONMENT 1
2171 #define E_ENVIRONMENT 2
2172 #define VERBATIM 3
2173 #define INCLUDE 4
2174 #define MATH 5
2175 #define COMMENT 6
2176 #define VERB 7
2177 #define DEF 8
2178 #define AFTER_DISPLAY 9
2179 #define ENV_DEF 10
2180 #define ICOR 11
2181 #define GETICOR 12
2182
2183 #ifndef YY_NO_UNISTD_H
2184 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2185 * down here because we want the user's section 1 to have been scanned first.
2186 * The user has a chance to override it with an option.
2187 */
2188 #include <unistd.h>
2189 #endif
2190
2191 #ifndef YY_EXTRA_TYPE
2192 #define YY_EXTRA_TYPE void *
2193 #endif
2194
2195 static int yy_init_globals (void );
2196
2197 /* Accessor methods to globals.
2198 These are made visible to non-reentrant scanners for convenience. */
2199
2200 int yylex_destroy (void );
2201
2202 int yyget_debug (void );
2203
2204 void yyset_debug (int debug_flag );
2205
2206 YY_EXTRA_TYPE yyget_extra (void );
2207
2208 void yyset_extra (YY_EXTRA_TYPE user_defined );
2209
2210 FILE *yyget_in (void );
2211
2212 void yyset_in (FILE * in_str );
2213
2214 FILE *yyget_out (void );
2215
2216 void yyset_out (FILE * out_str );
2217
2218 yy_size_t yyget_leng (void );
2219
2220 char *yyget_text (void );
2221
2222 int yyget_lineno (void );
2223
2224 void yyset_lineno (int line_number );
2225
2226 /* Macros after this point can all be overridden by user definitions in
2227 * section 1.
2228 */
2229
2230 #ifndef YY_SKIP_YYWRAP
2231 #ifdef __cplusplus
2232 extern "C" int yywrap (void );
2233 #else
2234 extern int yywrap (void );
2235 #endif
2236 #endif
2237
2238 static void yyunput (int c,char *buf_ptr );
2239
2240 #ifndef yytext_ptr
2241 static void yy_flex_strncpy (char *,yyconst char *,int );
2242 #endif
2243
2244 #ifdef YY_NEED_STRLEN
2245 static int yy_flex_strlen (yyconst char * );
2246 #endif
2247
2248 #ifndef YY_NO_INPUT
2249
2250 #ifdef __cplusplus
2251 static int yyinput (void );
2252 #else
2253 static int input (void );
2254 #endif
2255
2256 #endif
2257
2258 /* Amount of stuff to slurp up with each read. */
2259 #ifndef YY_READ_BUF_SIZE
2260 #define YY_READ_BUF_SIZE 8192
2261 #endif
2262
2263 /* Copy whatever the last rule matched to the standard output. */
2264 #ifndef ECHO
2265 /* This used to be an fputs(), but since the string might contain NUL's,
2266 * we now use fwrite().
2267 */
2268 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
2269 #endif
2270
2271 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2272 * is returned in "result".
2273 */
2274 #ifndef YY_INPUT
2275 #define YY_INPUT(buf,result,max_size) \
2276 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2277 { \
2278 int c = '*'; \
2279 size_t n; \
2280 for ( n = 0; n < max_size && \
2281 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2282 buf[n] = (char) c; \
2283 if ( c == '\n' ) \
2284 buf[n++] = (char) c; \
2285 if ( c == EOF && ferror( yyin ) ) \
2286 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2287 result = n; \
2288 } \
2289 else \
2290 { \
2291 errno=0; \
2292 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2293 { \
2294 if( errno != EINTR) \
2295 { \
2296 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2297 break; \
2298 } \
2299 errno=0; \
2300 clearerr(yyin); \
2301 } \
2302 }\
2303 \
2304
2305 #endif
2306
2307 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2308 * we don't want an extra ';' after the "return" because that will cause
2309 * some compilers to complain about unreachable statements.
2310 */
2311 #ifndef yyterminate
2312 #define yyterminate() return YY_NULL
2313 #endif
2314
2315 /* Number of entries by which start-condition stack grows. */
2316 #ifndef YY_START_STACK_INCR
2317 #define YY_START_STACK_INCR 25
2318 #endif
2319
2320 /* Report a fatal error. */
2321 #ifndef YY_FATAL_ERROR
2322 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2323 #endif
2324
2325 /* end tables serialization structures and prototypes */
2326
2327 /* Default declaration of generated scanner - a define so the user can
2328 * easily add parameters.
2329 */
2330 #ifndef YY_DECL
2331 #define YY_DECL_IS_OURS 1
2332
2333 extern int yylex (void);
2334
2335 #define YY_DECL int yylex (void)
2336 #endif /* !YY_DECL */
2337
2338 /* Code executed at the beginning of each rule, after yytext and yyleng
2339 * have been set up.
2340 */
2341 #ifndef YY_USER_ACTION
2342 #define YY_USER_ACTION
2343 #endif
2344
2345 /* Code executed at the end of each rule. */
2346 #ifndef YY_BREAK
2347 #define YY_BREAK break;
2348 #endif
2349
2350 #define YY_RULE_SETUP \
2351 if ( yyleng > 0 ) \
2352 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
2353 (yytext[yyleng - 1] == '\n'); \
2354 YY_USER_ACTION
2355
2356 /** The main scanner function which does all the work.
2357 */
2358 YY_DECL
2359 {
2360 register yy_state_type yy_current_state;
2361 register char *yy_cp, *yy_bp;
2362 register int yy_act;
2363
2364 if ( !(yy_init) )
2365 {
2366 (yy_init) = 1;
2367
2368 #ifdef YY_USER_INIT
2369 YY_USER_INIT;
2370 #endif
2371
2372 /* Create the reject buffer large enough to save one state per allowed character. */
2373 if ( ! (yy_state_buf) )
2374 (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE );
2375 if ( ! (yy_state_buf) )
2376 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
2377
2378 if ( ! (yy_start) )
2379 (yy_start) = 1; /* first start state */
2380
2381 if ( ! yyin )
2382 yyin = stdin;
2383
2384 if ( ! yyout )
2385 yyout = stdout;
2386
2387 if ( ! YY_CURRENT_BUFFER ) {
2388 yyensure_buffer_stack ();
2389 YY_CURRENT_BUFFER_LVALUE =
2390 yy_create_buffer(yyin,YY_BUF_SIZE );
2391 }
2392
2393 yy_load_buffer_state( );
2394 }
2395
2396 {
2397 #line 234 "lacheck.l"
2398
2399
2400 #line 2401 "lacheck.c"
2401
2402 while ( 1 ) /* loops until end-of-file is reached */
2403 {
2404 yy_cp = (yy_c_buf_p);
2405
2406 /* Support of yytext. */
2407 *yy_cp = (yy_hold_char);
2408
2409 /* yy_bp points to the position in yy_ch_buf of the start of
2410 * the current run.
2411 */
2412 yy_bp = yy_cp;
2413
2414 yy_current_state = (yy_start);
2415 yy_current_state += YY_AT_BOL();
2416
2417 (yy_state_ptr) = (yy_state_buf);
2418 *(yy_state_ptr)++ = yy_current_state;
2419
2420 yy_match:
2421 do
2422 {
2423 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2424 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2425 {
2426 yy_current_state = (int) yy_def[yy_current_state];
2427 if ( yy_current_state >= 953 )
2428 yy_c = yy_meta[(unsigned int) yy_c];
2429 }
2430 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2431 *(yy_state_ptr)++ = yy_current_state;
2432 ++yy_cp;
2433 }
2434 while ( yy_current_state != 952 );
2435
2436 yy_find_action:
2437 yy_current_state = *--(yy_state_ptr);
2438 (yy_lp) = yy_accept[yy_current_state];
2439 find_rule: /* we branch to this label when backing up */
2440 for ( ; ; ) /* until we find what rule we matched */
2441 {
2442 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
2443 {
2444 yy_act = yy_acclist[(yy_lp)];
2445 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2446 (yy_looking_for_trail_begin) )
2447 {
2448 if ( yy_act == (yy_looking_for_trail_begin) )
2449 {
2450 (yy_looking_for_trail_begin) = 0;
2451 yy_act &= ~YY_TRAILING_HEAD_MASK;
2452 break;
2453 }
2454 }
2455 else if ( yy_act & YY_TRAILING_MASK )
2456 {
2457 (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
2458 (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
2459 }
2460 else
2461 {
2462 (yy_full_match) = yy_cp;
2463 (yy_full_state) = (yy_state_ptr);
2464 (yy_full_lp) = (yy_lp);
2465 break;
2466 }
2467 ++(yy_lp);
2468 goto find_rule;
2469 }
2470 --yy_cp;
2471 yy_current_state = *--(yy_state_ptr);
2472 (yy_lp) = yy_accept[yy_current_state];
2473 }
2474
2475 YY_DO_BEFORE_ACTION;
2476
2477 do_action: /* This label is used only to access EOF actions. */
2478
2479 switch ( yy_act )
2480 { /* beginning of action switch */
2481 case 1:
2482 YY_RULE_SETUP
2483 #line 236 "lacheck.l"
2484 { ; }
2485 YY_BREAK
2486 case 2:
2487 YY_RULE_SETUP
2488 #line 238 "lacheck.l"
2489 { ; }
2490 YY_BREAK
2491 case 3:
2492 /* rule 3 can match eol */
2493 YY_RULE_SETUP
2494 #line 240 "lacheck.l"
2495 { line_count++; }
2496 YY_BREAK
2497 case 4:
2498 /* rule 4 can match eol */
2499 YY_RULE_SETUP
2500 #line 242 "lacheck.l"
2501 { line_count++; }
2502 YY_BREAK
2503 case 5:
2504 YY_RULE_SETUP
2505 #line 244 "lacheck.l"
2506 { ; }
2507 YY_BREAK
2508 case 6:
2509 YY_RULE_SETUP
2510 #line 246 "lacheck.l"
2511 { ; }
2512 YY_BREAK
2513 case 7:
2514 YY_RULE_SETUP
2515 #line 248 "lacheck.l"
2516 { ; }
2517 YY_BREAK
2518 case 8:
2519 /* rule 8 can match eol */
2520 YY_RULE_SETUP
2521 #line 250 "lacheck.l"
2522 {
2523 if (CG_TYPE != 4 && CG_TYPE != 5) {
2524 if (!(CG_TYPE == 2 && strstr(CG_NAME, "array"))) {
2525 printf( "\"%s\", line %d: possible unwanted space at \"{\"\n",
2526 file_name, line_count);
2527 ++warn_count ;
2528 }
2529 }
2530 push( "{", 0, line_count);
2531 linecount();
2532 }
2533 YY_BREAK
2534 case 9:
2535 YY_RULE_SETUP
2536 #line 262 "lacheck.l"
2537 { push( "{", 0, line_count);}
2538 YY_BREAK
2539 case 10:
2540 YY_RULE_SETUP
2541 #line 264 "lacheck.l"
2542 {
2543 {
2544 int italic = CG_ITALIC;
2545 g_checkend(0);
2546 if (italic && !CG_ITALIC)
2547 BEGIN(GETICOR) ;
2548 else
2549 BEGIN(INITIAL);
2550 }}
2551 YY_BREAK
2552 case 11:
2553 YY_RULE_SETUP
2554 #line 274 "lacheck.l"
2555 { g_checkend(0); }
2556 YY_BREAK
2557 case 12:
2558 YY_RULE_SETUP
2559 #line 276 "lacheck.l"
2560 {
2561 {
2562 if (!CG_ITALIC)
2563 {
2564 printf("\"%s\", line %d: you may need a \\/ before \"%s\"\n",
2565 file_name, line_count, yytext);
2566 ++warn_count;
2567 }
2568 BEGIN(INITIAL);
2569 }}
2570 YY_BREAK
2571 case 13:
2572 YY_RULE_SETUP
2573 #line 287 "lacheck.l"
2574 {
2575 {
2576 if (CG_ITALIC)
2577 {
2578 printf("\"%s\", line %d: \\/ not needed before italic text \"%s\"\n",
2579 file_name, line_count, yytext);
2580 ++warn_count;
2581 }
2582 BEGIN(INITIAL);
2583 }}
2584 YY_BREAK
2585 case 14:
2586 /* rule 14 can match eol */
2587 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2588 YY_LINENO_REWIND_TO(yy_cp - 2);
2589 (yy_c_buf_p) = yy_cp -= 2;
2590 YY_DO_BEFORE_ACTION; /* set up yytext again */
2591 YY_RULE_SETUP
2592 #line 298 "lacheck.l"
2593 {
2594 {
2595 linecount();
2596 if (!CG_ITALIC)
2597 {
2598 printf("\"%s\", line %d: \\/ not needed after non-italic text \"%s\"\n",
2599 file_name, line_count, yytext);
2600 ++warn_count;
2601 }
2602 }}
2603 YY_BREAK
2604 case 15:
2605 /* rule 15 can match eol */
2606 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2607 YY_LINENO_REWIND_TO(yy_cp - 2);
2608 (yy_c_buf_p) = yy_cp -= 2;
2609 YY_DO_BEFORE_ACTION; /* set up yytext again */
2610 YY_RULE_SETUP
2611 #line 309 "lacheck.l"
2612 {
2613 {
2614 linecount();
2615 if (!CG_ITALIC)
2616 {
2617 printf("\"%s\", line %d: \\/ is not needed after non-italic \"%s\"\n",
2618 file_name, line_count, yytext);
2619 ++warn_count;
2620 }
2621 }}
2622 YY_BREAK
2623 case 16:
2624 YY_RULE_SETUP
2625 #line 320 "lacheck.l"
2626 { BEGIN(INITIAL); }
2627 YY_BREAK
2628 case 17:
2629 YY_RULE_SETUP
2630 #line 322 "lacheck.l"
2631 { BEGIN(ICOR); }
2632 YY_BREAK
2633 case 18:
2634 YY_RULE_SETUP
2635 #line 324 "lacheck.l"
2636 {
2637 {
2638 printf("\"%s\", line %d: double \\/ found \"%s\"\n",
2639 file_name, line_count, yytext);
2640 ++warn_count;
2641 BEGIN(ICOR);
2642 }}
2643 YY_BREAK
2644 case 19:
2645 /* rule 19 can match eol */
2646 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2647 YY_LINENO_REWIND_TO(yy_cp - 1);
2648 (yy_c_buf_p) = yy_cp -= 1;
2649 YY_DO_BEFORE_ACTION; /* set up yytext again */
2650 YY_RULE_SETUP
2651 #line 332 "lacheck.l"
2652 { CG_ITALIC = 1; }
2653 YY_BREAK
2654 case 20:
2655 /* rule 20 can match eol */
2656 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2657 YY_LINENO_REWIND_TO(yy_bp + 12);
2658 (yy_c_buf_p) = yy_cp = yy_bp + 12;
2659 YY_DO_BEFORE_ACTION; /* set up yytext again */
2660 YY_RULE_SETUP
2661 #line 334 "lacheck.l"
2662 {
2663 {
2664 if(CG_ITALIC)
2665 BEGIN(GETICOR);
2666 else
2667 BEGIN(INITIAL);
2668 CG_ITALIC = 0;
2669 }}
2670 YY_BREAK
2671 case 21:
2672 /* rule 21 can match eol */
2673 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2674 YY_LINENO_REWIND_TO(yy_bp + 12);
2675 (yy_c_buf_p) = yy_cp = yy_bp + 12;
2676 YY_DO_BEFORE_ACTION; /* set up yytext again */
2677 YY_RULE_SETUP
2678 #line 343 "lacheck.l"
2679 { CG_ITALIC = 0; }
2680 YY_BREAK
2681 case 22:
2682 /* rule 22 can match eol */
2683 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2684 YY_LINENO_REWIND_TO(yy_bp + 3);
2685 (yy_c_buf_p) = yy_cp = yy_bp + 3;
2686 YY_DO_BEFORE_ACTION; /* set up yytext again */
2687 YY_RULE_SETUP
2688 #line 345 "lacheck.l"
2689 {
2690 {
2691 if(CG_ITALIC)
2692 BEGIN(GETICOR);
2693 else
2694 BEGIN(INITIAL);
2695 CG_ITALIC = !CG_ITALIC;
2696 }}
2697 YY_BREAK
2698 case 23:
2699 /* rule 23 can match eol */
2700 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2701 YY_LINENO_REWIND_TO(yy_bp + 3);
2702 (yy_c_buf_p) = yy_cp = yy_bp + 3;
2703 YY_DO_BEFORE_ACTION; /* set up yytext again */
2704 YY_RULE_SETUP
2705 #line 354 "lacheck.l"
2706 { CG_ITALIC = !CG_ITALIC; }
2707 YY_BREAK
2708 case 24:
2709 YY_RULE_SETUP
2710 #line 356 "lacheck.l"
2711 {
2712 {
2713 printf("\"%s\", line %d: do not use \\/ before \"%s\"\n",
2714 file_name, line_count, yytext);
2715 ++warn_count;
2716 BEGIN(INITIAL);
2717 }}
2718 YY_BREAK
2719 case 25:
2720 /* rule 25 can match eol */
2721 YY_RULE_SETUP
2722 #line 364 "lacheck.l"
2723 { ; }
2724 YY_BREAK
2725 case 26:
2726 YY_RULE_SETUP
2727 #line 366 "lacheck.l"
2728 { ; }
2729 YY_BREAK
2730 case 27:
2731 YY_RULE_SETUP
2732 #line 368 "lacheck.l"
2733 {
2734 {
2735 unput(yytext[0]);
2736 BEGIN(INITIAL);
2737 }}
2738 YY_BREAK
2739 case 28:
2740 YY_RULE_SETUP
2741 #line 374 "lacheck.l"
2742 BEGIN(DEF);
2743 YY_BREAK
2744 case 29:
2745 YY_RULE_SETUP
2746 #line 376 "lacheck.l"
2747 { ++def_count; }
2748 YY_BREAK
2749 case 30:
2750 YY_RULE_SETUP
2751 #line 378 "lacheck.l"
2752 { --def_count;
2753 if(def_count == 0)
2754 BEGIN(INITIAL); }
2755 YY_BREAK
2756 case 31:
2757 YY_RULE_SETUP
2758 #line 382 "lacheck.l"
2759 { ; }
2760 YY_BREAK
2761 case 32:
2762 YY_RULE_SETUP
2763 #line 384 "lacheck.l"
2764 BEGIN(ENV_DEF);
2765 YY_BREAK
2766 case 33:
2767 YY_RULE_SETUP
2768 #line 386 "lacheck.l"
2769 { ++def_count; }
2770 YY_BREAK
2771 case 34:
2772 YY_RULE_SETUP
2773 #line 388 "lacheck.l"
2774 { --def_count;
2775 if(def_count == 0)
2776 BEGIN(DEF); }
2777 YY_BREAK
2778 case 35:
2779 YY_RULE_SETUP
2780 #line 392 "lacheck.l"
2781 { ; }
2782 YY_BREAK
2783 case 36:
2784 YY_RULE_SETUP
2785 #line 394 "lacheck.l"
2786 {
2787 if(CG_TYPE == 4 || CG_TYPE == 5)
2788 print_bad_match(yytext,4);
2789 else
2790 {
2791 push( yytext, 4, line_count);
2792 }}
2793 YY_BREAK
2794 case 37:
2795 YY_RULE_SETUP
2796 #line 402 "lacheck.l"
2797 { g_checkend(4); }
2798 YY_BREAK
2799 case 38:
2800 YY_RULE_SETUP
2801 #line 404 "lacheck.l"
2802 {
2803 if(CG_TYPE == 4 || CG_TYPE == 5)
2804 print_bad_match(yytext,5);
2805 else
2806 {
2807 push( yytext, 5, line_count);
2808 }}
2809 YY_BREAK
2810 case 39:
2811 YY_RULE_SETUP
2812 #line 413 "lacheck.l"
2813 { g_checkend(5); BEGIN(AFTER_DISPLAY);}
2814 YY_BREAK
2815 case 40:
2816 YY_RULE_SETUP
2817 #line 415 "lacheck.l"
2818 {
2819
2820 printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed before end of displaymath\n",
2821 file_name, line_count, yytext);
2822 ++warn_count ;
2823
2824 BEGIN(INITIAL); }
2825 YY_BREAK
2826 case 41:
2827 /* rule 41 can match eol */
2828 YY_RULE_SETUP
2829 #line 423 "lacheck.l"
2830 { unput(yytext[0]); BEGIN(INITIAL); }
2831 YY_BREAK
2832 case 42:
2833 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2834 (yy_c_buf_p) = yy_cp = yy_bp + 1;
2835 YY_DO_BEFORE_ACTION; /* set up yytext again */
2836 YY_RULE_SETUP
2837 #line 425 "lacheck.l"
2838 { if (CG_TYPE == 4)
2839 {
2840 printf( "\"%s\", line %d: punctuation mark \"%s\" should be placed after end of math mode\n",
2841 file_name, line_count, yytext);
2842 ++warn_count ;
2843 BEGIN(INITIAL);
2844 }}
2845 YY_BREAK
2846 case 43:
2847 YY_RULE_SETUP
2848 #line 433 "lacheck.l"
2849 {
2850
2851 if(CG_TYPE == 5)
2852 print_bad_match(yytext, 4);
2853 else
2854
2855 if(CG_TYPE == 4)
2856 {
2857 e_checkend(4, yytext);
2858 }
2859 else
2860 {
2861 push( yytext, 4, line_count);
2862 }}
2863 YY_BREAK
2864 case 44:
2865 YY_RULE_SETUP
2866 #line 449 "lacheck.l"
2867 {
2868
2869 if(CG_TYPE == 4)
2870 print_bad_match(yytext,5);
2871 else
2872
2873 if(CG_TYPE == 5)
2874 {
2875 e_checkend(5, yytext);
2876 BEGIN(AFTER_DISPLAY);
2877 }
2878 else
2879 {
2880 push( yytext, 5, line_count);
2881 }}
2882 YY_BREAK
2883 case 45:
2884 /* rule 45 can match eol */
2885 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2886 YY_LINENO_REWIND_TO(yy_bp + 11);
2887 (yy_c_buf_p) = yy_cp = yy_bp + 11;
2888 YY_DO_BEFORE_ACTION; /* set up yytext again */
2889 YY_RULE_SETUP
2890 #line 465 "lacheck.l"
2891 {
2892 {
2893 push("\\begingroup", 1, line_count);
2894 }}
2895 YY_BREAK
2896 case 46:
2897 /* rule 46 can match eol */
2898 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2899 YY_LINENO_REWIND_TO(yy_bp + 9);
2900 (yy_c_buf_p) = yy_cp = yy_bp + 9;
2901 YY_DO_BEFORE_ACTION; /* set up yytext again */
2902 YY_RULE_SETUP
2903 #line 471 "lacheck.l"
2904 {
2905 {
2906 g_checkend(1);
2907 }}
2908 YY_BREAK
2909 case 47:
2910 YY_RULE_SETUP
2911 #line 477 "lacheck.l"
2912 { BEGIN(B_ENVIRONMENT); }
2913 YY_BREAK
2914 case 48:
2915 /* rule 48 can match eol */
2916 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2917 YY_LINENO_REWIND_TO(yy_cp - 1);
2918 (yy_c_buf_p) = yy_cp -= 1;
2919 YY_DO_BEFORE_ACTION; /* set up yytext again */
2920 YY_RULE_SETUP
2921 #line 479 "lacheck.l"
2922 {
2923 {
2924
2925 printf("\"%s\", line %d: {argument} missing for \\begin\n",
2926 file_name, line_count) ;
2927 ++warn_count;
2928 }}
2929 YY_BREAK
2930 case 49:
2931 YY_RULE_SETUP
2932 #line 487 "lacheck.l"
2933 {
2934 {
2935 if (strcmp( yytext, "verbatim" ) == 0 )
2936 {
2937 input();
2938 BEGIN(VERBATIM);
2939 }
2940 else
2941 {
2942 push(yytext, 2, line_count);
2943
2944 if ( strcmp (yytext, "sl" ) == 0
2945 || strcmp (yytext, "it" ) == 0)
2946 CG_ITALIC = 1;
2947 else if (strcmp (yytext, "normalshape") == 0)
2948 CG_ITALIC = 0;
2949 else if (strcmp (yytext, "em") == 0)
2950 CG_ITALIC = !CG_ITALIC;
2951
2952 input();
2953 BEGIN(INITIAL);
2954 }
2955 }}
2956 YY_BREAK
2957 case 50:
2958 YY_RULE_SETUP
2959 #line 511 "lacheck.l"
2960 { BEGIN(INITIAL); }
2961 YY_BREAK
2962 case 51:
2963 YY_RULE_SETUP
2964 #line 513 "lacheck.l"
2965 {
2966 printf("\"%s\", line %d: TAB character in verbatim environment\n",
2967 file_name, line_count) ;
2968 ++warn_count;
2969 }
2970 YY_BREAK
2971 case 52:
2972 YY_RULE_SETUP
2973 #line 519 "lacheck.l"
2974 { ; }
2975 YY_BREAK
2976 case 53:
2977 /* rule 53 can match eol */
2978 YY_RULE_SETUP
2979 #line 521 "lacheck.l"
2980 { ++line_count; }
2981 YY_BREAK
2982 case 54:
2983 YY_RULE_SETUP
2984 #line 524 "lacheck.l"
2985 {
2986 verb_char = yytext[yyleng-1];
2987 BEGIN(VERB);
2988 }
2989 YY_BREAK
2990 case 55:
2991 /* rule 55 can match eol */
2992 YY_RULE_SETUP
2993 #line 529 "lacheck.l"
2994 {
2995 printf("\"%s\", line %d: \\verb should not contain end of line characters\n",
2996 file_name, line_count) ;
2997 ++line_count;
2998 }
2999 YY_BREAK
3000 case 56:
3001 YY_RULE_SETUP
3002 #line 535 "lacheck.l"
3003 {
3004 if ( *yytext == verb_char )
3005 BEGIN(INITIAL);
3006 }
3007 YY_BREAK
3008 case 57:
3009 YY_RULE_SETUP
3010 #line 541 "lacheck.l"
3011 { BEGIN(E_ENVIRONMENT); }
3012 YY_BREAK
3013 case 58:
3014 /* rule 58 can match eol */
3015 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3016 YY_LINENO_REWIND_TO(yy_cp - 1);
3017 (yy_c_buf_p) = yy_cp -= 1;
3018 YY_DO_BEFORE_ACTION; /* set up yytext again */
3019 YY_RULE_SETUP
3020 #line 543 "lacheck.l"
3021 {
3022 {
3023 printf("\"%s\", line %d: {argument} missing for \\end\n",
3024 file_name, line_count) ;
3025 ++warn_count;
3026 }}
3027 YY_BREAK
3028 case 59:
3029 YY_RULE_SETUP
3030 #line 551 "lacheck.l"
3031 {
3032 {
3033 e_checkend(2, yytext);
3034 input();
3035
3036 BEGIN(INITIAL);
3037 }}
3038 YY_BREAK
3039 case 60:
3040 /* rule 60 can match eol */
3041 YY_RULE_SETUP
3042 #line 560 "lacheck.l"
3043 {
3044 {
3045 linecount();
3046 printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n",
3047 file_name, line_count, ++yytext);
3048 ++warn_count ;
3049 BEGIN(INITIAL);
3050 }}
3051 YY_BREAK
3052 case 61:
3053 /* rule 61 can match eol */
3054 YY_RULE_SETUP
3055 #line 569 "lacheck.l"
3056 {
3057 {
3058 printf( "\"%s\", line %d: missing `\\ ' after \"%s\"\n",
3059 file_name, line_count, yytext);
3060 ++warn_count ;
3061 BEGIN(INITIAL);
3062 }}
3063 YY_BREAK
3064 case 62:
3065 /* rule 62 can match eol */
3066 YY_RULE_SETUP
3067 #line 577 "lacheck.l"
3068 {
3069 {
3070 linecount();
3071 printf("\"%s\", line %d: missing `\\@' before `.' in \"%s\"\n",
3072 file_name, line_count, yytext);
3073 ++warn_count ;
3074 BEGIN(INITIAL);
3075 }}
3076 YY_BREAK
3077 case 63:
3078 /* rule 63 can match eol */
3079 YY_RULE_SETUP
3080 #line 586 "lacheck.l"
3081 {
3082
3083 printf("\"%s\", line %d: double space at \"%s\"\n",
3084 file_name, line_count, yytext);
3085 ++warn_count;
3086 linecount();
3087 BEGIN(INITIAL);
3088 }
3089 YY_BREAK
3090 case 64:
3091 /* rule 64 can match eol */
3092 YY_RULE_SETUP
3093 #line 595 "lacheck.l"
3094 {
3095 printf("\"%s\", line %d: \\ldots should be \\cdots in \"%s\"\n",
3096 file_name, line_count, yytext);
3097 ++warn_count;
3098 linecount();
3099 }
3100 YY_BREAK
3101 case 65:
3102 /* rule 65 can match eol */
3103 YY_RULE_SETUP
3104 #line 602 "lacheck.l"
3105 {
3106 printf("\"%s\", line %d: \\cdots should be \\ldots in \"%s\"\n",
3107 file_name, line_count, yytext);
3108 ++warn_count;
3109 linecount();
3110 BEGIN(INITIAL);
3111 }
3112 YY_BREAK
3113 case 66:
3114 /* rule 66 can match eol */
3115 YY_RULE_SETUP
3116 #line 610 "lacheck.l"
3117 {
3118 printf("\"%s\", line %d: Dots should be \\cdots in \"%s\"\n",
3119 file_name, line_count, yytext);
3120 ++warn_count;
3121 linecount();
3122 }
3123 YY_BREAK
3124 case 67:
3125 /* rule 67 can match eol */
3126 YY_RULE_SETUP
3127 #line 617 "lacheck.l"
3128 {
3129 printf("\"%s\", line %d: Dots should be \\ldots in \"%s\"\n",
3130 file_name, line_count, yytext);
3131 ++warn_count;
3132 linecount();
3133 BEGIN(INITIAL);
3134 }
3135 YY_BREAK
3136 case 68:
3137 YY_RULE_SETUP
3138 #line 626 "lacheck.l"
3139 {
3140 printf("\"%s\", line %d: Dots should be ellipsis \"%s\"\n",
3141 file_name, line_count, yytext);
3142 ++warn_count;
3143 BEGIN(INITIAL);
3144 }
3145 YY_BREAK
3146 case 69:
3147 /* rule 69 can match eol */
3148 YY_RULE_SETUP
3149 #line 633 "lacheck.l"
3150 {
3151 linecount();
3152 printf("\"%s\", line %d: bad character in label \"%s\", see C.10.2\n",
3153 file_name, line_count, yytext);
3154 }
3155 YY_BREAK
3156 case 70:
3157 /* rule 70 can match eol */
3158 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3159 YY_LINENO_REWIND_TO(yy_cp - 1);
3160 (yy_c_buf_p) = yy_cp -= 1;
3161 YY_DO_BEFORE_ACTION; /* set up yytext again */
3162 YY_RULE_SETUP
3163 #line 639 "lacheck.l"
3164 {
3165 linecount();
3166 BEGIN(INITIAL);
3167 }
3168 YY_BREAK
3169 case 71:
3170 /* rule 71 can match eol */
3171 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3172 YY_LINENO_REWIND_TO(yy_cp - 1);
3173 (yy_c_buf_p) = yy_cp -= 1;
3174 YY_DO_BEFORE_ACTION; /* set up yytext again */
3175 YY_RULE_SETUP
3176 #line 644 "lacheck.l"
3177 {
3178 linecount();
3179 printf("\"%s\", line %d: perhaps you should insert a `~' before \"%s\"\n",
3180 file_name, line_count, ++yytext);
3181 BEGIN(INITIAL);
3182 }
3183 YY_BREAK
3184 case 72:
3185 /* rule 72 can match eol */
3186 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3187 YY_LINENO_REWIND_TO(yy_cp - 1);
3188 (yy_c_buf_p) = yy_cp -= 1;
3189 YY_DO_BEFORE_ACTION; /* set up yytext again */
3190 YY_RULE_SETUP
3191 #line 651 "lacheck.l"
3192 {
3193 linecount();
3194 printf("\"%s\", line %d: whitespace before footnote in \"%s\"\n",
3195 file_name, line_count, ++yytext);
3196 BEGIN(INITIAL);
3197 }
3198 YY_BREAK
3199 case 73:
3200 /* rule 73 can match eol */
3201 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3202 YY_LINENO_REWIND_TO(yy_cp - 1);
3203 (yy_c_buf_p) = yy_cp -= 1;
3204 YY_DO_BEFORE_ACTION; /* set up yytext again */
3205 YY_RULE_SETUP
3206 #line 659 "lacheck.l"
3207 {
3208 {
3209 printf("\"%s\", line %d: Don't use \"%s\" in LaTeX documents\n",
3210 file_name, line_count, yytext);
3211 ++warn_count ;
3212 }}
3213 YY_BREAK
3214 case 74:
3215 /* rule 74 can match eol */
3216 YY_RULE_SETUP
3217 #line 666 "lacheck.l"
3218 { linecount() ;}
3219 YY_BREAK
3220 case 75:
3221 /* rule 75 can match eol */
3222 YY_RULE_SETUP
3223 #line 667 "lacheck.l"
3224 { linecount(); }
3225 YY_BREAK
3226 case 76:
3227 /* rule 76 can match eol */
3228 YY_RULE_SETUP
3229 #line 669 "lacheck.l"
3230 {
3231 {
3232 linecount();
3233 printf("\"%s\", line %d: Fontspecifiers don't take arguments. \"%s\"\n",
3234 file_name, line_count, yytext);
3235 ++warn_count;
3236 /* (void) input(); */
3237 BEGIN(INITIAL);
3238 }}
3239 YY_BREAK
3240 case 77:
3241 YY_RULE_SETUP
3242 #line 679 "lacheck.l"
3243 {
3244 {
3245 printf("\"%s\", line %d: Do not use @ in LaTeX macro names. \"%s\"\n",
3246 file_name, line_count, yytext);
3247 ++warn_count;
3248 }}
3249 YY_BREAK
3250 case 78:
3251 /* rule 78 can match eol */
3252 YY_RULE_SETUP
3253 #line 686 "lacheck.l"
3254 {
3255 {
3256 linecount();
3257 printf("\"%s\", line %d: Use ` to begin quotation, not ' \"%s\"\n",
3258 file_name, line_count, yytext);
3259 ++warn_count;
3260 BEGIN(INITIAL);
3261 }}
3262 YY_BREAK
3263 case 79:
3264 YY_RULE_SETUP
3265 #line 695 "lacheck.l"
3266 {
3267 {
3268 printf("\"%s\", line %d: Use ' to end quotation, not ` \"%s\"\n",
3269 file_name, line_count, yytext);
3270 ++warn_count;
3271 BEGIN(INITIAL);
3272 }}
3273 YY_BREAK
3274 case 80:
3275 /* rule 80 can match eol */
3276 YY_RULE_SETUP
3277 #line 704 "lacheck.l"
3278 {
3279 {
3280 printf("\"%s\", line %d: Whitespace before punctation mark in \"%s\"\n",
3281 file_name, line_count, yytext);
3282 ++warn_count;
3283 linecount();
3284 BEGIN(INITIAL);
3285 }}
3286 YY_BREAK
3287 case 81:
3288 YY_RULE_SETUP
3289 #line 713 "lacheck.l"
3290 { BEGIN(COMMENT); }
3291 YY_BREAK
3292 case 82:
3293 /* rule 82 can match eol */
3294 YY_RULE_SETUP
3295 #line 715 "lacheck.l"
3296 { BEGIN(INITIAL); ++line_count; }
3297 YY_BREAK
3298 case 83:
3299 YY_RULE_SETUP
3300 #line 717 "lacheck.l"
3301 { ; }
3302 YY_BREAK
3303 case 84:
3304 YY_RULE_SETUP
3305 #line 720 "lacheck.l"
3306 { BEGIN(INCLUDE); }
3307 YY_BREAK
3308 case 85:
3309 YY_RULE_SETUP
3310 #line 722 "lacheck.l"
3311 {
3312 {
3313 if ( strstr(yytext,".sty") == NULL )
3314 {
3315 printf("** %s:\n", yytext);
3316 input_file(yytext);
3317 }
3318 else
3319 {
3320 printf("\"%s\", line %d: Style file `%s\' omitted.\n",
3321 file_name,
3322 line_count,
3323 yytext);
3324 input();
3325 }
3326 BEGIN(INITIAL);
3327 }}
3328 YY_BREAK
3329 case 86:
3330 /* rule 86 can match eol */
3331 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3332 YY_LINENO_REWIND_TO(yy_bp + 9);
3333 (yy_c_buf_p) = yy_cp = yy_bp + 9;
3334 YY_DO_BEFORE_ACTION; /* set up yytext again */
3335 #line 741 "lacheck.l"
3336 YY_RULE_SETUP
3337 case YY_STATE_EOF(INITIAL):
3338 YY_RULE_SETUP
3339 case YY_STATE_EOF(B_ENVIRONMENT):
3340 YY_RULE_SETUP
3341 case YY_STATE_EOF(E_ENVIRONMENT):
3342 YY_RULE_SETUP
3343 case YY_STATE_EOF(VERBATIM):
3344 YY_RULE_SETUP
3345 case YY_STATE_EOF(INCLUDE):
3346 YY_RULE_SETUP
3347 case YY_STATE_EOF(MATH):
3348 YY_RULE_SETUP
3349 case YY_STATE_EOF(COMMENT):
3350 YY_RULE_SETUP
3351 case YY_STATE_EOF(VERB):
3352 YY_RULE_SETUP
3353 case YY_STATE_EOF(DEF):
3354 YY_RULE_SETUP
3355 case YY_STATE_EOF(AFTER_DISPLAY):
3356 YY_RULE_SETUP
3357 case YY_STATE_EOF(ENV_DEF):
3358 YY_RULE_SETUP
3359 case YY_STATE_EOF(ICOR):
3360 YY_RULE_SETUP
3361 case YY_STATE_EOF(GETICOR):
3362 #line 741 "lacheck.l"
3363 {
3364 if (--istackp < 0)
3365 yyterminate();
3366
3367 else
3368 {
3369 fclose(yyin);
3370 f_checkend(file_name);
3371 yy_switch_to_buffer(istack[istackp].stream);
3372 free(file_name);
3373 line_count = istack[istackp].linenum;
3374 file_name = istack[istackp].name;
3375 input();
3376 BEGIN(INITIAL);
3377 }
3378
3379 }
3380 YY_BREAK
3381 case 87:
3382 YY_RULE_SETUP
3383 #line 760 "lacheck.l"
3384 { ; }
3385 YY_BREAK
3386 case 88:
3387 YY_RULE_SETUP
3388 #line 761 "lacheck.l"
3389 ECHO;
3390 YY_BREAK
3391 #line 3392 "lacheck.c"
3392
3393 case YY_END_OF_BUFFER:
3394 {
3395 /* Amount of text matched not including the EOB char. */
3396 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3397
3398 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3399 *yy_cp = (yy_hold_char);
3400 YY_RESTORE_YY_MORE_OFFSET
3401
3402 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3403 {
3404 /* We're scanning a new file or input source. It's
3405 * possible that this happened because the user
3406 * just pointed yyin at a new source and called
3407 * yylex(). If so, then we have to assure
3408 * consistency between YY_CURRENT_BUFFER and our
3409 * globals. Here is the right place to do so, because
3410 * this is the first action (other than possibly a
3411 * back-up) that will match for the new input source.
3412 */
3413 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3414 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
3415 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3416 }
3417
3418 /* Note that here we test for yy_c_buf_p "<=" to the position
3419 * of the first EOB in the buffer, since yy_c_buf_p will
3420 * already have been incremented past the NUL character
3421 * (since all states make transitions on EOB to the
3422 * end-of-buffer state). Contrast this with the test
3423 * in input().
3424 */
3425 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3426 { /* This was really a NUL. */
3427 yy_state_type yy_next_state;
3428
3429 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3430
3431 yy_current_state = yy_get_previous_state( );
3432
3433 /* Okay, we're now positioned to make the NUL
3434 * transition. We couldn't have
3435 * yy_get_previous_state() go ahead and do it
3436 * for us because it doesn't know how to deal
3437 * with the possibility of jamming (and we don't
3438 * want to build jamming into it because then it
3439 * will run more slowly).
3440 */
3441
3442 yy_next_state = yy_try_NUL_trans( yy_current_state );
3443
3444 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3445
3446 if ( yy_next_state )
3447 {
3448 /* Consume the NUL. */
3449 yy_cp = ++(yy_c_buf_p);
3450 yy_current_state = yy_next_state;
3451 goto yy_match;
3452 }
3453
3454 else
3455 {
3456 yy_cp = (yy_c_buf_p);
3457 goto yy_find_action;
3458 }
3459 }
3460
3461 else switch ( yy_get_next_buffer( ) )
3462 {
3463 case EOB_ACT_END_OF_FILE:
3464 {
3465 (yy_did_buffer_switch_on_eof) = 0;
3466
3467 if ( yywrap( ) )
3468 {
3469 /* Note: because we've taken care in
3470 * yy_get_next_buffer() to have set up
3471 * yytext, we can now set up
3472 * yy_c_buf_p so that if some total
3473 * hoser (like flex itself) wants to
3474 * call the scanner after we return the
3475 * YY_NULL, it'll still work - another
3476 * YY_NULL will get returned.
3477 */
3478 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3479
3480 yy_act = YY_STATE_EOF(YY_START);
3481 goto do_action;
3482 }
3483
3484 else
3485 {
3486 if ( ! (yy_did_buffer_switch_on_eof) )
3487 YY_NEW_FILE;
3488 }
3489 break;
3490 }
3491
3492 case EOB_ACT_CONTINUE_SCAN:
3493 (yy_c_buf_p) =
3494 (yytext_ptr) + yy_amount_of_matched_text;
3495
3496 yy_current_state = yy_get_previous_state( );
3497
3498 yy_cp = (yy_c_buf_p);
3499 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3500 goto yy_match;
3501
3502 case EOB_ACT_LAST_MATCH:
3503 (yy_c_buf_p) =
3504 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3505
3506 yy_current_state = yy_get_previous_state( );
3507
3508 yy_cp = (yy_c_buf_p);
3509 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3510 goto yy_find_action;
3511 }
3512 break;
3513 }
3514
3515 default:
3516 YY_FATAL_ERROR(
3517 "fatal flex scanner internal error--no action found" );
3518 } /* end of action switch */
3519 } /* end of scanning one token */
3520 } /* end of user's declarations */
3521 } /* end of yylex */
3522
3523 /* yy_get_next_buffer - try to read in a new buffer
3524 *
3525 * Returns a code representing an action:
3526 * EOB_ACT_LAST_MATCH -
3527 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3528 * EOB_ACT_END_OF_FILE - end of file
3529 */
yy_get_next_buffer(void)3530 static int yy_get_next_buffer (void)
3531 {
3532 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3533 register char *source = (yytext_ptr);
3534 register int number_to_move, i;
3535 int ret_val;
3536
3537 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3538 YY_FATAL_ERROR(
3539 "fatal flex scanner internal error--end of buffer missed" );
3540
3541 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3542 { /* Don't try to fill the buffer, so this is an EOF. */
3543 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3544 {
3545 /* We matched a single character, the EOB, so
3546 * treat this as a final EOF.
3547 */
3548 return EOB_ACT_END_OF_FILE;
3549 }
3550
3551 else
3552 {
3553 /* We matched some text prior to the EOB, first
3554 * process it.
3555 */
3556 return EOB_ACT_LAST_MATCH;
3557 }
3558 }
3559
3560 /* Try to read more data. */
3561
3562 /* First move last chars to start of buffer. */
3563 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3564
3565 for ( i = 0; i < number_to_move; ++i )
3566 *(dest++) = *(source++);
3567
3568 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3569 /* don't do the read, it's not guaranteed to return an EOF,
3570 * just force an EOF
3571 */
3572 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3573
3574 else
3575 {
3576 yy_size_t num_to_read =
3577 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3578
3579 while ( num_to_read <= 0 )
3580 { /* Not enough room in the buffer - grow it. */
3581
3582 YY_FATAL_ERROR(
3583 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3584
3585 }
3586
3587 if ( num_to_read > YY_READ_BUF_SIZE )
3588 num_to_read = YY_READ_BUF_SIZE;
3589
3590 /* Read in more data. */
3591 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3592 (yy_n_chars), num_to_read );
3593
3594 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3595 }
3596
3597 if ( (yy_n_chars) == 0 )
3598 {
3599 if ( number_to_move == YY_MORE_ADJ )
3600 {
3601 ret_val = EOB_ACT_END_OF_FILE;
3602 yyrestart(yyin );
3603 }
3604
3605 else
3606 {
3607 ret_val = EOB_ACT_LAST_MATCH;
3608 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3609 YY_BUFFER_EOF_PENDING;
3610 }
3611 }
3612
3613 else
3614 ret_val = EOB_ACT_CONTINUE_SCAN;
3615
3616 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3617 /* Extend the array by 50%, plus the number we really need. */
3618 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3619 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
3620 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3621 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3622 }
3623
3624 (yy_n_chars) += number_to_move;
3625 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3626 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3627
3628 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3629
3630 return ret_val;
3631 }
3632
3633 /* yy_get_previous_state - get the state just before the EOB char was reached */
3634
yy_get_previous_state(void)3635 static yy_state_type yy_get_previous_state (void)
3636 {
3637 register yy_state_type yy_current_state;
3638 register char *yy_cp;
3639
3640 yy_current_state = (yy_start);
3641 yy_current_state += YY_AT_BOL();
3642
3643 (yy_state_ptr) = (yy_state_buf);
3644 *(yy_state_ptr)++ = yy_current_state;
3645
3646 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3647 {
3648 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3649 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3650 {
3651 yy_current_state = (int) yy_def[yy_current_state];
3652 if ( yy_current_state >= 953 )
3653 yy_c = yy_meta[(unsigned int) yy_c];
3654 }
3655 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3656 *(yy_state_ptr)++ = yy_current_state;
3657 }
3658
3659 return yy_current_state;
3660 }
3661
3662 /* yy_try_NUL_trans - try to make a transition on the NUL character
3663 *
3664 * synopsis
3665 * next_state = yy_try_NUL_trans( current_state );
3666 */
yy_try_NUL_trans(yy_state_type yy_current_state)3667 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
3668 {
3669 register int yy_is_jam;
3670
3671 register YY_CHAR yy_c = 1;
3672 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3673 {
3674 yy_current_state = (int) yy_def[yy_current_state];
3675 if ( yy_current_state >= 953 )
3676 yy_c = yy_meta[(unsigned int) yy_c];
3677 }
3678 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3679 yy_is_jam = (yy_current_state == 952);
3680 if ( ! yy_is_jam )
3681 *(yy_state_ptr)++ = yy_current_state;
3682
3683 return yy_is_jam ? 0 : yy_current_state;
3684 }
3685
yyunput(int c,register char * yy_bp)3686 static void yyunput (int c, register char * yy_bp )
3687 {
3688 register char *yy_cp;
3689
3690 yy_cp = (yy_c_buf_p);
3691
3692 /* undo effects of setting up yytext */
3693 *yy_cp = (yy_hold_char);
3694
3695 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3696 { /* need to shift things up to make room */
3697 /* +2 for EOB chars. */
3698 register yy_size_t number_to_move = (yy_n_chars) + 2;
3699 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3700 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3701 register char *source =
3702 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3703
3704 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3705 *--dest = *--source;
3706
3707 yy_cp += (int) (dest - source);
3708 yy_bp += (int) (dest - source);
3709 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3710 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3711
3712 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3713 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3714 }
3715
3716 *--yy_cp = (char) c;
3717
3718 (yytext_ptr) = yy_bp;
3719 (yy_hold_char) = *yy_cp;
3720 (yy_c_buf_p) = yy_cp;
3721 }
3722
3723 #ifndef YY_NO_INPUT
3724 #ifdef __cplusplus
yyinput(void)3725 static int yyinput (void)
3726 #else
3727 static int input (void)
3728 #endif
3729
3730 {
3731 int c;
3732
3733 *(yy_c_buf_p) = (yy_hold_char);
3734
3735 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3736 {
3737 /* yy_c_buf_p now points to the character we want to return.
3738 * If this occurs *before* the EOB characters, then it's a
3739 * valid NUL; if not, then we've hit the end of the buffer.
3740 */
3741 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3742 /* This was really a NUL. */
3743 *(yy_c_buf_p) = '\0';
3744
3745 else
3746 { /* need more input */
3747 yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
3748 ++(yy_c_buf_p);
3749
3750 switch ( yy_get_next_buffer( ) )
3751 {
3752 case EOB_ACT_LAST_MATCH:
3753 /* This happens because yy_g_n_b()
3754 * sees that we've accumulated a
3755 * token and flags that we need to
3756 * try matching the token before
3757 * proceeding. But for input(),
3758 * there's no matching to consider.
3759 * So convert the EOB_ACT_LAST_MATCH
3760 * to EOB_ACT_END_OF_FILE.
3761 */
3762
3763 /* Reset buffer status. */
3764 yyrestart(yyin );
3765
3766 /*FALLTHROUGH*/
3767
3768 case EOB_ACT_END_OF_FILE:
3769 {
3770 if ( yywrap( ) )
3771 return EOF;
3772
3773 if ( ! (yy_did_buffer_switch_on_eof) )
3774 YY_NEW_FILE;
3775 #ifdef __cplusplus
3776 return yyinput();
3777 #else
3778 return input();
3779 #endif
3780 }
3781
3782 case EOB_ACT_CONTINUE_SCAN:
3783 (yy_c_buf_p) = (yytext_ptr) + offset;
3784 break;
3785 }
3786 }
3787 }
3788
3789 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
3790 *(yy_c_buf_p) = '\0'; /* preserve yytext */
3791 (yy_hold_char) = *++(yy_c_buf_p);
3792
3793 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3794
3795 return c;
3796 }
3797 #endif /* ifndef YY_NO_INPUT */
3798
3799 /** Immediately switch to a different input stream.
3800 * @param input_file A readable stream.
3801 *
3802 * @note This function does not reset the start condition to @c INITIAL .
3803 */
yyrestart(FILE * input_file)3804 void yyrestart (FILE * input_file )
3805 {
3806
3807 if ( ! YY_CURRENT_BUFFER ){
3808 yyensure_buffer_stack ();
3809 YY_CURRENT_BUFFER_LVALUE =
3810 yy_create_buffer(yyin,YY_BUF_SIZE );
3811 }
3812
3813 yy_init_buffer(YY_CURRENT_BUFFER,input_file );
3814 yy_load_buffer_state( );
3815 }
3816
3817 /** Switch to a different input buffer.
3818 * @param new_buffer The new input buffer.
3819 *
3820 */
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)3821 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
3822 {
3823
3824 /* TODO. We should be able to replace this entire function body
3825 * with
3826 * yypop_buffer_state();
3827 * yypush_buffer_state(new_buffer);
3828 */
3829 yyensure_buffer_stack ();
3830 if ( YY_CURRENT_BUFFER == new_buffer )
3831 return;
3832
3833 if ( YY_CURRENT_BUFFER )
3834 {
3835 /* Flush out information for old buffer. */
3836 *(yy_c_buf_p) = (yy_hold_char);
3837 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3838 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3839 }
3840
3841 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3842 yy_load_buffer_state( );
3843
3844 /* We don't actually know whether we did this switch during
3845 * EOF (yywrap()) processing, but the only time this flag
3846 * is looked at is after yywrap() is called, so it's safe
3847 * to go ahead and always set it.
3848 */
3849 (yy_did_buffer_switch_on_eof) = 1;
3850 }
3851
yy_load_buffer_state(void)3852 static void yy_load_buffer_state (void)
3853 {
3854 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3855 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3856 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3857 (yy_hold_char) = *(yy_c_buf_p);
3858 }
3859
3860 /** Allocate and initialize an input buffer state.
3861 * @param file A readable stream.
3862 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3863 *
3864 * @return the allocated buffer state.
3865 */
yy_create_buffer(FILE * file,int size)3866 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
3867 {
3868 YY_BUFFER_STATE b;
3869
3870 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
3871 if ( ! b )
3872 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3873
3874 b->yy_buf_size = size;
3875
3876 /* yy_ch_buf has to be 2 characters longer than the size given because
3877 * we need to put in 2 end-of-buffer characters.
3878 */
3879 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
3880 if ( ! b->yy_ch_buf )
3881 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3882
3883 b->yy_is_our_buffer = 1;
3884
3885 yy_init_buffer(b,file );
3886
3887 return b;
3888 }
3889
3890 /** Destroy the buffer.
3891 * @param b a buffer created with yy_create_buffer()
3892 *
3893 */
yy_delete_buffer(YY_BUFFER_STATE b)3894 void yy_delete_buffer (YY_BUFFER_STATE b )
3895 {
3896
3897 if ( ! b )
3898 return;
3899
3900 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3901 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3902
3903 if ( b->yy_is_our_buffer )
3904 yyfree((void *) b->yy_ch_buf );
3905
3906 yyfree((void *) b );
3907 }
3908
3909 /* Initializes or reinitializes a buffer.
3910 * This function is sometimes called more than once on the same buffer,
3911 * such as during a yyrestart() or at EOF.
3912 */
yy_init_buffer(YY_BUFFER_STATE b,FILE * file)3913 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
3914
3915 {
3916 int oerrno = errno;
3917
3918 yy_flush_buffer(b );
3919
3920 b->yy_input_file = file;
3921 b->yy_fill_buffer = 1;
3922
3923 /* If b is the current buffer, then yy_init_buffer was _probably_
3924 * called from yyrestart() or through yy_get_next_buffer.
3925 * In that case, we don't want to reset the lineno or column.
3926 */
3927 if (b != YY_CURRENT_BUFFER){
3928 b->yy_bs_lineno = 1;
3929 b->yy_bs_column = 0;
3930 }
3931
3932 b->yy_is_interactive = 0;
3933
3934 errno = oerrno;
3935 }
3936
3937 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3938 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3939 *
3940 */
yy_flush_buffer(YY_BUFFER_STATE b)3941 void yy_flush_buffer (YY_BUFFER_STATE b )
3942 {
3943 if ( ! b )
3944 return;
3945
3946 b->yy_n_chars = 0;
3947
3948 /* We always need two end-of-buffer characters. The first causes
3949 * a transition to the end-of-buffer state. The second causes
3950 * a jam in that state.
3951 */
3952 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3953 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3954
3955 b->yy_buf_pos = &b->yy_ch_buf[0];
3956
3957 b->yy_at_bol = 1;
3958 b->yy_buffer_status = YY_BUFFER_NEW;
3959
3960 if ( b == YY_CURRENT_BUFFER )
3961 yy_load_buffer_state( );
3962 }
3963
3964 /** Pushes the new state onto the stack. The new state becomes
3965 * the current state. This function will allocate the stack
3966 * if necessary.
3967 * @param new_buffer The new state.
3968 *
3969 */
yypush_buffer_state(YY_BUFFER_STATE new_buffer)3970 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
3971 {
3972 if (new_buffer == NULL)
3973 return;
3974
3975 yyensure_buffer_stack();
3976
3977 /* This block is copied from yy_switch_to_buffer. */
3978 if ( YY_CURRENT_BUFFER )
3979 {
3980 /* Flush out information for old buffer. */
3981 *(yy_c_buf_p) = (yy_hold_char);
3982 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3983 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3984 }
3985
3986 /* Only push if top exists. Otherwise, replace top. */
3987 if (YY_CURRENT_BUFFER)
3988 (yy_buffer_stack_top)++;
3989 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3990
3991 /* copied from yy_switch_to_buffer. */
3992 yy_load_buffer_state( );
3993 (yy_did_buffer_switch_on_eof) = 1;
3994 }
3995
3996 /** Removes and deletes the top of the stack, if present.
3997 * The next element becomes the new top.
3998 *
3999 */
yypop_buffer_state(void)4000 void yypop_buffer_state (void)
4001 {
4002 if (!YY_CURRENT_BUFFER)
4003 return;
4004
4005 yy_delete_buffer(YY_CURRENT_BUFFER );
4006 YY_CURRENT_BUFFER_LVALUE = NULL;
4007 if ((yy_buffer_stack_top) > 0)
4008 --(yy_buffer_stack_top);
4009
4010 if (YY_CURRENT_BUFFER) {
4011 yy_load_buffer_state( );
4012 (yy_did_buffer_switch_on_eof) = 1;
4013 }
4014 }
4015
4016 /* Allocates the stack if it does not exist.
4017 * Guarantees space for at least one push.
4018 */
yyensure_buffer_stack(void)4019 static void yyensure_buffer_stack (void)
4020 {
4021 yy_size_t num_to_alloc;
4022
4023 if (!(yy_buffer_stack)) {
4024
4025 /* First allocation is just for 2 elements, since we don't know if this
4026 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4027 * immediate realloc on the next call.
4028 */
4029 num_to_alloc = 1;
4030 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
4031 (num_to_alloc * sizeof(struct yy_buffer_state*)
4032 );
4033 if ( ! (yy_buffer_stack) )
4034 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4035
4036 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4037
4038 (yy_buffer_stack_max) = num_to_alloc;
4039 (yy_buffer_stack_top) = 0;
4040 return;
4041 }
4042
4043 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4044
4045 /* Increase the buffer to prepare for a possible push. */
4046 int grow_size = 8 /* arbitrary grow size */;
4047
4048 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4049 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
4050 ((yy_buffer_stack),
4051 num_to_alloc * sizeof(struct yy_buffer_state*)
4052 );
4053 if ( ! (yy_buffer_stack) )
4054 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
4055
4056 /* zero only the new slots.*/
4057 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4058 (yy_buffer_stack_max) = num_to_alloc;
4059 }
4060 }
4061
4062 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4063 * @param base the character buffer
4064 * @param size the size in bytes of the character buffer
4065 *
4066 * @return the newly allocated buffer state object.
4067 */
yy_scan_buffer(char * base,yy_size_t size)4068 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
4069 {
4070 YY_BUFFER_STATE b;
4071
4072 if ( size < 2 ||
4073 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4074 base[size-1] != YY_END_OF_BUFFER_CHAR )
4075 /* They forgot to leave room for the EOB's. */
4076 return 0;
4077
4078 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
4079 if ( ! b )
4080 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4081
4082 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4083 b->yy_buf_pos = b->yy_ch_buf = base;
4084 b->yy_is_our_buffer = 0;
4085 b->yy_input_file = 0;
4086 b->yy_n_chars = b->yy_buf_size;
4087 b->yy_is_interactive = 0;
4088 b->yy_at_bol = 1;
4089 b->yy_fill_buffer = 0;
4090 b->yy_buffer_status = YY_BUFFER_NEW;
4091
4092 yy_switch_to_buffer(b );
4093
4094 return b;
4095 }
4096
4097 /** Setup the input buffer state to scan a string. The next call to yylex() will
4098 * scan from a @e copy of @a str.
4099 * @param yystr a NUL-terminated string to scan
4100 *
4101 * @return the newly allocated buffer state object.
4102 * @note If you want to scan bytes that may contain NUL values, then use
4103 * yy_scan_bytes() instead.
4104 */
yy_scan_string(yyconst char * yystr)4105 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
4106 {
4107
4108 return yy_scan_bytes(yystr,strlen(yystr) );
4109 }
4110
4111 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
4112 * scan from a @e copy of @a bytes.
4113 * @param yybytes the byte buffer to scan
4114 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4115 *
4116 * @return the newly allocated buffer state object.
4117 */
yy_scan_bytes(yyconst char * yybytes,yy_size_t _yybytes_len)4118 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
4119 {
4120 YY_BUFFER_STATE b;
4121 char *buf;
4122 yy_size_t n;
4123 yy_size_t i;
4124
4125 /* Get memory for full buffer, including space for trailing EOB's. */
4126 n = _yybytes_len + 2;
4127 buf = (char *) yyalloc(n );
4128 if ( ! buf )
4129 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4130
4131 for ( i = 0; i < _yybytes_len; ++i )
4132 buf[i] = yybytes[i];
4133
4134 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4135
4136 b = yy_scan_buffer(buf,n );
4137 if ( ! b )
4138 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4139
4140 /* It's okay to grow etc. this buffer, and we should throw it
4141 * away when we're done.
4142 */
4143 b->yy_is_our_buffer = 1;
4144
4145 return b;
4146 }
4147
4148 #ifndef YY_EXIT_FAILURE
4149 #define YY_EXIT_FAILURE 2
4150 #endif
4151
yy_fatal_error(yyconst char * msg)4152 static void yy_fatal_error (yyconst char* msg )
4153 {
4154 (void) fprintf( stderr, "%s\n", msg );
4155 exit( YY_EXIT_FAILURE );
4156 }
4157
4158 /* Redefine yyless() so it works in section 3 code. */
4159
4160 #undef yyless
4161 #define yyless(n) \
4162 do \
4163 { \
4164 /* Undo effects of setting up yytext. */ \
4165 int yyless_macro_arg = (n); \
4166 YY_LESS_LINENO(yyless_macro_arg);\
4167 yytext[yyleng] = (yy_hold_char); \
4168 (yy_c_buf_p) = yytext + yyless_macro_arg; \
4169 (yy_hold_char) = *(yy_c_buf_p); \
4170 *(yy_c_buf_p) = '\0'; \
4171 yyleng = yyless_macro_arg; \
4172 } \
4173 while ( 0 )
4174
4175 /* Accessor methods (get/set functions) to struct members. */
4176
4177 /** Get the current line number.
4178 *
4179 */
yyget_lineno(void)4180 int yyget_lineno (void)
4181 {
4182
4183 return yylineno;
4184 }
4185
4186 /** Get the input stream.
4187 *
4188 */
yyget_in(void)4189 FILE *yyget_in (void)
4190 {
4191 return yyin;
4192 }
4193
4194 /** Get the output stream.
4195 *
4196 */
yyget_out(void)4197 FILE *yyget_out (void)
4198 {
4199 return yyout;
4200 }
4201
4202 /** Get the length of the current token.
4203 *
4204 */
yyget_leng(void)4205 yy_size_t yyget_leng (void)
4206 {
4207 return yyleng;
4208 }
4209
4210 /** Get the current token.
4211 *
4212 */
4213
yyget_text(void)4214 char *yyget_text (void)
4215 {
4216 return yytext;
4217 }
4218
4219 /** Set the current line number.
4220 * @param line_number
4221 *
4222 */
yyset_lineno(int line_number)4223 void yyset_lineno (int line_number )
4224 {
4225
4226 yylineno = line_number;
4227 }
4228
4229 /** Set the input stream. This does not discard the current
4230 * input buffer.
4231 * @param in_str A readable stream.
4232 *
4233 * @see yy_switch_to_buffer
4234 */
yyset_in(FILE * in_str)4235 void yyset_in (FILE * in_str )
4236 {
4237 yyin = in_str ;
4238 }
4239
yyset_out(FILE * out_str)4240 void yyset_out (FILE * out_str )
4241 {
4242 yyout = out_str ;
4243 }
4244
yyget_debug(void)4245 int yyget_debug (void)
4246 {
4247 return yy_flex_debug;
4248 }
4249
yyset_debug(int bdebug)4250 void yyset_debug (int bdebug )
4251 {
4252 yy_flex_debug = bdebug ;
4253 }
4254
yy_init_globals(void)4255 static int yy_init_globals (void)
4256 {
4257 /* Initialization is the same as for the non-reentrant scanner.
4258 * This function is called from yylex_destroy(), so don't allocate here.
4259 */
4260
4261 (yy_buffer_stack) = 0;
4262 (yy_buffer_stack_top) = 0;
4263 (yy_buffer_stack_max) = 0;
4264 (yy_c_buf_p) = (char *) 0;
4265 (yy_init) = 0;
4266 (yy_start) = 0;
4267
4268 (yy_state_buf) = 0;
4269 (yy_state_ptr) = 0;
4270 (yy_full_match) = 0;
4271 (yy_lp) = 0;
4272
4273 /* Defined in main.c */
4274 #ifdef YY_STDINIT
4275 yyin = stdin;
4276 yyout = stdout;
4277 #else
4278 yyin = (FILE *) 0;
4279 yyout = (FILE *) 0;
4280 #endif
4281
4282 /* For future reference: Set errno on error, since we are called by
4283 * yylex_init()
4284 */
4285 return 0;
4286 }
4287
4288 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
yylex_destroy(void)4289 int yylex_destroy (void)
4290 {
4291
4292 /* Pop the buffer stack, destroying each element. */
4293 while(YY_CURRENT_BUFFER){
4294 yy_delete_buffer(YY_CURRENT_BUFFER );
4295 YY_CURRENT_BUFFER_LVALUE = NULL;
4296 yypop_buffer_state();
4297 }
4298
4299 /* Destroy the stack itself. */
4300 yyfree((yy_buffer_stack) );
4301 (yy_buffer_stack) = NULL;
4302
4303 yyfree ( (yy_state_buf) );
4304 (yy_state_buf) = NULL;
4305
4306 /* Reset the globals. This is important in a non-reentrant scanner so the next time
4307 * yylex() is called, initialization will occur. */
4308 yy_init_globals( );
4309
4310 return 0;
4311 }
4312
4313 /*
4314 * Internal utility routines.
4315 */
4316
4317 #ifndef yytext_ptr
yy_flex_strncpy(char * s1,yyconst char * s2,int n)4318 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4319 {
4320 register int i;
4321 for ( i = 0; i < n; ++i )
4322 s1[i] = s2[i];
4323 }
4324 #endif
4325
4326 #ifdef YY_NEED_STRLEN
yy_flex_strlen(yyconst char * s)4327 static int yy_flex_strlen (yyconst char * s )
4328 {
4329 register int n;
4330 for ( n = 0; s[n]; ++n )
4331 ;
4332
4333 return n;
4334 }
4335 #endif
4336
yyalloc(yy_size_t size)4337 void *yyalloc (yy_size_t size )
4338 {
4339 return (void *) malloc( size );
4340 }
4341
yyrealloc(void * ptr,yy_size_t size)4342 void *yyrealloc (void * ptr, yy_size_t size )
4343 {
4344 /* The cast to (char *) in the following accommodates both
4345 * implementations that use char* generic pointers, and those
4346 * that use void* generic pointers. It works with the latter
4347 * because both ANSI C and C++ allow castless assignment from
4348 * any pointer type to void*, and deal with argument conversions
4349 * as though doing an assignment.
4350 */
4351 return (void *) realloc( (char *) ptr, size );
4352 }
4353
yyfree(void * ptr)4354 void yyfree (void * ptr )
4355 {
4356 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
4357 }
4358
4359 #define YYTABLES_NAME "yytables"
4360
4361 #line 761 "lacheck.l"
4362
4363
main(int argc,char * argv[])4364 int main(int argc, char *argv[])
4365 {
4366 /* allocate initial stacks */
4367 gstack = (tex_group *)malloc(gstack_size * sizeof(tex_group));
4368 istack = (input_ *)malloc(istack_size * sizeof(input_));
4369 if ( gstack == NULL || istack == NULL ) {
4370 fprintf(stderr, "%s: not enough memory for stacks\n", PROGNAME);
4371 exit(3);
4372 }
4373
4374 if(argc > 1)
4375 {
4376 if ( (file_name = (char*) malloc(strlen(argv[1]) + 5)) == NULL ) {
4377 fprintf(stderr, "%s: out of memory\n", PROGNAME);
4378 exit(3);
4379 }
4380
4381 strcpy(file_name, argv[1]);
4382 strcat(file_name, ".tex" );
4383
4384 if ((yyin = fopen( file_name, "r")) != NULL )
4385 {
4386 push(file_name, 3, 1);
4387 yylex();
4388 f_checkend(file_name);
4389 }
4390 else {
4391 file_name[strlen(file_name) - 4] = '\0';
4392 if ((yyin = fopen( file_name, "r")) != NULL )
4393 {
4394 push(file_name, 3, 1);
4395 yylex();
4396 f_checkend(file_name);
4397 }
4398 else
4399 fprintf(stderr,
4400 "%s: Could not open : %s\n",PROGNAME, argv[1]);
4401 }
4402 }
4403 else
4404 {
4405 printf("\n* %s *\n\n",PROGNAME);
4406 printf("\t...a consistency checker for LaTeX documents.\n");
4407 printf("$Id: lacheck.lex,v 1.26 1998/03/07 07:46:45 abraham Exp $\n\n");
4408
4409 printf("Usage:\n\tlacheck filename[.tex] <return>\n\n\n");
4410
4411 printf("\tFrom within Emacs:\n\n");
4412 printf("\tM-x compile RET lacheck filename[.tex] RET\n\n");
4413 printf("\tUse C-x ` to step through the messages.\n\n");
4414 printf("\n\tThe found context is displayed in \"double quotes\"\n\n");
4415 printf("Remark:\n\tAll messages are only warnings!\n\n");
4416 printf("\tYour document may be right even though LaCheck says ");
4417 printf("something else.\n\n");
4418 }
4419 return(0);
4420 }
4421
yywrap(void)4422 int yywrap(void) { return 1; }
4423
4424 #ifdef NEED_STRSTR
4425 char *
strstr(string,substring)4426 strstr(string, substring)
4427 register char *string; /* String to search. */
4428 char *substring; /* Substring to try to find in string. */
4429 {
4430 register char *a, *b;
4431
4432 /* First scan quickly through the two strings looking for a
4433 * single-character match. When it's found, then compare the
4434 * rest of the substring.
4435 */
4436
4437 b = substring;
4438 if (*b == 0) {
4439 return string;
4440 }
4441 for ( ; *string != 0; string += 1) {
4442 if (*string != *b) {
4443 continue;
4444 }
4445 a = string;
4446 while (1) {
4447 if (*b == 0) {
4448 return string;
4449 }
4450 if (*a++ != *b++) {
4451 break;
4452 }
4453 }
4454 b = substring;
4455 }
4456 return (char *) 0;
4457 }
4458 #endif /* NEED_STRSTR */
4459
push(const char * p_name,int p_type,int p_line)4460 void push(const char *p_name, int p_type, int p_line)
4461 {
4462 if ( gstackp == gstack_size ) { /* extend stack */
4463 gstack_size *= 2;
4464 gstack = (tex_group *)realloc(gstack, gstack_size * sizeof(tex_group));
4465 if ( gstack == NULL ) {
4466 fprintf(stderr, "%s: stack out of memory", PROGNAME);
4467 exit(3);
4468 }
4469 }
4470
4471 if ( (gstack[gstackp].s_name =
4472 (char *)malloc(strlen(p_name) + 1)) == NULL ||
4473 (gstack[gstackp].s_file =
4474 (char *)malloc(strlen(file_name) + 1)) == NULL ) {
4475 fprintf(stderr, "%s: out of memory\n", PROGNAME);
4476 exit(3);
4477 }
4478
4479 strcpy(gstack[gstackp].s_name, p_name);
4480 gstack[gstackp].s_type = p_type;
4481 gstack[gstackp].s_line = p_line;
4482 gstack[gstackp].italic = ( (p_type == 4 || p_type == 5)
4483 ? 1
4484 : ( gstackp
4485 ? gstack[gstackp - 1].italic
4486 : 0));
4487 strcpy(gstack[gstackp].s_file,file_name);
4488 ++gstackp;
4489
4490 }
4491
input_file(char * file_nam)4492 void input_file(char *file_nam)
4493 {
4494 char *tmp_file_name;
4495 FILE *tmp_yyin;
4496
4497 if ( (tmp_file_name = (char*) malloc(strlen(file_nam) + 5)) == NULL ) {
4498 fprintf(stderr, "%s: out of memory\n", PROGNAME);
4499 exit(3);
4500 }
4501 strcpy(tmp_file_name,file_nam);
4502
4503 if (istackp == istack_size) { /* extend stack */
4504 istack_size *= 2;
4505 istack = (input_ *)realloc(istack, istack_size * sizeof(input_));
4506 if ( istack == NULL ) {
4507 fprintf(stderr, "%s: \\input stack out of memory\n", PROGNAME);
4508 exit(3);
4509 }
4510 }
4511
4512 istack[istackp].stream = YY_CURRENT_BUFFER;
4513 istack[istackp].linenum = line_count;
4514 istack[istackp].name = file_name;
4515 ++istackp;
4516
4517 (void) strcat(tmp_file_name, ".tex");
4518 if ((tmp_yyin = fopen( tmp_file_name, "r")) != NULL )
4519 {
4520 yyin = tmp_yyin;
4521 yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
4522 file_name = tmp_file_name;
4523 push(file_name, 3, 1);
4524 line_count = 1;
4525 }
4526 else {
4527 tmp_file_name[strlen(tmp_file_name) - 4] = '\0';
4528 if ((tmp_yyin = fopen( tmp_file_name , "r")) != NULL )
4529 {
4530 yyin = tmp_yyin;
4531 yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
4532 file_name = tmp_file_name;
4533 push(file_name, 3, 1);
4534 line_count = 1;
4535 }
4536 else
4537 {
4538 --istackp;
4539 free(tmp_file_name);
4540 printf("\"%s\", line %d: Could not open \"%s\"\n",
4541 file_name,
4542 line_count,
4543 file_nam);
4544 input();
4545 }
4546 }
4547 }
4548
pop(void)4549 void pop(void)
4550 {
4551 if ( gstackp == 0 )
4552 {
4553 fprintf(stderr, "%s: Stack underflow\n", PROGNAME);
4554 exit(4);
4555 }
4556 --gstackp;
4557
4558 free(gstack[gstackp].s_name);
4559 free(gstack[gstackp].s_file);
4560 }
4561
print_bg_command(char * name)4562 static void print_bg_command(char *name)
4563 {
4564
4565 switch (CG_TYPE) {
4566
4567 case 2:
4568 printf("\\begin{%s}", name);
4569 break;
4570
4571 case 3:
4572 printf("beginning of file %s", name);
4573 break;
4574
4575 case 4:
4576 printf("math begin %s", name);
4577 break;
4578
4579 case 5:
4580 printf("display math begin %s", name);
4581 break;
4582
4583 default:
4584 printf("%s", name);
4585
4586 }
4587 }
4588
print_eg_command(char * name,int type)4589 static void print_eg_command(char *name, int type)
4590 {
4591
4592 switch (type) {
4593
4594 case 2:
4595 printf("\\end{%s}", name);
4596 break;
4597
4598 case 3:
4599 printf("end of file %s", name);
4600 break;
4601
4602 case 4:
4603 printf("math end %s", name);
4604 break;
4605
4606 case 5:
4607 printf("display math end %s", name);
4608 break;
4609
4610 default:
4611 printf("%s", name);
4612 break;
4613 }
4614 }
4615
4616
g_checkend(int n)4617 void g_checkend(int n)
4618 {
4619 if ( check_top_level_end(yytext,n) == 1 )
4620 {
4621 if ( CG_TYPE != n )
4622 print_bad_match(yytext,n);
4623 else
4624 pop();
4625 }
4626 }
4627
e_checkend(int n,char * name)4628 void e_checkend(int n, char *name)
4629 {
4630 if ( check_top_level_end(name,n) == 1 )
4631 {
4632 if ( CG_TYPE != n || strcmp( CG_NAME, name ) != 0 )
4633 print_bad_match(name,n);
4634
4635 if ( CG_TYPE != 3 )
4636 pop();
4637
4638 }
4639 }
4640
f_checkend(char * name)4641 void f_checkend(char *name)
4642 {
4643 if ( check_top_level_end(name,3) == 1 )
4644 {
4645 if ( CG_TYPE != 3 || strcmp( CG_NAME, name ) != 0 )
4646
4647 while( CG_TYPE != 3 )
4648 {
4649 print_bad_match(name,3);
4650 pop();
4651 }
4652
4653 pop();
4654 }
4655 }
4656
print_bad_match(char * end_command,int type)4657 void print_bad_match(char *end_command, int type)
4658 {
4659 printf("\"%s\", line %d: <- unmatched \"",
4660 file_name,
4661 line_count);
4662 print_eg_command(end_command, type);
4663 printf("\"\n");
4664
4665 printf("\"%s\", line %d: -> unmatched \"",
4666 CG_FILE,
4667 CG_LINE);
4668 print_bg_command(CG_NAME);
4669 printf("\"\n");
4670 warn_count += 2;
4671 }
4672
check_top_level_end(char * end_command,int type)4673 int check_top_level_end(char *end_command, int type)
4674 {
4675 if ( gstackp == 0 )
4676 {
4677 printf("\"%s\", line %d: \"",
4678 file_name,
4679 line_count);
4680 print_eg_command(end_command, type);
4681 printf("\" found at top level\n");
4682 ++warn_count;
4683 return(0);
4684 }
4685 else
4686 return(1);
4687 }
4688
linecount(void)4689 void linecount(void)
4690 {
4691 int i;
4692 for (i = 0; i < yyleng; i++)
4693 if(yytext[i] == '\n')
4694 line_count++;
4695 }
4696
4697
4698