1#line 2 "pgc.c"
2/*-------------------------------------------------------------------------
3 *
4 * pgc.l
5 * lexical scanner for ecpg
6 *
7 * This is a modified version of src/backend/parser/scan.l
8 *
9 *
10 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
11 * Portions Copyright (c) 1994, Regents of the University of California
12 *
13 * IDENTIFICATION
14 * src/interfaces/ecpg/preproc/pgc.l
15 *
16 *-------------------------------------------------------------------------
17 */
18#include "postgres_fe.h"
19
20#include <ctype.h>
21#include <limits.h>
22
23#include "common/string.h"
24
25#include "preproc_extern.h"
26#include "preproc.h"
27
28#line 29 "pgc.c"
29
30#define YY_INT_ALIGNED short int
31
32/* A lexical scanner generated by flex */
33
34#define yy_create_buffer base_yy_create_buffer
35#define yy_delete_buffer base_yy_delete_buffer
36#define yy_flex_debug base_yy_flex_debug
37#define yy_init_buffer base_yy_init_buffer
38#define yy_flush_buffer base_yy_flush_buffer
39#define yy_load_buffer_state base_yy_load_buffer_state
40#define yy_switch_to_buffer base_yy_switch_to_buffer
41#define yyin base_yyin
42#define yyleng base_yyleng
43#define yylex base_yylex
44#define yylineno base_yylineno
45#define yyout base_yyout
46#define yyrestart base_yyrestart
47#define yytext base_yytext
48#define yywrap base_yywrap
49#define yyalloc base_yyalloc
50#define yyrealloc base_yyrealloc
51#define yyfree base_yyfree
52
53#define FLEX_SCANNER
54#define YY_FLEX_MAJOR_VERSION 2
55#define YY_FLEX_MINOR_VERSION 6
56#define YY_FLEX_SUBMINOR_VERSION 1
57#if YY_FLEX_SUBMINOR_VERSION > 0
58#define FLEX_BETA
59#endif
60
61/* First, we deal with platform-specific or compiler-specific issues. */
62
63/* begin standard C headers. */
64#include <stdio.h>
65#include <string.h>
66#include <errno.h>
67#include <stdlib.h>
68
69/* end standard C headers. */
70
71/* flex integer type definitions */
72
73#ifndef FLEXINT_H
74#define FLEXINT_H
75
76/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
77
78#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
79
80/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
81 * if you want the limit (max/min) macros for int types.
82 */
83#ifndef __STDC_LIMIT_MACROS
84#define __STDC_LIMIT_MACROS 1
85#endif
86
87#include <inttypes.h>
88typedef int8_t flex_int8_t;
89typedef uint8_t flex_uint8_t;
90typedef int16_t flex_int16_t;
91typedef uint16_t flex_uint16_t;
92typedef int32_t flex_int32_t;
93typedef uint32_t flex_uint32_t;
94#else
95typedef signed char flex_int8_t;
96typedef short int flex_int16_t;
97typedef int flex_int32_t;
98typedef unsigned char flex_uint8_t;
99typedef unsigned short int flex_uint16_t;
100typedef unsigned int flex_uint32_t;
101
102/* Limits of integral types. */
103#ifndef INT8_MIN
104#define INT8_MIN (-128)
105#endif
106#ifndef INT16_MIN
107#define INT16_MIN (-32767-1)
108#endif
109#ifndef INT32_MIN
110#define INT32_MIN (-2147483647-1)
111#endif
112#ifndef INT8_MAX
113#define INT8_MAX (127)
114#endif
115#ifndef INT16_MAX
116#define INT16_MAX (32767)
117#endif
118#ifndef INT32_MAX
119#define INT32_MAX (2147483647)
120#endif
121#ifndef UINT8_MAX
122#define UINT8_MAX (255U)
123#endif
124#ifndef UINT16_MAX
125#define UINT16_MAX (65535U)
126#endif
127#ifndef UINT32_MAX
128#define UINT32_MAX (4294967295U)
129#endif
130
131#endif /* ! C99 */
132
133#endif /* ! FLEXINT_H */
134
135/* TODO: this is always defined, so inline it */
136#define yyconst const
137
138#if defined(__GNUC__) && __GNUC__ >= 3
139#define yynoreturn __attribute__((__noreturn__))
140#else
141#define yynoreturn
142#endif
143
144/* Returned upon end-of-file. */
145#define YY_NULL 0
146
147/* Promotes a possibly negative, possibly signed char to an unsigned
148 * integer for use as an array index. If the signed char is negative,
149 * we want to instead treat it as an 8-bit unsigned char, hence the
150 * double cast.
151 */
152#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
153
154/* Enter a start condition. This macro really ought to take a parameter,
155 * but we do it the disgusting crufty way forced on us by the ()-less
156 * definition of BEGIN.
157 */
158#define BEGIN (yy_start) = 1 + 2 *
159
160/* Translate the current start state into a value that can be later handed
161 * to BEGIN to return to the state. The YYSTATE alias is for lex
162 * compatibility.
163 */
164#define YY_START (((yy_start) - 1) / 2)
165#define YYSTATE YY_START
166
167/* Action number for EOF rule of a given start state. */
168#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
169
170/* Special action meaning "start processing a new file". */
171#define YY_NEW_FILE base_yyrestart(base_yyin )
172
173#define YY_END_OF_BUFFER_CHAR 0
174
175/* Size of default input buffer. */
176#ifndef YY_BUF_SIZE
177#ifdef __ia64__
178/* On IA-64, the buffer size is 16k, not 8k.
179 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
180 * Ditto for the __ia64__ case accordingly.
181 */
182#define YY_BUF_SIZE 32768
183#else
184#define YY_BUF_SIZE 16384
185#endif /* __ia64__ */
186#endif
187
188/* The state buf must be large enough to hold one state per character in the main buffer.
189 */
190#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
191
192#ifndef YY_TYPEDEF_YY_BUFFER_STATE
193#define YY_TYPEDEF_YY_BUFFER_STATE
194typedef struct yy_buffer_state *YY_BUFFER_STATE;
195#endif
196
197#ifndef YY_TYPEDEF_YY_SIZE_T
198#define YY_TYPEDEF_YY_SIZE_T
199typedef size_t yy_size_t;
200#endif
201
202extern int base_yyleng;
203
204extern FILE *base_yyin, *base_yyout;
205
206#define EOB_ACT_CONTINUE_SCAN 0
207#define EOB_ACT_END_OF_FILE 1
208#define EOB_ACT_LAST_MATCH 2
209
210 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
211 * access to the local variable yy_act. Since yyless() is a macro, it would break
212 * existing scanners that call yyless() from OUTSIDE base_yylex.
213 * One obvious solution it to make yy_act a global. I tried that, and saw
214 * a 5% performance hit in a non-base_yylineno scanner, because yy_act is
215 * normally declared as a register variable-- so it is not worth it.
216 */
217 #define YY_LESS_LINENO(n) \
218 do { \
219 int yyl;\
220 for ( yyl = n; yyl < base_yyleng; ++yyl )\
221 if ( base_yytext[yyl] == '\n' )\
222 --base_yylineno;\
223 }while(0)
224 #define YY_LINENO_REWIND_TO(dst) \
225 do {\
226 const char *p;\
227 for ( p = yy_cp-1; p >= (dst); --p)\
228 if ( *p == '\n' )\
229 --base_yylineno;\
230 }while(0)
231
232/* Return all but the first "n" matched characters back to the input stream. */
233#define yyless(n) \
234 do \
235 { \
236 /* Undo effects of setting up base_yytext. */ \
237 int yyless_macro_arg = (n); \
238 YY_LESS_LINENO(yyless_macro_arg);\
239 *yy_cp = (yy_hold_char); \
240 YY_RESTORE_YY_MORE_OFFSET \
241 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
242 YY_DO_BEFORE_ACTION; /* set up base_yytext again */ \
243 } \
244 while ( 0 )
245
246#define unput(c) yyunput( c, (yytext_ptr) )
247
248#ifndef YY_STRUCT_YY_BUFFER_STATE
249#define YY_STRUCT_YY_BUFFER_STATE
250struct yy_buffer_state
251 {
252 FILE *yy_input_file;
253
254 char *yy_ch_buf; /* input buffer */
255 char *yy_buf_pos; /* current position in input buffer */
256
257 /* Size of input buffer in bytes, not including room for EOB
258 * characters.
259 */
260 int yy_buf_size;
261
262 /* Number of characters read into yy_ch_buf, not including EOB
263 * characters.
264 */
265 int yy_n_chars;
266
267 /* Whether we "own" the buffer - i.e., we know we created it,
268 * and can realloc() it to grow it, and should free() it to
269 * delete it.
270 */
271 int yy_is_our_buffer;
272
273 /* Whether this is an "interactive" input source; if so, and
274 * if we're using stdio for input, then we want to use getc()
275 * instead of fread(), to make sure we stop fetching input after
276 * each newline.
277 */
278 int yy_is_interactive;
279
280 /* Whether we're considered to be at the beginning of a line.
281 * If so, '^' rules will be active on the next match, otherwise
282 * not.
283 */
284 int yy_at_bol;
285
286 int yy_bs_lineno; /**< The line count. */
287 int yy_bs_column; /**< The column count. */
288
289 /* Whether to try to fill the input buffer when we reach the
290 * end of it.
291 */
292 int yy_fill_buffer;
293
294 int yy_buffer_status;
295
296#define YY_BUFFER_NEW 0
297#define YY_BUFFER_NORMAL 1
298 /* When an EOF's been seen but there's still some text to process
299 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
300 * shouldn't try reading from the input source any more. We might
301 * still have a bunch of tokens to match, though, because of
302 * possible backing-up.
303 *
304 * When we actually see the EOF, we change the status to "new"
305 * (via base_yyrestart()), so that the user can continue scanning by
306 * just pointing base_yyin at a new input file.
307 */
308#define YY_BUFFER_EOF_PENDING 2
309
310 };
311#endif /* !YY_STRUCT_YY_BUFFER_STATE */
312
313/* Stack of input buffers. */
314static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
315static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
316static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
317
318/* We provide macros for accessing buffer states in case in the
319 * future we want to put the buffer states in a more general
320 * "scanner state".
321 *
322 * Returns the top of the stack, or NULL.
323 */
324#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
325 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
326 : NULL)
327
328/* Same as previous macro, but useful when we know that the buffer stack is not
329 * NULL or when we need an lvalue. For internal use only.
330 */
331#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
332
333/* yy_hold_char holds the character lost when base_yytext is formed. */
334static char yy_hold_char;
335static int yy_n_chars; /* number of characters read into yy_ch_buf */
336int base_yyleng;
337
338/* Points to current character in buffer. */
339static char *yy_c_buf_p = NULL;
340static int yy_init = 0; /* whether we need to initialize */
341static int yy_start = 0; /* start state number */
342
343/* Flag which is used to allow base_yywrap()'s to do buffer switches
344 * instead of setting up a fresh base_yyin. A bit of a hack ...
345 */
346static int yy_did_buffer_switch_on_eof;
347
348void base_yyrestart (FILE *input_file );
349void base_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
350YY_BUFFER_STATE base_yy_create_buffer (FILE *file,int size );
351void base_yy_delete_buffer (YY_BUFFER_STATE b );
352void base_yy_flush_buffer (YY_BUFFER_STATE b );
353void base_yypush_buffer_state (YY_BUFFER_STATE new_buffer );
354void base_yypop_buffer_state (void );
355
356static void base_yyensure_buffer_stack (void );
357static void base_yy_load_buffer_state (void );
358static void base_yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
359
360#define YY_FLUSH_BUFFER base_yy_flush_buffer(YY_CURRENT_BUFFER )
361
362YY_BUFFER_STATE base_yy_scan_buffer (char *base,yy_size_t size );
363YY_BUFFER_STATE base_yy_scan_string (yyconst char *yy_str );
364YY_BUFFER_STATE base_yy_scan_bytes (yyconst char *bytes,int len );
365
366void *base_yyalloc (yy_size_t );
367void *base_yyrealloc (void *,yy_size_t );
368void base_yyfree (void * );
369
370#define yy_new_buffer base_yy_create_buffer
371
372#define yy_set_interactive(is_interactive) \
373 { \
374 if ( ! YY_CURRENT_BUFFER ){ \
375 base_yyensure_buffer_stack (); \
376 YY_CURRENT_BUFFER_LVALUE = \
377 base_yy_create_buffer(base_yyin,YY_BUF_SIZE ); \
378 } \
379 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
380 }
381
382#define yy_set_bol(at_bol) \
383 { \
384 if ( ! YY_CURRENT_BUFFER ){\
385 base_yyensure_buffer_stack (); \
386 YY_CURRENT_BUFFER_LVALUE = \
387 base_yy_create_buffer(base_yyin,YY_BUF_SIZE ); \
388 } \
389 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
390 }
391
392#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
393
394/* Begin user sect3 */
395
396#define base_yywrap() (/*CONSTCOND*/1)
397#define YY_SKIP_YYWRAP
398
399typedef unsigned char YY_CHAR;
400
401FILE *base_yyin = NULL, *base_yyout = NULL;
402
403typedef int yy_state_type;
404
405extern int base_yylineno;
406
407int base_yylineno = 1;
408
409extern char *base_yytext;
410#ifdef yytext_ptr
411#undef yytext_ptr
412#endif
413#define yytext_ptr base_yytext
414
415static yy_state_type yy_get_previous_state (void );
416static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
417static int yy_get_next_buffer (void );
418static void yynoreturn yy_fatal_error (yyconst char* msg );
419
420/* Done after the current pattern has been matched and before the
421 * corresponding action - sets up base_yytext.
422 */
423#define YY_DO_BEFORE_ACTION \
424 (yytext_ptr) = yy_bp; \
425 base_yyleng = (int) (yy_cp - yy_bp); \
426 (yy_hold_char) = *yy_cp; \
427 *yy_cp = '\0'; \
428 (yy_c_buf_p) = yy_cp;
429
430#define YY_NUM_RULES 152
431#define YY_END_OF_BUFFER 153
432/* This struct is not used in this scanner,
433 but its presence is necessary. */
434struct yy_trans_info
435 {
436 flex_int32_t yy_verify;
437 flex_int32_t yy_nxt;
438 };
439static yyconst flex_int16_t yy_accept[826] =
440 { 0,
441 0, 0, 15, 15, 0, 0, 0, 0, 0, 0,
442 0, 0, 14, 14, 0, 0, 0, 0, 0, 0,
443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
445 0, 0, 0, 0, 153, 151, 15, 12, 8, 8,
446 9, 9, 9, 9, 55, 51, 57, 52, 57, 14,
447 19, 35, 30, 26, 36, 36, 28, 42, 26, 35,
448 46, 46, 48, 53, 32, 142, 142, 140, 99, 99,
449 140, 140, 121, 99, 99, 121, 56, 121, 81, 93,
450 121, 21, 97, 98, 92, 95, 91, 96, 121, 94,
451
452 71, 71, 89, 90, 121, 104, 121, 87, 87, 102,
453 103, 100, 121, 101, 79, 1, 1, 68, 49, 68,
454 66, 67, 68, 23, 67, 67, 67, 67, 71, 67,
455 67, 67, 67, 78, 78, 78, 78, 78, 78, 150,
456 150, 150, 150, 146, 146, 145, 144, 143, 127, 127,
457 15, 12, 12, 13, 8, 10, 7, 4, 10, 6,
458 5, 55, 54, 57, 14, 19, 19, 20, 35, 30,
459 30, 33, 31, 26, 26, 27, 36, 28, 28, 29,
460 38, 39, 38, 38, 38, 34, 46, 45, 47, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
462
463 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
464 0, 118, 109, 0, 88, 116, 110, 114, 111, 115,
465 105, 120, 72, 3, 0, 117, 72, 71, 75, 83,
466 107, 112, 106, 87, 87, 108, 1, 0, 68, 65,
467 68, 0, 0, 43, 69, 44, 1, 59, 2, 72,
468 71, 58, 60, 77, 62, 64, 61, 63, 78, 11,
469 24, 22, 0, 18, 0, 149, 0, 0, 0, 145,
470 143, 0, 0, 126, 12, 17, 13, 12, 4, 5,
471 19, 16, 20, 19, 30, 41, 31, 30, 26, 27,
472 26, 28, 29, 28, 39, 0, 0, 40, 47, 0,
473
474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475 86, 86, 0, 0, 0, 0, 0, 0, 0, 0,
476 0, 0, 0, 0, 119, 3, 0, 82, 73, 72,
477 76, 74, 83, 87, 68, 68, 44, 1, 1, 2,
478 72, 71, 77, 0, 0, 0, 50, 25, 148, 147,
479 12, 12, 12, 12, 19, 19, 19, 19, 30, 30,
480 30, 30, 26, 26, 26, 26, 28, 28, 28, 28,
481 39, 0, 0, 40, 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
483 0, 0, 0, 86, 86, 0, 0, 0, 0, 0,
484
485 0, 0, 0, 0, 0, 0, 87, 68, 0, 72,
486 77, 0, 0, 0, 77, 148, 148, 147, 147, 12,
487 12, 12, 12, 12, 19, 19, 16, 19, 19, 30,
488 30, 30, 30, 30, 26, 26, 26, 26, 26, 28,
489 28, 28, 28, 28, 0, 0, 0, 0, 0, 0,
490 0, 41, 0, 0, 0, 0, 0, 135, 0, 0,
491 0, 0, 0, 0, 0, 86, 86, 0, 0, 0,
492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
493 0, 87, 68, 68, 0, 72, 77, 0, 0, 0,
494 0, 12, 19, 30, 26, 28, 0, 37, 0, 0,
495
496 0, 0, 0, 0, 135, 0, 137, 0, 131, 0,
497 0, 0, 0, 0, 0, 86, 86, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0, 125, 0, 87,
499 68, 0, 0, 0, 0, 0, 0, 77, 77, 0,
500 0, 0, 0, 0, 0, 0, 139, 131, 133, 0,
501 0, 0, 0, 123, 0, 125, 0, 80, 70, 0,
502 0, 0, 0, 0, 77, 0, 0, 0, 0, 0,
503 0, 133, 0, 0, 0, 84, 84, 123, 129, 80,
504 80, 87, 87, 87, 87, 70, 77, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506
507 84, 84, 84, 0, 84, 0, 129, 0, 0, 0,
508 87, 87, 87, 87, 87, 87, 70, 77, 0, 0,
509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
510 0, 0, 0, 0, 0, 87, 87, 87, 87, 87,
511 87, 87, 87, 0, 0, 0, 0, 53, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
513 0, 0, 134, 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 87, 87, 87, 87, 87, 87, 87, 87,
515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
516 0, 0, 0, 0, 41, 0, 41, 0, 0, 0,
517
518 0, 0, 0, 0, 0, 0, 0, 0, 0, 134,
519 0, 136, 0, 130, 0, 0, 0, 0, 0, 0,
520 87, 87, 87, 87, 87, 87, 0, 53, 0, 0,
521 0, 0, 0, 53, 53, 0, 0, 0, 0, 0,
522 0, 0, 32, 32, 0, 0, 0, 0, 0, 32,
523 32, 0, 138, 130, 132, 85, 85, 0, 0, 124,
524 87, 87, 87, 124, 0, 0, 0, 0, 0, 0,
525 0, 0, 32, 0, 0, 41, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 132, 85, 85,
527 85, 85, 122, 0, 122, 87, 53, 0, 0, 0,
528
529 0, 0, 0, 0, 0, 32, 32, 0, 128, 128,
530 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 0
532 } ;
533
534static yyconst YY_CHAR yy_ec[256] =
535 { 0,
536 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
537 1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539 1, 2, 5, 6, 7, 8, 9, 10, 11, 12,
540 13, 14, 15, 16, 17, 18, 19, 20, 21, 21,
541 21, 21, 21, 21, 21, 22, 22, 23, 24, 25,
542 26, 27, 28, 28, 29, 30, 31, 32, 33, 34,
543 35, 35, 36, 35, 35, 37, 38, 39, 40, 41,
544 42, 43, 44, 45, 46, 35, 35, 47, 35, 35,
545 48, 49, 50, 51, 52, 28, 29, 30, 31, 32,
546
547 33, 34, 35, 35, 53, 35, 35, 37, 38, 39,
548 40, 41, 42, 43, 44, 45, 54, 35, 35, 55,
549 35, 35, 56, 57, 58, 28, 1, 59, 59, 59,
550 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
551 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
552 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
553 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
554 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
555 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
556 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
557
558 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
559 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
560 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
561 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
562 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
563 59, 59, 59, 59, 59
564 } ;
565
566static yyconst YY_CHAR yy_meta[60] =
567 { 0,
568 1, 2, 3, 3, 4, 5, 4, 6, 7, 4,
569 8, 9, 9, 10, 7, 1, 11, 12, 13, 14,
570 14, 14, 15, 16, 17, 18, 19, 4, 20, 20,
571 20, 20, 20, 20, 21, 21, 21, 21, 21, 21,
572 21, 21, 21, 21, 21, 21, 21, 12, 22, 9,
573 4, 21, 21, 21, 21, 1, 4, 1, 21
574 } ;
575
576static yyconst flex_uint16_t yy_base[917] =
577 { 0,
578 0, 0, 2033, 2029, 0, 53, 2, 4, 2029, 2028,
579 0, 5, 2021, 2020, 2018, 1974, 1973, 1971, 1, 26,
580 20, 22, 0, 27, 1969, 1961, 1951, 1950, 110, 0,
581 40, 168, 201, 0, 260, 0, 14, 28, 62, 81,
582 319, 0, 378, 0, 1956, 5117, 0, 85, 0, 0,
583 26, 1941, 42, 1939, 0, 1946, 5117, 5117, 41, 0,
584 89, 0, 92, 171, 0, 0, 175, 418, 181, 1936,
585 0, 0, 1937, 438, 443, 5117, 446, 5117, 5117, 5117,
586 423, 27, 5117, 187, 193, 1911, 5117, 23, 425, 1910,
587 1919, 5117, 5117, 5117, 448, 82, 5117, 426, 461, 472,
588
589 481, 486, 5117, 5117, 1902, 1900, 1895, 0, 52, 5117,
590 5117, 5117, 1860, 5117, 5117, 508, 514, 1890, 5117, 532,
591 505, 0, 0, 5117, 5117, 1897, 502, 1898, 511, 75,
592 154, 1872, 1863, 0, 1871, 1868, 1866, 1866, 1863, 1847,
593 0, 5117, 0, 5117, 550, 5117, 5117, 0, 5117, 560,
594 0, 492, 569, 1853, 0, 449, 5117, 0, 466, 5117,
595 0, 0, 5117, 5117, 0, 573, 589, 1837, 0, 592,
596 599, 5117, 1835, 595, 611, 1825, 0, 615, 622, 1816,
597 5117, 445, 0, 0, 0, 5117, 0, 5117, 1817, 627,
598 1804, 1787, 632, 639, 1798, 1781, 563, 643, 5117, 451,
599
600 1778, 1778, 650, 502, 5117, 693, 496, 621, 1776, 466,
601 1768, 5117, 5117, 526, 5117, 5117, 5117, 5117, 5117, 5117,
602 1786, 5117, 641, 0, 1792, 5117, 650, 735, 667, 0,
603 5117, 5117, 5117, 0, 1761, 5117, 662, 525, 0, 0,
604 764, 570, 573, 5117, 655, 1783, 817, 5117, 0, 742,
605 764, 5117, 5117, 603, 0, 0, 0, 0, 0, 5117,
606 5117, 5117, 537, 5117, 1766, 5117, 1772, 1750, 763, 5117,
607 0, 792, 796, 5117, 800, 5117, 1758, 806, 0, 0,
608 835, 5117, 1757, 845, 852, 5117, 1755, 855, 862, 1754,
609 873, 878, 1751, 881, 549, 0, 0, 0, 1741, 884,
610
611 1703, 889, 1709, 900, 1680, 797, 1682, 549, 1677, 926,
612 5117, 0, 1691, 0, 688, 722, 1663, 1662, 738, 1648,
613 1656, 1652, 1653, 1651, 5117, 0, 1678, 5117, 5117, 785,
614 792, 808, 0, 1649, 977, 1649, 1642, 0, 1030, 0,
615 887, 892, 879, 1603, 0, 972, 5117, 5117, 920, 929,
616 995, 1006, 1012, 1015, 1048, 1058, 1065, 1068, 1075, 1086,
617 1091, 1094, 1098, 1102, 1110, 1114, 1118, 1121, 1130, 1137,
618 5117, 0, 0, 5117, 1140, 1146, 1149, 1156, 1598, 1165,
619 1168, 1195, 1204, 1213, 1592, 1587, 1586, 587, 1585, 1568,
620 946, 1017, 937, 1022, 1039, 1555, 1544, 1533, 1535, 1515,
621
622 1514, 1503, 1505, 723, 1503, 1506, 1176, 1265, 1203, 1211,
623 1036, 1235, 1259, 1284, 1293, 1224, 5117, 1232, 5117, 1296,
624 1301, 1321, 1325, 1342, 1345, 1349, 1361, 1365, 1371, 1381,
625 1391, 1401, 1411, 1407, 1423, 1427, 1439, 1443, 1449, 1459,
626 1469, 1479, 1489, 1485, 0, 0, 1495, 1501, 1504, 1505,
627 1517, 1521, 1533, 1566, 1578, 1587, 1498, 1251, 1377, 1492,
628 1483, 1482, 1262, 1471, 1142, 1497, 1445, 774, 1465, 1476,
629 1468, 1452, 423, 1451, 1445, 1434, 726, 1436, 807, 1440,
630 1317, 1423, 0, 821, 1369, 1399, 1157, 1641, 1590, 1698,
631 1599, 1594, 1611, 1651, 1668, 1671, 0, 5117, 1752, 1417,
632
633 1756, 1759, 1762, 1416, 1433, 1550, 5117, 1554, 1527, 1421,
634 1402, 1419, 880, 1409, 1778, 1782, 1785, 0, 1382, 1362,
635 1374, 0, 1366, 1354, 1365, 1363, 1354, 1558, 1335, 1334,
636 1356, 1544, 1588, 1834, 0, 0, 1341, 1170, 1891, 0,
637 1826, 1324, 1815, 1884, 1317, 1632, 5117, 1582, 1623, 1820,
638 1306, 0, 1302, 1635, 1300, 1657, 1293, 1940, 1656, 1308,
639 1300, 5, 1966, 0, 2024, 0, 1861, 1692, 1917, 1894,
640 1864, 1719, 1921, 879, 1281, 1929, 1962, 1845, 1947, 2073,
641 0, 1261, 882, 895, 1242, 1938, 2127, 0, 2013, 1966,
642 0, 1261, 2045, 2061, 2078, 0, 1256, 892, 1228, 828,
643
644 1976, 1985, 1988, 1218, 2020, 1208, 2050, 1210, 903, 1203,
645 1206, 1160, 1177, 839, 1170, 1161, 5117, 0, 2185, 1170,
646 2081, 2188, 2205, 1154, 2099, 1130, 1129, 942, 1122, 1105,
647 1095, 1093, 1076, 1045, 1041, 947, 1030, 1015, 977, 1005,
648 979, 970, 955, 2208, 2224, 2241, 2244, 5117, 2262, 2265,
649 2282, 2298, 2301, 2317, 2320, 2337, 2340, 5117, 2347, 2358,
650 2376, 2386, 2066, 2191, 918, 917, 914, 930, 946, 1010,
651 889, 882, 872, 2109, 2253, 836, 817, 768, 1037, 724,
652 663, 2396, 2406, 2416, 2426, 2436, 2454, 2464, 2474, 2484,
653 2494, 2510, 2513, 2529, 2532, 2549, 0, 662, 2552, 2568,
654
655 2585, 2588, 2607, 2624, 2634, 2645, 2655, 2665, 2677, 2118,
656 2402, 5117, 2412, 2121, 624, 603, 582, 566, 1053, 548,
657 546, 2661, 2234, 417, 167, 2304, 2687, 2693, 2697, 2709,
658 2713, 2725, 2758, 2770, 0, 2781, 2786, 2791, 2803, 2813,
659 2839, 2849, 2819, 5117, 2859, 2875, 2879, 2895, 2898, 2915,
660 0, 2742, 5117, 2323, 2442, 2490, 2500, 67, 45, 2516,
661 2535, 2578, 13, 2613, 2934, 2944, 2954, 2964, 2974, 2990,
662 3000, 3022, 3010, 3038, 3048, 3058, 3068, 3078, 3096, 3106,
663 3116, 3126, 3136, 3152, 3162, 3172, 3183, 2617, 2671, 2703,
664 2719, 2746, 2750, 3, 2754, 2774, 3200, 3211, 3221, 3232,
665
666 3249, 3259, 3277, 3280, 3297, 3313, 0, 3316, 2797, 2807,
667 3335, 3346, 3371, 3374, 3393, 3404, 3420, 3438, 3442, 3461,
668 3465, 3487, 3497, 3514, 5117, 3568, 3590, 3612, 3634, 3656,
669 3678, 3700, 3722, 3744, 3766, 3788, 3810, 3832, 3854, 3876,
670 3898, 3920, 3942, 3963, 3985, 1334, 4006, 4027, 4044, 4062,
671 4076, 4083, 4099, 4120, 4142, 4164, 4181, 4201, 4219, 4235,
672 173, 473, 536, 4249, 4267, 4286, 805, 4303, 4324, 4343,
673 4357, 4378, 4400, 4422, 4444, 4466, 1013, 1060, 1116, 4488,
674 4510, 617, 4531, 4552, 4574, 4596, 4618, 4640, 1163, 1170,
675 4662, 4684, 4701, 1231, 1257, 4722, 4744, 1269, 4765, 1288,
676
677 1317, 4786, 4808, 4830, 4852, 4874, 4896, 4918, 4940, 4962,
678 4984, 5006, 5028, 5050, 5072, 5094
679 } ;
680
681static yyconst flex_int16_t yy_def[917] =
682 { 0,
683 826, 826, 827, 827, 828, 828, 6, 6, 829, 829,
684 830, 830, 831, 831, 832, 832, 832, 832, 833, 833,
685 832, 832, 834, 834, 829, 829, 832, 832, 825, 29,
686 835, 835, 825, 33, 825, 35, 836, 836, 837, 837,
687 825, 41, 825, 43, 825, 825, 838, 825, 839, 839,
688 825, 825, 825, 825, 840, 825, 825, 825, 825, 841,
689 825, 842, 825, 825, 843, 843, 825, 844, 825, 842,
690 845, 845, 846, 825, 825, 825, 847, 825, 825, 825,
691 825, 825, 825, 825, 825, 825, 825, 848, 825, 825,
692 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
693
694 825, 825, 825, 825, 825, 825, 825, 849, 849, 825,
695 825, 825, 825, 825, 825, 825, 825, 850, 825, 848,
696 851, 850, 850, 825, 825, 850, 825, 850, 825, 852,
697 850, 850, 850, 853, 853, 853, 853, 853, 853, 854,
698 855, 825, 856, 825, 825, 825, 825, 857, 825, 858,
699 838, 825, 825, 825, 839, 825, 825, 859, 825, 825,
700 860, 840, 825, 825, 841, 825, 825, 825, 842, 825,
701 825, 825, 825, 825, 825, 825, 843, 825, 825, 825,
702 825, 825, 861, 862, 863, 825, 845, 825, 864, 825,
703 825, 825, 825, 825, 825, 825, 825, 847, 825, 825,
704
705 825, 825, 825, 848, 825, 825, 206, 825, 825, 825,
706 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
707 825, 825, 825, 865, 866, 825, 825, 825, 825, 867,
708 825, 825, 825, 849, 849, 825, 825, 848, 850, 850,
709 206, 206, 825, 825, 825, 868, 869, 825, 870, 825,
710 825, 825, 825, 871, 850, 850, 850, 850, 853, 825,
711 825, 825, 825, 825, 854, 825, 855, 856, 825, 825,
712 857, 825, 858, 825, 825, 825, 825, 872, 859, 860,
713 825, 825, 825, 873, 825, 825, 825, 874, 825, 825,
714 875, 825, 825, 876, 825, 877, 878, 879, 864, 880,
715
716 825, 825, 825, 881, 825, 825, 825, 825, 825, 206,
717 825, 310, 310, 206, 310, 206, 206, 206, 310, 825,
718 825, 825, 825, 825, 825, 865, 866, 825, 825, 825,
719 825, 825, 867, 849, 310, 335, 868, 869, 869, 870,
720 825, 825, 871, 825, 882, 883, 825, 825, 825, 825,
721 884, 872, 872, 872, 885, 873, 873, 873, 886, 874,
722 874, 874, 887, 875, 875, 875, 888, 876, 876, 876,
723 825, 889, 890, 825, 880, 880, 880, 880, 825, 891,
724 881, 881, 881, 881, 825, 825, 825, 825, 825, 825,
725 825, 892, 310, 310, 310, 206, 206, 206, 206, 310,
726
727 310, 825, 825, 825, 825, 825, 849, 892, 825, 825,
728 893, 883, 883, 883, 883, 825, 825, 825, 825, 884,
729 884, 884, 884, 872, 885, 885, 885, 885, 873, 886,
730 886, 886, 886, 874, 887, 887, 887, 887, 875, 888,
731 888, 888, 888, 876, 894, 895, 880, 880, 825, 891,
732 891, 891, 891, 891, 881, 881, 825, 825, 825, 825,
733 825, 825, 825, 825, 892, 896, 892, 310, 892, 206,
734 206, 206, 206, 310, 310, 825, 825, 825, 825, 825,
735 825, 849, 408, 335, 825, 825, 893, 897, 883, 825,
736 883, 884, 885, 886, 887, 888, 898, 825, 880, 825,
737
738 891, 891, 881, 825, 825, 825, 825, 825, 825, 825,
739 825, 896, 825, 310, 892, 892, 892, 206, 206, 206,
740 206, 310, 310, 825, 825, 825, 825, 825, 825, 849,
741 335, 825, 825, 897, 534, 534, 534, 534, 899, 900,
742 880, 825, 891, 881, 825, 825, 825, 825, 825, 825,
743 206, 310, 825, 825, 825, 825, 825, 849, 825, 825,
744 534, 534, 534, 534, 899, 901, 880, 825, 891, 881,
745 825, 825, 825, 825, 825, 206, 825, 825, 825, 825,
746 580, 849, 849, 849, 849, 825, 825, 895, 880, 825,
747 902, 825, 891, 881, 825, 903, 825, 825, 825, 825,
748
749 310, 825, 310, 310, 825, 825, 825, 825, 825, 825,
750 849, 849, 849, 849, 849, 849, 825, 587, 880, 825,
751 904, 891, 881, 825, 905, 825, 825, 825, 825, 825,
752 310, 825, 825, 825, 825, 849, 849, 849, 849, 849,
753 849, 849, 849, 880, 825, 906, 880, 825, 904, 904,
754 907, 904, 891, 881, 825, 908, 881, 825, 905, 905,
755 909, 905, 825, 825, 825, 825, 825, 310, 825, 825,
756 825, 825, 849, 849, 849, 849, 849, 849, 849, 849,
757 825, 880, 880, 825, 880, 880, 910, 904, 904, 825,
758 904, 904, 891, 825, 911, 891, 903, 825, 881, 881,
759
760 825, 881, 881, 912, 905, 905, 825, 905, 905, 825,
761 825, 825, 825, 825, 825, 310, 825, 825, 825, 825,
762 849, 849, 849, 849, 849, 849, 910, 880, 910, 910,
763 913, 910, 910, 907, 902, 891, 891, 825, 891, 891,
764 914, 914, 881, 825, 912, 912, 915, 912, 912, 909,
765 903, 825, 825, 825, 825, 310, 825, 825, 825, 825,
766 849, 849, 849, 825, 910, 910, 910, 825, 910, 910,
767 910, 910, 891, 914, 914, 916, 914, 914, 914, 912,
768 912, 912, 825, 912, 912, 912, 912, 825, 310, 825,
769 310, 825, 825, 825, 825, 849, 913, 910, 914, 914,
770
771 825, 914, 914, 914, 914, 915, 903, 912, 825, 825,
772 910, 916, 914, 912, 910, 914, 912, 910, 914, 912,
773 910, 914, 912, 914, 0, 825, 825, 825, 825, 825,
774 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
775 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
776 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
777 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
778 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
779 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
780 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
781
782 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
783 825, 825, 825, 825, 825, 825
784 } ;
785
786static yyconst flex_uint16_t yy_nxt[5177] =
787 { 0,
788 825, 825, 72, 66, 50, 58, 50, 73, 50, 50,
789 58, 67, 825, 51, 50, 53, 50, 53, 52, 141,
790 54, 537, 54, 825, 50, 50, 50, 50, 66, 72,
791 69, 563, 69, 141, 73, 809, 67, 142, 143, 156,
792 142, 79, 80, 79, 157, 796, 164, 81, 59, 68,
793 50, 142, 143, 59, 142, 159, 50, 50, 207, 50,
794 160, 50, 50, 145, 145, 145, 51, 50, 70, 50,
795 70, 52, 82, 202, 68, 208, 794, 50, 50, 50,
796 50, 202, 145, 145, 145, 146, 152, 153, 153, 164,
797 166, 167, 167, 170, 171, 171, 217, 252, 235, 793,
798
799 253, 154, 172, 50, 146, 168, 235, 218, 173, 50,
800 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
801 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
802 76, 76, 76, 76, 76, 76, 76, 76, 77, 77,
803 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
804 77, 77, 77, 77, 77, 77, 77, 76, 76, 76,
805 76, 77, 77, 77, 77, 76, 76, 76, 77, 79,
806 80, 79, 174, 175, 175, 81, 178, 179, 179, 255,
807 256, 172, 174, 175, 175, 172, 296, 176, 203, 203,
808 203, 180, 296, 204, 203, 203, 203, 176, 763, 204,
809
810 82, 83, 84, 85, 84, 86, 87, 88, 89, 90,
811 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
812 101, 102, 102, 103, 104, 105, 106, 107, 83, 108,
813 108, 108, 108, 109, 108, 108, 108, 108, 108, 108,
814 108, 108, 108, 108, 108, 108, 108, 108, 110, 83,
815 111, 83, 108, 108, 108, 108, 112, 113, 114, 108,
816 115, 116, 117, 116, 118, 119, 120, 121, 122, 123,
817 124, 125, 125, 122, 122, 125, 126, 127, 128, 129,
818 129, 129, 130, 125, 131, 132, 133, 123, 134, 135,
819 134, 134, 136, 134, 134, 134, 134, 134, 137, 134,
820
821 134, 134, 134, 134, 134, 138, 139, 125, 115, 125,
822 122, 134, 134, 138, 139, 115, 123, 115, 134, 147,
823 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
824 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
825 147, 147, 147, 147, 147, 147, 147, 148, 148, 148,
826 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
827 148, 148, 148, 148, 148, 148, 147, 147, 147, 147,
828 148, 148, 148, 148, 147, 147, 147, 148, 149, 149,
829 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
830 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
831
832 149, 149, 149, 149, 149, 149, 150, 150, 150, 150,
833 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
834 150, 150, 150, 150, 150, 149, 149, 149, 149, 150,
835 150, 150, 150, 149, 149, 149, 150, 182, 182, 190,
836 190, 190, 219, 163, 193, 194, 194, 197, 197, 197,
837 762, 220, 221, 172, 191, 200, 209, 200, 201, 195,
838 210, 214, 156, 183, 295, 295, 215, 157, 521, 199,
839 211, 184, 185, 216, 222, 201, 521, 210, 211, 159,
840 223, 223, 223, 192, 160, 224, 297, 306, 196, 307,
841 225, 192, 297, 152, 153, 153, 196, 226, 227, 308,
842
843 228, 228, 228, 227, 323, 228, 228, 228, 154, 237,
844 237, 237, 244, 229, 238, 237, 237, 237, 229, 248,
845 238, 223, 223, 223, 245, 245, 245, 230, 250, 316,
846 251, 251, 251, 317, 318, 230, 241, 207, 241, 214,
847 241, 241, 347, 229, 215, 241, 241, 348, 241, 298,
848 241, 269, 269, 269, 208, 298, 241, 241, 241, 241,
849 242, 272, 272, 272, 197, 197, 197, 242, 371, 371,
850 275, 275, 275, 270, 166, 167, 167, 243, 761, 276,
851 389, 760, 241, 274, 243, 277, 199, 390, 241, 168,
852 281, 281, 281, 170, 171, 171, 174, 175, 175, 282,
853
854 285, 285, 285, 316, 758, 283, 319, 317, 173, 286,
855 320, 176, 289, 289, 289, 287, 178, 179, 179, 344,
856 345, 286, 460, 292, 292, 292, 757, 290, 190, 190,
857 190, 180, 286, 193, 194, 194, 411, 411, 293, 460,
858 302, 302, 302, 191, 197, 197, 197, 756, 195, 286,
859 346, 203, 203, 203, 319, 303, 204, 755, 320, 321,
860 223, 223, 223, 237, 237, 237, 199, 329, 238, 330,
861 330, 330, 192, 229, 245, 245, 245, 196, 742, 727,
862 192, 331, 229, 331, 196, 196, 332, 332, 332, 393,
863 394, 395, 196, 310, 310, 311, 312, 310, 310, 310,
864
865 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
866 310, 313, 310, 310, 310, 310, 310, 310, 310, 310,
867 310, 314, 314, 314, 314, 314, 314, 314, 314, 314,
868 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
869 310, 315, 310, 310, 310, 314, 314, 314, 310, 310,
870 310, 310, 227, 396, 228, 228, 228, 726, 478, 329,
871 397, 341, 341, 341, 269, 269, 269, 229, 335, 400,
872 335, 525, 335, 335, 229, 478, 401, 335, 335, 525,
873 335, 250, 336, 342, 342, 342, 270, 468, 335, 335,
874 335, 335, 514, 272, 272, 272, 229, 272, 272, 272,
875
876 724, 275, 275, 275, 330, 330, 330, 353, 153, 153,
877 276, 332, 332, 332, 335, 274, 277, 229, 333, 274,
878 335, 339, 354, 339, 333, 339, 339, 332, 332, 332,
879 339, 339, 386, 339, 484, 339, 281, 281, 281, 531,
880 387, 339, 339, 339, 339, 282, 357, 167, 167, 386,
881 723, 283, 527, 285, 285, 285, 361, 171, 171, 629,
882 527, 358, 286, 289, 289, 289, 630, 339, 287, 722,
883 640, 362, 286, 339, 365, 175, 175, 641, 290, 292,
884 292, 292, 369, 179, 179, 376, 190, 190, 286, 366,
885 302, 302, 302, 513, 293, 344, 345, 370, 310, 286,
886
887 377, 382, 194, 194, 409, 303, 410, 410, 410, 250,
888 721, 228, 228, 228, 720, 598, 383, 599, 612, 229,
889 613, 416, 416, 416, 229, 719, 346, 626, 614, 378,
890 418, 418, 418, 615, 196, 627, 600, 378, 393, 394,
891 395, 634, 196, 417, 626, 384, 715, 463, 463, 463,
892 714, 713, 419, 384, 310, 310, 310, 310, 310, 310,
893 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
894 310, 310, 310, 412, 412, 412, 716, 665, 310, 310,
895 310, 335, 673, 335, 716, 335, 335, 680, 414, 464,
896 335, 335, 717, 335, 665, 336, 421, 275, 275, 673,
897
898 717, 335, 335, 335, 335, 422, 679, 353, 153, 153,
899 678, 423, 676, 353, 153, 153, 353, 153, 153, 466,
900 467, 415, 354, 393, 394, 395, 372, 335, 354, 676,
901 468, 424, 372, 335, 339, 313, 339, 677, 339, 339,
902 393, 394, 395, 339, 339, 718, 339, 675, 339, 426,
903 281, 281, 344, 345, 339, 339, 339, 339, 427, 357,
904 167, 167, 718, 674, 428, 469, 357, 167, 167, 357,
905 167, 167, 672, 373, 358, 671, 431, 285, 285, 373,
906 339, 358, 725, 346, 429, 432, 339, 361, 171, 171,
907 725, 433, 361, 171, 171, 361, 171, 171, 759, 436,
908
909 289, 289, 362, 365, 175, 175, 759, 362, 437, 670,
910 434, 365, 175, 175, 438, 365, 175, 175, 366, 441,
911 292, 292, 369, 179, 179, 669, 366, 668, 442, 374,
912 439, 369, 179, 179, 443, 374, 667, 370, 369, 179,
913 179, 376, 190, 190, 466, 467, 370, 376, 190, 190,
914 376, 190, 190, 444, 666, 468, 377, 376, 190, 190,
915 313, 664, 377, 663, 658, 447, 451, 302, 302, 382,
916 194, 194, 377, 344, 345, 452, 445, 481, 481, 481,
917 648, 453, 445, 446, 383, 378, 562, 563, 448, 446,
918 469, 378, 643, 378, 378, 637, 382, 194, 194, 378,
919
920 642, 378, 378, 638, 346, 382, 194, 194, 639, 378,
921 454, 383, 637, 384, 382, 194, 194, 564, 454, 482,
922 455, 384, 485, 485, 485, 416, 416, 416, 409, 383,
923 486, 486, 486, 418, 418, 418, 412, 412, 412, 636,
924 384, 635, 633, 229, 497, 456, 632, 417, 384, 384,
925 497, 414, 505, 505, 505, 419, 631, 384, 384, 628,
926 412, 412, 412, 463, 463, 463, 384, 466, 467, 483,
927 498, 483, 625, 483, 483, 414, 498, 621, 484, 483,
928 616, 483, 540, 336, 415, 412, 412, 412, 540, 483,
929 483, 483, 483, 611, 412, 412, 412, 421, 275, 275,
930
931 488, 566, 421, 275, 275, 464, 422, 566, 415, 489,
932 490, 422, 423, 469, 600, 483, 537, 423, 481, 481,
933 481, 483, 421, 275, 275, 532, 421, 275, 275, 580,
934 588, 422, 579, 415, 577, 422, 588, 423, 576, 189,
935 491, 492, 415, 353, 153, 153, 426, 281, 281, 571,
936 426, 281, 281, 189, 189, 427, 568, 537, 424, 427,
937 529, 428, 426, 281, 281, 428, 426, 281, 281, 408,
938 558, 427, 357, 167, 167, 427, 557, 428, 506, 506,
939 506, 493, 431, 285, 285, 555, 532, 429, 533, 533,
940 533, 432, 431, 285, 285, 554, 553, 433, 552, 522,
941
942 507, 432, 431, 285, 285, 551, 518, 433, 361, 171,
943 171, 432, 431, 285, 285, 518, 409, 433, 330, 330,
944 330, 432, 392, 434, 436, 289, 289, 494, 436, 289,
945 289, 229, 513, 437, 505, 505, 505, 437, 550, 438,
946 436, 289, 289, 438, 436, 289, 289, 466, 467, 437,
947 365, 175, 175, 437, 549, 438, 545, 542, 468, 495,
948 441, 292, 292, 313, 530, 439, 515, 516, 517, 442,
949 441, 292, 292, 528, 526, 443, 524, 523, 468, 442,
950 441, 292, 292, 313, 522, 443, 369, 179, 179, 442,
951 441, 292, 292, 469, 520, 443, 376, 190, 190, 442,
952
953 519, 444, 376, 190, 190, 496, 451, 302, 302, 518,
954 513, 447, 511, 469, 510, 452, 509, 377, 451, 302,
955 302, 453, 451, 302, 302, 508, 504, 452, 548, 548,
956 548, 452, 500, 453, 451, 302, 302, 453, 480, 479,
957 378, 477, 476, 452, 499, 475, 378, 474, 378, 501,
958 454, 506, 506, 506, 378, 546, 546, 546, 454, 556,
959 556, 556, 454, 559, 559, 559, 454, 451, 302, 302,
960 454, 473, 472, 507, 454, 471, 452, 547, 454, 382,
961 194, 194, 453, 548, 548, 548, 454, 470, 382, 194,
962 194, 412, 412, 412, 455, 421, 275, 275, 502, 462,
963
964 412, 412, 412, 383, 422, 532, 488, 560, 560, 560,
965 492, 454, 426, 281, 281, 414, 490, 461, 459, 454,
966 458, 427, 457, 384, 572, 572, 572, 493, 449, 345,
967 503, 384, 384, 546, 546, 546, 578, 578, 578, 415,
968 384, 534, 535, 412, 412, 534, 534, 534, 415, 244,
969 534, 534, 431, 285, 285, 547, 534, 537, 556, 556,
970 556, 432, 408, 534, 534, 534, 534, 494, 534, 436,
971 289, 289, 441, 292, 292, 586, 586, 586, 437, 407,
972 328, 442, 406, 405, 495, 404, 403, 496, 402, 534,
973 538, 534, 399, 590, 590, 590, 534, 534, 534, 412,
974
975 412, 412, 591, 398, 392, 413, 413, 391, 592, 413,
976 413, 413, 413, 388, 414, 413, 413, 413, 413, 413,
977 572, 572, 572, 385, 413, 380, 539, 539, 539, 539,
978 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
979 539, 539, 539, 539, 539, 413, 379, 415, 188, 539,
980 539, 539, 539, 376, 190, 190, 539, 451, 302, 302,
981 451, 302, 302, 382, 194, 194, 452, 367, 377, 452,
982 363, 359, 501, 355, 351, 453, 350, 349, 383, 515,
983 516, 517, 541, 515, 516, 517, 515, 516, 517, 266,
984 244, 468, 544, 334, 328, 468, 313, 378, 468, 325,
985
986 313, 454, 543, 313, 454, 378, 324, 384, 322, 454,
987 309, 308, 454, 305, 304, 384, 451, 302, 302, 301,
988 300, 573, 573, 573, 188, 452, 469, 376, 190, 190,
989 469, 453, 294, 469, 534, 535, 412, 412, 534, 534,
990 534, 291, 377, 534, 534, 569, 578, 578, 578, 534,
991 561, 288, 574, 284, 567, 575, 534, 534, 534, 534,
992 454, 534, 376, 190, 190, 595, 595, 595, 454, 278,
993 266, 378, 575, 264, 596, 263, 262, 377, 261, 378,
994 597, 260, 534, 538, 534, 382, 194, 194, 258, 534,
995 534, 534, 412, 412, 412, 382, 194, 194, 257, 413,
996
997 383, 589, 413, 413, 413, 413, 378, 489, 490, 413,
998 383, 249, 570, 247, 378, 240, 236, 413, 451, 302,
999 302, 233, 573, 573, 573, 232, 231, 452, 213, 384,
1000 601, 602, 603, 453, 594, 212, 205, 384, 491, 384,
1001 415, 581, 581, 581, 188, 593, 186, 384, 607, 607,
1002 607, 163, 161, 574, 158, 825, 575, 617, 617, 617,
1003 75, 75, 454, 605, 605, 605, 74, 590, 590, 590,
1004 454, 582, 583, 575, 74, 584, 591, 601, 602, 603,
1005 604, 64, 592, 64, 63, 585, 605, 605, 605, 601,
1006 602, 603, 584, 585, 587, 587, 587, 587, 587, 587,
1007
1008 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
1009 587, 587, 587, 606, 376, 190, 190, 587, 587, 587,
1010 587, 605, 605, 605, 587, 412, 412, 412, 63, 377,
1011 61, 61, 413, 56, 56, 413, 413, 413, 413, 48,
1012 489, 490, 413, 48, 825, 619, 451, 302, 302, 825,
1013 413, 607, 607, 607, 825, 452, 825, 825, 378, 825,
1014 825, 453, 382, 194, 194, 825, 378, 710, 710, 710,
1015 825, 491, 825, 415, 581, 581, 581, 383, 825, 595,
1016 595, 595, 650, 590, 590, 622, 825, 825, 596, 825,
1017 454, 651, 825, 623, 597, 825, 825, 652, 454, 825,
1018
1019 660, 595, 595, 825, 608, 574, 384, 825, 609, 661,
1020 710, 710, 710, 825, 384, 662, 825, 825, 610, 710,
1021 710, 710, 754, 754, 754, 609, 610, 534, 535, 412,
1022 412, 534, 534, 534, 618, 536, 534, 534, 536, 536,
1023 536, 536, 534, 562, 563, 536, 618, 618, 618, 534,
1024 534, 534, 534, 536, 534, 618, 618, 618, 618, 618,
1025 618, 618, 618, 618, 618, 618, 618, 618, 618, 618,
1026 618, 618, 618, 618, 564, 534, 538, 534, 618, 618,
1027 618, 618, 534, 534, 534, 618, 644, 645, 645, 451,
1028 302, 302, 711, 711, 711, 646, 825, 825, 452, 825,
1029
1030 825, 647, 825, 825, 453, 825, 654, 655, 655, 644,
1031 645, 645, 825, 825, 712, 656, 825, 825, 646, 825,
1032 653, 657, 825, 825, 647, 645, 645, 645, 825, 825,
1033 378, 825, 825, 454, 591, 754, 754, 754, 378, 825,
1034 681, 454, 683, 684, 684, 376, 190, 190, 825, 825,
1035 384, 375, 825, 378, 711, 711, 711, 685, 384, 825,
1036 687, 378, 825, 650, 590, 590, 650, 590, 590, 192,
1037 825, 825, 651, 825, 825, 651, 712, 192, 652, 825,
1038 825, 652, 825, 689, 690, 690, 686, 825, 825, 378,
1039 825, 825, 651, 825, 686, 825, 825, 378, 691, 650,
1040
1041 590, 590, 693, 694, 694, 764, 764, 764, 651, 825,
1042 825, 695, 825, 825, 692, 825, 825, 696, 654, 655,
1043 655, 694, 694, 694, 754, 754, 754, 656, 825, 825,
1044 697, 825, 825, 657, 825, 825, 698, 825, 700, 701,
1045 701, 382, 194, 194, 825, 825, 454, 381, 660, 595,
1046 595, 825, 825, 702, 454, 825, 704, 661, 825, 660,
1047 595, 595, 384, 662, 825, 196, 825, 825, 661, 825,
1048 384, 825, 825, 196, 662, 825, 825, 706, 707, 707,
1049 825, 825, 703, 825, 825, 384, 661, 660, 595, 595,
1050 703, 825, 708, 384, 825, 825, 661, 376, 190, 190,
1051
1052 825, 825, 709, 711, 711, 711, 728, 376, 190, 190,
1053 825, 825, 377, 752, 752, 752, 728, 190, 190, 190,
1054 825, 825, 377, 825, 825, 712, 648, 376, 190, 190,
1055 825, 825, 191, 825, 825, 753, 728, 376, 190, 190,
1056 825, 378, 447, 788, 788, 788, 728, 825, 825, 378,
1057 825, 378, 377, 825, 825, 730, 645, 645, 825, 378,
1058 825, 192, 825, 825, 731, 650, 590, 590, 448, 192,
1059 732, 378, 825, 825, 734, 650, 590, 590, 825, 378,
1060 652, 378, 825, 825, 734, 590, 590, 590, 825, 378,
1061 652, 789, 790, 791, 735, 650, 590, 590, 825, 733,
1062
1063 592, 792, 792, 792, 734, 825, 825, 733, 825, 825,
1064 692, 650, 590, 590, 693, 694, 694, 764, 764, 764,
1065 651, 825, 825, 695, 825, 825, 692, 825, 825, 696,
1066 694, 694, 694, 737, 738, 738, 795, 795, 795, 697,
1067 825, 825, 452, 825, 825, 698, 825, 825, 739, 825,
1068 451, 302, 302, 382, 194, 194, 825, 825, 454, 452,
1069 825, 825, 743, 825, 825, 741, 454, 825, 383, 382,
1070 194, 194, 825, 825, 196, 825, 825, 740, 743, 788,
1071 788, 788, 196, 825, 383, 740, 302, 302, 302, 382,
1072 194, 194, 825, 825, 454, 744, 825, 384, 743, 825,
1073
1074 825, 303, 454, 825, 455, 384, 825, 825, 382, 194,
1075 194, 825, 825, 384, 764, 764, 764, 743, 788, 788,
1076 788, 384, 825, 383, 825, 746, 655, 655, 825, 825,
1077 196, 825, 825, 384, 747, 660, 595, 595, 196, 456,
1078 748, 384, 825, 825, 750, 825, 660, 595, 595, 825,
1079 662, 825, 384, 825, 825, 750, 595, 595, 595, 825,
1080 384, 662, 752, 752, 752, 751, 660, 595, 595, 749,
1081 825, 597, 789, 790, 791, 750, 825, 749, 660, 595,
1082 595, 709, 825, 825, 753, 825, 825, 661, 730, 645,
1083 645, 825, 825, 709, 376, 190, 190, 731, 730, 645,
1084
1085 645, 825, 825, 765, 792, 792, 792, 731, 825, 377,
1086 730, 645, 645, 765, 767, 768, 768, 825, 825, 731,
1087 789, 790, 791, 731, 825, 765, 730, 645, 645, 769,
1088 825, 825, 733, 825, 825, 731, 825, 825, 378, 825,
1089 733, 771, 733, 752, 752, 752, 378, 792, 792, 792,
1090 733, 795, 795, 795, 733, 795, 795, 795, 770, 730,
1091 645, 645, 733, 825, 825, 753, 770, 825, 731, 825,
1092 733, 689, 690, 690, 765, 810, 810, 810, 733, 825,
1093 651, 825, 451, 302, 302, 825, 691, 451, 302, 302,
1094 772, 773, 302, 302, 302, 825, 773, 453, 810, 810,
1095
1096 810, 744, 453, 733, 451, 302, 302, 303, 810, 810,
1097 810, 733, 825, 773, 451, 302, 302, 825, 825, 501,
1098 382, 194, 194, 773, 825, 825, 454, 825, 825, 453,
1099 825, 454, 825, 825, 454, 383, 196, 825, 825, 454,
1100 775, 694, 694, 825, 196, 502, 825, 825, 454, 776,
1101 775, 694, 694, 825, 825, 777, 454, 825, 454, 776,
1102 746, 655, 655, 825, 384, 779, 454, 825, 825, 747,
1103 825, 825, 384, 825, 825, 780, 746, 655, 655, 825,
1104 782, 783, 783, 825, 778, 747, 825, 825, 825, 747,
1105 825, 780, 778, 825, 778, 784, 746, 655, 655, 746,
1106
1107 655, 655, 778, 825, 749, 747, 825, 825, 747, 825,
1108 825, 786, 749, 825, 780, 825, 706, 707, 707, 825,
1109 749, 825, 825, 825, 785, 661, 825, 825, 749, 825,
1110 787, 708, 785, 825, 825, 730, 645, 645, 825, 825,
1111 749, 825, 825, 749, 731, 730, 645, 645, 749, 825,
1112 771, 749, 825, 825, 797, 730, 645, 645, 825, 825,
1113 765, 825, 825, 825, 797, 645, 645, 645, 825, 825,
1114 765, 825, 825, 825, 735, 730, 645, 645, 825, 733,
1115 681, 825, 825, 825, 797, 825, 825, 733, 825, 733,
1116 771, 730, 645, 645, 825, 825, 825, 733, 825, 733,
1117
1118 797, 730, 645, 645, 825, 825, 765, 733, 825, 192,
1119 731, 451, 302, 302, 825, 825, 771, 192, 825, 733,
1120 452, 825, 772, 730, 645, 645, 453, 733, 825, 825,
1121 825, 825, 731, 825, 825, 733, 825, 825, 765, 775,
1122 694, 694, 825, 733, 825, 733, 825, 825, 776, 775,
1123 694, 694, 825, 733, 779, 454, 825, 825, 776, 800,
1124 801, 801, 825, 454, 779, 798, 825, 733, 776, 775,
1125 694, 694, 825, 825, 802, 733, 825, 825, 776, 775,
1126 694, 694, 825, 778, 804, 825, 825, 825, 776, 825,
1127 825, 778, 825, 778, 779, 825, 825, 775, 694, 694,
1128
1129 825, 778, 825, 803, 825, 825, 776, 746, 655, 655,
1130 805, 803, 804, 778, 825, 825, 747, 746, 655, 655,
1131 825, 778, 786, 778, 825, 825, 806, 746, 655, 655,
1132 825, 778, 780, 825, 825, 825, 806, 694, 694, 694,
1133 825, 778, 780, 825, 825, 825, 807, 825, 825, 778,
1134 825, 749, 698, 746, 655, 655, 825, 825, 825, 749,
1135 825, 749, 806, 746, 655, 655, 825, 825, 786, 749,
1136 825, 749, 806, 746, 655, 655, 825, 825, 780, 749,
1137 825, 196, 747, 825, 746, 655, 655, 825, 786, 196,
1138 825, 825, 825, 747, 787, 825, 825, 749, 825, 780,
1139
1140 825, 767, 768, 768, 825, 749, 825, 749, 825, 825,
1141 731, 825, 730, 645, 645, 749, 769, 749, 825, 825,
1142 825, 731, 775, 694, 694, 749, 808, 765, 749, 825,
1143 825, 812, 825, 775, 694, 694, 749, 779, 825, 825,
1144 825, 811, 812, 825, 825, 770, 825, 825, 779, 825,
1145 694, 694, 694, 770, 825, 825, 733, 825, 825, 807,
1146 775, 694, 694, 825, 733, 698, 778, 825, 825, 812,
1147 825, 825, 825, 825, 778, 804, 825, 778, 775, 694,
1148 694, 775, 694, 694, 825, 778, 825, 812, 825, 825,
1149 776, 825, 825, 779, 196, 825, 804, 825, 775, 694,
1150
1151 694, 825, 196, 825, 778, 825, 825, 776, 825, 805,
1152 825, 825, 778, 779, 782, 783, 783, 746, 655, 655,
1153 825, 825, 778, 747, 825, 778, 747, 825, 825, 784,
1154 778, 825, 780, 778, 825, 825, 730, 645, 645, 825,
1155 813, 825, 778, 825, 825, 731, 814, 800, 801, 801,
1156 778, 765, 825, 825, 825, 825, 776, 825, 785, 825,
1157 825, 749, 802, 815, 825, 825, 785, 825, 825, 749,
1158 825, 825, 775, 694, 694, 746, 655, 655, 825, 825,
1159 733, 776, 825, 825, 747, 825, 825, 779, 733, 825,
1160 780, 803, 825, 825, 730, 645, 645, 825, 825, 803,
1161
1162 825, 816, 817, 731, 825, 775, 694, 694, 825, 765,
1163 825, 825, 825, 825, 776, 825, 778, 825, 825, 749,
1164 779, 746, 655, 655, 778, 825, 825, 749, 825, 825,
1165 747, 825, 819, 818, 825, 825, 780, 825, 733, 730,
1166 645, 645, 825, 775, 694, 694, 733, 825, 731, 778,
1167 825, 825, 776, 825, 765, 825, 825, 778, 779, 825,
1168 820, 825, 746, 655, 655, 749, 730, 645, 645, 825,
1169 821, 747, 825, 749, 825, 731, 825, 780, 825, 825,
1170 825, 765, 822, 733, 825, 825, 825, 778, 775, 694,
1171 694, 733, 825, 823, 825, 778, 825, 776, 746, 655,
1172
1173 655, 825, 825, 779, 825, 825, 749, 747, 825, 825,
1174 733, 825, 825, 780, 749, 775, 694, 694, 733, 824,
1175 825, 825, 825, 825, 776, 825, 825, 825, 825, 825,
1176 779, 825, 778, 825, 825, 825, 825, 825, 825, 825,
1177 778, 825, 749, 825, 825, 825, 825, 825, 825, 825,
1178 749, 825, 825, 825, 825, 825, 825, 825, 825, 778,
1179 825, 825, 825, 825, 825, 825, 825, 778, 46, 46,
1180 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
1181 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
1182 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1183
1184 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
1185 47, 47, 49, 49, 49, 49, 49, 49, 49, 49,
1186 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1187 49, 49, 49, 49, 55, 55, 55, 55, 55, 55,
1188 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
1189 55, 55, 55, 55, 55, 55, 57, 57, 57, 57,
1190 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
1191 57, 57, 57, 57, 57, 57, 57, 57, 60, 60,
1192 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1193 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1194
1195 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
1196 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
1197 62, 62, 65, 65, 65, 65, 65, 65, 65, 65,
1198 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
1199 65, 65, 65, 65, 71, 71, 71, 71, 71, 71,
1200 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
1201 71, 71, 71, 71, 71, 71, 78, 78, 78, 78,
1202 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1203 78, 78, 78, 78, 78, 78, 78, 78, 140, 140,
1204 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
1205
1206 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
1207 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1208 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1209 144, 144, 151, 151, 151, 151, 151, 151, 151, 825,
1210 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1211 151, 151, 151, 151, 155, 155, 155, 155, 155, 155,
1212 155, 155, 155, 825, 155, 155, 825, 155, 155, 155,
1213 155, 155, 155, 155, 155, 155, 162, 162, 162, 162,
1214 825, 162, 162, 162, 162, 162, 162, 162, 162, 162,
1215 162, 162, 162, 162, 162, 162, 162, 162, 165, 165,
1216
1217 165, 165, 165, 165, 165, 825, 165, 165, 165, 165,
1218 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
1219 169, 169, 169, 169, 169, 169, 169, 825, 169, 169,
1220 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
1221 169, 169, 177, 177, 177, 177, 177, 177, 177, 825,
1222 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1223 177, 177, 177, 181, 181, 181, 181, 181, 181, 181,
1224 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1225 181, 181, 181, 181, 181, 187, 187, 187, 187, 187,
1226 825, 187, 187, 187, 187, 187, 187, 187, 187, 187,
1227
1228 187, 187, 187, 187, 187, 187, 187, 198, 198, 825,
1229 825, 198, 825, 825, 825, 825, 825, 825, 825, 198,
1230 825, 198, 825, 825, 825, 198, 198, 206, 206, 206,
1231 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1232 206, 206, 206, 206, 206, 206, 206, 206, 206, 234,
1233 825, 825, 825, 825, 825, 825, 825, 234, 825, 825,
1234 825, 825, 825, 234, 234, 239, 825, 825, 239, 825,
1235 825, 239, 239, 825, 239, 825, 825, 825, 239, 239,
1236 239, 246, 825, 825, 825, 825, 825, 825, 825, 246,
1237 825, 825, 825, 825, 825, 246, 246, 254, 825, 825,
1238
1239 254, 825, 254, 254, 259, 825, 825, 825, 825, 825,
1240 825, 825, 259, 825, 825, 825, 825, 825, 259, 259,
1241 265, 265, 265, 265, 825, 265, 265, 265, 265, 265,
1242 265, 265, 265, 265, 265, 265, 825, 265, 825, 265,
1243 265, 265, 267, 267, 267, 267, 825, 267, 267, 267,
1244 267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
1245 267, 267, 267, 267, 268, 268, 268, 268, 268, 268,
1246 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
1247 268, 268, 825, 268, 268, 268, 271, 825, 825, 825,
1248 825, 825, 825, 825, 271, 825, 825, 825, 825, 825,
1249
1250 271, 271, 273, 273, 825, 825, 273, 825, 825, 825,
1251 825, 825, 825, 825, 273, 825, 273, 825, 825, 825,
1252 273, 273, 279, 825, 825, 279, 825, 825, 279, 279,
1253 825, 279, 825, 825, 825, 279, 279, 279, 280, 825,
1254 825, 280, 825, 825, 280, 280, 825, 280, 825, 825,
1255 825, 280, 280, 280, 299, 825, 825, 825, 825, 825,
1256 825, 825, 299, 825, 825, 825, 825, 825, 299, 299,
1257 326, 825, 825, 326, 825, 825, 326, 326, 825, 326,
1258 825, 825, 825, 326, 326, 326, 327, 327, 327, 327,
1259 327, 327, 327, 327, 327, 327, 327, 327, 327, 327,
1260
1261 327, 327, 327, 327, 327, 327, 327, 327, 337, 825,
1262 825, 825, 825, 825, 825, 825, 337, 825, 825, 825,
1263 825, 825, 337, 337, 338, 338, 825, 338, 338, 338,
1264 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
1265 338, 338, 338, 338, 338, 338, 340, 825, 825, 340,
1266 825, 825, 340, 340, 825, 340, 825, 825, 825, 340,
1267 340, 340, 343, 825, 825, 825, 825, 343, 343, 825,
1268 343, 825, 825, 825, 825, 825, 343, 343, 352, 352,
1269 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1270 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
1271
1272 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
1273 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
1274 356, 356, 360, 360, 360, 360, 360, 360, 360, 360,
1275 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
1276 360, 360, 360, 360, 364, 364, 364, 364, 364, 364,
1277 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
1278 364, 364, 364, 364, 364, 364, 368, 368, 368, 368,
1279 368, 368, 368, 368, 368, 368, 368, 368, 368, 368,
1280 368, 368, 368, 368, 368, 368, 368, 368, 375, 375,
1281 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
1282
1283 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
1284 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
1285 381, 381, 381, 381, 381, 381, 381, 381, 381, 381,
1286 381, 381, 413, 413, 825, 825, 413, 413, 825, 413,
1287 413, 413, 413, 413, 413, 825, 825, 825, 825, 413,
1288 413, 413, 420, 420, 420, 420, 420, 420, 420, 420,
1289 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
1290 420, 420, 420, 420, 425, 425, 425, 425, 425, 425,
1291 425, 425, 425, 425, 425, 425, 425, 425, 425, 425,
1292 425, 425, 425, 425, 425, 425, 430, 430, 430, 430,
1293
1294 430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
1295 430, 430, 430, 430, 430, 430, 430, 430, 435, 435,
1296 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
1297 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
1298 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
1299 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
1300 440, 440, 450, 450, 450, 450, 450, 450, 450, 450,
1301 450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
1302 450, 450, 450, 450, 465, 465, 465, 465, 465, 465,
1303 465, 465, 465, 465, 465, 465, 465, 465, 465, 465,
1304
1305 465, 465, 465, 465, 465, 465, 487, 825, 825, 825,
1306 825, 487, 487, 825, 487, 825, 825, 825, 825, 825,
1307 487, 487, 512, 512, 512, 512, 512, 512, 512, 512,
1308 512, 512, 512, 512, 825, 512, 512, 512, 512, 512,
1309 512, 512, 512, 512, 536, 536, 536, 536, 536, 536,
1310 536, 536, 536, 536, 536, 536, 536, 536, 536, 536,
1311 536, 536, 536, 536, 536, 536, 565, 565, 825, 825,
1312 565, 565, 825, 565, 565, 565, 565, 565, 565, 825,
1313 825, 825, 825, 565, 565, 565, 620, 620, 620, 620,
1314 620, 620, 620, 825, 620, 620, 620, 620, 620, 620,
1315
1316 620, 620, 620, 620, 620, 620, 620, 620, 624, 624,
1317 624, 624, 624, 624, 624, 825, 624, 624, 624, 624,
1318 624, 624, 624, 624, 624, 624, 624, 624, 624, 624,
1319 649, 649, 649, 649, 649, 649, 649, 649, 649, 649,
1320 649, 649, 649, 649, 649, 649, 649, 649, 649, 649,
1321 649, 649, 659, 659, 659, 659, 659, 659, 659, 659,
1322 659, 659, 659, 659, 659, 659, 659, 659, 659, 659,
1323 659, 659, 659, 659, 682, 682, 682, 682, 682, 682,
1324 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
1325 682, 682, 682, 682, 682, 682, 688, 688, 688, 688,
1326
1327 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
1328 688, 688, 688, 688, 688, 688, 688, 688, 699, 699,
1329 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
1330 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
1331 705, 705, 705, 705, 705, 705, 705, 705, 705, 705,
1332 705, 705, 705, 705, 705, 705, 705, 705, 705, 705,
1333 705, 705, 729, 729, 729, 729, 729, 729, 729, 729,
1334 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1335 729, 729, 729, 729, 736, 736, 736, 736, 736, 736,
1336 736, 736, 736, 736, 736, 736, 736, 736, 736, 736,
1337
1338 736, 736, 736, 736, 736, 736, 745, 745, 745, 745,
1339 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
1340 745, 745, 745, 745, 745, 745, 745, 745, 766, 766,
1341 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1342 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1343 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
1344 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
1345 774, 774, 781, 781, 781, 781, 781, 781, 781, 781,
1346 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
1347 781, 781, 781, 781, 799, 799, 799, 799, 799, 799,
1348
1349 799, 799, 799, 799, 799, 799, 799, 799, 799, 799,
1350 799, 799, 799, 799, 799, 799, 45, 825, 825, 825,
1351 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1352 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1353 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1354 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1355 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1356 825, 825, 825, 825, 825, 825
1357 } ;
1358
1359static yyconst flex_int16_t yy_chk[5177] =
1360 { 0,
1361 0, 0, 23, 19, 5, 11, 5, 23, 5, 5,
1362 12, 19, 0, 5, 5, 7, 5, 8, 5, 37,
1363 7, 562, 8, 0, 5, 5, 5, 5, 20, 24,
1364 21, 562, 22, 38, 24, 794, 20, 37, 37, 51,
1365 37, 31, 31, 31, 51, 763, 59, 31, 11, 19,
1366 5, 38, 38, 12, 38, 53, 5, 6, 88, 6,
1367 53, 6, 6, 39, 39, 39, 6, 6, 21, 6,
1368 22, 6, 31, 82, 20, 88, 759, 6, 6, 6,
1369 6, 82, 40, 40, 40, 39, 48, 48, 48, 59,
1370 61, 61, 61, 63, 63, 63, 96, 130, 109, 758,
1371
1372 130, 48, 63, 6, 40, 61, 109, 96, 63, 6,
1373 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1374 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1375 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1376 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1377 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1378 29, 29, 29, 29, 29, 29, 29, 29, 29, 32,
1379 32, 32, 64, 64, 64, 32, 67, 67, 67, 131,
1380 131, 64, 69, 69, 69, 67, 861, 64, 84, 84,
1381 84, 67, 861, 84, 85, 85, 85, 69, 725, 85,
1382
1383 32, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1384 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1385 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1386 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1387 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1388 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1389 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1390 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1391 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1392 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1393
1394 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1395 35, 35, 35, 35, 35, 35, 35, 35, 35, 41,
1396 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1397 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1398 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1399 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1400 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1401 41, 41, 41, 41, 41, 41, 41, 41, 43, 43,
1402 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
1403 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
1404
1405 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
1406 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
1407 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
1408 43, 43, 43, 43, 43, 43, 43, 68, 68, 74,
1409 74, 74, 98, 74, 75, 75, 75, 77, 77, 77,
1410 724, 98, 98, 75, 74, 81, 89, 89, 81, 75,
1411 89, 95, 156, 68, 182, 182, 95, 156, 473, 77,
1412 89, 68, 68, 95, 99, 81, 473, 89, 89, 159,
1413 99, 99, 99, 74, 159, 100, 862, 200, 75, 200,
1414 100, 74, 862, 152, 152, 152, 75, 100, 101, 210,
1415
1416 101, 101, 101, 102, 210, 102, 102, 102, 152, 116,
1417 116, 116, 121, 101, 116, 117, 117, 117, 102, 127,
1418 117, 127, 127, 127, 121, 121, 121, 101, 129, 207,
1419 129, 129, 129, 207, 207, 101, 120, 204, 120, 214,
1420 120, 120, 263, 129, 214, 120, 120, 263, 120, 863,
1421 120, 145, 145, 145, 204, 863, 120, 120, 120, 120,
1422 238, 150, 150, 150, 197, 197, 197, 120, 295, 295,
1423 153, 153, 153, 145, 166, 166, 166, 238, 721, 153,
1424 308, 720, 120, 150, 120, 153, 197, 308, 120, 166,
1425 167, 167, 167, 170, 170, 170, 174, 174, 174, 167,
1426
1427 171, 171, 171, 242, 718, 167, 243, 242, 170, 171,
1428 243, 174, 175, 175, 175, 171, 178, 178, 178, 254,
1429 254, 175, 388, 179, 179, 179, 717, 175, 190, 190,
1430 190, 178, 179, 193, 193, 193, 882, 882, 179, 388,
1431 194, 194, 194, 190, 198, 198, 198, 716, 193, 194,
1432 254, 203, 203, 203, 208, 194, 203, 715, 208, 208,
1433 223, 223, 223, 237, 237, 237, 198, 227, 237, 227,
1434 227, 227, 190, 223, 245, 245, 245, 193, 698, 681,
1435 190, 229, 227, 229, 194, 193, 229, 229, 229, 315,
1436 315, 315, 194, 206, 206, 206, 206, 206, 206, 206,
1437
1438 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1439 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1440 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1441 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1442 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1443 206, 206, 228, 316, 228, 228, 228, 680, 404, 250,
1444 316, 250, 250, 250, 269, 269, 269, 228, 241, 319,
1445 241, 477, 241, 241, 250, 404, 319, 241, 241, 477,
1446 241, 251, 241, 251, 251, 251, 269, 468, 241, 241,
1447 241, 241, 468, 272, 272, 272, 251, 273, 273, 273,
1448
1449 678, 275, 275, 275, 330, 330, 330, 278, 278, 278,
1450 275, 331, 331, 331, 241, 272, 275, 330, 867, 273,
1451 241, 247, 278, 247, 867, 247, 247, 332, 332, 332,
1452 247, 247, 306, 247, 484, 247, 281, 281, 281, 484,
1453 306, 247, 247, 247, 247, 281, 284, 284, 284, 306,
1454 677, 281, 479, 285, 285, 285, 288, 288, 288, 600,
1455 479, 284, 285, 289, 289, 289, 600, 247, 285, 676,
1456 614, 288, 289, 247, 291, 291, 291, 614, 289, 292,
1457 292, 292, 294, 294, 294, 300, 300, 300, 292, 291,
1458 302, 302, 302, 513, 292, 343, 343, 294, 513, 302,
1459
1460 300, 304, 304, 304, 341, 302, 341, 341, 341, 342,
1461 673, 342, 342, 342, 672, 574, 304, 574, 583, 341,
1462 583, 349, 349, 349, 342, 671, 343, 598, 584, 300,
1463 350, 350, 350, 584, 302, 598, 609, 300, 393, 393,
1464 393, 609, 302, 349, 598, 304, 667, 391, 391, 391,
1465 666, 665, 350, 304, 310, 310, 310, 310, 310, 310,
1466 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
1467 310, 310, 310, 346, 346, 346, 668, 628, 310, 310,
1468 310, 335, 636, 335, 668, 335, 335, 643, 346, 391,
1469 335, 335, 669, 335, 628, 335, 351, 351, 351, 636,
1470
1471 669, 335, 335, 335, 335, 351, 642, 352, 352, 352,
1472 641, 351, 639, 353, 353, 353, 354, 354, 354, 392,
1473 392, 346, 352, 394, 394, 394, 877, 335, 353, 639,
1474 392, 354, 877, 335, 339, 392, 339, 640, 339, 339,
1475 395, 395, 395, 339, 339, 670, 339, 638, 339, 355,
1476 355, 355, 411, 411, 339, 339, 339, 339, 355, 356,
1477 356, 356, 670, 637, 355, 392, 357, 357, 357, 358,
1478 358, 358, 635, 878, 356, 634, 359, 359, 359, 878,
1479 339, 357, 679, 411, 358, 359, 339, 360, 360, 360,
1480 679, 359, 361, 361, 361, 362, 362, 362, 719, 363,
1481
1482 363, 363, 360, 364, 364, 364, 719, 361, 363, 633,
1483 362, 365, 365, 365, 363, 366, 366, 366, 364, 367,
1484 367, 367, 368, 368, 368, 632, 365, 631, 367, 879,
1485 366, 369, 369, 369, 367, 879, 630, 368, 370, 370,
1486 370, 375, 375, 375, 465, 465, 369, 376, 376, 376,
1487 377, 377, 377, 370, 629, 465, 375, 378, 378, 378,
1488 465, 627, 376, 626, 624, 377, 380, 380, 380, 381,
1489 381, 381, 378, 487, 487, 380, 889, 407, 407, 407,
1490 620, 380, 889, 890, 381, 375, 538, 538, 378, 890,
1491 465, 376, 616, 375, 377, 612, 382, 382, 382, 376,
1492
1493 615, 378, 377, 612, 487, 383, 383, 383, 613, 378,
1494 380, 382, 612, 381, 384, 384, 384, 538, 380, 407,
1495 383, 381, 409, 409, 409, 416, 416, 416, 410, 384,
1496 410, 410, 410, 418, 418, 418, 412, 412, 412, 611,
1497 382, 610, 608, 410, 894, 384, 606, 416, 382, 383,
1498 894, 412, 458, 458, 458, 418, 604, 383, 384, 599,
1499 413, 413, 413, 463, 463, 463, 384, 408, 408, 408,
1500 895, 408, 597, 408, 408, 413, 895, 592, 408, 408,
1501 585, 408, 898, 408, 412, 414, 414, 414, 898, 408,
1502 408, 408, 408, 582, 415, 415, 415, 420, 420, 420,
1503
1504 414, 900, 421, 421, 421, 463, 420, 900, 413, 415,
1505 415, 421, 420, 408, 575, 408, 561, 421, 481, 481,
1506 481, 408, 422, 422, 422, 560, 423, 423, 423, 557,
1507 901, 422, 555, 414, 553, 423, 901, 422, 551, 846,
1508 415, 423, 415, 424, 424, 424, 425, 425, 425, 545,
1509 426, 426, 426, 846, 846, 425, 542, 537, 424, 426,
1510 481, 425, 427, 427, 427, 426, 428, 428, 428, 531,
1511 530, 427, 429, 429, 429, 428, 529, 427, 459, 459,
1512 459, 428, 430, 430, 430, 527, 485, 429, 485, 485,
1513 485, 430, 431, 431, 431, 526, 525, 430, 524, 523,
1514
1515 459, 431, 432, 432, 432, 521, 520, 431, 434, 434,
1516 434, 432, 433, 433, 433, 519, 486, 432, 486, 486,
1517 486, 433, 514, 434, 435, 435, 435, 433, 436, 436,
1518 436, 486, 512, 435, 505, 505, 505, 436, 511, 435,
1519 437, 437, 437, 436, 438, 438, 438, 467, 467, 437,
1520 439, 439, 439, 438, 510, 437, 504, 500, 467, 438,
1521 440, 440, 440, 467, 482, 439, 469, 469, 469, 440,
1522 441, 441, 441, 480, 478, 440, 476, 475, 469, 441,
1523 442, 442, 442, 469, 474, 441, 444, 444, 444, 442,
1524 443, 443, 443, 467, 472, 442, 447, 447, 447, 443,
1525
1526 471, 444, 448, 448, 448, 443, 450, 450, 450, 470,
1527 466, 447, 464, 469, 462, 450, 461, 448, 451, 451,
1528 451, 450, 452, 452, 452, 460, 457, 451, 509, 509,
1529 509, 452, 449, 451, 453, 453, 453, 452, 406, 405,
1530 447, 403, 402, 453, 448, 401, 448, 400, 447, 453,
1531 450, 506, 506, 506, 448, 508, 508, 508, 450, 528,
1532 528, 528, 451, 532, 532, 532, 452, 454, 454, 454,
1533 451, 399, 398, 506, 452, 397, 454, 508, 453, 455,
1534 455, 455, 454, 548, 548, 548, 453, 396, 456, 456,
1535 456, 489, 489, 489, 455, 492, 492, 492, 454, 390,
1536
1537 491, 491, 491, 456, 492, 533, 489, 533, 533, 533,
1538 492, 454, 493, 493, 493, 491, 489, 389, 387, 454,
1539 386, 493, 385, 455, 549, 549, 549, 493, 379, 344,
1540 456, 455, 456, 546, 546, 546, 554, 554, 554, 489,
1541 456, 488, 488, 488, 488, 488, 488, 488, 491, 337,
1542 488, 488, 494, 494, 494, 546, 488, 488, 556, 556,
1543 556, 494, 336, 488, 488, 488, 488, 494, 488, 495,
1544 495, 495, 496, 496, 496, 559, 559, 559, 495, 334,
1545 327, 496, 324, 323, 495, 322, 321, 496, 320, 488,
1546 488, 488, 318, 568, 568, 568, 488, 488, 488, 490,
1547
1548 490, 490, 568, 317, 313, 490, 490, 309, 568, 490,
1549 490, 490, 490, 307, 490, 490, 490, 490, 490, 490,
1550 572, 572, 572, 305, 490, 303, 490, 490, 490, 490,
1551 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
1552 490, 490, 490, 490, 490, 490, 301, 490, 299, 490,
1553 490, 490, 490, 499, 499, 499, 490, 501, 501, 501,
1554 502, 502, 502, 503, 503, 503, 501, 293, 499, 502,
1555 290, 287, 501, 283, 277, 502, 268, 267, 503, 515,
1556 515, 515, 499, 516, 516, 516, 517, 517, 517, 265,
1557 246, 515, 503, 235, 225, 516, 515, 499, 517, 221,
1558
1559 516, 501, 502, 517, 502, 499, 211, 503, 209, 501,
1560 202, 201, 502, 196, 195, 503, 543, 543, 543, 192,
1561 191, 550, 550, 550, 189, 543, 515, 541, 541, 541,
1562 516, 543, 180, 517, 534, 534, 534, 534, 534, 534,
1563 534, 176, 541, 534, 534, 543, 578, 578, 578, 534,
1564 534, 173, 550, 168, 541, 550, 534, 534, 534, 534,
1565 543, 534, 567, 567, 567, 571, 571, 571, 543, 154,
1566 140, 541, 550, 139, 571, 138, 137, 567, 136, 541,
1567 571, 135, 534, 534, 534, 544, 544, 544, 133, 534,
1568 534, 534, 539, 539, 539, 570, 570, 570, 132, 539,
1569
1570 544, 567, 539, 539, 539, 539, 567, 539, 539, 539,
1571 570, 128, 544, 126, 567, 118, 113, 539, 569, 569,
1572 569, 107, 573, 573, 573, 106, 105, 569, 91, 544,
1573 576, 576, 576, 569, 570, 90, 86, 544, 539, 570,
1574 539, 558, 558, 558, 73, 569, 70, 570, 579, 579,
1575 579, 56, 54, 573, 52, 45, 573, 586, 586, 586,
1576 28, 27, 569, 577, 577, 577, 26, 590, 590, 590,
1577 569, 558, 558, 573, 25, 558, 590, 601, 601, 601,
1578 576, 18, 590, 17, 16, 558, 602, 602, 602, 603,
1579 603, 603, 558, 558, 563, 563, 563, 563, 563, 563,
1580
1581 563, 563, 563, 563, 563, 563, 563, 563, 563, 563,
1582 563, 563, 563, 577, 589, 589, 589, 563, 563, 563,
1583 563, 605, 605, 605, 563, 565, 565, 565, 15, 589,
1584 14, 13, 565, 10, 9, 565, 565, 565, 565, 4,
1585 565, 565, 565, 3, 0, 589, 593, 593, 593, 0,
1586 565, 607, 607, 607, 0, 593, 0, 0, 589, 0,
1587 0, 593, 594, 594, 594, 0, 589, 663, 663, 663,
1588 0, 565, 0, 565, 580, 580, 580, 594, 0, 595,
1589 595, 595, 621, 621, 621, 593, 0, 0, 595, 0,
1590 593, 621, 0, 594, 595, 0, 0, 621, 593, 0,
1591
1592 625, 625, 625, 0, 580, 580, 594, 0, 580, 625,
1593 674, 674, 674, 0, 594, 625, 0, 0, 580, 710,
1594 710, 710, 714, 714, 714, 580, 580, 587, 587, 587,
1595 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
1596 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
1597 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
1598 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
1599 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
1600 587, 587, 587, 587, 587, 587, 619, 619, 619, 622,
1601 622, 622, 664, 664, 664, 619, 0, 0, 622, 0,
1602
1603 0, 619, 0, 0, 622, 0, 623, 623, 623, 644,
1604 644, 644, 0, 0, 664, 623, 0, 0, 644, 0,
1605 622, 623, 0, 0, 644, 645, 645, 645, 0, 0,
1606 619, 0, 0, 622, 645, 723, 723, 723, 619, 0,
1607 645, 622, 646, 646, 646, 647, 647, 647, 0, 0,
1608 623, 646, 0, 644, 675, 675, 675, 646, 623, 0,
1609 647, 644, 0, 649, 649, 649, 650, 650, 650, 645,
1610 0, 0, 649, 0, 0, 650, 675, 645, 649, 0,
1611 0, 650, 0, 651, 651, 651, 646, 0, 0, 647,
1612 0, 0, 651, 0, 646, 0, 0, 647, 651, 652,
1613
1614 652, 652, 653, 653, 653, 726, 726, 726, 652, 0,
1615 0, 653, 0, 0, 652, 0, 0, 653, 654, 654,
1616 654, 655, 655, 655, 754, 754, 754, 654, 0, 0,
1617 655, 0, 0, 654, 0, 0, 655, 0, 656, 656,
1618 656, 657, 657, 657, 0, 0, 653, 656, 659, 659,
1619 659, 0, 0, 656, 653, 0, 657, 659, 0, 660,
1620 660, 660, 654, 659, 0, 655, 0, 0, 660, 0,
1621 654, 0, 0, 655, 660, 0, 0, 661, 661, 661,
1622 0, 0, 656, 0, 0, 657, 661, 662, 662, 662,
1623 656, 0, 661, 657, 0, 0, 662, 682, 682, 682,
1624
1625 0, 0, 662, 711, 711, 711, 682, 683, 683, 683,
1626 0, 0, 682, 713, 713, 713, 683, 684, 684, 684,
1627 0, 0, 683, 0, 0, 711, 684, 685, 685, 685,
1628 0, 0, 684, 0, 0, 713, 685, 686, 686, 686,
1629 0, 682, 685, 755, 755, 755, 686, 0, 0, 682,
1630 0, 683, 686, 0, 0, 687, 687, 687, 0, 683,
1631 0, 684, 0, 0, 687, 688, 688, 688, 686, 684,
1632 687, 685, 0, 0, 688, 689, 689, 689, 0, 685,
1633 688, 686, 0, 0, 689, 690, 690, 690, 0, 686,
1634 689, 756, 756, 756, 690, 691, 691, 691, 0, 687,
1635
1636 690, 757, 757, 757, 691, 0, 0, 687, 0, 0,
1637 691, 692, 692, 692, 693, 693, 693, 760, 760, 760,
1638 692, 0, 0, 693, 0, 0, 692, 0, 0, 693,
1639 694, 694, 694, 695, 695, 695, 761, 761, 761, 694,
1640 0, 0, 695, 0, 0, 694, 0, 0, 695, 0,
1641 696, 696, 696, 699, 699, 699, 0, 0, 693, 696,
1642 0, 0, 699, 0, 0, 696, 693, 0, 699, 700,
1643 700, 700, 0, 0, 694, 0, 0, 695, 700, 762,
1644 762, 762, 694, 0, 700, 695, 701, 701, 701, 702,
1645 702, 702, 0, 0, 696, 701, 0, 699, 702, 0,
1646
1647 0, 701, 696, 0, 702, 699, 0, 0, 703, 703,
1648 703, 0, 0, 700, 764, 764, 764, 703, 788, 788,
1649 788, 700, 0, 703, 0, 704, 704, 704, 0, 0,
1650 701, 0, 0, 702, 704, 705, 705, 705, 701, 703,
1651 704, 702, 0, 0, 705, 0, 706, 706, 706, 0,
1652 705, 0, 703, 0, 0, 706, 707, 707, 707, 0,
1653 703, 706, 722, 722, 722, 707, 708, 708, 708, 704,
1654 0, 707, 789, 789, 789, 708, 0, 704, 709, 709,
1655 709, 708, 0, 0, 722, 0, 0, 709, 727, 727,
1656 727, 0, 0, 709, 728, 728, 728, 727, 729, 729,
1657
1658 729, 0, 0, 727, 790, 790, 790, 729, 0, 728,
1659 730, 730, 730, 729, 731, 731, 731, 0, 0, 730,
1660 791, 791, 791, 731, 0, 730, 732, 732, 732, 731,
1661 0, 0, 727, 0, 0, 732, 0, 0, 728, 0,
1662 727, 732, 729, 752, 752, 752, 728, 792, 792, 792,
1663 729, 793, 793, 793, 730, 795, 795, 795, 731, 733,
1664 733, 733, 730, 0, 0, 752, 731, 0, 733, 0,
1665 732, 734, 734, 734, 733, 796, 796, 796, 732, 0,
1666 734, 0, 736, 736, 736, 0, 734, 737, 737, 737,
1667 733, 736, 738, 738, 738, 0, 737, 736, 809, 809,
1668
1669 809, 738, 737, 733, 739, 739, 739, 738, 810, 810,
1670 810, 733, 0, 739, 740, 740, 740, 0, 0, 739,
1671 743, 743, 743, 740, 0, 0, 736, 0, 0, 740,
1672 0, 737, 0, 0, 736, 743, 738, 0, 0, 737,
1673 741, 741, 741, 0, 738, 740, 0, 0, 739, 741,
1674 742, 742, 742, 0, 0, 741, 739, 0, 740, 742,
1675 745, 745, 745, 0, 743, 742, 740, 0, 0, 745,
1676 0, 0, 743, 0, 0, 745, 746, 746, 746, 0,
1677 747, 747, 747, 0, 741, 746, 0, 0, 0, 747,
1678 0, 746, 741, 0, 742, 747, 748, 748, 748, 749,
1679
1680 749, 749, 742, 0, 745, 748, 0, 0, 749, 0,
1681 0, 748, 745, 0, 749, 0, 750, 750, 750, 0,
1682 746, 0, 0, 0, 747, 750, 0, 0, 746, 0,
1683 749, 750, 747, 0, 0, 765, 765, 765, 0, 0,
1684 748, 0, 0, 749, 765, 766, 766, 766, 748, 0,
1685 765, 749, 0, 0, 766, 767, 767, 767, 0, 0,
1686 766, 0, 0, 0, 767, 768, 768, 768, 0, 0,
1687 767, 0, 0, 0, 768, 769, 769, 769, 0, 765,
1688 768, 0, 0, 0, 769, 0, 0, 765, 0, 766,
1689 769, 770, 770, 770, 0, 0, 0, 766, 0, 767,
1690
1691 770, 771, 771, 771, 0, 0, 770, 767, 0, 768,
1692 771, 773, 773, 773, 0, 0, 771, 768, 0, 769,
1693 773, 0, 770, 772, 772, 772, 773, 769, 0, 0,
1694 0, 0, 772, 0, 0, 770, 0, 0, 772, 774,
1695 774, 774, 0, 770, 0, 771, 0, 0, 774, 775,
1696 775, 775, 0, 771, 774, 773, 0, 0, 775, 776,
1697 776, 776, 0, 773, 775, 772, 0, 772, 776, 777,
1698 777, 777, 0, 0, 776, 772, 0, 0, 777, 778,
1699 778, 778, 0, 774, 777, 0, 0, 0, 778, 0,
1700 0, 774, 0, 775, 778, 0, 0, 779, 779, 779,
1701
1702 0, 775, 0, 776, 0, 0, 779, 780, 780, 780,
1703 778, 776, 779, 777, 0, 0, 780, 781, 781, 781,
1704 0, 777, 780, 778, 0, 0, 781, 782, 782, 782,
1705 0, 778, 781, 0, 0, 0, 782, 783, 783, 783,
1706 0, 779, 782, 0, 0, 0, 783, 0, 0, 779,
1707 0, 780, 783, 784, 784, 784, 0, 0, 0, 780,
1708 0, 781, 784, 785, 785, 785, 0, 0, 784, 781,
1709 0, 782, 785, 786, 786, 786, 0, 0, 785, 782,
1710 0, 783, 786, 0, 787, 787, 787, 0, 786, 783,
1711 0, 0, 0, 787, 785, 0, 0, 784, 0, 787,
1712
1713 0, 797, 797, 797, 0, 784, 0, 785, 0, 0,
1714 797, 0, 798, 798, 798, 785, 797, 786, 0, 0,
1715 0, 798, 799, 799, 799, 786, 787, 798, 787, 0,
1716 0, 799, 0, 800, 800, 800, 787, 799, 0, 0,
1717 0, 798, 800, 0, 0, 797, 0, 0, 800, 0,
1718 801, 801, 801, 797, 0, 0, 798, 0, 0, 801,
1719 802, 802, 802, 0, 798, 801, 799, 0, 0, 802,
1720 0, 0, 0, 0, 799, 802, 0, 800, 803, 803,
1721 803, 804, 804, 804, 0, 800, 0, 803, 0, 0,
1722 804, 0, 0, 803, 801, 0, 804, 0, 805, 805,
1723
1724 805, 0, 801, 0, 802, 0, 0, 805, 0, 803,
1725 0, 0, 802, 805, 806, 806, 806, 808, 808, 808,
1726 0, 0, 803, 806, 0, 804, 808, 0, 0, 806,
1727 803, 0, 808, 804, 0, 0, 811, 811, 811, 0,
1728 805, 0, 805, 0, 0, 811, 808, 812, 812, 812,
1729 805, 811, 0, 0, 0, 0, 812, 0, 806, 0,
1730 0, 808, 812, 811, 0, 0, 806, 0, 0, 808,
1731 0, 0, 813, 813, 813, 814, 814, 814, 0, 0,
1732 811, 813, 0, 0, 814, 0, 0, 813, 811, 0,
1733 814, 812, 0, 0, 815, 815, 815, 0, 0, 812,
1734
1735 0, 813, 814, 815, 0, 816, 816, 816, 0, 815,
1736 0, 0, 0, 0, 816, 0, 813, 0, 0, 814,
1737 816, 817, 817, 817, 813, 0, 0, 814, 0, 0,
1738 817, 0, 816, 815, 0, 0, 817, 0, 815, 818,
1739 818, 818, 0, 819, 819, 819, 815, 0, 818, 816,
1740 0, 0, 819, 0, 818, 0, 0, 816, 819, 0,
1741 817, 0, 820, 820, 820, 817, 821, 821, 821, 0,
1742 818, 820, 0, 817, 0, 821, 0, 820, 0, 0,
1743 0, 821, 819, 818, 0, 0, 0, 819, 822, 822,
1744 822, 818, 0, 820, 0, 819, 0, 822, 823, 823,
1745
1746 823, 0, 0, 822, 0, 0, 820, 823, 0, 0,
1747 821, 0, 0, 823, 820, 824, 824, 824, 821, 822,
1748 0, 0, 0, 0, 824, 0, 0, 0, 0, 0,
1749 824, 0, 822, 0, 0, 0, 0, 0, 0, 0,
1750 822, 0, 823, 0, 0, 0, 0, 0, 0, 0,
1751 823, 0, 0, 0, 0, 0, 0, 0, 0, 824,
1752 0, 0, 0, 0, 0, 0, 0, 824, 826, 826,
1753 826, 826, 826, 826, 826, 826, 826, 826, 826, 826,
1754 826, 826, 826, 826, 826, 826, 826, 826, 826, 826,
1755 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1756
1757 827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
1758 827, 827, 828, 828, 828, 828, 828, 828, 828, 828,
1759 828, 828, 828, 828, 828, 828, 828, 828, 828, 828,
1760 828, 828, 828, 828, 829, 829, 829, 829, 829, 829,
1761 829, 829, 829, 829, 829, 829, 829, 829, 829, 829,
1762 829, 829, 829, 829, 829, 829, 830, 830, 830, 830,
1763 830, 830, 830, 830, 830, 830, 830, 830, 830, 830,
1764 830, 830, 830, 830, 830, 830, 830, 830, 831, 831,
1765 831, 831, 831, 831, 831, 831, 831, 831, 831, 831,
1766 831, 831, 831, 831, 831, 831, 831, 831, 831, 831,
1767
1768 832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
1769 832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
1770 832, 832, 833, 833, 833, 833, 833, 833, 833, 833,
1771 833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
1772 833, 833, 833, 833, 834, 834, 834, 834, 834, 834,
1773 834, 834, 834, 834, 834, 834, 834, 834, 834, 834,
1774 834, 834, 834, 834, 834, 834, 835, 835, 835, 835,
1775 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
1776 835, 835, 835, 835, 835, 835, 835, 835, 836, 836,
1777 836, 836, 836, 836, 836, 836, 836, 836, 836, 836,
1778
1779 836, 836, 836, 836, 836, 836, 836, 836, 836, 836,
1780 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
1781 837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
1782 837, 837, 838, 838, 838, 838, 838, 838, 838, 0,
1783 838, 838, 838, 838, 838, 838, 838, 838, 838, 838,
1784 838, 838, 838, 838, 839, 839, 839, 839, 839, 839,
1785 839, 839, 839, 0, 839, 839, 0, 839, 839, 839,
1786 839, 839, 839, 839, 839, 839, 840, 840, 840, 840,
1787 0, 840, 840, 840, 840, 840, 840, 840, 840, 840,
1788 840, 840, 840, 840, 840, 840, 840, 840, 841, 841,
1789
1790 841, 841, 841, 841, 841, 0, 841, 841, 841, 841,
1791 841, 841, 841, 841, 841, 841, 841, 841, 841, 841,
1792 842, 842, 842, 842, 842, 842, 842, 0, 842, 842,
1793 842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
1794 842, 842, 843, 843, 843, 843, 843, 843, 843, 0,
1795 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
1796 843, 843, 843, 844, 844, 844, 844, 844, 844, 844,
1797 844, 844, 844, 844, 844, 844, 844, 844, 844, 844,
1798 844, 844, 844, 844, 844, 845, 845, 845, 845, 845,
1799 0, 845, 845, 845, 845, 845, 845, 845, 845, 845,
1800
1801 845, 845, 845, 845, 845, 845, 845, 847, 847, 0,
1802 0, 847, 0, 0, 0, 0, 0, 0, 0, 847,
1803 0, 847, 0, 0, 0, 847, 847, 848, 848, 848,
1804 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
1805 848, 848, 848, 848, 848, 848, 848, 848, 848, 849,
1806 0, 0, 0, 0, 0, 0, 0, 849, 0, 0,
1807 0, 0, 0, 849, 849, 850, 0, 0, 850, 0,
1808 0, 850, 850, 0, 850, 0, 0, 0, 850, 850,
1809 850, 851, 0, 0, 0, 0, 0, 0, 0, 851,
1810 0, 0, 0, 0, 0, 851, 851, 852, 0, 0,
1811
1812 852, 0, 852, 852, 853, 0, 0, 0, 0, 0,
1813 0, 0, 853, 0, 0, 0, 0, 0, 853, 853,
1814 854, 854, 854, 854, 0, 854, 854, 854, 854, 854,
1815 854, 854, 854, 854, 854, 854, 0, 854, 0, 854,
1816 854, 854, 855, 855, 855, 855, 0, 855, 855, 855,
1817 855, 855, 855, 855, 855, 855, 855, 855, 855, 855,
1818 855, 855, 855, 855, 856, 856, 856, 856, 856, 856,
1819 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
1820 856, 856, 0, 856, 856, 856, 857, 0, 0, 0,
1821 0, 0, 0, 0, 857, 0, 0, 0, 0, 0,
1822
1823 857, 857, 858, 858, 0, 0, 858, 0, 0, 0,
1824 0, 0, 0, 0, 858, 0, 858, 0, 0, 0,
1825 858, 858, 859, 0, 0, 859, 0, 0, 859, 859,
1826 0, 859, 0, 0, 0, 859, 859, 859, 860, 0,
1827 0, 860, 0, 0, 860, 860, 0, 860, 0, 0,
1828 0, 860, 860, 860, 864, 0, 0, 0, 0, 0,
1829 0, 0, 864, 0, 0, 0, 0, 0, 864, 864,
1830 865, 0, 0, 865, 0, 0, 865, 865, 0, 865,
1831 0, 0, 0, 865, 865, 865, 866, 866, 866, 866,
1832 866, 866, 866, 866, 866, 866, 866, 866, 866, 866,
1833
1834 866, 866, 866, 866, 866, 866, 866, 866, 868, 0,
1835 0, 0, 0, 0, 0, 0, 868, 0, 0, 0,
1836 0, 0, 868, 868, 869, 869, 0, 869, 869, 869,
1837 869, 869, 869, 869, 869, 869, 869, 869, 869, 869,
1838 869, 869, 869, 869, 869, 869, 870, 0, 0, 870,
1839 0, 0, 870, 870, 0, 870, 0, 0, 0, 870,
1840 870, 870, 871, 0, 0, 0, 0, 871, 871, 0,
1841 871, 0, 0, 0, 0, 0, 871, 871, 872, 872,
1842 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
1843 872, 872, 872, 872, 872, 872, 872, 872, 872, 872,
1844
1845 873, 873, 873, 873, 873, 873, 873, 873, 873, 873,
1846 873, 873, 873, 873, 873, 873, 873, 873, 873, 873,
1847 873, 873, 874, 874, 874, 874, 874, 874, 874, 874,
1848 874, 874, 874, 874, 874, 874, 874, 874, 874, 874,
1849 874, 874, 874, 874, 875, 875, 875, 875, 875, 875,
1850 875, 875, 875, 875, 875, 875, 875, 875, 875, 875,
1851 875, 875, 875, 875, 875, 875, 876, 876, 876, 876,
1852 876, 876, 876, 876, 876, 876, 876, 876, 876, 876,
1853 876, 876, 876, 876, 876, 876, 876, 876, 880, 880,
1854 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
1855
1856 880, 880, 880, 880, 880, 880, 880, 880, 880, 880,
1857 881, 881, 881, 881, 881, 881, 881, 881, 881, 881,
1858 881, 881, 881, 881, 881, 881, 881, 881, 881, 881,
1859 881, 881, 883, 883, 0, 0, 883, 883, 0, 883,
1860 883, 883, 883, 883, 883, 0, 0, 0, 0, 883,
1861 883, 883, 884, 884, 884, 884, 884, 884, 884, 884,
1862 884, 884, 884, 884, 884, 884, 884, 884, 884, 884,
1863 884, 884, 884, 884, 885, 885, 885, 885, 885, 885,
1864 885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
1865 885, 885, 885, 885, 885, 885, 886, 886, 886, 886,
1866
1867 886, 886, 886, 886, 886, 886, 886, 886, 886, 886,
1868 886, 886, 886, 886, 886, 886, 886, 886, 887, 887,
1869 887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
1870 887, 887, 887, 887, 887, 887, 887, 887, 887, 887,
1871 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
1872 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
1873 888, 888, 891, 891, 891, 891, 891, 891, 891, 891,
1874 891, 891, 891, 891, 891, 891, 891, 891, 891, 891,
1875 891, 891, 891, 891, 892, 892, 892, 892, 892, 892,
1876 892, 892, 892, 892, 892, 892, 892, 892, 892, 892,
1877
1878 892, 892, 892, 892, 892, 892, 893, 0, 0, 0,
1879 0, 893, 893, 0, 893, 0, 0, 0, 0, 0,
1880 893, 893, 896, 896, 896, 896, 896, 896, 896, 896,
1881 896, 896, 896, 896, 0, 896, 896, 896, 896, 896,
1882 896, 896, 896, 896, 897, 897, 897, 897, 897, 897,
1883 897, 897, 897, 897, 897, 897, 897, 897, 897, 897,
1884 897, 897, 897, 897, 897, 897, 899, 899, 0, 0,
1885 899, 899, 0, 899, 899, 899, 899, 899, 899, 0,
1886 0, 0, 0, 899, 899, 899, 902, 902, 902, 902,
1887 902, 902, 902, 0, 902, 902, 902, 902, 902, 902,
1888
1889 902, 902, 902, 902, 902, 902, 902, 902, 903, 903,
1890 903, 903, 903, 903, 903, 0, 903, 903, 903, 903,
1891 903, 903, 903, 903, 903, 903, 903, 903, 903, 903,
1892 904, 904, 904, 904, 904, 904, 904, 904, 904, 904,
1893 904, 904, 904, 904, 904, 904, 904, 904, 904, 904,
1894 904, 904, 905, 905, 905, 905, 905, 905, 905, 905,
1895 905, 905, 905, 905, 905, 905, 905, 905, 905, 905,
1896 905, 905, 905, 905, 906, 906, 906, 906, 906, 906,
1897 906, 906, 906, 906, 906, 906, 906, 906, 906, 906,
1898 906, 906, 906, 906, 906, 906, 907, 907, 907, 907,
1899
1900 907, 907, 907, 907, 907, 907, 907, 907, 907, 907,
1901 907, 907, 907, 907, 907, 907, 907, 907, 908, 908,
1902 908, 908, 908, 908, 908, 908, 908, 908, 908, 908,
1903 908, 908, 908, 908, 908, 908, 908, 908, 908, 908,
1904 909, 909, 909, 909, 909, 909, 909, 909, 909, 909,
1905 909, 909, 909, 909, 909, 909, 909, 909, 909, 909,
1906 909, 909, 910, 910, 910, 910, 910, 910, 910, 910,
1907 910, 910, 910, 910, 910, 910, 910, 910, 910, 910,
1908 910, 910, 910, 910, 911, 911, 911, 911, 911, 911,
1909 911, 911, 911, 911, 911, 911, 911, 911, 911, 911,
1910
1911 911, 911, 911, 911, 911, 911, 912, 912, 912, 912,
1912 912, 912, 912, 912, 912, 912, 912, 912, 912, 912,
1913 912, 912, 912, 912, 912, 912, 912, 912, 913, 913,
1914 913, 913, 913, 913, 913, 913, 913, 913, 913, 913,
1915 913, 913, 913, 913, 913, 913, 913, 913, 913, 913,
1916 914, 914, 914, 914, 914, 914, 914, 914, 914, 914,
1917 914, 914, 914, 914, 914, 914, 914, 914, 914, 914,
1918 914, 914, 915, 915, 915, 915, 915, 915, 915, 915,
1919 915, 915, 915, 915, 915, 915, 915, 915, 915, 915,
1920 915, 915, 915, 915, 916, 916, 916, 916, 916, 916,
1921
1922 916, 916, 916, 916, 916, 916, 916, 916, 916, 916,
1923 916, 916, 916, 916, 916, 916, 825, 825, 825, 825,
1924 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1925 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1926 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1927 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1928 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
1929 825, 825, 825, 825, 825, 825
1930 } ;
1931
1932/* Table of booleans, true if rule could match eol. */
1933static yyconst flex_int32_t yy_rule_can_match_eol[153] =
1934 { 0,
19351, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
1936 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0,
1937 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
1939 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1942 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, };
1943
1944static yy_state_type yy_last_accepting_state;
1945static char *yy_last_accepting_cpos;
1946
1947extern int base_yy_flex_debug;
1948int base_yy_flex_debug = 0;
1949
1950/* The intent behind this definition is that it'll catch
1951 * any uses of REJECT which flex missed.
1952 */
1953#define REJECT reject_used_but_not_detected
1954#define yymore() yymore_used_but_not_detected
1955#define YY_MORE_ADJ 0
1956#define YY_RESTORE_YY_MORE_OFFSET
1957char *base_yytext;
1958#line 1 "pgc.l"
1959
1960#line 30 "pgc.l"
1961
1962/* LCOV_EXCL_START */
1963
1964extern YYSTYPE base_yylval;
1965
1966static int xcdepth = 0; /* depth of nesting in slash-star comments */
1967static char *dolqstart = NULL; /* current $foo$ quote start string */
1968
1969/*
1970 * literalbuf is used to accumulate literal values when multiple rules
1971 * are needed to parse a single literal. Call startlit to reset buffer
1972 * to empty, addlit to add text. Note that the buffer is permanently
1973 * malloc'd to the largest size needed so far in the current run.
1974 */
1975static char *literalbuf = NULL; /* expandable buffer */
1976static int literallen; /* actual current length */
1977static int literalalloc; /* current allocated buffer size */
1978
1979/* Used for detecting global state together with braces_open */
1980static int parenths_open;
1981
1982/* Used to tell parse_include() whether the command was #include or #include_next */
1983static bool include_next;
1984
1985#define startlit() (literalbuf[0] = '\0', literallen = 0)
1986static void addlit(char *ytext, int yleng);
1987static void addlitchar(unsigned char);
1988static int process_integer_literal(const char *token, YYSTYPE *lval);
1989static void parse_include(void);
1990static bool ecpg_isspace(char ch);
1991static bool isdefine(void);
1992static bool isinformixdefine(void);
1993
1994char *token_start;
1995static int state_before;
1996
1997struct _yy_buffer
1998{
1999 YY_BUFFER_STATE buffer;
2000 long lineno;
2001 char *filename;
2002 struct _yy_buffer *next;
2003} *yy_buffer = NULL;
2004
2005static char *old;
2006
2007#define MAX_NESTED_IF 128
2008static short preproc_tos;
2009static short ifcond;
2010static struct _if_value
2011{
2012 short condition;
2013 short else_branch;
2014} stacked_if_value[MAX_NESTED_IF];
2015
2016#define YY_NO_INPUT 1
2017/*
2018 * OK, here is a short description of lex/flex rules behavior.
2019 * The longest pattern which matches an input string is always chosen.
2020 * For equal-length patterns, the first occurring in the rules list is chosen.
2021 * INITIAL is the starting state, to which all non-conditional rules apply.
2022 * Exclusive states change parsing rules while the state is active. When in
2023 * an exclusive state, only those rules defined for that state apply.
2024 *
2025 * We use exclusive states for quoted strings, extended comments,
2026 * and to eliminate parsing troubles for numeric strings.
2027 * Exclusive states:
2028 * <xb> bit string literal
2029 * <xcc> extended C-style comments in C
2030 * <xcsql> extended C-style comments in SQL
2031 * <xd> delimited identifiers (double-quoted identifiers)
2032 * <xdc> double-quoted strings in C
2033 * <xh> hexadecimal numeric string
2034 * <xn> national character quoted strings
2035 * <xq> standard quoted strings
2036 * <xe> extended quoted strings (support backslash escape sequences)
2037 * <xqc> single-quoted strings in C
2038 * <xdolq> $foo$ quoted strings
2039 * <xui> quoted identifier with Unicode escapes
2040 * <xus> quoted string with Unicode escapes
2041 * <xcond> condition of an EXEC SQL IFDEF construct
2042 * <xskip> skipping the inactive part of an EXEC SQL IFDEF construct
2043 *
2044 * Remember to add an <<EOF>> case whenever you add a new exclusive state!
2045 * The default one is probably not the right thing.
2046 */
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062/* Additional exclusive states that are specific to ECPG */
2063
2064/*
2065 * In order to make the world safe for Windows and Mac clients as well as
2066 * Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n
2067 * sequence will be seen as two successive newlines, but that doesn't cause
2068 * any problems. SQL-style comments, which start with -- and extend to the
2069 * next newline, are treated as equivalent to a single whitespace character.
2070 *
2071 * NOTE a fine point: if there is no newline following --, we will absorb
2072 * everything to the end of the input as a comment. This is correct. Older
2073 * versions of Postgres failed to recognize -- as a comment if the input
2074 * did not end with a newline.
2075 *
2076 * XXX perhaps \f (formfeed) should be treated as a newline as well?
2077 *
2078 * XXX if you change the set of whitespace characters, fix ecpg_isspace()
2079 * to agree.
2080 */
2081/*
2082 * SQL requires at least one newline in the whitespace separating
2083 * string literals that are to be concatenated. Silly, but who are we
2084 * to argue? Note that {whitespace_with_newline} should not have * after
2085 * it, whereas {whitespace} should generally have a * after it...
2086 */
2087/* Bit string
2088 */
2089/* Hexadecimal number */
2090/* National character */
2091/* Quoted string that allows backslash escapes */
2092/* Extended quote
2093 * xqdouble implements embedded quote, ''''
2094 */
2095/* $foo$ style quotes ("dollar quoting")
2096 * The quoted string starts with $foo$ where "foo" is an optional string
2097 * in the form of an identifier, except that it may not contain "$",
2098 * and extends to the first occurrence of an identical string.
2099 * There is *no* processing of the quoted text.
2100 *
2101 * {dolqfailed} is an error rule to avoid scanner backup when {dolqdelim}
2102 * fails to match its trailing "$".
2103 */
2104/* Double quote
2105 * Allows embedded spaces and other special characters into identifiers.
2106 */
2107/* Unicode escapes */
2108/* (The ecpg scanner is not backup-free, so the fail rules in scan.l are
2109 * not needed here, but could be added if desired.)
2110 */
2111/* Quoted identifier with Unicode escapes */
2112/* Quoted string with Unicode escapes */
2113/* special stuff for C strings */
2114/* C-style comments
2115 *
2116 * The "extended comment" syntax closely resembles allowable operator syntax.
2117 * The tricky part here is to get lex to recognize a string starting with
2118 * slash-star as a comment, when interpreting it as an operator would produce
2119 * a longer match --- remember lex will prefer a longer match! Also, if we
2120 * have something like plus-slash-star, lex will think this is a 3-character
2121 * operator whereas we want to see it as a + operator and a comment start.
2122 * The solution is two-fold:
2123 * 1. append {op_chars}* to xcstart so that it matches as much text as
2124 * {operator} would. Then the tie-breaker (first matching rule of same
2125 * length) ensures xcstart wins. We put back the extra stuff with yyless()
2126 * in case it contains a star-slash that should terminate the comment.
2127 * 2. In the operator rule, check for slash-star within the operator, and
2128 * if found throw it back with yyless(). This handles the plus-slash-star
2129 * problem.
2130 * Dash-dash comments have similar interactions with the operator rule.
2131 */
2132/* Assorted special-case operators and operator-like tokens */
2133/*
2134 * These operator-like tokens (unlike the above ones) also match the {operator}
2135 * rule, which means that they might be overridden by a longer match if they
2136 * are followed by a comment start or a + or - character. Accordingly, if you
2137 * add to this list, you must also add corresponding code to the {operator}
2138 * block to return the correct token in such cases. (This is not needed in
2139 * psqlscan.l since the token value is ignored there.)
2140 */
2141/*
2142 * "self" is the set of chars that should be returned as single-character
2143 * tokens. "op_chars" is the set of chars that can make up "Op" tokens,
2144 * which can be one or more characters long (but if a single-char token
2145 * appears in the "self" set, it is not to be returned as an Op). Note
2146 * that the sets overlap, but each has some chars that are not in the other.
2147 *
2148 * If you change either set, adjust the character lists appearing in the
2149 * rule for "operator"!
2150 */
2151/* we no longer allow unary minus in numbers.
2152 * instead we pass it separately to parser. there it gets
2153 * coerced via doNegate() -- Leon aug 20 1999
2154 *
2155 * {decimalfail} is used because we would like "1..10" to lex as 1, dot_dot, 10.
2156 *
2157 * {realfail1} and {realfail2} are added to prevent the need for scanner
2158 * backup when the {real} rule fails to match completely.
2159 */
2160/* special characters for other dbms */
2161/* we have to react differently in compat mode */
2162/*
2163 * Dollar quoted strings are totally opaque, and no escaping is done on them.
2164 * Other quoted strings must allow some special characters such as single-quote
2165 * and newline.
2166 * Embedded single-quotes are implemented both in the SQL standard
2167 * style of two adjacent single quotes "''" and in the Postgres/Java style
2168 * of escaped-quote "\'".
2169 * Other embedded escaped characters are matched explicitly and the leading
2170 * backslash is dropped from the string.
2171 * Note that xcstart must appear before operator, as explained above!
2172 * Also whitespace (comment) must appear before operator.
2173 */
2174/* some stuff needed for ecpg */
2175/* C version of hex number */
2176/* we might want to parse all cpp include files */
2177/* take care of cpp lines, they may also be continued */
2178/* first a general line for all commands not starting with "i" */
2179/* and then the other commands starting with "i", we have to add these
2180 * separately because the cppline production would match on "include" too
2181 */
2182#line 2183 "pgc.c"
2183
2184#define INITIAL 0
2185#define xb 1
2186#define xcc 2
2187#define xcsql 3
2188#define xd 4
2189#define xdc 5
2190#define xh 6
2191#define xn 7
2192#define xq 8
2193#define xe 9
2194#define xqc 10
2195#define xdolq 11
2196#define xui 12
2197#define xus 13
2198#define xcond 14
2199#define xskip 15
2200#define C 16
2201#define SQL 17
2202#define incl 18
2203#define def 19
2204#define def_ident 20
2205#define undef 21
2206
2207#ifndef YY_NO_UNISTD_H
2208/* Special case for "unistd.h", since it is non-ANSI. We include it way
2209 * down here because we want the user's section 1 to have been scanned first.
2210 * The user has a chance to override it with an option.
2211 */
2212#include <unistd.h>
2213#endif
2214
2215#ifndef YY_EXTRA_TYPE
2216#define YY_EXTRA_TYPE void *
2217#endif
2218
2219static int yy_init_globals (void );
2220
2221/* Accessor methods to globals.
2222 These are made visible to non-reentrant scanners for convenience. */
2223
2224int base_yylex_destroy (void );
2225
2226int base_yyget_debug (void );
2227
2228void base_yyset_debug (int debug_flag );
2229
2230YY_EXTRA_TYPE base_yyget_extra (void );
2231
2232void base_yyset_extra (YY_EXTRA_TYPE user_defined );
2233
2234FILE *base_yyget_in (void );
2235
2236void base_yyset_in (FILE * _in_str );
2237
2238FILE *base_yyget_out (void );
2239
2240void base_yyset_out (FILE * _out_str );
2241
2242 int base_yyget_leng (void );
2243
2244char *base_yyget_text (void );
2245
2246int base_yyget_lineno (void );
2247
2248void base_yyset_lineno (int _line_number );
2249
2250/* Macros after this point can all be overridden by user definitions in
2251 * section 1.
2252 */
2253
2254#ifndef YY_SKIP_YYWRAP
2255#ifdef __cplusplus
2256extern "C" int base_yywrap (void );
2257#else
2258extern int base_yywrap (void );
2259#endif
2260#endif
2261
2262#ifndef YY_NO_UNPUT
2263
2264 static void yyunput (int c,char *buf_ptr );
2265
2266#endif
2267
2268#ifndef yytext_ptr
2269static void yy_flex_strncpy (char *,yyconst char *,int );
2270#endif
2271
2272#ifdef YY_NEED_STRLEN
2273static int yy_flex_strlen (yyconst char * );
2274#endif
2275
2276#ifndef YY_NO_INPUT
2277
2278#ifdef __cplusplus
2279static int yyinput (void );
2280#else
2281static int input (void );
2282#endif
2283
2284#endif
2285
2286/* Amount of stuff to slurp up with each read. */
2287#ifndef YY_READ_BUF_SIZE
2288#ifdef __ia64__
2289/* On IA-64, the buffer size is 16k, not 8k */
2290#define YY_READ_BUF_SIZE 16384
2291#else
2292#define YY_READ_BUF_SIZE 8192
2293#endif /* __ia64__ */
2294#endif
2295
2296/* Copy whatever the last rule matched to the standard output. */
2297#ifndef ECHO
2298/* This used to be an fputs(), but since the string might contain NUL's,
2299 * we now use fwrite().
2300 */
2301#define ECHO do { if (fwrite( base_yytext, (size_t) base_yyleng, 1, base_yyout )) {} } while (0)
2302#endif
2303
2304/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2305 * is returned in "result".
2306 */
2307#ifndef YY_INPUT
2308#define YY_INPUT(buf,result,max_size) \
2309 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2310 { \
2311 int c = '*'; \
2312 size_t n; \
2313 for ( n = 0; n < max_size && \
2314 (c = getc( base_yyin )) != EOF && c != '\n'; ++n ) \
2315 buf[n] = (char) c; \
2316 if ( c == '\n' ) \
2317 buf[n++] = (char) c; \
2318 if ( c == EOF && ferror( base_yyin ) ) \
2319 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2320 result = n; \
2321 } \
2322 else \
2323 { \
2324 errno=0; \
2325 while ( (result = (int) fread(buf, 1, max_size, base_yyin))==0 && ferror(base_yyin)) \
2326 { \
2327 if( errno != EINTR) \
2328 { \
2329 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2330 break; \
2331 } \
2332 errno=0; \
2333 clearerr(base_yyin); \
2334 } \
2335 }\
2336\
2337
2338#endif
2339
2340/* No semi-colon after return; correct usage is to write "yyterminate();" -
2341 * we don't want an extra ';' after the "return" because that will cause
2342 * some compilers to complain about unreachable statements.
2343 */
2344#ifndef yyterminate
2345#define yyterminate() return YY_NULL
2346#endif
2347
2348/* Number of entries by which start-condition stack grows. */
2349#ifndef YY_START_STACK_INCR
2350#define YY_START_STACK_INCR 25
2351#endif
2352
2353/* Report a fatal error. */
2354#ifndef YY_FATAL_ERROR
2355#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2356#endif
2357
2358/* end tables serialization structures and prototypes */
2359
2360/* Default declaration of generated scanner - a define so the user can
2361 * easily add parameters.
2362 */
2363#ifndef YY_DECL
2364#define YY_DECL_IS_OURS 1
2365
2366extern int base_yylex (void);
2367
2368#define YY_DECL int base_yylex (void)
2369#endif /* !YY_DECL */
2370
2371/* Code executed at the beginning of each rule, after base_yytext and base_yyleng
2372 * have been set up.
2373 */
2374#ifndef YY_USER_ACTION
2375#define YY_USER_ACTION
2376#endif
2377
2378/* Code executed at the end of each rule. */
2379#ifndef YY_BREAK
2380#define YY_BREAK /*LINTED*/break;
2381#endif
2382
2383#define YY_RULE_SETUP \
2384 YY_USER_ACTION
2385
2386/** The main scanner function which does all the work.
2387 */
2388YY_DECL
2389{
2390 yy_state_type yy_current_state;
2391 char *yy_cp, *yy_bp;
2392 int yy_act;
2393
2394 if ( !(yy_init) )
2395 {
2396 (yy_init) = 1;
2397
2398#ifdef YY_USER_INIT
2399 YY_USER_INIT;
2400#endif
2401
2402 if ( ! (yy_start) )
2403 (yy_start) = 1; /* first start state */
2404
2405 if ( ! base_yyin )
2406 base_yyin = stdin;
2407
2408 if ( ! base_yyout )
2409 base_yyout = stdout;
2410
2411 if ( ! YY_CURRENT_BUFFER ) {
2412 base_yyensure_buffer_stack ();
2413 YY_CURRENT_BUFFER_LVALUE =
2414 base_yy_create_buffer(base_yyin,YY_BUF_SIZE );
2415 }
2416
2417 base_yy_load_buffer_state( );
2418 }
2419
2420 {
2421#line 400 "pgc.l"
2422
2423
2424
2425 /* code to execute during start of each call of base_yylex() */
2426 token_start = NULL;
2427
2428
2429#line 2430 "pgc.c"
2430
2431 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
2432 {
2433 yy_cp = (yy_c_buf_p);
2434
2435 /* Support of base_yytext. */
2436 *yy_cp = (yy_hold_char);
2437
2438 /* yy_bp points to the position in yy_ch_buf of the start of
2439 * the current run.
2440 */
2441 yy_bp = yy_cp;
2442
2443 yy_current_state = (yy_start);
2444yy_match:
2445 do
2446 {
2447 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2448 if ( yy_accept[yy_current_state] )
2449 {
2450 (yy_last_accepting_state) = yy_current_state;
2451 (yy_last_accepting_cpos) = yy_cp;
2452 }
2453 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2454 {
2455 yy_current_state = (int) yy_def[yy_current_state];
2456 if ( yy_current_state >= 826 )
2457 yy_c = yy_meta[(unsigned int) yy_c];
2458 }
2459 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
2460 ++yy_cp;
2461 }
2462 while ( yy_current_state != 825 );
2463 yy_cp = (yy_last_accepting_cpos);
2464 yy_current_state = (yy_last_accepting_state);
2465
2466yy_find_action:
2467 yy_act = yy_accept[yy_current_state];
2468
2469 YY_DO_BEFORE_ACTION;
2470
2471 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2472 {
2473 int yyl;
2474 for ( yyl = 0; yyl < base_yyleng; ++yyl )
2475 if ( base_yytext[yyl] == '\n' )
2476
2477 base_yylineno++;
2478;
2479 }
2480
2481do_action: /* This label is used only to access EOF actions. */
2482
2483 switch ( yy_act )
2484 { /* beginning of action switch */
2485 case 0: /* must back up */
2486 /* undo the effects of YY_DO_BEFORE_ACTION */
2487 *yy_cp = (yy_hold_char);
2488 yy_cp = (yy_last_accepting_cpos);
2489 yy_current_state = (yy_last_accepting_state);
2490 goto yy_find_action;
2491
2492case 1:
2493/* rule 1 can match eol */
2494YY_RULE_SETUP
2495#line 408 "pgc.l"
2496{
2497 /* ignore */
2498 }
2499 YY_BREAK
2500case 2:
2501YY_RULE_SETUP
2502#line 412 "pgc.l"
2503{
2504 token_start = base_yytext;
2505 state_before = YYSTATE;
2506 xcdepth = 0;
2507 BEGIN(xcsql);
2508 /* Put back any characters past slash-star; see above */
2509 yyless(2);
2510 fputs("/*", base_yyout);
2511 }
2512 YY_BREAK
2513/* <SQL> */
2514case 3:
2515YY_RULE_SETUP
2516#line 423 "pgc.l"
2517{
2518 token_start = base_yytext;
2519 state_before = YYSTATE;
2520 xcdepth = 0;
2521 BEGIN(xcc);
2522 /* Put back any characters past slash-star; see above */
2523 yyless(2);
2524 fputs("/*", base_yyout);
2525 }
2526 YY_BREAK
2527case 4:
2528YY_RULE_SETUP
2529#line 432 "pgc.l"
2530{ ECHO; }
2531 YY_BREAK
2532case 5:
2533YY_RULE_SETUP
2534#line 433 "pgc.l"
2535{
2536 xcdepth++;
2537 /* Put back any characters past slash-star; see above */
2538 yyless(2);
2539 fputs("/_*", base_yyout);
2540 }
2541 YY_BREAK
2542case 6:
2543YY_RULE_SETUP
2544#line 439 "pgc.l"
2545{
2546 if (xcdepth <= 0)
2547 {
2548 ECHO;
2549 BEGIN(state_before);
2550 token_start = NULL;
2551 }
2552 else
2553 {
2554 xcdepth--;
2555 fputs("*_/", base_yyout);
2556 }
2557 }
2558 YY_BREAK
2559case 7:
2560YY_RULE_SETUP
2561#line 452 "pgc.l"
2562{
2563 ECHO;
2564 BEGIN(state_before);
2565 token_start = NULL;
2566 }
2567 YY_BREAK
2568
2569case 8:
2570/* rule 8 can match eol */
2571YY_RULE_SETUP
2572#line 459 "pgc.l"
2573{
2574 ECHO;
2575 }
2576 YY_BREAK
2577case 9:
2578YY_RULE_SETUP
2579#line 463 "pgc.l"
2580{
2581 ECHO;
2582 }
2583 YY_BREAK
2584case 10:
2585YY_RULE_SETUP
2586#line 467 "pgc.l"
2587{
2588 ECHO;
2589 }
2590 YY_BREAK
2591case YY_STATE_EOF(xcc):
2592case YY_STATE_EOF(xcsql):
2593#line 471 "pgc.l"
2594{
2595 mmfatal(PARSE_ERROR, "unterminated /* comment");
2596 }
2597 YY_BREAK
2598/* <xcc,xcsql> */
2599
2600case 11:
2601YY_RULE_SETUP
2602#line 477 "pgc.l"
2603{
2604 token_start = base_yytext;
2605 BEGIN(xb);
2606 startlit();
2607 addlitchar('b');
2608 }
2609 YY_BREAK
2610/* <SQL> */
2611case 12:
2612/* rule 12 can match eol */
2613#line 486 "pgc.l"
2614case 13:
2615/* rule 13 can match eol */
2616YY_RULE_SETUP
2617#line 486 "pgc.l"
2618{
2619 yyless(1);
2620 BEGIN(SQL);
2621 if (literalbuf[strspn(literalbuf, "01") + 1] != '\0')
2622 mmerror(PARSE_ERROR, ET_ERROR, "invalid bit string literal");
2623 base_yylval.str = mm_strdup(literalbuf);
2624 return BCONST;
2625 }
2626 YY_BREAK
2627case 14:
2628/* rule 14 can match eol */
2629#line 495 "pgc.l"
2630case 15:
2631/* rule 15 can match eol */
2632YY_RULE_SETUP
2633#line 495 "pgc.l"
2634{
2635 addlit(base_yytext, base_yyleng);
2636 }
2637 YY_BREAK
2638case 16:
2639/* rule 16 can match eol */
2640#line 499 "pgc.l"
2641case 17:
2642/* rule 17 can match eol */
2643YY_RULE_SETUP
2644#line 499 "pgc.l"
2645{
2646 /* ignore */
2647 }
2648 YY_BREAK
2649case YY_STATE_EOF(xb):
2650#line 502 "pgc.l"
2651{ mmfatal(PARSE_ERROR, "unterminated bit string literal"); }
2652 YY_BREAK
2653case 18:
2654YY_RULE_SETUP
2655#line 504 "pgc.l"
2656{
2657 token_start = base_yytext;
2658 BEGIN(xh);
2659 startlit();
2660 addlitchar('x');
2661 }
2662 YY_BREAK
2663case 19:
2664/* rule 19 can match eol */
2665#line 511 "pgc.l"
2666case 20:
2667/* rule 20 can match eol */
2668YY_RULE_SETUP
2669#line 511 "pgc.l"
2670{
2671 yyless(1);
2672 BEGIN(SQL);
2673 base_yylval.str = mm_strdup(literalbuf);
2674 return XCONST;
2675 }
2676 YY_BREAK
2677case YY_STATE_EOF(xh):
2678#line 518 "pgc.l"
2679{ mmfatal(PARSE_ERROR, "unterminated hexadecimal string literal"); }
2680 YY_BREAK
2681case 21:
2682YY_RULE_SETUP
2683#line 520 "pgc.l"
2684{
2685 token_start = base_yytext;
2686 state_before = YYSTATE;
2687 BEGIN(xqc);
2688 startlit();
2689 }
2690 YY_BREAK
2691
2692case 22:
2693YY_RULE_SETUP
2694#line 528 "pgc.l"
2695{
2696 /* National character.
2697 * Transfer it as-is to the backend.
2698 */
2699 token_start = base_yytext;
2700 state_before = YYSTATE;
2701 BEGIN(xn);
2702 startlit();
2703 }
2704 YY_BREAK
2705case 23:
2706YY_RULE_SETUP
2707#line 538 "pgc.l"
2708{
2709 token_start = base_yytext;
2710 state_before = YYSTATE;
2711 BEGIN(xq);
2712 startlit();
2713 }
2714 YY_BREAK
2715case 24:
2716YY_RULE_SETUP
2717#line 544 "pgc.l"
2718{
2719 token_start = base_yytext;
2720 state_before = YYSTATE;
2721 BEGIN(xe);
2722 startlit();
2723 }
2724 YY_BREAK
2725case 25:
2726YY_RULE_SETUP
2727#line 550 "pgc.l"
2728{
2729 token_start = base_yytext;
2730 state_before = YYSTATE;
2731 BEGIN(xus);
2732 startlit();
2733 addlit(base_yytext, base_yyleng);
2734 }
2735 YY_BREAK
2736/* <SQL> */
2737case 26:
2738/* rule 26 can match eol */
2739#line 560 "pgc.l"
2740case 27:
2741/* rule 27 can match eol */
2742YY_RULE_SETUP
2743#line 560 "pgc.l"
2744{
2745 yyless(1);
2746 BEGIN(state_before);
2747 base_yylval.str = mm_strdup(literalbuf);
2748 return SCONST;
2749 }
2750 YY_BREAK
2751case 28:
2752/* rule 28 can match eol */
2753#line 567 "pgc.l"
2754case 29:
2755/* rule 29 can match eol */
2756YY_RULE_SETUP
2757#line 567 "pgc.l"
2758{
2759 yyless(1);
2760 BEGIN(state_before);
2761 base_yylval.str = mm_strdup(literalbuf);
2762 return ECONST;
2763 }
2764 YY_BREAK
2765case 30:
2766/* rule 30 can match eol */
2767#line 574 "pgc.l"
2768case 31:
2769/* rule 31 can match eol */
2770YY_RULE_SETUP
2771#line 574 "pgc.l"
2772{
2773 yyless(1);
2774 BEGIN(state_before);
2775 base_yylval.str = mm_strdup(literalbuf);
2776 return NCONST;
2777 }
2778 YY_BREAK
2779case 32:
2780/* rule 32 can match eol */
2781YY_RULE_SETUP
2782#line 580 "pgc.l"
2783{
2784 addlit(base_yytext, base_yyleng);
2785 BEGIN(state_before);
2786 base_yylval.str = mm_strdup(literalbuf);
2787 return UCONST;
2788 }
2789 YY_BREAK
2790case 33:
2791YY_RULE_SETUP
2792#line 586 "pgc.l"
2793{ addlitchar('\''); }
2794 YY_BREAK
2795case 34:
2796YY_RULE_SETUP
2797#line 587 "pgc.l"
2798{
2799 addlitchar('\\');
2800 addlitchar('\'');
2801 }
2802 YY_BREAK
2803case 35:
2804/* rule 35 can match eol */
2805YY_RULE_SETUP
2806#line 591 "pgc.l"
2807{ addlit(base_yytext, base_yyleng); }
2808 YY_BREAK
2809case 36:
2810/* rule 36 can match eol */
2811YY_RULE_SETUP
2812#line 592 "pgc.l"
2813{
2814 addlit(base_yytext, base_yyleng);
2815 }
2816 YY_BREAK
2817case 37:
2818YY_RULE_SETUP
2819#line 595 "pgc.l"
2820{
2821 addlit(base_yytext, base_yyleng);
2822 }
2823 YY_BREAK
2824case 38:
2825/* rule 38 can match eol */
2826YY_RULE_SETUP
2827#line 598 "pgc.l"
2828{
2829 addlit(base_yytext, base_yyleng);
2830 }
2831 YY_BREAK
2832case 39:
2833YY_RULE_SETUP
2834#line 601 "pgc.l"
2835{
2836 addlit(base_yytext, base_yyleng);
2837 }
2838 YY_BREAK
2839case 40:
2840YY_RULE_SETUP
2841#line 604 "pgc.l"
2842{
2843 addlit(base_yytext, base_yyleng);
2844 }
2845 YY_BREAK
2846case 41:
2847/* rule 41 can match eol */
2848YY_RULE_SETUP
2849#line 607 "pgc.l"
2850{
2851 /* ignore */
2852 }
2853 YY_BREAK
2854case 42:
2855YY_RULE_SETUP
2856#line 610 "pgc.l"
2857{
2858 /* This is only needed for \ just before EOF */
2859 addlitchar(base_yytext[0]);
2860 }
2861 YY_BREAK
2862case YY_STATE_EOF(xq):
2863case YY_STATE_EOF(xqc):
2864case YY_STATE_EOF(xe):
2865case YY_STATE_EOF(xn):
2866case YY_STATE_EOF(xus):
2867#line 614 "pgc.l"
2868{ mmfatal(PARSE_ERROR, "unterminated quoted string"); }
2869 YY_BREAK
2870
2871case 43:
2872YY_RULE_SETUP
2873#line 617 "pgc.l"
2874{
2875 token_start = base_yytext;
2876 if (dolqstart)
2877 free(dolqstart);
2878 dolqstart = mm_strdup(base_yytext);
2879 BEGIN(xdolq);
2880 startlit();
2881 addlit(base_yytext, base_yyleng);
2882 }
2883 YY_BREAK
2884case 44:
2885YY_RULE_SETUP
2886#line 626 "pgc.l"
2887{
2888 /* throw back all but the initial "$" */
2889 yyless(1);
2890 /* and treat it as {other} */
2891 return base_yytext[0];
2892 }
2893 YY_BREAK
2894/* <SQL> */
2895case 45:
2896YY_RULE_SETUP
2897#line 634 "pgc.l"
2898{
2899 if (strcmp(base_yytext, dolqstart) == 0)
2900 {
2901 addlit(base_yytext, base_yyleng);
2902 free(dolqstart);
2903 dolqstart = NULL;
2904 BEGIN(SQL);
2905 base_yylval.str = mm_strdup(literalbuf);
2906 return DOLCONST;
2907 }
2908 else
2909 {
2910 /*
2911 * When we fail to match $...$ to dolqstart, transfer
2912 * the $... part to the output, but put back the final
2913 * $ for rescanning. Consider $delim$...$junk$delim$
2914 */
2915 addlit(base_yytext, base_yyleng - 1);
2916 yyless(base_yyleng - 1);
2917 }
2918 }
2919 YY_BREAK
2920case 46:
2921/* rule 46 can match eol */
2922YY_RULE_SETUP
2923#line 655 "pgc.l"
2924{
2925 addlit(base_yytext, base_yyleng);
2926 }
2927 YY_BREAK
2928case 47:
2929YY_RULE_SETUP
2930#line 658 "pgc.l"
2931{
2932 addlit(base_yytext, base_yyleng);
2933 }
2934 YY_BREAK
2935case 48:
2936YY_RULE_SETUP
2937#line 661 "pgc.l"
2938{
2939 /* single quote or dollar sign */
2940 addlitchar(base_yytext[0]);
2941 }
2942 YY_BREAK
2943case YY_STATE_EOF(xdolq):
2944#line 665 "pgc.l"
2945{ mmfatal(PARSE_ERROR, "unterminated dollar-quoted string"); }
2946 YY_BREAK
2947
2948case 49:
2949YY_RULE_SETUP
2950#line 668 "pgc.l"
2951{
2952 state_before = YYSTATE;
2953 BEGIN(xd);
2954 startlit();
2955 }
2956 YY_BREAK
2957case 50:
2958YY_RULE_SETUP
2959#line 673 "pgc.l"
2960{
2961 state_before = YYSTATE;
2962 BEGIN(xui);
2963 startlit();
2964 addlit(base_yytext, base_yyleng);
2965 }
2966 YY_BREAK
2967/* <SQL> */
2968case 51:
2969YY_RULE_SETUP
2970#line 681 "pgc.l"
2971{
2972 BEGIN(state_before);
2973 if (literallen == 0)
2974 mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier");
2975 /* The backend will truncate the identifier here. We do not as it does not change the result. */
2976 base_yylval.str = mm_strdup(literalbuf);
2977 return CSTRING;
2978 }
2979 YY_BREAK
2980case 52:
2981YY_RULE_SETUP
2982#line 689 "pgc.l"
2983{
2984 BEGIN(state_before);
2985 base_yylval.str = mm_strdup(literalbuf);
2986 return CSTRING;
2987 }
2988 YY_BREAK
2989case 53:
2990/* rule 53 can match eol */
2991YY_RULE_SETUP
2992#line 694 "pgc.l"
2993{
2994 BEGIN(state_before);
2995 if (literallen == 2) /* "U&" */
2996 mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier");
2997 /* The backend will truncate the identifier here. We do not as it does not change the result. */
2998 addlit(base_yytext, base_yyleng);
2999 base_yylval.str = mm_strdup(literalbuf);
3000 return UIDENT;
3001 }
3002 YY_BREAK
3003case 54:
3004YY_RULE_SETUP
3005#line 703 "pgc.l"
3006{
3007 addlitchar('"');
3008 }
3009 YY_BREAK
3010case 55:
3011/* rule 55 can match eol */
3012YY_RULE_SETUP
3013#line 706 "pgc.l"
3014{
3015 addlit(base_yytext, base_yyleng);
3016 }
3017 YY_BREAK
3018case YY_STATE_EOF(xd):
3019case YY_STATE_EOF(xui):
3020#line 709 "pgc.l"
3021{ mmfatal(PARSE_ERROR, "unterminated quoted identifier"); }
3022 YY_BREAK
3023case 56:
3024YY_RULE_SETUP
3025#line 710 "pgc.l"
3026{
3027 state_before = YYSTATE;
3028 BEGIN(xdc);
3029 startlit();
3030 }
3031 YY_BREAK
3032case 57:
3033/* rule 57 can match eol */
3034YY_RULE_SETUP
3035#line 715 "pgc.l"
3036{
3037 addlit(base_yytext, base_yyleng);
3038 }
3039 YY_BREAK
3040case YY_STATE_EOF(xdc):
3041#line 718 "pgc.l"
3042{ mmfatal(PARSE_ERROR, "unterminated quoted string"); }
3043 YY_BREAK
3044
3045case 58:
3046YY_RULE_SETUP
3047#line 721 "pgc.l"
3048{
3049 return TYPECAST;
3050 }
3051 YY_BREAK
3052case 59:
3053YY_RULE_SETUP
3054#line 725 "pgc.l"
3055{
3056 return DOT_DOT;
3057 }
3058 YY_BREAK
3059case 60:
3060YY_RULE_SETUP
3061#line 729 "pgc.l"
3062{
3063 return COLON_EQUALS;
3064 }
3065 YY_BREAK
3066case 61:
3067YY_RULE_SETUP
3068#line 733 "pgc.l"
3069{
3070 return EQUALS_GREATER;
3071 }
3072 YY_BREAK
3073case 62:
3074YY_RULE_SETUP
3075#line 737 "pgc.l"
3076{
3077 return LESS_EQUALS;
3078 }
3079 YY_BREAK
3080case 63:
3081YY_RULE_SETUP
3082#line 741 "pgc.l"
3083{
3084 return GREATER_EQUALS;
3085 }
3086 YY_BREAK
3087case 64:
3088YY_RULE_SETUP
3089#line 745 "pgc.l"
3090{
3091 /* We accept both "<>" and "!=" as meaning NOT_EQUALS */
3092 return NOT_EQUALS;
3093 }
3094 YY_BREAK
3095case 65:
3096YY_RULE_SETUP
3097#line 750 "pgc.l"
3098{
3099 /* We accept both "<>" and "!=" as meaning NOT_EQUALS */
3100 return NOT_EQUALS;
3101 }
3102 YY_BREAK
3103case 66:
3104YY_RULE_SETUP
3105#line 755 "pgc.l"
3106{
3107 /* are we simulating Informix? */
3108 if (INFORMIX_MODE)
3109 {
3110 unput(':');
3111 }
3112 else
3113 return base_yytext[0];
3114 }
3115 YY_BREAK
3116case 67:
3117YY_RULE_SETUP
3118#line 765 "pgc.l"
3119{
3120 /*
3121 * We may find a ';' inside a structure
3122 * definition in a TYPE or VAR statement.
3123 * This is not an EOL marker.
3124 */
3125 if (base_yytext[0] == ';' && struct_level == 0)
3126 BEGIN(C);
3127 return base_yytext[0];
3128 }
3129 YY_BREAK
3130case 68:
3131YY_RULE_SETUP
3132#line 776 "pgc.l"
3133{
3134 /*
3135 * Check for embedded slash-star or dash-dash; those
3136 * are comment starts, so operator must stop there.
3137 * Note that slash-star or dash-dash at the first
3138 * character will match a prior rule, not this one.
3139 */
3140 int nchars = base_yyleng;
3141 char *slashstar = strstr(base_yytext, "/*");
3142 char *dashdash = strstr(base_yytext, "--");
3143
3144 if (slashstar && dashdash)
3145 {
3146 /* if both appear, take the first one */
3147 if (slashstar > dashdash)
3148 slashstar = dashdash;
3149 }
3150 else if (!slashstar)
3151 slashstar = dashdash;
3152 if (slashstar)
3153 nchars = slashstar - base_yytext;
3154
3155 /*
3156 * For SQL compatibility, '+' and '-' cannot be the
3157 * last char of a multi-char operator unless the operator
3158 * contains chars that are not in SQL operators.
3159 * The idea is to lex '=-' as two operators, but not
3160 * to forbid operator names like '?-' that could not be
3161 * sequences of SQL operators.
3162 */
3163 if (nchars > 1 &&
3164 (base_yytext[nchars - 1] == '+' ||
3165 base_yytext[nchars - 1] == '-'))
3166 {
3167 int ic;
3168
3169 for (ic = nchars - 2; ic >= 0; ic--)
3170 {
3171 char c = base_yytext[ic];
3172 if (c == '~' || c == '!' || c == '@' ||
3173 c == '#' || c == '^' || c == '&' ||
3174 c == '|' || c == '`' || c == '?' ||
3175 c == '%')
3176 break;
3177 }
3178 if (ic < 0)
3179 {
3180 /*
3181 * didn't find a qualifying character, so remove
3182 * all trailing [+-]
3183 */
3184 do {
3185 nchars--;
3186 } while (nchars > 1 &&
3187 (base_yytext[nchars - 1] == '+' ||
3188 base_yytext[nchars - 1] == '-'));
3189 }
3190 }
3191
3192 if (nchars < base_yyleng)
3193 {
3194 /* Strip the unwanted chars from the token */
3195 yyless(nchars);
3196 /*
3197 * If what we have left is only one char, and it's
3198 * one of the characters matching "self", then
3199 * return it as a character token the same way
3200 * that the "self" rule would have.
3201 */
3202 if (nchars == 1 &&
3203 strchr(",()[].;:+-*/%^<>=", base_yytext[0]))
3204 return base_yytext[0];
3205 /*
3206 * Likewise, if what we have left is two chars, and
3207 * those match the tokens ">=", "<=", "=>", "<>" or
3208 * "!=", then we must return the appropriate token
3209 * rather than the generic Op.
3210 */
3211 if (nchars == 2)
3212 {
3213 if (base_yytext[0] == '=' && base_yytext[1] == '>')
3214 return EQUALS_GREATER;
3215 if (base_yytext[0] == '>' && base_yytext[1] == '=')
3216 return GREATER_EQUALS;
3217 if (base_yytext[0] == '<' && base_yytext[1] == '=')
3218 return LESS_EQUALS;
3219 if (base_yytext[0] == '<' && base_yytext[1] == '>')
3220 return NOT_EQUALS;
3221 if (base_yytext[0] == '!' && base_yytext[1] == '=')
3222 return NOT_EQUALS;
3223 }
3224 }
3225
3226 base_yylval.str = mm_strdup(base_yytext);
3227 return Op;
3228 }
3229 YY_BREAK
3230case 69:
3231YY_RULE_SETUP
3232#line 873 "pgc.l"
3233{
3234 base_yylval.ival = atol(base_yytext+1);
3235 return PARAM;
3236 }
3237 YY_BREAK
3238case 70:
3239YY_RULE_SETUP
3240#line 878 "pgc.l"
3241{
3242 base_yylval.str = mm_strdup(base_yytext);
3243 return IP;
3244 }
3245 YY_BREAK
3246/* <SQL> */
3247
3248case 71:
3249YY_RULE_SETUP
3250#line 885 "pgc.l"
3251{
3252 return process_integer_literal(base_yytext, &base_yylval);
3253 }
3254 YY_BREAK
3255case 72:
3256YY_RULE_SETUP
3257#line 888 "pgc.l"
3258{
3259 base_yylval.str = mm_strdup(base_yytext);
3260 return FCONST;
3261 }
3262 YY_BREAK
3263case 73:
3264YY_RULE_SETUP
3265#line 892 "pgc.l"
3266{
3267 /* throw back the .., and treat as integer */
3268 yyless(base_yyleng - 2);
3269 return process_integer_literal(base_yytext, &base_yylval);
3270 }
3271 YY_BREAK
3272case 74:
3273YY_RULE_SETUP
3274#line 897 "pgc.l"
3275{
3276 base_yylval.str = mm_strdup(base_yytext);
3277 return FCONST;
3278 }
3279 YY_BREAK
3280case 75:
3281YY_RULE_SETUP
3282#line 901 "pgc.l"
3283{
3284 /*
3285 * throw back the [Ee], and figure out whether what
3286 * remains is an {integer} or {decimal}.
3287 */
3288 yyless(base_yyleng - 1);
3289 return process_integer_literal(base_yytext, &base_yylval);
3290 }
3291 YY_BREAK
3292case 76:
3293YY_RULE_SETUP
3294#line 909 "pgc.l"
3295{
3296 /* throw back the [Ee][+-], and proceed as above */
3297 yyless(base_yyleng - 2);
3298 return process_integer_literal(base_yytext, &base_yylval);
3299 }
3300 YY_BREAK
3301/* <C,SQL> */
3302
3303case 77:
3304/* rule 77 can match eol */
3305YY_RULE_SETUP
3306#line 917 "pgc.l"
3307{
3308 base_yylval.str = mm_strdup(base_yytext+1);
3309 return CVARIABLE;
3310 }
3311 YY_BREAK
3312case 78:
3313YY_RULE_SETUP
3314#line 922 "pgc.l"
3315{
3316 if (!isdefine())
3317 {
3318 int kwvalue;
3319
3320 /* Is it an SQL/ECPG keyword? */
3321 kwvalue = ScanECPGKeywordLookup(base_yytext);
3322 if (kwvalue >= 0)
3323 return kwvalue;
3324
3325 /* Is it a C keyword? */
3326 kwvalue = ScanCKeywordLookup(base_yytext);
3327 if (kwvalue >= 0)
3328 return kwvalue;
3329
3330 /*
3331 * None of the above. Return it as an identifier.
3332 *
3333 * The backend will attempt to truncate and case-fold
3334 * the identifier, but I see no good reason for ecpg
3335 * to do so; that's just another way that ecpg could get
3336 * out of step with the backend.
3337 */
3338 base_yylval.str = mm_strdup(base_yytext);
3339 return IDENT;
3340 }
3341 }
3342 YY_BREAK
3343case 79:
3344YY_RULE_SETUP
3345#line 950 "pgc.l"
3346{
3347 return base_yytext[0];
3348 }
3349 YY_BREAK
3350/* <SQL> */
3351/*
3352 * Begin ECPG-specific rules
3353 */
3354case 80:
3355/* rule 80 can match eol */
3356YY_RULE_SETUP
3357#line 959 "pgc.l"
3358{ BEGIN(SQL); return SQL_START; }
3359 YY_BREAK
3360case 81:
3361YY_RULE_SETUP
3362#line 960 "pgc.l"
3363{
3364 /* are we simulating Informix? */
3365 if (INFORMIX_MODE)
3366 {
3367 BEGIN(SQL);
3368 return SQL_START;
3369 }
3370 else
3371 return S_ANYTHING;
3372 }
3373 YY_BREAK
3374case 82:
3375/* rule 82 can match eol */
3376YY_RULE_SETUP
3377#line 970 "pgc.l"
3378{ ECHO; }
3379 YY_BREAK
3380case 83:
3381YY_RULE_SETUP
3382#line 971 "pgc.l"
3383{
3384 char* endptr;
3385
3386 errno = 0;
3387 base_yylval.ival = strtoul((char *)base_yytext,&endptr,16);
3388 if (*endptr != '\0' || errno == ERANGE)
3389 {
3390 errno = 0;
3391 base_yylval.str = mm_strdup(base_yytext);
3392 return SCONST;
3393 }
3394 return ICONST;
3395 }
3396 YY_BREAK
3397case 84:
3398/* rule 84 can match eol */
3399YY_RULE_SETUP
3400#line 984 "pgc.l"
3401{
3402 if (system_includes)
3403 {
3404 include_next = false;
3405 BEGIN(incl);
3406 }
3407 else
3408 {
3409 base_yylval.str = mm_strdup(base_yytext);
3410 return CPP_LINE;
3411 }
3412 }
3413 YY_BREAK
3414case 85:
3415/* rule 85 can match eol */
3416YY_RULE_SETUP
3417#line 996 "pgc.l"
3418{
3419 if (system_includes)
3420 {
3421 include_next = true;
3422 BEGIN(incl);
3423 }
3424 else
3425 {
3426 base_yylval.str = mm_strdup(base_yytext);
3427 return CPP_LINE;
3428 }
3429 }
3430 YY_BREAK
3431case 86:
3432/* rule 86 can match eol */
3433YY_RULE_SETUP
3434#line 1008 "pgc.l"
3435{
3436 base_yylval.str = mm_strdup(base_yytext);
3437 return CPP_LINE;
3438 }
3439 YY_BREAK
3440case 87:
3441YY_RULE_SETUP
3442#line 1012 "pgc.l"
3443{
3444 /*
3445 * Try to detect a function name:
3446 * look for identifiers at the global scope
3447 * keep the last identifier before the first '(' and '{'
3448 */
3449 if (braces_open == 0 && parenths_open == 0)
3450 {
3451 if (current_function)
3452 free(current_function);
3453 current_function = mm_strdup(base_yytext);
3454 }
3455 /* Informix uses SQL defines only in SQL space */
3456 /* however, some defines have to be taken care of for compatibility */
3457 if ((!INFORMIX_MODE || !isinformixdefine()) && !isdefine())
3458 {
3459 int kwvalue;
3460
3461 kwvalue = ScanCKeywordLookup(base_yytext);
3462 if (kwvalue >= 0)
3463 return kwvalue;
3464 else
3465 {
3466 base_yylval.str = mm_strdup(base_yytext);
3467 return IDENT;
3468 }
3469 }
3470 }
3471 YY_BREAK
3472case 88:
3473YY_RULE_SETUP
3474#line 1040 "pgc.l"
3475{ mmerror(PARSE_ERROR, ET_ERROR, "nested /* ... */ comments"); }
3476 YY_BREAK
3477case 89:
3478YY_RULE_SETUP
3479#line 1041 "pgc.l"
3480{ return ':'; }
3481 YY_BREAK
3482case 90:
3483YY_RULE_SETUP
3484#line 1042 "pgc.l"
3485{ return ';'; }
3486 YY_BREAK
3487case 91:
3488YY_RULE_SETUP
3489#line 1043 "pgc.l"
3490{ return ','; }
3491 YY_BREAK
3492case 92:
3493YY_RULE_SETUP
3494#line 1044 "pgc.l"
3495{ return '*'; }
3496 YY_BREAK
3497case 93:
3498YY_RULE_SETUP
3499#line 1045 "pgc.l"
3500{ return '%'; }
3501 YY_BREAK
3502case 94:
3503YY_RULE_SETUP
3504#line 1046 "pgc.l"
3505{ return '/'; }
3506 YY_BREAK
3507case 95:
3508YY_RULE_SETUP
3509#line 1047 "pgc.l"
3510{ return '+'; }
3511 YY_BREAK
3512case 96:
3513YY_RULE_SETUP
3514#line 1048 "pgc.l"
3515{ return '-'; }
3516 YY_BREAK
3517case 97:
3518YY_RULE_SETUP
3519#line 1049 "pgc.l"
3520{ parenths_open++; return '('; }
3521 YY_BREAK
3522case 98:
3523YY_RULE_SETUP
3524#line 1050 "pgc.l"
3525{ parenths_open--; return ')'; }
3526 YY_BREAK
3527case 99:
3528/* rule 99 can match eol */
3529YY_RULE_SETUP
3530#line 1051 "pgc.l"
3531{ ECHO; }
3532 YY_BREAK
3533case 100:
3534YY_RULE_SETUP
3535#line 1052 "pgc.l"
3536{ return '{'; }
3537 YY_BREAK
3538case 101:
3539YY_RULE_SETUP
3540#line 1053 "pgc.l"
3541{ return '}'; }
3542 YY_BREAK
3543case 102:
3544YY_RULE_SETUP
3545#line 1054 "pgc.l"
3546{ return '['; }
3547 YY_BREAK
3548case 103:
3549YY_RULE_SETUP
3550#line 1055 "pgc.l"
3551{ return ']'; }
3552 YY_BREAK
3553case 104:
3554YY_RULE_SETUP
3555#line 1056 "pgc.l"
3556{ return '='; }
3557 YY_BREAK
3558case 105:
3559YY_RULE_SETUP
3560#line 1057 "pgc.l"
3561{ return S_MEMBER; }
3562 YY_BREAK
3563case 106:
3564YY_RULE_SETUP
3565#line 1058 "pgc.l"
3566{ return S_RSHIFT; }
3567 YY_BREAK
3568case 107:
3569YY_RULE_SETUP
3570#line 1059 "pgc.l"
3571{ return S_LSHIFT; }
3572 YY_BREAK
3573case 108:
3574YY_RULE_SETUP
3575#line 1060 "pgc.l"
3576{ return S_OR; }
3577 YY_BREAK
3578case 109:
3579YY_RULE_SETUP
3580#line 1061 "pgc.l"
3581{ return S_AND; }
3582 YY_BREAK
3583case 110:
3584YY_RULE_SETUP
3585#line 1062 "pgc.l"
3586{ return S_INC; }
3587 YY_BREAK
3588case 111:
3589YY_RULE_SETUP
3590#line 1063 "pgc.l"
3591{ return S_DEC; }
3592 YY_BREAK
3593case 112:
3594YY_RULE_SETUP
3595#line 1064 "pgc.l"
3596{ return S_EQUAL; }
3597 YY_BREAK
3598case 113:
3599YY_RULE_SETUP
3600#line 1065 "pgc.l"
3601{ return S_NEQUAL; }
3602 YY_BREAK
3603case 114:
3604YY_RULE_SETUP
3605#line 1066 "pgc.l"
3606{ return S_ADD; }
3607 YY_BREAK
3608case 115:
3609YY_RULE_SETUP
3610#line 1067 "pgc.l"
3611{ return S_SUB; }
3612 YY_BREAK
3613case 116:
3614YY_RULE_SETUP
3615#line 1068 "pgc.l"
3616{ return S_MUL; }
3617 YY_BREAK
3618case 117:
3619YY_RULE_SETUP
3620#line 1069 "pgc.l"
3621{ return S_DIV; }
3622 YY_BREAK
3623case 118:
3624YY_RULE_SETUP
3625#line 1070 "pgc.l"
3626{ return S_MOD; }
3627 YY_BREAK
3628case 119:
3629YY_RULE_SETUP
3630#line 1071 "pgc.l"
3631{ return S_MEMPOINT; }
3632 YY_BREAK
3633case 120:
3634YY_RULE_SETUP
3635#line 1072 "pgc.l"
3636{ return S_DOTPOINT; }
3637 YY_BREAK
3638case 121:
3639YY_RULE_SETUP
3640#line 1073 "pgc.l"
3641{ return S_ANYTHING; }
3642 YY_BREAK
3643case 122:
3644/* rule 122 can match eol */
3645YY_RULE_SETUP
3646#line 1074 "pgc.l"
3647{ BEGIN(def_ident); }
3648 YY_BREAK
3649case 123:
3650/* rule 123 can match eol */
3651YY_RULE_SETUP
3652#line 1075 "pgc.l"
3653{
3654 /* are we simulating Informix? */
3655 if (INFORMIX_MODE)
3656 {
3657 BEGIN(def_ident);
3658 }
3659 else
3660 {
3661 yyless(1);
3662 return S_ANYTHING;
3663 }
3664 }
3665 YY_BREAK
3666case 124:
3667/* rule 124 can match eol */
3668YY_RULE_SETUP
3669#line 1087 "pgc.l"
3670{ BEGIN(undef); }
3671 YY_BREAK
3672case 125:
3673/* rule 125 can match eol */
3674YY_RULE_SETUP
3675#line 1088 "pgc.l"
3676{
3677 /* are we simulating Informix? */
3678 if (INFORMIX_MODE)
3679 {
3680 BEGIN(undef);
3681 }
3682 else
3683 {
3684 yyless(1);
3685 return S_ANYTHING;
3686 }
3687 }
3688 YY_BREAK
3689case 126:
3690/* rule 126 can match eol */
3691YY_RULE_SETUP
3692#line 1100 "pgc.l"
3693{
3694 struct _defines *ptr, *ptr2 = NULL;
3695 int i;
3696
3697 /*
3698 * Skip the ";" and trailing whitespace. Note that base_yytext
3699 * contains at least one non-space character plus the ";"
3700 */
3701 for (i = strlen(base_yytext)-2;
3702 i > 0 && ecpg_isspace(base_yytext[i]);
3703 i-- )
3704 ;
3705 base_yytext[i+1] = '\0';
3706
3707
3708 for (ptr = defines; ptr != NULL; ptr2 = ptr, ptr = ptr->next)
3709 {
3710 if (strcmp(base_yytext, ptr->olddef) == 0)
3711 {
3712 if (ptr2 == NULL)
3713 defines = ptr->next;
3714 else
3715 ptr2->next = ptr->next;
3716 free(ptr->newdef);
3717 free(ptr->olddef);
3718 free(ptr);
3719 break;
3720 }
3721 }
3722
3723 BEGIN(C);
3724 }
3725 YY_BREAK
3726case 127:
3727/* rule 127 can match eol */
3728YY_RULE_SETUP
3729#line 1132 "pgc.l"
3730{
3731 mmfatal(PARSE_ERROR, "missing identifier in EXEC SQL UNDEF command");
3732 yyterminate();
3733 }
3734 YY_BREAK
3735case 128:
3736/* rule 128 can match eol */
3737YY_RULE_SETUP
3738#line 1136 "pgc.l"
3739{ BEGIN(incl); }
3740 YY_BREAK
3741case 129:
3742/* rule 129 can match eol */
3743YY_RULE_SETUP
3744#line 1137 "pgc.l"
3745{
3746 /* are we simulating Informix? */
3747 if (INFORMIX_MODE)
3748 {
3749 BEGIN(incl);
3750 }
3751 else
3752 {
3753 yyless(1);
3754 return S_ANYTHING;
3755 }
3756 }
3757 YY_BREAK
3758case 130:
3759/* rule 130 can match eol */
3760YY_RULE_SETUP
3761#line 1149 "pgc.l"
3762{ ifcond = true; BEGIN(xcond); }
3763 YY_BREAK
3764case 131:
3765/* rule 131 can match eol */
3766YY_RULE_SETUP
3767#line 1150 "pgc.l"
3768{
3769 /* are we simulating Informix? */
3770 if (INFORMIX_MODE)
3771 {
3772 ifcond = true;
3773 BEGIN(xcond);
3774 }
3775 else
3776 {
3777 yyless(1);
3778 return S_ANYTHING;
3779 }
3780 }
3781 YY_BREAK
3782case 132:
3783/* rule 132 can match eol */
3784YY_RULE_SETUP
3785#line 1163 "pgc.l"
3786{ ifcond = false; BEGIN(xcond); }
3787 YY_BREAK
3788case 133:
3789/* rule 133 can match eol */
3790YY_RULE_SETUP
3791#line 1164 "pgc.l"
3792{
3793 /* are we simulating Informix? */
3794 if (INFORMIX_MODE)
3795 {
3796 ifcond = false;
3797 BEGIN(xcond);
3798 }
3799 else
3800 {
3801 yyless(1);
3802 return S_ANYTHING;
3803 }
3804 }
3805 YY_BREAK
3806case 134:
3807/* rule 134 can match eol */
3808YY_RULE_SETUP
3809#line 1177 "pgc.l"
3810{ /* pop stack */
3811 if ( preproc_tos == 0 ) {
3812 mmfatal(PARSE_ERROR, "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"");
3813 }
3814 else if ( stacked_if_value[preproc_tos].else_branch )
3815 mmfatal(PARSE_ERROR, "missing \"EXEC SQL ENDIF;\"");
3816 else
3817 preproc_tos--;
3818
3819 ifcond = true; BEGIN(xcond);
3820 }
3821 YY_BREAK
3822case 135:
3823/* rule 135 can match eol */
3824YY_RULE_SETUP
3825#line 1188 "pgc.l"
3826{
3827 /* are we simulating Informix? */
3828 if (INFORMIX_MODE)
3829 {
3830 if (preproc_tos == 0)
3831 mmfatal(PARSE_ERROR, "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"");
3832 else if (stacked_if_value[preproc_tos].else_branch)
3833 mmfatal(PARSE_ERROR, "missing \"EXEC SQL ENDIF;\"");
3834 else
3835 preproc_tos--;
3836
3837 ifcond = true;
3838 BEGIN(xcond);
3839 }
3840 else
3841 {
3842 yyless(1);
3843 return S_ANYTHING;
3844 }
3845 }
3846 YY_BREAK
3847case 136:
3848/* rule 136 can match eol */
3849YY_RULE_SETUP
3850#line 1209 "pgc.l"
3851{ /* only exec sql endif pops the stack, so take care of duplicated 'else' */
3852 if (stacked_if_value[preproc_tos].else_branch)
3853 mmfatal(PARSE_ERROR, "more than one EXEC SQL ELSE");
3854 else
3855 {
3856 stacked_if_value[preproc_tos].else_branch = true;
3857 stacked_if_value[preproc_tos].condition =
3858 (stacked_if_value[preproc_tos-1].condition &&
3859 !stacked_if_value[preproc_tos].condition);
3860
3861 if (stacked_if_value[preproc_tos].condition)
3862 BEGIN(C);
3863 else
3864 BEGIN(xskip);
3865 }
3866 }
3867 YY_BREAK
3868case 137:
3869/* rule 137 can match eol */
3870YY_RULE_SETUP
3871#line 1225 "pgc.l"
3872{
3873 /* are we simulating Informix? */
3874 if (INFORMIX_MODE)
3875 {
3876 if (stacked_if_value[preproc_tos].else_branch)
3877 mmfatal(PARSE_ERROR, "more than one EXEC SQL ELSE");
3878 else
3879 {
3880 stacked_if_value[preproc_tos].else_branch = true;
3881 stacked_if_value[preproc_tos].condition =
3882 (stacked_if_value[preproc_tos-1].condition &&
3883 !stacked_if_value[preproc_tos].condition);
3884
3885 if (stacked_if_value[preproc_tos].condition)
3886 BEGIN(C);
3887 else
3888 BEGIN(xskip);
3889 }
3890 }
3891 else
3892 {
3893 yyless(1);
3894 return S_ANYTHING;
3895 }
3896 }
3897 YY_BREAK
3898case 138:
3899/* rule 138 can match eol */
3900YY_RULE_SETUP
3901#line 1250 "pgc.l"
3902{
3903 if (preproc_tos == 0)
3904 mmfatal(PARSE_ERROR, "unmatched EXEC SQL ENDIF");
3905 else
3906 preproc_tos--;
3907
3908 if (stacked_if_value[preproc_tos].condition)
3909 BEGIN(C);
3910 else
3911 BEGIN(xskip);
3912 }
3913 YY_BREAK
3914case 139:
3915/* rule 139 can match eol */
3916YY_RULE_SETUP
3917#line 1261 "pgc.l"
3918{
3919 /* are we simulating Informix? */
3920 if (INFORMIX_MODE)
3921 {
3922 if (preproc_tos == 0)
3923 mmfatal(PARSE_ERROR, "unmatched EXEC SQL ENDIF");
3924 else
3925 preproc_tos--;
3926
3927 if (stacked_if_value[preproc_tos].condition)
3928 BEGIN(C);
3929 else
3930 BEGIN(xskip);
3931 }
3932 else
3933 {
3934 yyless(1);
3935 return S_ANYTHING;
3936 }
3937 }
3938 YY_BREAK
3939case 140:
3940YY_RULE_SETUP
3941#line 1282 "pgc.l"
3942{ /* ignore */ }
3943 YY_BREAK
3944case 141:
3945/* rule 141 can match eol */
3946YY_RULE_SETUP
3947#line 1284 "pgc.l"
3948{
3949 if (preproc_tos >= MAX_NESTED_IF-1)
3950 mmfatal(PARSE_ERROR, "too many nested EXEC SQL IFDEF conditions");
3951 else
3952 {
3953 struct _defines *defptr;
3954 unsigned int i;
3955
3956 /*
3957 * Skip the ";" and trailing whitespace. Note that base_yytext
3958 * contains at least one non-space character plus the ";"
3959 */
3960 for (i = strlen(base_yytext)-2;
3961 i > 0 && ecpg_isspace(base_yytext[i]);
3962 i-- )
3963 ;
3964 base_yytext[i+1] = '\0';
3965
3966 for (defptr = defines;
3967 defptr != NULL &&
3968 strcmp(base_yytext, defptr->olddef) != 0;
3969 defptr = defptr->next)
3970 /* skip */ ;
3971
3972 preproc_tos++;
3973 stacked_if_value[preproc_tos].else_branch = false;
3974 stacked_if_value[preproc_tos].condition =
3975 (defptr ? ifcond : !ifcond) && stacked_if_value[preproc_tos-1].condition;
3976 }
3977
3978 if (stacked_if_value[preproc_tos].condition)
3979 BEGIN(C);
3980 else
3981 BEGIN(xskip);
3982 }
3983 YY_BREAK
3984case 142:
3985/* rule 142 can match eol */
3986YY_RULE_SETUP
3987#line 1320 "pgc.l"
3988{
3989 mmfatal(PARSE_ERROR, "missing identifier in EXEC SQL IFDEF command");
3990 yyterminate();
3991 }
3992 YY_BREAK
3993case 143:
3994YY_RULE_SETUP
3995#line 1324 "pgc.l"
3996{
3997 old = mm_strdup(base_yytext);
3998 BEGIN(def);
3999 startlit();
4000 }
4001 YY_BREAK
4002case 144:
4003/* rule 144 can match eol */
4004YY_RULE_SETUP
4005#line 1329 "pgc.l"
4006{
4007 mmfatal(PARSE_ERROR, "missing identifier in EXEC SQL DEFINE command");
4008 yyterminate();
4009 }
4010 YY_BREAK
4011case 145:
4012/* rule 145 can match eol */
4013YY_RULE_SETUP
4014#line 1333 "pgc.l"
4015{
4016 struct _defines *ptr, *this;
4017
4018 for (ptr = defines; ptr != NULL; ptr = ptr->next)
4019 {
4020 if (strcmp(old, ptr->olddef) == 0)
4021 {
4022 free(ptr->newdef);
4023 ptr->newdef = mm_strdup(literalbuf);
4024 }
4025 }
4026 if (ptr == NULL)
4027 {
4028 this = (struct _defines *) mm_alloc(sizeof(struct _defines));
4029
4030 /* initial definition */
4031 this->olddef = old;
4032 this->newdef = mm_strdup(literalbuf);
4033 this->next = defines;
4034 this->used = NULL;
4035 defines = this;
4036 }
4037
4038 BEGIN(C);
4039 }
4040 YY_BREAK
4041case 146:
4042/* rule 146 can match eol */
4043YY_RULE_SETUP
4044#line 1358 "pgc.l"
4045{ addlit(base_yytext, base_yyleng); }
4046 YY_BREAK
4047case 147:
4048/* rule 147 can match eol */
4049YY_RULE_SETUP
4050#line 1359 "pgc.l"
4051{ parse_include(); }
4052 YY_BREAK
4053case 148:
4054/* rule 148 can match eol */
4055YY_RULE_SETUP
4056#line 1360 "pgc.l"
4057{ parse_include(); }
4058 YY_BREAK
4059case 149:
4060/* rule 149 can match eol */
4061YY_RULE_SETUP
4062#line 1361 "pgc.l"
4063{ parse_include(); }
4064 YY_BREAK
4065case 150:
4066/* rule 150 can match eol */
4067YY_RULE_SETUP
4068#line 1362 "pgc.l"
4069{
4070 mmfatal(PARSE_ERROR, "syntax error in EXEC SQL INCLUDE command");
4071 yyterminate();
4072 }
4073 YY_BREAK
4074case YY_STATE_EOF(INITIAL):
4075case YY_STATE_EOF(xcond):
4076case YY_STATE_EOF(xskip):
4077case YY_STATE_EOF(C):
4078case YY_STATE_EOF(SQL):
4079case YY_STATE_EOF(incl):
4080case YY_STATE_EOF(def):
4081case YY_STATE_EOF(def_ident):
4082case YY_STATE_EOF(undef):
4083#line 1367 "pgc.l"
4084{
4085 if (yy_buffer == NULL)
4086 {
4087 if ( preproc_tos > 0 )
4088 {
4089 preproc_tos = 0;
4090 mmfatal(PARSE_ERROR, "missing \"EXEC SQL ENDIF;\"");
4091 }
4092 yyterminate();
4093 }
4094 else
4095 {
4096 struct _yy_buffer *yb = yy_buffer;
4097 int i;
4098 struct _defines *ptr;
4099
4100 for (ptr = defines; ptr; ptr = ptr->next)
4101 if (ptr->used == yy_buffer)
4102 {
4103 ptr->used = NULL;
4104 break;
4105 }
4106
4107 if (base_yyin != NULL)
4108 fclose(base_yyin);
4109
4110 base_yy_delete_buffer(YY_CURRENT_BUFFER );
4111 base_yy_switch_to_buffer(yy_buffer->buffer);
4112
4113 base_yylineno = yy_buffer->lineno;
4114
4115 /* We have to output the filename only if we change files here */
4116 i = strcmp(input_filename, yy_buffer->filename);
4117
4118 free(input_filename);
4119 input_filename = yy_buffer->filename;
4120
4121 yy_buffer = yy_buffer->next;
4122 free(yb);
4123
4124 if (i != 0)
4125 output_line_number();
4126
4127 }
4128 }
4129 YY_BREAK
4130case 151:
4131/* rule 151 can match eol */
4132YY_RULE_SETUP
4133#line 1413 "pgc.l"
4134{ mmfatal(PARSE_ERROR, "internal error: unreachable state; please report this to <pgsql-bugs@lists.postgresql.org>"); }
4135 YY_BREAK
4136case 152:
4137YY_RULE_SETUP
4138#line 1415 "pgc.l"
4139YY_FATAL_ERROR( "flex scanner jammed" );
4140 YY_BREAK
4141#line 4142 "pgc.c"
4142
4143 case YY_END_OF_BUFFER:
4144 {
4145 /* Amount of text matched not including the EOB char. */
4146 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
4147
4148 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4149 *yy_cp = (yy_hold_char);
4150 YY_RESTORE_YY_MORE_OFFSET
4151
4152 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4153 {
4154 /* We're scanning a new file or input source. It's
4155 * possible that this happened because the user
4156 * just pointed base_yyin at a new source and called
4157 * base_yylex(). If so, then we have to assure
4158 * consistency between YY_CURRENT_BUFFER and our
4159 * globals. Here is the right place to do so, because
4160 * this is the first action (other than possibly a
4161 * back-up) that will match for the new input source.
4162 */
4163 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4164 YY_CURRENT_BUFFER_LVALUE->yy_input_file = base_yyin;
4165 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4166 }
4167
4168 /* Note that here we test for yy_c_buf_p "<=" to the position
4169 * of the first EOB in the buffer, since yy_c_buf_p will
4170 * already have been incremented past the NUL character
4171 * (since all states make transitions on EOB to the
4172 * end-of-buffer state). Contrast this with the test
4173 * in input().
4174 */
4175 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4176 { /* This was really a NUL. */
4177 yy_state_type yy_next_state;
4178
4179 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
4180
4181 yy_current_state = yy_get_previous_state( );
4182
4183 /* Okay, we're now positioned to make the NUL
4184 * transition. We couldn't have
4185 * yy_get_previous_state() go ahead and do it
4186 * for us because it doesn't know how to deal
4187 * with the possibility of jamming (and we don't
4188 * want to build jamming into it because then it
4189 * will run more slowly).
4190 */
4191
4192 yy_next_state = yy_try_NUL_trans( yy_current_state );
4193
4194 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4195
4196 if ( yy_next_state )
4197 {
4198 /* Consume the NUL. */
4199 yy_cp = ++(yy_c_buf_p);
4200 yy_current_state = yy_next_state;
4201 goto yy_match;
4202 }
4203
4204 else
4205 {
4206 yy_cp = (yy_last_accepting_cpos);
4207 yy_current_state = (yy_last_accepting_state);
4208 goto yy_find_action;
4209 }
4210 }
4211
4212 else switch ( yy_get_next_buffer( ) )
4213 {
4214 case EOB_ACT_END_OF_FILE:
4215 {
4216 (yy_did_buffer_switch_on_eof) = 0;
4217
4218 if ( base_yywrap( ) )
4219 {
4220 /* Note: because we've taken care in
4221 * yy_get_next_buffer() to have set up
4222 * base_yytext, we can now set up
4223 * yy_c_buf_p so that if some total
4224 * hoser (like flex itself) wants to
4225 * call the scanner after we return the
4226 * YY_NULL, it'll still work - another
4227 * YY_NULL will get returned.
4228 */
4229 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
4230
4231 yy_act = YY_STATE_EOF(YY_START);
4232 goto do_action;
4233 }
4234
4235 else
4236 {
4237 if ( ! (yy_did_buffer_switch_on_eof) )
4238 YY_NEW_FILE;
4239 }
4240 break;
4241 }
4242
4243 case EOB_ACT_CONTINUE_SCAN:
4244 (yy_c_buf_p) =
4245 (yytext_ptr) + yy_amount_of_matched_text;
4246
4247 yy_current_state = yy_get_previous_state( );
4248
4249 yy_cp = (yy_c_buf_p);
4250 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4251 goto yy_match;
4252
4253 case EOB_ACT_LAST_MATCH:
4254 (yy_c_buf_p) =
4255 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
4256
4257 yy_current_state = yy_get_previous_state( );
4258
4259 yy_cp = (yy_c_buf_p);
4260 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4261 goto yy_find_action;
4262 }
4263 break;
4264 }
4265
4266 default:
4267 YY_FATAL_ERROR(
4268 "fatal flex scanner internal error--no action found" );
4269 } /* end of action switch */
4270 } /* end of scanning one token */
4271 } /* end of user's declarations */
4272} /* end of base_yylex */
4273
4274/* yy_get_next_buffer - try to read in a new buffer
4275 *
4276 * Returns a code representing an action:
4277 * EOB_ACT_LAST_MATCH -
4278 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4279 * EOB_ACT_END_OF_FILE - end of file
4280 */
4281static int yy_get_next_buffer (void)
4282{
4283 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4284 char *source = (yytext_ptr);
4285 int number_to_move, i;
4286 int ret_val;
4287
4288 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4289 YY_FATAL_ERROR(
4290 "fatal flex scanner internal error--end of buffer missed" );
4291
4292 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4293 { /* Don't try to fill the buffer, so this is an EOF. */
4294 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4295 {
4296 /* We matched a single character, the EOB, so
4297 * treat this as a final EOF.
4298 */
4299 return EOB_ACT_END_OF_FILE;
4300 }
4301
4302 else
4303 {
4304 /* We matched some text prior to the EOB, first
4305 * process it.
4306 */
4307 return EOB_ACT_LAST_MATCH;
4308 }
4309 }
4310
4311 /* Try to read more data. */
4312
4313 /* First move last chars to start of buffer. */
4314 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
4315
4316 for ( i = 0; i < number_to_move; ++i )
4317 *(dest++) = *(source++);
4318
4319 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4320 /* don't do the read, it's not guaranteed to return an EOF,
4321 * just force an EOF
4322 */
4323 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4324
4325 else
4326 {
4327 int num_to_read =
4328 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4329
4330 while ( num_to_read <= 0 )
4331 { /* Not enough room in the buffer - grow it. */
4332
4333 /* just a shorter name for the current buffer */
4334 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
4335
4336 int yy_c_buf_p_offset =
4337 (int) ((yy_c_buf_p) - b->yy_ch_buf);
4338
4339 if ( b->yy_is_our_buffer )
4340 {
4341 int new_size = b->yy_buf_size * 2;
4342
4343 if ( new_size <= 0 )
4344 b->yy_buf_size += b->yy_buf_size / 8;
4345 else
4346 b->yy_buf_size *= 2;
4347
4348 b->yy_ch_buf = (char *)
4349 /* Include room in for 2 EOB chars. */
4350 base_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
4351 }
4352 else
4353 /* Can't grow it, we don't own it. */
4354 b->yy_ch_buf = NULL;
4355
4356 if ( ! b->yy_ch_buf )
4357 YY_FATAL_ERROR(
4358 "fatal error - scanner input buffer overflow" );
4359
4360 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4361
4362 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4363 number_to_move - 1;
4364
4365 }
4366
4367 if ( num_to_read > YY_READ_BUF_SIZE )
4368 num_to_read = YY_READ_BUF_SIZE;
4369
4370 /* Read in more data. */
4371 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4372 (yy_n_chars), num_to_read );
4373
4374 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4375 }
4376
4377 if ( (yy_n_chars) == 0 )
4378 {
4379 if ( number_to_move == YY_MORE_ADJ )
4380 {
4381 ret_val = EOB_ACT_END_OF_FILE;
4382 base_yyrestart(base_yyin );
4383 }
4384
4385 else
4386 {
4387 ret_val = EOB_ACT_LAST_MATCH;
4388 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4389 YY_BUFFER_EOF_PENDING;
4390 }
4391 }
4392
4393 else
4394 ret_val = EOB_ACT_CONTINUE_SCAN;
4395
4396 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4397 /* Extend the array by 50%, plus the number we really need. */
4398 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
4399 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) base_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
4400 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4401 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4402 }
4403
4404 (yy_n_chars) += number_to_move;
4405 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4406 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4407
4408 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4409
4410 return ret_val;
4411}
4412
4413/* yy_get_previous_state - get the state just before the EOB char was reached */
4414
4415 static yy_state_type yy_get_previous_state (void)
4416{
4417 yy_state_type yy_current_state;
4418 char *yy_cp;
4419
4420 yy_current_state = (yy_start);
4421
4422 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4423 {
4424 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4425 if ( yy_accept[yy_current_state] )
4426 {
4427 (yy_last_accepting_state) = yy_current_state;
4428 (yy_last_accepting_cpos) = yy_cp;
4429 }
4430 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4431 {
4432 yy_current_state = (int) yy_def[yy_current_state];
4433 if ( yy_current_state >= 826 )
4434 yy_c = yy_meta[(unsigned int) yy_c];
4435 }
4436 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
4437 }
4438
4439 return yy_current_state;
4440}
4441
4442/* yy_try_NUL_trans - try to make a transition on the NUL character
4443 *
4444 * synopsis
4445 * next_state = yy_try_NUL_trans( current_state );
4446 */
4447 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
4448{
4449 int yy_is_jam;
4450 char *yy_cp = (yy_c_buf_p);
4451
4452 YY_CHAR yy_c = 1;
4453 if ( yy_accept[yy_current_state] )
4454 {
4455 (yy_last_accepting_state) = yy_current_state;
4456 (yy_last_accepting_cpos) = yy_cp;
4457 }
4458 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4459 {
4460 yy_current_state = (int) yy_def[yy_current_state];
4461 if ( yy_current_state >= 826 )
4462 yy_c = yy_meta[(unsigned int) yy_c];
4463 }
4464 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
4465 yy_is_jam = (yy_current_state == 825);
4466
4467 return yy_is_jam ? 0 : yy_current_state;
4468}
4469
4470#ifndef YY_NO_UNPUT
4471
4472 static void yyunput (int c, char * yy_bp )
4473{
4474 char *yy_cp;
4475
4476 yy_cp = (yy_c_buf_p);
4477
4478 /* undo effects of setting up base_yytext */
4479 *yy_cp = (yy_hold_char);
4480
4481 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4482 { /* need to shift things up to make room */
4483 /* +2 for EOB chars. */
4484 int number_to_move = (yy_n_chars) + 2;
4485 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
4486 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
4487 char *source =
4488 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
4489
4490 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4491 *--dest = *--source;
4492
4493 yy_cp += (int) (dest - source);
4494 yy_bp += (int) (dest - source);
4495 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
4496 (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
4497
4498 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
4499 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4500 }
4501
4502 *--yy_cp = (char) c;
4503
4504 if ( c == '\n' ){
4505 --base_yylineno;
4506 }
4507
4508 (yytext_ptr) = yy_bp;
4509 (yy_hold_char) = *yy_cp;
4510 (yy_c_buf_p) = yy_cp;
4511}
4512
4513#endif
4514
4515#ifndef YY_NO_INPUT
4516#ifdef __cplusplus
4517 static int yyinput (void)
4518#else
4519 static int input (void)
4520#endif
4521
4522{
4523 int c;
4524
4525 *(yy_c_buf_p) = (yy_hold_char);
4526
4527 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
4528 {
4529 /* yy_c_buf_p now points to the character we want to return.
4530 * If this occurs *before* the EOB characters, then it's a
4531 * valid NUL; if not, then we've hit the end of the buffer.
4532 */
4533 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4534 /* This was really a NUL. */
4535 *(yy_c_buf_p) = '\0';
4536
4537 else
4538 { /* need more input */
4539 int offset = (yy_c_buf_p) - (yytext_ptr);
4540 ++(yy_c_buf_p);
4541
4542 switch ( yy_get_next_buffer( ) )
4543 {
4544 case EOB_ACT_LAST_MATCH:
4545 /* This happens because yy_g_n_b()
4546 * sees that we've accumulated a
4547 * token and flags that we need to
4548 * try matching the token before
4549 * proceeding. But for input(),
4550 * there's no matching to consider.
4551 * So convert the EOB_ACT_LAST_MATCH
4552 * to EOB_ACT_END_OF_FILE.
4553 */
4554
4555 /* Reset buffer status. */
4556 base_yyrestart(base_yyin );
4557
4558 /*FALLTHROUGH*/
4559
4560 case EOB_ACT_END_OF_FILE:
4561 {
4562 if ( base_yywrap( ) )
4563 return 0;
4564
4565 if ( ! (yy_did_buffer_switch_on_eof) )
4566 YY_NEW_FILE;
4567#ifdef __cplusplus
4568 return yyinput();
4569#else
4570 return input();
4571#endif
4572 }
4573
4574 case EOB_ACT_CONTINUE_SCAN:
4575 (yy_c_buf_p) = (yytext_ptr) + offset;
4576 break;
4577 }
4578 }
4579 }
4580
4581 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
4582 *(yy_c_buf_p) = '\0'; /* preserve base_yytext */
4583 (yy_hold_char) = *++(yy_c_buf_p);
4584
4585 if ( c == '\n' )
4586
4587 base_yylineno++;
4588;
4589
4590 return c;
4591}
4592#endif /* ifndef YY_NO_INPUT */
4593
4594/** Immediately switch to a different input stream.
4595 * @param input_file A readable stream.
4596 *
4597 * @note This function does not reset the start condition to @c INITIAL .
4598 */
4599 void base_yyrestart (FILE * input_file )
4600{
4601
4602 if ( ! YY_CURRENT_BUFFER ){
4603 base_yyensure_buffer_stack ();
4604 YY_CURRENT_BUFFER_LVALUE =
4605 base_yy_create_buffer(base_yyin,YY_BUF_SIZE );
4606 }
4607
4608 base_yy_init_buffer(YY_CURRENT_BUFFER,input_file );
4609 base_yy_load_buffer_state( );
4610}
4611
4612/** Switch to a different input buffer.
4613 * @param new_buffer The new input buffer.
4614 *
4615 */
4616 void base_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
4617{
4618
4619 /* TODO. We should be able to replace this entire function body
4620 * with
4621 * base_yypop_buffer_state();
4622 * base_yypush_buffer_state(new_buffer);
4623 */
4624 base_yyensure_buffer_stack ();
4625 if ( YY_CURRENT_BUFFER == new_buffer )
4626 return;
4627
4628 if ( YY_CURRENT_BUFFER )
4629 {
4630 /* Flush out information for old buffer. */
4631 *(yy_c_buf_p) = (yy_hold_char);
4632 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4633 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4634 }
4635
4636 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4637 base_yy_load_buffer_state( );
4638
4639 /* We don't actually know whether we did this switch during
4640 * EOF (base_yywrap()) processing, but the only time this flag
4641 * is looked at is after base_yywrap() is called, so it's safe
4642 * to go ahead and always set it.
4643 */
4644 (yy_did_buffer_switch_on_eof) = 1;
4645}
4646
4647static void base_yy_load_buffer_state (void)
4648{
4649 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4650 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4651 base_yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4652 (yy_hold_char) = *(yy_c_buf_p);
4653}
4654
4655/** Allocate and initialize an input buffer state.
4656 * @param file A readable stream.
4657 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4658 *
4659 * @return the allocated buffer state.
4660 */
4661 YY_BUFFER_STATE base_yy_create_buffer (FILE * file, int size )
4662{
4663 YY_BUFFER_STATE b;
4664
4665 b = (YY_BUFFER_STATE) base_yyalloc(sizeof( struct yy_buffer_state ) );
4666 if ( ! b )
4667 YY_FATAL_ERROR( "out of dynamic memory in base_yy_create_buffer()" );
4668
4669 b->yy_buf_size = (yy_size_t)size;
4670
4671 /* yy_ch_buf has to be 2 characters longer than the size given because
4672 * we need to put in 2 end-of-buffer characters.
4673 */
4674 b->yy_ch_buf = (char *) base_yyalloc(b->yy_buf_size + 2 );
4675 if ( ! b->yy_ch_buf )
4676 YY_FATAL_ERROR( "out of dynamic memory in base_yy_create_buffer()" );
4677
4678 b->yy_is_our_buffer = 1;
4679
4680 base_yy_init_buffer(b,file );
4681
4682 return b;
4683}
4684
4685/** Destroy the buffer.
4686 * @param b a buffer created with base_yy_create_buffer()
4687 *
4688 */
4689 void base_yy_delete_buffer (YY_BUFFER_STATE b )
4690{
4691
4692 if ( ! b )
4693 return;
4694
4695 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4696 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4697
4698 if ( b->yy_is_our_buffer )
4699 base_yyfree((void *) b->yy_ch_buf );
4700
4701 base_yyfree((void *) b );
4702}
4703
4704/* Initializes or reinitializes a buffer.
4705 * This function is sometimes called more than once on the same buffer,
4706 * such as during a base_yyrestart() or at EOF.
4707 */
4708 static void base_yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
4709
4710{
4711 int oerrno = errno;
4712
4713 base_yy_flush_buffer(b );
4714
4715 b->yy_input_file = file;
4716 b->yy_fill_buffer = 1;
4717
4718 /* If b is the current buffer, then base_yy_init_buffer was _probably_
4719 * called from base_yyrestart() or through yy_get_next_buffer.
4720 * In that case, we don't want to reset the lineno or column.
4721 */
4722 if (b != YY_CURRENT_BUFFER){
4723 b->yy_bs_lineno = 1;
4724 b->yy_bs_column = 0;
4725 }
4726
4727 b->yy_is_interactive = 0;
4728
4729 errno = oerrno;
4730}
4731
4732/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4733 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4734 *
4735 */
4736 void base_yy_flush_buffer (YY_BUFFER_STATE b )
4737{
4738 if ( ! b )
4739 return;
4740
4741 b->yy_n_chars = 0;
4742
4743 /* We always need two end-of-buffer characters. The first causes
4744 * a transition to the end-of-buffer state. The second causes
4745 * a jam in that state.
4746 */
4747 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4748 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4749
4750 b->yy_buf_pos = &b->yy_ch_buf[0];
4751
4752 b->yy_at_bol = 1;
4753 b->yy_buffer_status = YY_BUFFER_NEW;
4754
4755 if ( b == YY_CURRENT_BUFFER )
4756 base_yy_load_buffer_state( );
4757}
4758
4759/** Pushes the new state onto the stack. The new state becomes
4760 * the current state. This function will allocate the stack
4761 * if necessary.
4762 * @param new_buffer The new state.
4763 *
4764 */
4765void base_yypush_buffer_state (YY_BUFFER_STATE new_buffer )
4766{
4767 if (new_buffer == NULL)
4768 return;
4769
4770 base_yyensure_buffer_stack();
4771
4772 /* This block is copied from base_yy_switch_to_buffer. */
4773 if ( YY_CURRENT_BUFFER )
4774 {
4775 /* Flush out information for old buffer. */
4776 *(yy_c_buf_p) = (yy_hold_char);
4777 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4778 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4779 }
4780
4781 /* Only push if top exists. Otherwise, replace top. */
4782 if (YY_CURRENT_BUFFER)
4783 (yy_buffer_stack_top)++;
4784 YY_CURRENT_BUFFER_LVALUE = new_buffer;
4785
4786 /* copied from base_yy_switch_to_buffer. */
4787 base_yy_load_buffer_state( );
4788 (yy_did_buffer_switch_on_eof) = 1;
4789}
4790
4791/** Removes and deletes the top of the stack, if present.
4792 * The next element becomes the new top.
4793 *
4794 */
4795void base_yypop_buffer_state (void)
4796{
4797 if (!YY_CURRENT_BUFFER)
4798 return;
4799
4800 base_yy_delete_buffer(YY_CURRENT_BUFFER );
4801 YY_CURRENT_BUFFER_LVALUE = NULL;
4802 if ((yy_buffer_stack_top) > 0)
4803 --(yy_buffer_stack_top);
4804
4805 if (YY_CURRENT_BUFFER) {
4806 base_yy_load_buffer_state( );
4807 (yy_did_buffer_switch_on_eof) = 1;
4808 }
4809}
4810
4811/* Allocates the stack if it does not exist.
4812 * Guarantees space for at least one push.
4813 */
4814static void base_yyensure_buffer_stack (void)
4815{
4816 int num_to_alloc;
4817
4818 if (!(yy_buffer_stack)) {
4819
4820 /* First allocation is just for 2 elements, since we don't know if this
4821 * scanner will even need a stack. We use 2 instead of 1 to avoid an
4822 * immediate realloc on the next call.
4823 */
4824 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
4825 (yy_buffer_stack) = (struct yy_buffer_state**)base_yyalloc
4826 (num_to_alloc * sizeof(struct yy_buffer_state*)
4827 );
4828 if ( ! (yy_buffer_stack) )
4829 YY_FATAL_ERROR( "out of dynamic memory in base_yyensure_buffer_stack()" );
4830
4831 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4832
4833 (yy_buffer_stack_max) = num_to_alloc;
4834 (yy_buffer_stack_top) = 0;
4835 return;
4836 }
4837
4838 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4839
4840 /* Increase the buffer to prepare for a possible push. */
4841 yy_size_t grow_size = 8 /* arbitrary grow size */;
4842
4843 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4844 (yy_buffer_stack) = (struct yy_buffer_state**)base_yyrealloc
4845 ((yy_buffer_stack),
4846 num_to_alloc * sizeof(struct yy_buffer_state*)
4847 );
4848 if ( ! (yy_buffer_stack) )
4849 YY_FATAL_ERROR( "out of dynamic memory in base_yyensure_buffer_stack()" );
4850
4851 /* zero only the new slots.*/
4852 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4853 (yy_buffer_stack_max) = num_to_alloc;
4854 }
4855}
4856
4857/** Setup the input buffer state to scan directly from a user-specified character buffer.
4858 * @param base the character buffer
4859 * @param size the size in bytes of the character buffer
4860 *
4861 * @return the newly allocated buffer state object.
4862 */
4863YY_BUFFER_STATE base_yy_scan_buffer (char * base, yy_size_t size )
4864{
4865 YY_BUFFER_STATE b;
4866
4867 if ( size < 2 ||
4868 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4869 base[size-1] != YY_END_OF_BUFFER_CHAR )
4870 /* They forgot to leave room for the EOB's. */
4871 return NULL;
4872
4873 b = (YY_BUFFER_STATE) base_yyalloc(sizeof( struct yy_buffer_state ) );
4874 if ( ! b )
4875 YY_FATAL_ERROR( "out of dynamic memory in base_yy_scan_buffer()" );
4876
4877 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4878 b->yy_buf_pos = b->yy_ch_buf = base;
4879 b->yy_is_our_buffer = 0;
4880 b->yy_input_file = NULL;
4881 b->yy_n_chars = b->yy_buf_size;
4882 b->yy_is_interactive = 0;
4883 b->yy_at_bol = 1;
4884 b->yy_fill_buffer = 0;
4885 b->yy_buffer_status = YY_BUFFER_NEW;
4886
4887 base_yy_switch_to_buffer(b );
4888
4889 return b;
4890}
4891
4892/** Setup the input buffer state to scan a string. The next call to base_yylex() will
4893 * scan from a @e copy of @a str.
4894 * @param yystr a NUL-terminated string to scan
4895 *
4896 * @return the newly allocated buffer state object.
4897 * @note If you want to scan bytes that may contain NUL values, then use
4898 * base_yy_scan_bytes() instead.
4899 */
4900YY_BUFFER_STATE base_yy_scan_string (yyconst char * yystr )
4901{
4902
4903 return base_yy_scan_bytes(yystr,(int) strlen(yystr) );
4904}
4905
4906/** Setup the input buffer state to scan the given bytes. The next call to base_yylex() will
4907 * scan from a @e copy of @a bytes.
4908 * @param yybytes the byte buffer to scan
4909 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4910 *
4911 * @return the newly allocated buffer state object.
4912 */
4913YY_BUFFER_STATE base_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
4914{
4915 YY_BUFFER_STATE b;
4916 char *buf;
4917 yy_size_t n;
4918 int i;
4919
4920 /* Get memory for full buffer, including space for trailing EOB's. */
4921 n = (yy_size_t) (_yybytes_len + 2);
4922 buf = (char *) base_yyalloc(n );
4923 if ( ! buf )
4924 YY_FATAL_ERROR( "out of dynamic memory in base_yy_scan_bytes()" );
4925
4926 for ( i = 0; i < _yybytes_len; ++i )
4927 buf[i] = yybytes[i];
4928
4929 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4930
4931 b = base_yy_scan_buffer(buf,n );
4932 if ( ! b )
4933 YY_FATAL_ERROR( "bad buffer in base_yy_scan_bytes()" );
4934
4935 /* It's okay to grow etc. this buffer, and we should throw it
4936 * away when we're done.
4937 */
4938 b->yy_is_our_buffer = 1;
4939
4940 return b;
4941}
4942
4943#ifndef YY_EXIT_FAILURE
4944#define YY_EXIT_FAILURE 2
4945#endif
4946
4947static void yynoreturn yy_fatal_error (yyconst char* msg )
4948{
4949 (void) fprintf( stderr, "%s\n", msg );
4950 exit( YY_EXIT_FAILURE );
4951}
4952
4953/* Redefine yyless() so it works in section 3 code. */
4954
4955#undef yyless
4956#define yyless(n) \
4957 do \
4958 { \
4959 /* Undo effects of setting up base_yytext. */ \
4960 int yyless_macro_arg = (n); \
4961 YY_LESS_LINENO(yyless_macro_arg);\
4962 base_yytext[base_yyleng] = (yy_hold_char); \
4963 (yy_c_buf_p) = base_yytext + yyless_macro_arg; \
4964 (yy_hold_char) = *(yy_c_buf_p); \
4965 *(yy_c_buf_p) = '\0'; \
4966 base_yyleng = yyless_macro_arg; \
4967 } \
4968 while ( 0 )
4969
4970/* Accessor methods (get/set functions) to struct members. */
4971
4972/** Get the current line number.
4973 *
4974 */
4975int base_yyget_lineno (void)
4976{
4977
4978 return base_yylineno;
4979}
4980
4981/** Get the input stream.
4982 *
4983 */
4984FILE *base_yyget_in (void)
4985{
4986 return base_yyin;
4987}
4988
4989/** Get the output stream.
4990 *
4991 */
4992FILE *base_yyget_out (void)
4993{
4994 return base_yyout;
4995}
4996
4997/** Get the length of the current token.
4998 *
4999 */
5000int base_yyget_leng (void)
5001{
5002 return base_yyleng;
5003}
5004
5005/** Get the current token.
5006 *
5007 */
5008
5009char *base_yyget_text (void)
5010{
5011 return base_yytext;
5012}
5013
5014/** Set the current line number.
5015 * @param _line_number line number
5016 *
5017 */
5018void base_yyset_lineno (int _line_number )
5019{
5020
5021 base_yylineno = _line_number;
5022}
5023
5024/** Set the input stream. This does not discard the current
5025 * input buffer.
5026 * @param _in_str A readable stream.
5027 *
5028 * @see base_yy_switch_to_buffer
5029 */
5030void base_yyset_in (FILE * _in_str )
5031{
5032 base_yyin = _in_str ;
5033}
5034
5035void base_yyset_out (FILE * _out_str )
5036{
5037 base_yyout = _out_str ;
5038}
5039
5040int base_yyget_debug (void)
5041{
5042 return base_yy_flex_debug;
5043}
5044
5045void base_yyset_debug (int _bdebug )
5046{
5047 base_yy_flex_debug = _bdebug ;
5048}
5049
5050static int yy_init_globals (void)
5051{
5052 /* Initialization is the same as for the non-reentrant scanner.
5053 * This function is called from base_yylex_destroy(), so don't allocate here.
5054 */
5055
5056 /* We do not touch base_yylineno unless the option is enabled. */
5057 base_yylineno = 1;
5058
5059 (yy_buffer_stack) = NULL;
5060 (yy_buffer_stack_top) = 0;
5061 (yy_buffer_stack_max) = 0;
5062 (yy_c_buf_p) = NULL;
5063 (yy_init) = 0;
5064 (yy_start) = 0;
5065
5066/* Defined in main.c */
5067#ifdef YY_STDINIT
5068 base_yyin = stdin;
5069 base_yyout = stdout;
5070#else
5071 base_yyin = NULL;
5072 base_yyout = NULL;
5073#endif
5074
5075 /* For future reference: Set errno on error, since we are called by
5076 * base_yylex_init()
5077 */
5078 return 0;
5079}
5080
5081/* base_yylex_destroy is for both reentrant and non-reentrant scanners. */
5082int base_yylex_destroy (void)
5083{
5084
5085 /* Pop the buffer stack, destroying each element. */
5086 while(YY_CURRENT_BUFFER){
5087 base_yy_delete_buffer(YY_CURRENT_BUFFER );
5088 YY_CURRENT_BUFFER_LVALUE = NULL;
5089 base_yypop_buffer_state();
5090 }
5091
5092 /* Destroy the stack itself. */
5093 base_yyfree((yy_buffer_stack) );
5094 (yy_buffer_stack) = NULL;
5095
5096 /* Reset the globals. This is important in a non-reentrant scanner so the next time
5097 * base_yylex() is called, initialization will occur. */
5098 yy_init_globals( );
5099
5100 return 0;
5101}
5102
5103/*
5104 * Internal utility routines.
5105 */
5106
5107#ifndef yytext_ptr
5108static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
5109{
5110
5111 int i;
5112 for ( i = 0; i < n; ++i )
5113 s1[i] = s2[i];
5114}
5115#endif
5116
5117#ifdef YY_NEED_STRLEN
5118static int yy_flex_strlen (yyconst char * s )
5119{
5120 int n;
5121 for ( n = 0; s[n]; ++n )
5122 ;
5123
5124 return n;
5125}
5126#endif
5127
5128void *base_yyalloc (yy_size_t size )
5129{
5130 return malloc(size);
5131}
5132
5133void *base_yyrealloc (void * ptr, yy_size_t size )
5134{
5135
5136 /* The cast to (char *) in the following accommodates both
5137 * implementations that use char* generic pointers, and those
5138 * that use void* generic pointers. It works with the latter
5139 * because both ANSI C and C++ allow castless assignment from
5140 * any pointer type to void*, and deal with argument conversions
5141 * as though doing an assignment.
5142 */
5143 return realloc(ptr, size);
5144}
5145
5146void base_yyfree (void * ptr )
5147{
5148 free( (char *) ptr ); /* see base_yyrealloc() for (char *) cast */
5149}
5150
5151#define YYTABLES_NAME "yytables"
5152
5153#line 1415 "pgc.l"
5154
5155
5156
5157/* LCOV_EXCL_STOP */
5158
5159void
5160lex_init(void)
5161{
5162 braces_open = 0;
5163 parenths_open = 0;
5164 current_function = NULL;
5165
5166 preproc_tos = 0;
5167 base_yylineno = 1;
5168 ifcond = true;
5169 stacked_if_value[preproc_tos].condition = ifcond;
5170 stacked_if_value[preproc_tos].else_branch = false;
5171
5172 /* initialize literal buffer to a reasonable but expansible size */
5173 if (literalbuf == NULL)
5174 {
5175 literalalloc = 1024;
5176 literalbuf = (char *) mm_alloc(literalalloc);
5177 }
5178 startlit();
5179
5180 BEGIN(C);
5181}
5182
5183static void
5184addlit(char *ytext, int yleng)
5185{
5186 /* enlarge buffer if needed */
5187 if ((literallen+yleng) >= literalalloc)
5188 {
5189 do
5190 literalalloc *= 2;
5191 while ((literallen+yleng) >= literalalloc);
5192 literalbuf = (char *) realloc(literalbuf, literalalloc);
5193 }
5194 /* append new data, add trailing null */
5195 memcpy(literalbuf+literallen, ytext, yleng);
5196 literallen += yleng;
5197 literalbuf[literallen] = '\0';
5198}
5199
5200static void
5201addlitchar(unsigned char ychar)
5202{
5203 /* enlarge buffer if needed */
5204 if ((literallen+1) >= literalalloc)
5205 {
5206 literalalloc *= 2;
5207 literalbuf = (char *) realloc(literalbuf, literalalloc);
5208 }
5209 /* append new data, add trailing null */
5210 literalbuf[literallen] = ychar;
5211 literallen += 1;
5212 literalbuf[literallen] = '\0';
5213}
5214
5215/*
5216 * Process {integer}. Note this will also do the right thing with {decimal},
5217 * ie digits and a decimal point.
5218 */
5219static int
5220process_integer_literal(const char *token, YYSTYPE *lval)
5221{
5222 int val;
5223 char *endptr;
5224
5225 errno = 0;
5226 val = strtoint(token, &endptr, 10);
5227 if (*endptr != '\0' || errno == ERANGE)
5228 {
5229 /* integer too large (or contains decimal pt), treat it as a float */
5230 lval->str = mm_strdup(token);
5231 return FCONST;
5232 }
5233 lval->ival = val;
5234 return ICONST;
5235}
5236
5237static void
5238parse_include(void)
5239{
5240 /* got the include file name */
5241 struct _yy_buffer *yb;
5242 struct _include_path *ip;
5243 char inc_file[MAXPGPATH];
5244 unsigned int i;
5245
5246 yb = mm_alloc(sizeof(struct _yy_buffer));
5247
5248 yb->buffer = YY_CURRENT_BUFFER;
5249 yb->lineno = base_yylineno;
5250 yb->filename = input_filename;
5251 yb->next = yy_buffer;
5252
5253 yy_buffer = yb;
5254
5255 /*
5256 * skip the ";" if there is one and trailing whitespace. Note that
5257 * base_yytext contains at least one non-space character plus the ";"
5258 */
5259 for (i = strlen(base_yytext)-2;
5260 i > 0 && ecpg_isspace(base_yytext[i]);
5261 i--)
5262 ;
5263
5264 if (base_yytext[i] == ';')
5265 i--;
5266
5267 base_yytext[i+1] = '\0';
5268
5269 base_yyin = NULL;
5270
5271 /* If file name is enclosed in '"' remove these and look only in '.' */
5272 /* Informix does look into all include paths though, except filename starts with '/' */
5273 if (base_yytext[0] == '"' && base_yytext[i] == '"' &&
5274 ((compat != ECPG_COMPAT_INFORMIX && compat != ECPG_COMPAT_INFORMIX_SE) || base_yytext[1] == '/'))
5275 {
5276 base_yytext[i] = '\0';
5277 memmove(base_yytext, base_yytext+1, strlen(base_yytext));
5278
5279 strlcpy(inc_file, base_yytext, sizeof(inc_file));
5280 base_yyin = fopen(inc_file, "r");
5281 if (!base_yyin)
5282 {
5283 if (strlen(inc_file) <= 2 || strcmp(inc_file + strlen(inc_file) - 2, ".h") != 0)
5284 {
5285 strcat(inc_file, ".h");
5286 base_yyin = fopen(inc_file, "r");
5287 }
5288 }
5289
5290 }
5291 else
5292 {
5293 if ((base_yytext[0] == '"' && base_yytext[i] == '"') || (base_yytext[0] == '<' && base_yytext[i] == '>'))
5294 {
5295 base_yytext[i] = '\0';
5296 memmove(base_yytext, base_yytext+1, strlen(base_yytext));
5297 }
5298
5299 for (ip = include_paths; base_yyin == NULL && ip != NULL; ip = ip->next)
5300 {
5301 if (strlen(ip->path) + strlen(base_yytext) + 4 > MAXPGPATH)
5302 {
5303 fprintf(stderr, _("Error: include path \"%s/%s\" is too long on line %d, skipping\n"), ip->path, base_yytext, base_yylineno);
5304 continue;
5305 }
5306 snprintf (inc_file, sizeof(inc_file), "%s/%s", ip->path, base_yytext);
5307 base_yyin = fopen(inc_file, "r");
5308 if (!base_yyin)
5309 {
5310 if (strcmp(inc_file + strlen(inc_file) - 2, ".h") != 0)
5311 {
5312 strcat(inc_file, ".h");
5313 base_yyin = fopen( inc_file, "r" );
5314 }
5315 }
5316 /* if the command was "include_next" we have to disregard the first hit */
5317 if (base_yyin && include_next)
5318 {
5319 fclose (base_yyin);
5320 base_yyin = NULL;
5321 include_next = false;
5322 }
5323 }
5324 }
5325 if (!base_yyin)
5326 mmfatal(NO_INCLUDE_FILE, "could not open include file \"%s\" on line %d", base_yytext, base_yylineno);
5327
5328 input_filename = mm_strdup(inc_file);
5329 base_yy_switch_to_buffer(base_yy_create_buffer(base_yyin,YY_BUF_SIZE ));
5330 base_yylineno = 1;
5331 output_line_number();
5332
5333 BEGIN(C);
5334}
5335
5336/*
5337 * ecpg_isspace() --- return true if flex scanner considers char whitespace
5338 */
5339static bool
5340ecpg_isspace(char ch)
5341{
5342 if (ch == ' ' ||
5343 ch == '\t' ||
5344 ch == '\n' ||
5345 ch == '\r' ||
5346 ch == '\f')
5347 return true;
5348 return false;
5349}
5350
5351static bool isdefine(void)
5352{
5353 struct _defines *ptr;
5354
5355 /* is it a define? */
5356 for (ptr = defines; ptr; ptr = ptr->next)
5357 {
5358 if (strcmp(base_yytext, ptr->olddef) == 0 && ptr->used == NULL)
5359 {
5360 struct _yy_buffer *yb;
5361
5362 yb = mm_alloc(sizeof(struct _yy_buffer));
5363
5364 yb->buffer = YY_CURRENT_BUFFER;
5365 yb->lineno = base_yylineno;
5366 yb->filename = mm_strdup(input_filename);
5367 yb->next = yy_buffer;
5368
5369 ptr->used = yy_buffer = yb;
5370
5371 base_yy_scan_string(ptr->newdef);
5372 return true;
5373 }
5374 }
5375
5376 return false;
5377}
5378
5379static bool isinformixdefine(void)
5380{
5381 const char *new = NULL;
5382
5383 if (strcmp(base_yytext, "dec_t") == 0)
5384 new = "decimal";
5385 else if (strcmp(base_yytext, "intrvl_t") == 0)
5386 new = "interval";
5387 else if (strcmp(base_yytext, "dtime_t") == 0)
5388 new = "timestamp";
5389
5390 if (new)
5391 {
5392 struct _yy_buffer *yb;
5393
5394 yb = mm_alloc(sizeof(struct _yy_buffer));
5395
5396 yb->buffer = YY_CURRENT_BUFFER;
5397 yb->lineno = base_yylineno;
5398 yb->filename = mm_strdup(input_filename);
5399 yb->next = yy_buffer;
5400 yy_buffer = yb;
5401
5402 base_yy_scan_string(new);
5403 return true;
5404 }
5405
5406 return false;
5407}
5408
5409