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