xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/asn1/lex.c (revision a04395531661c5e8d314125d5ae77d4cbedd5d73)
1 /*	$NetBSD: lex.c,v 1.2 2019/12/15 22:50:47 christos Exp $	*/
2 
3 
4 #line 3 "lex.c"
5 
6 #define  YY_INT_ALIGNED short int
7 
8 /* A lexical scanner generated by flex */
9 
10 #define FLEX_SCANNER
11 #define YY_FLEX_MAJOR_VERSION 2
12 #define YY_FLEX_MINOR_VERSION 5
13 #define YY_FLEX_SUBMINOR_VERSION 35
14 #if YY_FLEX_SUBMINOR_VERSION > 0
15 #define FLEX_BETA
16 #endif
17 
18 /* First, we deal with  platform-specific or compiler-specific issues. */
19 
20 /* begin standard C headers. */
21 #include <stdio.h>
22 #include <string.h>
23 #include <errno.h>
24 #include <stdlib.h>
25 
26 /* end standard C headers. */
27 
28 /* flex integer type definitions */
29 
30 #ifndef FLEXINT_H
31 #define FLEXINT_H
32 
33 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
34 
35 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
36 
37 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
38  * if you want the limit (max/min) macros for int types.
39  */
40 #ifndef __STDC_LIMIT_MACROS
41 #define __STDC_LIMIT_MACROS 1
42 #endif
43 
44 #include <inttypes.h>
45 typedef int8_t flex_int8_t;
46 typedef uint8_t flex_uint8_t;
47 typedef int16_t flex_int16_t;
48 typedef uint16_t flex_uint16_t;
49 typedef int32_t flex_int32_t;
50 typedef uint32_t flex_uint32_t;
51 typedef uint64_t flex_uint64_t;
52 #else
53 typedef signed char flex_int8_t;
54 typedef short int flex_int16_t;
55 typedef int flex_int32_t;
56 typedef unsigned char flex_uint8_t;
57 typedef unsigned short int flex_uint16_t;
58 typedef unsigned int flex_uint32_t;
59 #endif /* ! C99 */
60 
61 /* Limits of integral types. */
62 #ifndef INT8_MIN
63 #define INT8_MIN               (-128)
64 #endif
65 #ifndef INT16_MIN
66 #define INT16_MIN              (-32767-1)
67 #endif
68 #ifndef INT32_MIN
69 #define INT32_MIN              (-2147483647-1)
70 #endif
71 #ifndef INT8_MAX
72 #define INT8_MAX               (127)
73 #endif
74 #ifndef INT16_MAX
75 #define INT16_MAX              (32767)
76 #endif
77 #ifndef INT32_MAX
78 #define INT32_MAX              (2147483647)
79 #endif
80 #ifndef UINT8_MAX
81 #define UINT8_MAX              (255U)
82 #endif
83 #ifndef UINT16_MAX
84 #define UINT16_MAX             (65535U)
85 #endif
86 #ifndef UINT32_MAX
87 #define UINT32_MAX             (4294967295U)
88 #endif
89 
90 #endif /* ! FLEXINT_H */
91 
92 #ifdef __cplusplus
93 
94 /* The "const" storage-class-modifier is valid. */
95 #define YY_USE_CONST
96 
97 #else	/* ! __cplusplus */
98 
99 /* C99 requires __STDC__ to be defined as 1. */
100 #if defined (__STDC__)
101 
102 #define YY_USE_CONST
103 
104 #endif	/* defined (__STDC__) */
105 #endif	/* ! __cplusplus */
106 
107 #ifdef YY_USE_CONST
108 #define yyconst const
109 #else
110 #define yyconst
111 #endif
112 
113 /* Returned upon end-of-file. */
114 #define YY_NULL 0
115 
116 /* Promotes a possibly negative, possibly signed char to an unsigned
117  * integer for use as an array index.  If the signed char is negative,
118  * we want to instead treat it as an 8-bit unsigned char, hence the
119  * double cast.
120  */
121 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
122 
123 /* Enter a start condition.  This macro really ought to take a parameter,
124  * but we do it the disgusting crufty way forced on us by the ()-less
125  * definition of BEGIN.
126  */
127 #define BEGIN (yy_start) = 1 + 2 *
128 
129 /* Translate the current start state into a value that can be later handed
130  * to BEGIN to return to the state.  The YYSTATE alias is for lex
131  * compatibility.
132  */
133 #define YY_START (((yy_start) - 1) / 2)
134 #define YYSTATE YY_START
135 
136 /* Action number for EOF rule of a given start state. */
137 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
138 
139 /* Special action meaning "start processing a new file". */
140 #define YY_NEW_FILE yyrestart(yyin  )
141 
142 #define YY_END_OF_BUFFER_CHAR 0
143 
144 /* Size of default input buffer. */
145 #ifndef YY_BUF_SIZE
146 #define YY_BUF_SIZE 16384
147 #endif
148 
149 /* The state buf must be large enough to hold one state per character in the main buffer.
150  */
151 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
152 
153 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
154 #define YY_TYPEDEF_YY_BUFFER_STATE
155 typedef struct yy_buffer_state *YY_BUFFER_STATE;
156 #endif
157 
158 #ifndef YY_TYPEDEF_YY_SIZE_T
159 #define YY_TYPEDEF_YY_SIZE_T
160 typedef size_t yy_size_t;
161 #endif
162 
163 extern yy_size_t yyleng;
164 
165 extern FILE *yyin, *yyout;
166 
167 #define EOB_ACT_CONTINUE_SCAN 0
168 #define EOB_ACT_END_OF_FILE 1
169 #define EOB_ACT_LAST_MATCH 2
170 
171     #define YY_LESS_LINENO(n)
172 
173 /* Return all but the first "n" matched characters back to the input stream. */
174 #define yyless(n) \
175 	do \
176 		{ \
177 		/* Undo effects of setting up yytext. */ \
178         int yyless_macro_arg = (n); \
179         YY_LESS_LINENO(yyless_macro_arg);\
180 		*yy_cp = (yy_hold_char); \
181 		YY_RESTORE_YY_MORE_OFFSET \
182 		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
183 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
184 		} \
185 	while ( 0 )
186 
187 #define unput(c) yyunput( c, (yytext_ptr)  )
188 
189 #ifndef YY_STRUCT_YY_BUFFER_STATE
190 #define YY_STRUCT_YY_BUFFER_STATE
191 struct yy_buffer_state
192 	{
193 	FILE *yy_input_file;
194 
195 	char *yy_ch_buf;		/* input buffer */
196 	char *yy_buf_pos;		/* current position in input buffer */
197 
198 	/* Size of input buffer in bytes, not including room for EOB
199 	 * characters.
200 	 */
201 	yy_size_t yy_buf_size;
202 
203 	/* Number of characters read into yy_ch_buf, not including EOB
204 	 * characters.
205 	 */
206 	yy_size_t yy_n_chars;
207 
208 	/* Whether we "own" the buffer - i.e., we know we created it,
209 	 * and can realloc() it to grow it, and should free() it to
210 	 * delete it.
211 	 */
212 	int yy_is_our_buffer;
213 
214 	/* Whether this is an "interactive" input source; if so, and
215 	 * if we're using stdio for input, then we want to use getc()
216 	 * instead of fread(), to make sure we stop fetching input after
217 	 * each newline.
218 	 */
219 	int yy_is_interactive;
220 
221 	/* Whether we're considered to be at the beginning of a line.
222 	 * If so, '^' rules will be active on the next match, otherwise
223 	 * not.
224 	 */
225 	int yy_at_bol;
226 
227     int yy_bs_lineno; /**< The line count. */
228     int yy_bs_column; /**< The column count. */
229 
230 	/* Whether to try to fill the input buffer when we reach the
231 	 * end of it.
232 	 */
233 	int yy_fill_buffer;
234 
235 	int yy_buffer_status;
236 
237 #define YY_BUFFER_NEW 0
238 #define YY_BUFFER_NORMAL 1
239 	/* When an EOF's been seen but there's still some text to process
240 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
241 	 * shouldn't try reading from the input source any more.  We might
242 	 * still have a bunch of tokens to match, though, because of
243 	 * possible backing-up.
244 	 *
245 	 * When we actually see the EOF, we change the status to "new"
246 	 * (via yyrestart()), so that the user can continue scanning by
247 	 * just pointing yyin at a new input file.
248 	 */
249 #define YY_BUFFER_EOF_PENDING 2
250 
251 	};
252 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
253 
254 /* Stack of input buffers. */
255 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
256 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
257 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
258 
259 /* We provide macros for accessing buffer states in case in the
260  * future we want to put the buffer states in a more general
261  * "scanner state".
262  *
263  * Returns the top of the stack, or NULL.
264  */
265 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
266                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
267                           : NULL)
268 
269 /* Same as previous macro, but useful when we know that the buffer stack is not
270  * NULL or when we need an lvalue. For internal use only.
271  */
272 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
273 
274 /* yy_hold_char holds the character lost when yytext is formed. */
275 static char yy_hold_char;
276 static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
277 yy_size_t yyleng;
278 
279 /* Points to current character in buffer. */
280 static char *yy_c_buf_p = (char *) 0;
281 static int yy_init = 0;		/* whether we need to initialize */
282 static int yy_start = 0;	/* start state number */
283 
284 /* Flag which is used to allow yywrap()'s to do buffer switches
285  * instead of setting up a fresh yyin.  A bit of a hack ...
286  */
287 static int yy_did_buffer_switch_on_eof;
288 
289 void yyrestart (FILE *input_file  );
290 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
291 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
292 void yy_delete_buffer (YY_BUFFER_STATE b  );
293 void yy_flush_buffer (YY_BUFFER_STATE b  );
294 void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
295 void yypop_buffer_state (void );
296 
297 static void yyensure_buffer_stack (void );
298 static void yy_load_buffer_state (void );
299 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
300 
301 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
302 
303 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
304 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
305 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
306 
307 void *yyalloc (yy_size_t  );
308 void *yyrealloc (void *,yy_size_t  );
309 void yyfree (void *  );
310 
311 #define yy_new_buffer yy_create_buffer
312 
313 #define yy_set_interactive(is_interactive) \
314 	{ \
315 	if ( ! YY_CURRENT_BUFFER ){ \
316         yyensure_buffer_stack (); \
317 		YY_CURRENT_BUFFER_LVALUE =    \
318             yy_create_buffer(yyin,YY_BUF_SIZE ); \
319 	} \
320 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
321 	}
322 
323 #define yy_set_bol(at_bol) \
324 	{ \
325 	if ( ! YY_CURRENT_BUFFER ){\
326         yyensure_buffer_stack (); \
327 		YY_CURRENT_BUFFER_LVALUE =    \
328             yy_create_buffer(yyin,YY_BUF_SIZE ); \
329 	} \
330 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
331 	}
332 
333 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
334 
335 /* Begin user sect3 */
336 
337 typedef unsigned char YY_CHAR;
338 
339 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
340 
341 typedef int yy_state_type;
342 
343 extern int yylineno;
344 
345 int yylineno = 1;
346 
347 extern char *yytext;
348 #define yytext_ptr yytext
349 
350 static yy_state_type yy_get_previous_state (void );
351 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
352 static int yy_get_next_buffer (void );
353 static void yy_fatal_error (yyconst char msg[]  );
354 
355 /* Done after the current pattern has been matched and before the
356  * corresponding action - sets up yytext.
357  */
358 #define YY_DO_BEFORE_ACTION \
359 	(yytext_ptr) = yy_bp; \
360 	yyleng = (yy_size_t) (yy_cp - yy_bp); \
361 	(yy_hold_char) = *yy_cp; \
362 	*yy_cp = '\0'; \
363 	(yy_c_buf_p) = yy_cp;
364 
365 #define YY_NUM_RULES 95
366 #define YY_END_OF_BUFFER 96
367 /* This struct is not used in this scanner,
368    but its presence is necessary. */
369 struct yy_trans_info
370 	{
371 	flex_int32_t yy_verify;
372 	flex_int32_t yy_nxt;
373 	};
374 static yyconst flex_int16_t yy_accept[568] =
375     {   0,
376         0,    0,   96,   94,   90,   91,   87,   81,   81,   94,
377        94,   88,   88,   94,   89,   89,   89,   89,   89,   89,
378        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
379        89,   89,   89,   82,   83,   85,   88,   88,   93,   86,
380         0,    0,   89,   89,   89,   89,   89,   89,   89,   89,
381        89,   10,   89,   89,   89,   89,   89,   89,   89,   89,
382        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
383        89,   89,   89,   89,   51,   89,   89,   89,   89,   89,
384        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
385        89,   89,   89,   89,   89,   89,   89,   92,   88,   84,
386 
387        89,    3,   89,   89,   89,    7,   89,   89,   89,   89,
388        89,   89,   89,   89,   89,   89,   22,   89,   89,   89,
389        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
390        89,   89,   44,   45,   89,   89,   89,   89,   89,   89,
391        89,   55,   89,   89,   89,   89,   89,   89,   89,   63,
392        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
393        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
394        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
395        89,   89,   89,   89,   89,   89,   89,   89,   30,   89,
396        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
397 
398        47,   89,   89,   89,   89,   89,   89,   89,   89,   89,
399        89,   60,   89,   89,   64,   89,   89,   89,   68,   69,
400        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
401        80,   89,   89,   89,   89,    6,   89,   89,   89,   89,
402        13,   89,   89,   89,   89,   89,   89,   89,   89,   89,
403        89,   89,   89,   89,   29,   89,   89,   89,   89,   89,
404        89,   89,   89,   89,   89,   89,   89,   89,   89,   50,
405        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
406        89,   89,   89,   89,   72,   89,   89,   89,   89,   89,
407        89,   89,    1,   89,   89,   89,   89,   89,   89,   12,
408 
409        89,   89,   89,   89,   89,   89,   89,   89,   24,   89,
410        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
411        89,   89,   89,   89,   89,   89,   89,   49,   89,   89,
412        89,   89,   89,   89,   89,   89,   89,   65,   66,   89,
413        89,   89,   73,   89,   89,   89,   89,   89,   89,   89,
414        89,   89,   89,    9,   89,   89,   89,   89,   18,   89,
415        89,   21,   89,   89,   26,   89,   89,   89,   89,   89,
416        89,   89,   37,   38,   89,   89,   41,   89,   89,   89,
417        89,   89,   89,   54,   89,   57,   58,   89,   89,   89,
418        89,   89,   89,   89,   75,   89,   89,   89,   89,   89,
419 
420        89,   89,   89,   89,   89,   89,   89,   89,   20,   89,
421        25,   89,   28,   89,   89,   89,   89,   89,   36,   39,
422        40,   89,   89,   89,   89,   52,   89,   89,   89,   89,
423        62,   89,   89,   89,   89,   89,   89,   89,   89,   89,
424        89,    5,    8,   11,   14,   89,   89,   89,   89,   89,
425        89,   89,   89,   34,   89,   89,   89,   89,   89,   89,
426        89,   89,   89,   67,   89,   89,   74,   89,   89,   89,
427        89,   89,   89,   15,   89,   17,   89,   23,   89,   89,
428        89,   89,   35,   89,   89,   89,   89,   89,   89,   89,
429        89,   89,   89,   76,   89,   89,   89,   89,    4,   16,
430 
431        19,   89,   89,   89,   89,   89,   89,   89,   89,   89,
432        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
433        89,   89,   89,   42,   43,   89,   89,   89,   89,   89,
434        61,   89,   89,   89,   89,   89,   89,   27,   31,   89,
435        33,   89,   48,   89,   56,   89,   89,   71,   89,   89,
436        79,   89,   89,   46,   89,   89,   89,   89,   78,    2,
437        32,   89,   59,   70,   77,   53,    0
438     } ;
439 
440 static yyconst flex_int32_t yy_ec[256] =
441     {   0,
442         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
443         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
444         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
445         1,    2,    1,    4,    1,    1,    1,    1,    1,    5,
446         5,    6,    1,    5,    7,    8,    9,   10,   11,   12,
447        12,   13,   14,   15,   12,   16,   12,   17,    5,    1,
448        18,    1,    1,    1,   19,   20,   21,   22,   23,   24,
449        25,   26,   27,   28,   29,   30,   31,   32,   33,   34,
450        35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
451        45,    1,   46,    1,   47,    1,   48,   49,   50,   51,
452 
453        52,   53,   54,   55,   56,   57,   29,   58,   59,   60,
454        61,   62,   29,   63,   64,   65,   66,   67,   29,   68,
455        29,   69,    5,    5,    5,    1,    1,    1,    1,    1,
456         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
457         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
458         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
459         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
460         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
461         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
462         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
463 
464         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
465         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
466         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
467         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
468         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
469         1,    1,    1,    1,    1
470     } ;
471 
472 static yyconst flex_int32_t yy_meta[70] =
473     {   0,
474         1,    1,    1,    1,    1,    1,    2,    1,    1,    3,
475         3,    3,    3,    3,    3,    3,    1,    1,    3,    3,
476         3,    3,    3,    3,    2,    2,    2,    2,    2,    2,
477         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
478         2,    2,    2,    2,    1,    1,    2,    3,    3,    3,
479         3,    3,    3,    2,    2,    2,    2,    2,    2,    2,
480         2,    2,    2,    2,    2,    2,    2,    2,    2
481     } ;
482 
483 static yyconst flex_int16_t yy_base[570] =
484     {   0,
485         0,    0,  636,  637,  637,  637,  637,  637,   63,  627,
486       628,   70,   77,  616,   74,   72,   76,  609,   65,   81,
487        49,    0,   92,   91,   32,  101,   97,  608,  103,  113,
488        99,  574,  602,  637,  637,  637,  156,  163,  620,  637,
489         0,  609,    0,  589,  595,  590,  585,  597,  583,  586,
490       586,    0,  101,  599,  108,  593,  596,  122,  124,  585,
491       581,  553,  564,  597,  587,  575,  115,  575,  565,  574,
492       575,  545,  575,  564,    0,  563,  543,  561,  558,  558,
493       124,  540,  161,  119,  551,  558,  561,  581,  566,  551,
494       555,  530,  560,  160,  530,   91,  547,  637,    0,  637,
495 
496       125,    0,  554,  550,  555,    0,  544,  550,  543,  551,
497       540,  542,  145,  166,  552,  541,    0,  542,  549,  156,
498       548,  533,  538,  516,  505,  529,  533,  157,  534,  525,
499       539,  546,    0,  521,  529,  506,  534,  533,  528,  502,
500       515,    0,  515,  514,  510,  489,  518,  528,  507,    0,
501       522,  517,  505,  505,  504,  517,  516,  486,  159,  499,
502       520,  468,  482,  477,  506,  499,  494,  502,  497,  495,
503       461,  502,  505,  502,  485,  488,  482,  500,  479,  485,
504       494,  493,  491,  479,  485,  475,  164,  487,    0,  446,
505       453,  442,  468,  478,  468,  464,  483,  170,  488,  463,
506 
507         0,  436,  477,  459,  463,  445,  471,  486,  469,  472,
508       425,    0,  451,  465,    0,  455,  467,  420,    0,    0,
509       477,  418,  450,  442,  457,  423,  441,  425,  415,  426,
510         0,  436,  454,  451,  452,    0,  407,  450,  447,  444,
511         0,  434,  429,  437,  433,  435,  439,  437,  423,  420,
512       436,  418,  418,  422,    0,  405,  396,  388,  423,  180,
513       411,  426,  415,  423,  408,  429,  436,  386,  403,    0,
514       408,  374,  402,  410,  404,  397,  386,  406,  400,  406,
515       388,  366,  401,  375,    0,  403,  389,  365,  358,  359,
516       356,  362,    0,  398,  399,  379,  360,  383,  376,    0,
517 
518       390,  393,  379,  372,  371,  385,  385,  387,    0,  378,
519       367,  376,  383,  343,  350,  343,  374,  370,  374,  358,
520       371,  372,  356,  368,  353,  362,  338,    0,  368,  364,
521       353,  352,  345,  359,  332,  340,  358,    0,    0,  322,
522       355,  308,    0,  338,  322,  310,  308,  319,  318,  331,
523       330,  340,  306,    0,  342,  332,  336,  335,    0,  334,
524       338,    0,  321,  320,    0,  337,  326,  151,  318,  294,
525       326,  314,    0,    0,  314,  327,    0,  328,  283,  315,
526       309,  315,  292,    0,  319,    0,    0,  284,  318,  317,
527       279,  315,  300,  317,    0,  279,  286,  265,  295,  324,
528 
529       303,  308,  274,  291,  288,  293,  292,  290,    0,  299,
530         0,  294,    0,  255,  250,  253,  263,  293,    0,    0,
531         0,  277,  251,  289,  247,    0,  247,  283,  257,  261,
532         0,  253,  274,  240,  274,  243,  244,  264,  235,  262,
533       265,    0,    0,    0,  260,  273,  270,  262,  271,  262,
534       228,  238,  226,    0,  252,  260,  230,  258,  221,  233,
535       250,  244,  247,    0,  241,  215,    0,  223,  239,  210,
536       211,  230,  240,    0,  249,    0,  233,    0,  242,  212,
537       216,  210,    0,  232,  204,  231,  206,  198,  233,  194,
538       231,  230,  200,    0,  190,  191,  197,  220,    0,    0,
539 
540         0,  213,  190,  211,  188,  215,  192,  218,  184,  187,
541       204,  178,  218,  215,  178,  174,  180,  175,  196,  190,
542       178,  175,  176,    0,    0,  191,  174,  165,  180,  166,
543         0,  194,  166,  163,  158,  163,  197,    0,    0,  156,
544         0,  171,    0,  148,    0,  152,  188,    0,  150,  155,
545         0,  166,  153,    0,  143,  148,  162,  143,    0,    0,
546         0,  101,    0,    0,    0,    0,  637,  223,   69
547     } ;
548 
549 static yyconst flex_int16_t yy_def[570] =
550     {   0,
551       567,    1,  567,  567,  567,  567,  567,  567,  567,  567,
552       567,  567,  567,  567,  568,  568,  568,  568,  568,  568,
553       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
554       568,  568,  568,  567,  567,  567,  567,  567,  567,  567,
555       569,  567,  568,  568,  568,  568,  568,  568,  568,  568,
556       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
557       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
558       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
559       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
560       568,  568,  568,  568,  568,  568,  568,  567,  569,  567,
561 
562       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
563       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
564       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
565       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
566       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
567       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
568       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
569       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
570       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
571       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
572 
573       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
574       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
575       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
576       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
577       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
578       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
579       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
580       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
581       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
582       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
583 
584       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
585       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
586       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
587       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
588       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
589       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
590       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
591       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
592       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
593       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
594 
595       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
596       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
597       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
598       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
599       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
600       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
601       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
602       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
603       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
604       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
605 
606       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
607       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
608       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
609       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
610       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
611       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
612       568,  568,  568,  568,  568,  568,    0,  567,  567
613     } ;
614 
615 static yyconst flex_int16_t yy_nxt[707] =
616     {   0,
617         4,    5,    6,    7,    8,    4,    9,   10,   11,   12,
618        13,   13,   13,   13,   13,   13,   14,    4,   15,   16,
619        17,   18,   19,   20,   21,   22,   23,   22,   22,   22,
620        24,   25,   26,   27,   22,   28,   29,   30,   31,   32,
621        33,   22,   22,   22,   34,   35,    4,   22,   22,   22,
622        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
623        22,   22,   22,   22,   22,   22,   22,   22,   22,   36,
624        71,   99,   37,   38,   38,   38,   38,   38,   38,   38,
625        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
626        38,   38,   38,   44,   48,   57,   58,   72,   49,   60,
627 
628        62,   53,   50,   45,   51,   54,   59,   46,   55,   69,
629        64,   63,   47,   65,   52,   78,   61,   70,   79,  109,
630        73,   74,   66,   67,   75,   84,   80,   88,   68,   85,
631        93,   89,   81,  110,   76,  129,   94,   41,  112,  113,
632        86,  163,  116,  117,  119,   87,  144,  166,   90,   77,
633       145,  130,  131,  149,  164,   91,  150,  120,   95,   82,
634       118,  121,  167,  566,   92,   38,   38,   38,   38,   38,
635        38,   38,   38,   38,   38,   38,   38,   38,   38,  147,
636       160,  177,  178,  161,  179,  185,  194,  414,  186,  195,
637       148,  223,  180,  224,  264,  253,  565,  564,  225,  254,
638 
639       318,  563,  319,  562,  561,  265,  415,  560,  559,  558,
640       557,  556,  555,  554,  553,  552,  551,  550,  549,  548,
641       547,  546,  545,   41,   43,   43,  544,  543,  542,  541,
642       540,  539,  538,  537,  536,  535,  534,  533,  532,  531,
643       530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
644       520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
645       510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
646       500,  499,  498,  497,  496,  495,  494,  493,  492,  491,
647       490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
648       480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
649 
650       470,  469,  468,  467,  466,  465,  464,  463,  462,  461,
651       460,  459,  458,  457,  456,  455,  454,  453,  452,  451,
652       450,  449,  448,  447,  446,  445,  444,  443,  442,  441,
653       440,  439,  438,  437,  436,  435,  434,  433,  432,  431,
654       430,  429,  428,  427,  426,  425,  424,  423,  422,  421,
655       420,  419,  418,  417,  416,  413,  412,  411,  410,  409,
656       408,  407,  406,  405,  404,  403,  402,  401,  400,  399,
657       398,  397,  396,  395,  394,  393,  392,  391,  390,  389,
658       388,  387,  386,  385,  384,  383,  382,  381,  380,  379,
659       378,  377,  376,  375,  374,  373,  372,  371,  370,  369,
660 
661       368,  367,  366,  365,  364,  363,  362,  361,  360,  359,
662       358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
663       348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
664       338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
665       328,  327,  326,  325,  324,  323,  322,  321,  320,  317,
666       316,  315,  314,  313,  312,  311,  310,  309,  308,  307,
667       306,  305,  304,  303,  302,  301,  300,  299,  298,  297,
668       296,  295,  294,  293,  292,  291,  290,  289,  288,  287,
669       286,  285,  284,  283,  282,  281,  280,  279,  278,  277,
670       276,  275,  274,  273,  272,  271,  270,  269,  268,  267,
671 
672       266,  263,  262,  261,  260,  259,  258,  257,  256,  255,
673       252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
674       242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
675       232,  231,  230,  229,  228,  227,  226,  222,  221,  220,
676       219,  218,  217,  216,  215,  214,  213,  212,  211,  210,
677       209,  208,  207,  206,  205,  204,  203,  202,  201,  200,
678       199,  198,  197,  196,  193,  192,  191,  190,  189,  188,
679       187,  184,  183,  182,  181,  176,  175,  174,  173,  172,
680       171,  170,  169,  168,  165,  162,  159,  158,  157,  156,
681       155,  154,  153,  152,  151,  146,  143,  142,  141,  140,
682 
683       139,  138,  137,  136,  135,  134,  133,  132,  128,  127,
684       126,  125,  124,  123,  122,  115,  114,  111,  108,  107,
685       106,  105,  104,  103,  102,  101,  100,   98,   97,   96,
686        83,   56,   42,   40,   39,  567,    3,  567,  567,  567,
687       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
688       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
689       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
690       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
691       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
692       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
693 
694       567,  567,  567,  567,  567,  567
695     } ;
696 
697 static yyconst flex_int16_t yy_chk[707] =
698     {   0,
699         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
700         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
701         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
702         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
703         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
704         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
705         1,    1,    1,    1,    1,    1,    1,    1,    1,    9,
706        25,  569,    9,    9,    9,    9,    9,    9,    9,   12,
707        12,   12,   12,   12,   12,   12,   13,   13,   13,   13,
708        13,   13,   13,   15,   16,   19,   19,   25,   16,   20,
709 
710        21,   17,   16,   15,   16,   17,   19,   15,   17,   24,
711        23,   21,   15,   23,   16,   27,   20,   24,   27,   53,
712        26,   26,   23,   23,   26,   29,   27,   30,   23,   29,
713        31,   30,   27,   53,   26,   67,   31,   12,   55,   55,
714        29,   96,   58,   58,   59,   29,   81,  101,   30,   26,
715        81,   67,   67,   84,   96,   30,   84,   59,   31,   27,
716        58,   59,  101,  562,   30,   37,   37,   37,   37,   37,
717        37,   37,   38,   38,   38,   38,   38,   38,   38,   83,
718        94,  113,  113,   94,  114,  120,  128,  368,  120,  128,
719        83,  159,  114,  159,  198,  187,  558,  557,  159,  187,
720 
721       260,  556,  260,  555,  553,  198,  368,  552,  550,  549,
722       547,  546,  544,  542,  540,  537,  536,  535,  534,  533,
723       532,  530,  529,   37,  568,  568,  528,  527,  526,  523,
724       522,  521,  520,  519,  518,  517,  516,  515,  514,  513,
725       512,  511,  510,  509,  508,  507,  506,  505,  504,  503,
726       502,  498,  497,  496,  495,  493,  492,  491,  490,  489,
727       488,  487,  486,  485,  484,  482,  481,  480,  479,  477,
728       475,  473,  472,  471,  470,  469,  468,  466,  465,  463,
729       462,  461,  460,  459,  458,  457,  456,  455,  453,  452,
730       451,  450,  449,  448,  447,  446,  445,  441,  440,  439,
731 
732       438,  437,  436,  435,  434,  433,  432,  430,  429,  428,
733       427,  425,  424,  423,  422,  418,  417,  416,  415,  414,
734       412,  410,  408,  407,  406,  405,  404,  403,  402,  401,
735       400,  399,  398,  397,  396,  394,  393,  392,  391,  390,
736       389,  388,  385,  383,  382,  381,  380,  379,  378,  376,
737       375,  372,  371,  370,  369,  367,  366,  364,  363,  361,
738       360,  358,  357,  356,  355,  353,  352,  351,  350,  349,
739       348,  347,  346,  345,  344,  342,  341,  340,  337,  336,
740       335,  334,  333,  332,  331,  330,  329,  327,  326,  325,
741       324,  323,  322,  321,  320,  319,  318,  317,  316,  315,
742 
743       314,  313,  312,  311,  310,  308,  307,  306,  305,  304,
744       303,  302,  301,  299,  298,  297,  296,  295,  294,  292,
745       291,  290,  289,  288,  287,  286,  284,  283,  282,  281,
746       280,  279,  278,  277,  276,  275,  274,  273,  272,  271,
747       269,  268,  267,  266,  265,  264,  263,  262,  261,  259,
748       258,  257,  256,  254,  253,  252,  251,  250,  249,  248,
749       247,  246,  245,  244,  243,  242,  240,  239,  238,  237,
750       235,  234,  233,  232,  230,  229,  228,  227,  226,  225,
751       224,  223,  222,  221,  218,  217,  216,  214,  213,  211,
752       210,  209,  208,  207,  206,  205,  204,  203,  202,  200,
753 
754       199,  197,  196,  195,  194,  193,  192,  191,  190,  188,
755       186,  185,  184,  183,  182,  181,  180,  179,  178,  177,
756       176,  175,  174,  173,  172,  171,  170,  169,  168,  167,
757       166,  165,  164,  163,  162,  161,  160,  158,  157,  156,
758       155,  154,  153,  152,  151,  149,  148,  147,  146,  145,
759       144,  143,  141,  140,  139,  138,  137,  136,  135,  134,
760       132,  131,  130,  129,  127,  126,  125,  124,  123,  122,
761       121,  119,  118,  116,  115,  112,  111,  110,  109,  108,
762       107,  105,  104,  103,   97,   95,   93,   92,   91,   90,
763        89,   88,   87,   86,   85,   82,   80,   79,   78,   77,
764 
765        76,   74,   73,   72,   71,   70,   69,   68,   66,   65,
766        64,   63,   62,   61,   60,   57,   56,   54,   51,   50,
767        49,   48,   47,   46,   45,   44,   42,   39,   33,   32,
768        28,   18,   14,   11,   10,    3,  567,  567,  567,  567,
769       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
770       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
771       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
772       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
773       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
774       567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
775 
776       567,  567,  567,  567,  567,  567
777     } ;
778 
779 static yy_state_type yy_last_accepting_state;
780 static char *yy_last_accepting_cpos;
781 
782 extern int yy_flex_debug;
783 int yy_flex_debug = 0;
784 
785 /* The intent behind this definition is that it'll catch
786  * any uses of REJECT which flex missed.
787  */
788 #define REJECT reject_used_but_not_detected
789 #define yymore() yymore_used_but_not_detected
790 #define YY_MORE_ADJ 0
791 #define YY_RESTORE_YY_MORE_OFFSET
792 char *yytext;
793 #line 1 "lex.l"
794 #line 2 "lex.l"
795 /*
796  * Copyright (c) 1997 - 2017 Kungliga Tekniska Högskolan
797  * (Royal Institute of Technology, Stockholm, Sweden).
798  * All rights reserved.
799  *
800  * Redistribution and use in source and binary forms, with or without
801  * modification, are permitted provided that the following conditions
802  * are met:
803  *
804  * 1. Redistributions of source code must retain the above copyright
805  *    notice, this list of conditions and the following disclaimer.
806  *
807  * 2. Redistributions in binary form must reproduce the above copyright
808  *    notice, this list of conditions and the following disclaimer in the
809  *    documentation and/or other materials provided with the distribution.
810  *
811  * 3. Neither the name of the Institute nor the names of its contributors
812  *    may be used to endorse or promote products derived from this software
813  *    without specific prior written permission.
814  *
815  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
816  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
817  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
818  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
819  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
820  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
821  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
822  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
823  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
824  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
825  * SUCH DAMAGE.
826  */
827 
828 /* Id */
829 
830 #ifdef HAVE_CONFIG_H
831 #include <config.h>
832 #endif
833 #include <stdio.h>
834 #include <stdarg.h>
835 #include <stdlib.h>
836 #include <stdint.h>
837 #include <string.h>
838 #ifdef HAVE_UNISTD_H
839 #include <unistd.h>
840 #endif
841 #undef ECHO
842 #include "symbol.h"
843 #include "asn1parse.h"
844 #include "lex.h"
845 #include "gen_locl.h"
846 
847 static unsigned lineno = 1;
848 
849 #undef ECHO
850 
851 static void unterminated(const char *, unsigned);
852 
853 /* This is for broken old lexes (solaris 10 and hpux) */
854 #line 853 "lex.c"
855 
856 #define INITIAL 0
857 
858 #ifndef YY_NO_UNISTD_H
859 /* Special case for "unistd.h", since it is non-ANSI. We include it way
860  * down here because we want the user's section 1 to have been scanned first.
861  * The user has a chance to override it with an option.
862  */
863 #include <unistd.h>
864 #endif
865 
866 #ifndef YY_EXTRA_TYPE
867 #define YY_EXTRA_TYPE void *
868 #endif
869 
870 static int yy_init_globals (void );
871 
872 /* Accessor methods to globals.
873    These are made visible to non-reentrant scanners for convenience. */
874 
875 int yylex_destroy (void );
876 
877 int yyget_debug (void );
878 
879 void yyset_debug (int debug_flag  );
880 
881 YY_EXTRA_TYPE yyget_extra (void );
882 
883 void yyset_extra (YY_EXTRA_TYPE user_defined  );
884 
885 FILE *yyget_in (void );
886 
887 void yyset_in  (FILE * in_str  );
888 
889 FILE *yyget_out (void );
890 
891 void yyset_out  (FILE * out_str  );
892 
893 yy_size_t yyget_leng (void );
894 
895 char *yyget_text (void );
896 
897 int yyget_lineno (void );
898 
899 void yyset_lineno (int line_number  );
900 
901 /* Macros after this point can all be overridden by user definitions in
902  * section 1.
903  */
904 
905 #ifndef YY_SKIP_YYWRAP
906 #ifdef __cplusplus
907 extern "C" int yywrap (void );
908 #else
909 extern int yywrap (void );
910 #endif
911 #endif
912 
913     static void yyunput (int c,char *buf_ptr  );
914 
915 #ifndef yytext_ptr
916 static void yy_flex_strncpy (char *,yyconst char *,int );
917 #endif
918 
919 #ifdef YY_NEED_STRLEN
920 static int yy_flex_strlen (yyconst char * );
921 #endif
922 
923 #ifndef YY_NO_INPUT
924 
925 #ifdef __cplusplus
926 static int yyinput (void );
927 #else
928 static int input (void );
929 #endif
930 
931 #endif
932 
933 /* Amount of stuff to slurp up with each read. */
934 #ifndef YY_READ_BUF_SIZE
935 #define YY_READ_BUF_SIZE 8192
936 #endif
937 
938 /* Copy whatever the last rule matched to the standard output. */
939 #ifndef ECHO
940 /* This used to be an fputs(), but since the string might contain NUL's,
941  * we now use fwrite().
942  */
943 #define ECHO fwrite( yytext, yyleng, 1, yyout )
944 #endif
945 
946 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
947  * is returned in "result".
948  */
949 #ifndef YY_INPUT
950 #define YY_INPUT(buf,result,max_size) \
951 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
952 		{ \
953 		int c = '*'; \
954 		yy_size_t n; \
955 		for ( n = 0; n < max_size && \
956 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
957 			buf[n] = (char) c; \
958 		if ( c == '\n' ) \
959 			buf[n++] = (char) c; \
960 		if ( c == EOF && ferror( yyin ) ) \
961 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
962 		result = n; \
963 		} \
964 	else \
965 		{ \
966 		errno=0; \
967 		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
968 			{ \
969 			if( errno != EINTR) \
970 				{ \
971 				YY_FATAL_ERROR( "input in flex scanner failed" ); \
972 				break; \
973 				} \
974 			errno=0; \
975 			clearerr(yyin); \
976 			} \
977 		}\
978 \
979 
980 #endif
981 
982 /* No semi-colon after return; correct usage is to write "yyterminate();" -
983  * we don't want an extra ';' after the "return" because that will cause
984  * some compilers to complain about unreachable statements.
985  */
986 #ifndef yyterminate
987 #define yyterminate() return YY_NULL
988 #endif
989 
990 /* Number of entries by which start-condition stack grows. */
991 #ifndef YY_START_STACK_INCR
992 #define YY_START_STACK_INCR 25
993 #endif
994 
995 /* Report a fatal error. */
996 #ifndef YY_FATAL_ERROR
997 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
998 #endif
999 
1000 /* end tables serialization structures and prototypes */
1001 
1002 /* Default declaration of generated scanner - a define so the user can
1003  * easily add parameters.
1004  */
1005 #ifndef YY_DECL
1006 #define YY_DECL_IS_OURS 1
1007 
1008 extern int yylex (void);
1009 
1010 #define YY_DECL int yylex (void)
1011 #endif /* !YY_DECL */
1012 
1013 /* Code executed at the beginning of each rule, after yytext and yyleng
1014  * have been set up.
1015  */
1016 #ifndef YY_USER_ACTION
1017 #define YY_USER_ACTION
1018 #endif
1019 
1020 /* Code executed at the end of each rule. */
1021 #ifndef YY_BREAK
1022 #define YY_BREAK break;
1023 #endif
1024 
1025 #define YY_RULE_SETUP \
1026 	YY_USER_ACTION
1027 
1028 /** The main scanner function which does all the work.
1029  */
1030 YY_DECL
1031 {
1032 	register yy_state_type yy_current_state;
1033 	register char *yy_cp, *yy_bp;
1034 	register int yy_act;
1035 
1036 #line 69 "lex.l"
1037 
1038 #line 1037 "lex.c"
1039 
1040 	if ( !(yy_init) )
1041 		{
1042 		(yy_init) = 1;
1043 
1044 #ifdef YY_USER_INIT
1045 		YY_USER_INIT;
1046 #endif
1047 
1048 		if ( ! (yy_start) )
1049 			(yy_start) = 1;	/* first start state */
1050 
1051 		if ( ! yyin )
1052 			yyin = stdin;
1053 
1054 		if ( ! yyout )
1055 			yyout = stdout;
1056 
1057 		if ( ! YY_CURRENT_BUFFER ) {
1058 			yyensure_buffer_stack ();
1059 			YY_CURRENT_BUFFER_LVALUE =
1060 				yy_create_buffer(yyin,YY_BUF_SIZE );
1061 		}
1062 
1063 		yy_load_buffer_state( );
1064 		}
1065 
1066 	while ( 1 )		/* loops until end-of-file is reached */
1067 		{
1068 		yy_cp = (yy_c_buf_p);
1069 
1070 		/* Support of yytext. */
1071 		*yy_cp = (yy_hold_char);
1072 
1073 		/* yy_bp points to the position in yy_ch_buf of the start of
1074 		 * the current run.
1075 		 */
1076 		yy_bp = yy_cp;
1077 
1078 		yy_current_state = (yy_start);
1079 yy_match:
1080 		do
1081 			{
1082 			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1083 			if ( yy_accept[yy_current_state] )
1084 				{
1085 				(yy_last_accepting_state) = yy_current_state;
1086 				(yy_last_accepting_cpos) = yy_cp;
1087 				}
1088 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1089 				{
1090 				yy_current_state = (int) yy_def[yy_current_state];
1091 				if ( yy_current_state >= 568 )
1092 					yy_c = yy_meta[(unsigned int) yy_c];
1093 				}
1094 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1095 			++yy_cp;
1096 			}
1097 		while ( yy_base[yy_current_state] != 637 );
1098 
1099 yy_find_action:
1100 		yy_act = yy_accept[yy_current_state];
1101 		if ( yy_act == 0 )
1102 			{ /* have to back up */
1103 			yy_cp = (yy_last_accepting_cpos);
1104 			yy_current_state = (yy_last_accepting_state);
1105 			yy_act = yy_accept[yy_current_state];
1106 			}
1107 
1108 		YY_DO_BEFORE_ACTION;
1109 
1110 do_action:	/* This label is used only to access EOF actions. */
1111 
1112 		switch ( yy_act )
1113 	{ /* beginning of action switch */
1114 			case 0: /* must back up */
1115 			/* undo the effects of YY_DO_BEFORE_ACTION */
1116 			*yy_cp = (yy_hold_char);
1117 			yy_cp = (yy_last_accepting_cpos);
1118 			yy_current_state = (yy_last_accepting_state);
1119 			goto yy_find_action;
1120 
1121 case 1:
1122 YY_RULE_SETUP
1123 #line 70 "lex.l"
1124 { return kw_ABSENT; }
1125 	YY_BREAK
1126 case 2:
1127 YY_RULE_SETUP
1128 #line 71 "lex.l"
1129 { return kw_ABSTRACT_SYNTAX; }
1130 	YY_BREAK
1131 case 3:
1132 YY_RULE_SETUP
1133 #line 72 "lex.l"
1134 { return kw_ALL; }
1135 	YY_BREAK
1136 case 4:
1137 YY_RULE_SETUP
1138 #line 73 "lex.l"
1139 { return kw_APPLICATION; }
1140 	YY_BREAK
1141 case 5:
1142 YY_RULE_SETUP
1143 #line 74 "lex.l"
1144 { return kw_AUTOMATIC; }
1145 	YY_BREAK
1146 case 6:
1147 YY_RULE_SETUP
1148 #line 75 "lex.l"
1149 { return kw_BEGIN; }
1150 	YY_BREAK
1151 case 7:
1152 YY_RULE_SETUP
1153 #line 76 "lex.l"
1154 { return kw_BIT; }
1155 	YY_BREAK
1156 case 8:
1157 YY_RULE_SETUP
1158 #line 77 "lex.l"
1159 { return kw_BMPString; }
1160 	YY_BREAK
1161 case 9:
1162 YY_RULE_SETUP
1163 #line 78 "lex.l"
1164 { return kw_BOOLEAN; }
1165 	YY_BREAK
1166 case 10:
1167 YY_RULE_SETUP
1168 #line 79 "lex.l"
1169 { return kw_BY; }
1170 	YY_BREAK
1171 case 11:
1172 YY_RULE_SETUP
1173 #line 80 "lex.l"
1174 { return kw_CHARACTER; }
1175 	YY_BREAK
1176 case 12:
1177 YY_RULE_SETUP
1178 #line 81 "lex.l"
1179 { return kw_CHOICE; }
1180 	YY_BREAK
1181 case 13:
1182 YY_RULE_SETUP
1183 #line 82 "lex.l"
1184 { return kw_CLASS; }
1185 	YY_BREAK
1186 case 14:
1187 YY_RULE_SETUP
1188 #line 83 "lex.l"
1189 { return kw_COMPONENT; }
1190 	YY_BREAK
1191 case 15:
1192 YY_RULE_SETUP
1193 #line 84 "lex.l"
1194 { return kw_COMPONENTS; }
1195 	YY_BREAK
1196 case 16:
1197 YY_RULE_SETUP
1198 #line 85 "lex.l"
1199 { return kw_CONSTRAINED; }
1200 	YY_BREAK
1201 case 17:
1202 YY_RULE_SETUP
1203 #line 86 "lex.l"
1204 { return kw_CONTAINING; }
1205 	YY_BREAK
1206 case 18:
1207 YY_RULE_SETUP
1208 #line 87 "lex.l"
1209 { return kw_DEFAULT; }
1210 	YY_BREAK
1211 case 19:
1212 YY_RULE_SETUP
1213 #line 88 "lex.l"
1214 { return kw_DEFINITIONS; }
1215 	YY_BREAK
1216 case 20:
1217 YY_RULE_SETUP
1218 #line 89 "lex.l"
1219 { return kw_EMBEDDED; }
1220 	YY_BREAK
1221 case 21:
1222 YY_RULE_SETUP
1223 #line 90 "lex.l"
1224 { return kw_ENCODED; }
1225 	YY_BREAK
1226 case 22:
1227 YY_RULE_SETUP
1228 #line 91 "lex.l"
1229 { return kw_END; }
1230 	YY_BREAK
1231 case 23:
1232 YY_RULE_SETUP
1233 #line 92 "lex.l"
1234 { return kw_ENUMERATED; }
1235 	YY_BREAK
1236 case 24:
1237 YY_RULE_SETUP
1238 #line 93 "lex.l"
1239 { return kw_EXCEPT; }
1240 	YY_BREAK
1241 case 25:
1242 YY_RULE_SETUP
1243 #line 94 "lex.l"
1244 { return kw_EXPLICIT; }
1245 	YY_BREAK
1246 case 26:
1247 YY_RULE_SETUP
1248 #line 95 "lex.l"
1249 { return kw_EXPORTS; }
1250 	YY_BREAK
1251 case 27:
1252 YY_RULE_SETUP
1253 #line 96 "lex.l"
1254 { return kw_EXTENSIBILITY; }
1255 	YY_BREAK
1256 case 28:
1257 YY_RULE_SETUP
1258 #line 97 "lex.l"
1259 { return kw_EXTERNAL; }
1260 	YY_BREAK
1261 case 29:
1262 YY_RULE_SETUP
1263 #line 98 "lex.l"
1264 { return kw_FALSE; }
1265 	YY_BREAK
1266 case 30:
1267 YY_RULE_SETUP
1268 #line 99 "lex.l"
1269 { return kw_FROM; }
1270 	YY_BREAK
1271 case 31:
1272 YY_RULE_SETUP
1273 #line 100 "lex.l"
1274 { return kw_GeneralString; }
1275 	YY_BREAK
1276 case 32:
1277 YY_RULE_SETUP
1278 #line 101 "lex.l"
1279 { return kw_GeneralizedTime; }
1280 	YY_BREAK
1281 case 33:
1282 YY_RULE_SETUP
1283 #line 102 "lex.l"
1284 { return kw_GraphicString; }
1285 	YY_BREAK
1286 case 34:
1287 YY_RULE_SETUP
1288 #line 103 "lex.l"
1289 { return kw_IA5String; }
1290 	YY_BREAK
1291 case 35:
1292 YY_RULE_SETUP
1293 #line 104 "lex.l"
1294 { return kw_IDENTIFIER; }
1295 	YY_BREAK
1296 case 36:
1297 YY_RULE_SETUP
1298 #line 105 "lex.l"
1299 { return kw_IMPLICIT; }
1300 	YY_BREAK
1301 case 37:
1302 YY_RULE_SETUP
1303 #line 106 "lex.l"
1304 { return kw_IMPLIED; }
1305 	YY_BREAK
1306 case 38:
1307 YY_RULE_SETUP
1308 #line 107 "lex.l"
1309 { return kw_IMPORTS; }
1310 	YY_BREAK
1311 case 39:
1312 YY_RULE_SETUP
1313 #line 108 "lex.l"
1314 { return kw_INCLUDES; }
1315 	YY_BREAK
1316 case 40:
1317 YY_RULE_SETUP
1318 #line 109 "lex.l"
1319 { return kw_INSTANCE; }
1320 	YY_BREAK
1321 case 41:
1322 YY_RULE_SETUP
1323 #line 110 "lex.l"
1324 { return kw_INTEGER; }
1325 	YY_BREAK
1326 case 42:
1327 YY_RULE_SETUP
1328 #line 111 "lex.l"
1329 { return kw_INTERSECTION; }
1330 	YY_BREAK
1331 case 43:
1332 YY_RULE_SETUP
1333 #line 112 "lex.l"
1334 { return kw_ISO646String; }
1335 	YY_BREAK
1336 case 44:
1337 YY_RULE_SETUP
1338 #line 113 "lex.l"
1339 { return kw_MAX; }
1340 	YY_BREAK
1341 case 45:
1342 YY_RULE_SETUP
1343 #line 114 "lex.l"
1344 { return kw_MIN; }
1345 	YY_BREAK
1346 case 46:
1347 YY_RULE_SETUP
1348 #line 115 "lex.l"
1349 { return kw_MINUS_INFINITY; }
1350 	YY_BREAK
1351 case 47:
1352 YY_RULE_SETUP
1353 #line 116 "lex.l"
1354 { return kw_NULL; }
1355 	YY_BREAK
1356 case 48:
1357 YY_RULE_SETUP
1358 #line 117 "lex.l"
1359 { return kw_NumericString; }
1360 	YY_BREAK
1361 case 49:
1362 YY_RULE_SETUP
1363 #line 118 "lex.l"
1364 { return kw_OBJECT; }
1365 	YY_BREAK
1366 case 50:
1367 YY_RULE_SETUP
1368 #line 119 "lex.l"
1369 { return kw_OCTET; }
1370 	YY_BREAK
1371 case 51:
1372 YY_RULE_SETUP
1373 #line 120 "lex.l"
1374 { return kw_OF; }
1375 	YY_BREAK
1376 case 52:
1377 YY_RULE_SETUP
1378 #line 121 "lex.l"
1379 { return kw_OPTIONAL; }
1380 	YY_BREAK
1381 case 53:
1382 YY_RULE_SETUP
1383 #line 122 "lex.l"
1384 { return kw_ObjectDescriptor; }
1385 	YY_BREAK
1386 case 54:
1387 YY_RULE_SETUP
1388 #line 123 "lex.l"
1389 { return kw_PATTERN; }
1390 	YY_BREAK
1391 case 55:
1392 YY_RULE_SETUP
1393 #line 124 "lex.l"
1394 { return kw_PDV; }
1395 	YY_BREAK
1396 case 56:
1397 YY_RULE_SETUP
1398 #line 125 "lex.l"
1399 { return kw_PLUS_INFINITY; }
1400 	YY_BREAK
1401 case 57:
1402 YY_RULE_SETUP
1403 #line 126 "lex.l"
1404 { return kw_PRESENT; }
1405 	YY_BREAK
1406 case 58:
1407 YY_RULE_SETUP
1408 #line 127 "lex.l"
1409 { return kw_PRIVATE; }
1410 	YY_BREAK
1411 case 59:
1412 YY_RULE_SETUP
1413 #line 128 "lex.l"
1414 { return kw_PrintableString; }
1415 	YY_BREAK
1416 case 60:
1417 YY_RULE_SETUP
1418 #line 129 "lex.l"
1419 { return kw_REAL; }
1420 	YY_BREAK
1421 case 61:
1422 YY_RULE_SETUP
1423 #line 130 "lex.l"
1424 { return kw_RELATIVE_OID; }
1425 	YY_BREAK
1426 case 62:
1427 YY_RULE_SETUP
1428 #line 131 "lex.l"
1429 { return kw_SEQUENCE; }
1430 	YY_BREAK
1431 case 63:
1432 YY_RULE_SETUP
1433 #line 132 "lex.l"
1434 { return kw_SET; }
1435 	YY_BREAK
1436 case 64:
1437 YY_RULE_SETUP
1438 #line 133 "lex.l"
1439 { return kw_SIZE; }
1440 	YY_BREAK
1441 case 65:
1442 YY_RULE_SETUP
1443 #line 134 "lex.l"
1444 { return kw_STRING; }
1445 	YY_BREAK
1446 case 66:
1447 YY_RULE_SETUP
1448 #line 135 "lex.l"
1449 { return kw_SYNTAX; }
1450 	YY_BREAK
1451 case 67:
1452 YY_RULE_SETUP
1453 #line 136 "lex.l"
1454 { return kw_T61String; }
1455 	YY_BREAK
1456 case 68:
1457 YY_RULE_SETUP
1458 #line 137 "lex.l"
1459 { return kw_TAGS; }
1460 	YY_BREAK
1461 case 69:
1462 YY_RULE_SETUP
1463 #line 138 "lex.l"
1464 { return kw_TRUE; }
1465 	YY_BREAK
1466 case 70:
1467 YY_RULE_SETUP
1468 #line 139 "lex.l"
1469 { return kw_TYPE_IDENTIFIER; }
1470 	YY_BREAK
1471 case 71:
1472 YY_RULE_SETUP
1473 #line 140 "lex.l"
1474 { return kw_TeletexString; }
1475 	YY_BREAK
1476 case 72:
1477 YY_RULE_SETUP
1478 #line 141 "lex.l"
1479 { return kw_UNION; }
1480 	YY_BREAK
1481 case 73:
1482 YY_RULE_SETUP
1483 #line 142 "lex.l"
1484 { return kw_UNIQUE; }
1485 	YY_BREAK
1486 case 74:
1487 YY_RULE_SETUP
1488 #line 143 "lex.l"
1489 { return kw_UNIVERSAL; }
1490 	YY_BREAK
1491 case 75:
1492 YY_RULE_SETUP
1493 #line 144 "lex.l"
1494 { return kw_UTCTime; }
1495 	YY_BREAK
1496 case 76:
1497 YY_RULE_SETUP
1498 #line 145 "lex.l"
1499 { return kw_UTF8String; }
1500 	YY_BREAK
1501 case 77:
1502 YY_RULE_SETUP
1503 #line 146 "lex.l"
1504 { return kw_UniversalString; }
1505 	YY_BREAK
1506 case 78:
1507 YY_RULE_SETUP
1508 #line 147 "lex.l"
1509 { return kw_VideotexString; }
1510 	YY_BREAK
1511 case 79:
1512 YY_RULE_SETUP
1513 #line 148 "lex.l"
1514 { return kw_VisibleString; }
1515 	YY_BREAK
1516 case 80:
1517 YY_RULE_SETUP
1518 #line 149 "lex.l"
1519 { return kw_WITH; }
1520 	YY_BREAK
1521 case 81:
1522 YY_RULE_SETUP
1523 #line 150 "lex.l"
1524 { return *yytext; }
1525 	YY_BREAK
1526 case 82:
1527 YY_RULE_SETUP
1528 #line 151 "lex.l"
1529 { return *yytext; }
1530 	YY_BREAK
1531 case 83:
1532 YY_RULE_SETUP
1533 #line 152 "lex.l"
1534 { return *yytext; }
1535 	YY_BREAK
1536 case 84:
1537 YY_RULE_SETUP
1538 #line 153 "lex.l"
1539 { return EEQUAL; }
1540 	YY_BREAK
1541 case 85:
1542 YY_RULE_SETUP
1543 #line 154 "lex.l"
1544 {
1545 			    int c, start_lineno = lineno;
1546 			    int f = 0;
1547 			    while((c = input()) != EOF) {
1548 				if(f && c == '-')
1549 				    break;
1550 				if(c == '-') {
1551 				    f = 1;
1552 				    continue;
1553 				}
1554 				if(c == '\n') {
1555 				    lineno++;
1556 				    break;
1557 				}
1558 				f = 0;
1559 			    }
1560 			    if(c == EOF)
1561 				unterminated("comment", start_lineno);
1562 			}
1563 	YY_BREAK
1564 case 86:
1565 YY_RULE_SETUP
1566 #line 173 "lex.l"
1567 {
1568 			    int c, start_lineno = lineno;
1569 			    int level = 1;
1570 			    int seen_star = 0;
1571 			    int seen_slash = 0;
1572 			    while((c = input()) != EOF) {
1573 				if(c == '/') {
1574 				    if(seen_star) {
1575 					if(--level == 0)
1576 					    break;
1577 					seen_star = 0;
1578 					continue;
1579 				    }
1580 				    seen_slash = 1;
1581 				    continue;
1582 				}
1583 				if(seen_star && c == '/') {
1584 				    if(--level == 0)
1585 					break;
1586 				    seen_star = 0;
1587 				    continue;
1588 				}
1589 				if(c == '*') {
1590 				    if(seen_slash) {
1591 					level++;
1592 					seen_star = seen_slash = 0;
1593 					continue;
1594 				    }
1595 				    seen_star = 1;
1596 				    continue;
1597 				}
1598 				seen_star = seen_slash = 0;
1599 				if(c == '\n') {
1600 				    lineno++;
1601 				    continue;
1602 				}
1603 			    }
1604 			    if(c == EOF)
1605 				unterminated("comment", start_lineno);
1606 			}
1607 	YY_BREAK
1608 case 87:
1609 YY_RULE_SETUP
1610 #line 213 "lex.l"
1611 {
1612 			    int start_lineno = lineno;
1613 			    int c;
1614 			    char buf[1024];
1615 			    char *p = buf;
1616 			    int f = 0;
1617 			    int skip_ws = 0;
1618 
1619 			    while((c = input()) != EOF) {
1620 				if(isspace(c) && skip_ws) {
1621 				    if(c == '\n')
1622 					lineno++;
1623 				    continue;
1624 				}
1625 				skip_ws = 0;
1626 
1627 				if(c == '"') {
1628 				    if(f) {
1629 					*p++ = '"';
1630 					f = 0;
1631 				    } else
1632 					f = 1;
1633 				    continue;
1634 				}
1635 				if(f == 1) {
1636 				    unput(c);
1637 				    break;
1638 				}
1639 				if(c == '\n') {
1640 				    lineno++;
1641 				    while(p > buf && isspace((unsigned char)p[-1]))
1642 					p--;
1643 				    skip_ws = 1;
1644 				    continue;
1645 				}
1646 				*p++ = c;
1647 			    }
1648 			    if(c == EOF)
1649 				unterminated("string", start_lineno);
1650 			    *p++ = '\0';
1651 			    fprintf(stderr, "string -- %s\n", buf);
1652 			    yylval.name = estrdup(buf);
1653 			    return STRING;
1654 			}
1655 	YY_BREAK
1656 case 88:
1657 YY_RULE_SETUP
1658 #line 258 "lex.l"
1659 { char *e, *y = yytext;
1660 			  yylval.constant = strtoll((const char *)yytext,
1661 						   &e, 0);
1662 			  if(e == y)
1663 			    lex_error_message("malformed constant (%s)", yytext);
1664 			  else
1665 			    return NUMBER;
1666 			}
1667 	YY_BREAK
1668 case 89:
1669 YY_RULE_SETUP
1670 #line 266 "lex.l"
1671 {
1672 			  yylval.name =  estrdup ((const char *)yytext);
1673 			  return IDENTIFIER;
1674 			}
1675 	YY_BREAK
1676 case 90:
1677 YY_RULE_SETUP
1678 #line 270 "lex.l"
1679 ;
1680 	YY_BREAK
1681 case 91:
1682 /* rule 91 can match eol */
1683 YY_RULE_SETUP
1684 #line 271 "lex.l"
1685 { ++lineno; }
1686 	YY_BREAK
1687 case 92:
1688 YY_RULE_SETUP
1689 #line 272 "lex.l"
1690 { return ELLIPSIS; }
1691 	YY_BREAK
1692 case 93:
1693 YY_RULE_SETUP
1694 #line 273 "lex.l"
1695 { return RANGE; }
1696 	YY_BREAK
1697 case 94:
1698 YY_RULE_SETUP
1699 #line 274 "lex.l"
1700 { lex_error_message("Ignoring char(%c)\n", *yytext); }
1701 	YY_BREAK
1702 case 95:
1703 YY_RULE_SETUP
1704 #line 275 "lex.l"
1705 ECHO;
1706 	YY_BREAK
1707 #line 1706 "lex.c"
1708 case YY_STATE_EOF(INITIAL):
1709 	yyterminate();
1710 
1711 	case YY_END_OF_BUFFER:
1712 		{
1713 		/* Amount of text matched not including the EOB char. */
1714 		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1715 
1716 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
1717 		*yy_cp = (yy_hold_char);
1718 		YY_RESTORE_YY_MORE_OFFSET
1719 
1720 		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1721 			{
1722 			/* We're scanning a new file or input source.  It's
1723 			 * possible that this happened because the user
1724 			 * just pointed yyin at a new source and called
1725 			 * yylex().  If so, then we have to assure
1726 			 * consistency between YY_CURRENT_BUFFER and our
1727 			 * globals.  Here is the right place to do so, because
1728 			 * this is the first action (other than possibly a
1729 			 * back-up) that will match for the new input source.
1730 			 */
1731 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1732 			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1733 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1734 			}
1735 
1736 		/* Note that here we test for yy_c_buf_p "<=" to the position
1737 		 * of the first EOB in the buffer, since yy_c_buf_p will
1738 		 * already have been incremented past the NUL character
1739 		 * (since all states make transitions on EOB to the
1740 		 * end-of-buffer state).  Contrast this with the test
1741 		 * in input().
1742 		 */
1743 		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1744 			{ /* This was really a NUL. */
1745 			yy_state_type yy_next_state;
1746 
1747 			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1748 
1749 			yy_current_state = yy_get_previous_state(  );
1750 
1751 			/* Okay, we're now positioned to make the NUL
1752 			 * transition.  We couldn't have
1753 			 * yy_get_previous_state() go ahead and do it
1754 			 * for us because it doesn't know how to deal
1755 			 * with the possibility of jamming (and we don't
1756 			 * want to build jamming into it because then it
1757 			 * will run more slowly).
1758 			 */
1759 
1760 			yy_next_state = yy_try_NUL_trans( yy_current_state );
1761 
1762 			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1763 
1764 			if ( yy_next_state )
1765 				{
1766 				/* Consume the NUL. */
1767 				yy_cp = ++(yy_c_buf_p);
1768 				yy_current_state = yy_next_state;
1769 				goto yy_match;
1770 				}
1771 
1772 			else
1773 				{
1774 				yy_cp = (yy_c_buf_p);
1775 				goto yy_find_action;
1776 				}
1777 			}
1778 
1779 		else switch ( yy_get_next_buffer(  ) )
1780 			{
1781 			case EOB_ACT_END_OF_FILE:
1782 				{
1783 				(yy_did_buffer_switch_on_eof) = 0;
1784 
1785 				if ( yywrap( ) )
1786 					{
1787 					/* Note: because we've taken care in
1788 					 * yy_get_next_buffer() to have set up
1789 					 * yytext, we can now set up
1790 					 * yy_c_buf_p so that if some total
1791 					 * hoser (like flex itself) wants to
1792 					 * call the scanner after we return the
1793 					 * YY_NULL, it'll still work - another
1794 					 * YY_NULL will get returned.
1795 					 */
1796 					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1797 
1798 					yy_act = YY_STATE_EOF(YY_START);
1799 					goto do_action;
1800 					}
1801 
1802 				else
1803 					{
1804 					if ( ! (yy_did_buffer_switch_on_eof) )
1805 						YY_NEW_FILE;
1806 					}
1807 				break;
1808 				}
1809 
1810 			case EOB_ACT_CONTINUE_SCAN:
1811 				(yy_c_buf_p) =
1812 					(yytext_ptr) + yy_amount_of_matched_text;
1813 
1814 				yy_current_state = yy_get_previous_state(  );
1815 
1816 				yy_cp = (yy_c_buf_p);
1817 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1818 				goto yy_match;
1819 
1820 			case EOB_ACT_LAST_MATCH:
1821 				(yy_c_buf_p) =
1822 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1823 
1824 				yy_current_state = yy_get_previous_state(  );
1825 
1826 				yy_cp = (yy_c_buf_p);
1827 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1828 				goto yy_find_action;
1829 			}
1830 		break;
1831 		}
1832 
1833 	default:
1834 		YY_FATAL_ERROR(
1835 			"fatal flex scanner internal error--no action found" );
1836 	} /* end of action switch */
1837 		} /* end of scanning one token */
1838 } /* end of yylex */
1839 
1840 /* yy_get_next_buffer - try to read in a new buffer
1841  *
1842  * Returns a code representing an action:
1843  *	EOB_ACT_LAST_MATCH -
1844  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1845  *	EOB_ACT_END_OF_FILE - end of file
1846  */
1847 static int yy_get_next_buffer (void)
1848 {
1849     	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1850 	register char *source = (yytext_ptr);
1851 	register int number_to_move, i;
1852 	int ret_val;
1853 
1854 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1855 		YY_FATAL_ERROR(
1856 		"fatal flex scanner internal error--end of buffer missed" );
1857 
1858 	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1859 		{ /* Don't try to fill the buffer, so this is an EOF. */
1860 		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1861 			{
1862 			/* We matched a single character, the EOB, so
1863 			 * treat this as a final EOF.
1864 			 */
1865 			return EOB_ACT_END_OF_FILE;
1866 			}
1867 
1868 		else
1869 			{
1870 			/* We matched some text prior to the EOB, first
1871 			 * process it.
1872 			 */
1873 			return EOB_ACT_LAST_MATCH;
1874 			}
1875 		}
1876 
1877 	/* Try to read more data. */
1878 
1879 	/* First move last chars to start of buffer. */
1880 	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1881 
1882 	for ( i = 0; i < number_to_move; ++i )
1883 		*(dest++) = *(source++);
1884 
1885 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1886 		/* don't do the read, it's not guaranteed to return an EOF,
1887 		 * just force an EOF
1888 		 */
1889 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1890 
1891 	else
1892 		{
1893 			yy_size_t num_to_read =
1894 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1895 
1896 		while ( num_to_read <= 0 )
1897 			{ /* Not enough room in the buffer - grow it. */
1898 
1899 			/* just a shorter name for the current buffer */
1900 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1901 
1902 			int yy_c_buf_p_offset =
1903 				(int) ((yy_c_buf_p) - b->yy_ch_buf);
1904 
1905 			if ( b->yy_is_our_buffer )
1906 				{
1907 				yy_size_t new_size = b->yy_buf_size * 2;
1908 
1909 				if ( new_size <= 0 )
1910 					b->yy_buf_size += b->yy_buf_size / 8;
1911 				else
1912 					b->yy_buf_size *= 2;
1913 
1914 				b->yy_ch_buf = (char *)
1915 					/* Include room in for 2 EOB chars. */
1916 					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
1917 				}
1918 			else
1919 				/* Can't grow it, we don't own it. */
1920 				b->yy_ch_buf = 0;
1921 
1922 			if ( ! b->yy_ch_buf )
1923 				YY_FATAL_ERROR(
1924 				"fatal error - scanner input buffer overflow" );
1925 
1926 			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1927 
1928 			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1929 						number_to_move - 1;
1930 
1931 			}
1932 
1933 		if ( num_to_read > YY_READ_BUF_SIZE )
1934 			num_to_read = YY_READ_BUF_SIZE;
1935 
1936 		/* Read in more data. */
1937 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1938 			(yy_n_chars), num_to_read );
1939 
1940 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1941 		}
1942 
1943 	if ( (yy_n_chars) == 0 )
1944 		{
1945 		if ( number_to_move == YY_MORE_ADJ )
1946 			{
1947 			ret_val = EOB_ACT_END_OF_FILE;
1948 			yyrestart(yyin  );
1949 			}
1950 
1951 		else
1952 			{
1953 			ret_val = EOB_ACT_LAST_MATCH;
1954 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1955 				YY_BUFFER_EOF_PENDING;
1956 			}
1957 		}
1958 
1959 	else
1960 		ret_val = EOB_ACT_CONTINUE_SCAN;
1961 
1962 	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1963 		/* Extend the array by 50%, plus the number we really need. */
1964 		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1965 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
1966 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1967 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1968 	}
1969 
1970 	(yy_n_chars) += number_to_move;
1971 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1972 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1973 
1974 	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1975 
1976 	return ret_val;
1977 }
1978 
1979 /* yy_get_previous_state - get the state just before the EOB char was reached */
1980 
1981     static yy_state_type yy_get_previous_state (void)
1982 {
1983 	register yy_state_type yy_current_state;
1984 	register char *yy_cp;
1985 
1986 	yy_current_state = (yy_start);
1987 
1988 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1989 		{
1990 		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1991 		if ( yy_accept[yy_current_state] )
1992 			{
1993 			(yy_last_accepting_state) = yy_current_state;
1994 			(yy_last_accepting_cpos) = yy_cp;
1995 			}
1996 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1997 			{
1998 			yy_current_state = (int) yy_def[yy_current_state];
1999 			if ( yy_current_state >= 568 )
2000 				yy_c = yy_meta[(unsigned int) yy_c];
2001 			}
2002 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2003 		}
2004 
2005 	return yy_current_state;
2006 }
2007 
2008 /* yy_try_NUL_trans - try to make a transition on the NUL character
2009  *
2010  * synopsis
2011  *	next_state = yy_try_NUL_trans( current_state );
2012  */
2013     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
2014 {
2015 	register int yy_is_jam;
2016     	register char *yy_cp = (yy_c_buf_p);
2017 
2018 	register YY_CHAR yy_c = 1;
2019 	if ( yy_accept[yy_current_state] )
2020 		{
2021 		(yy_last_accepting_state) = yy_current_state;
2022 		(yy_last_accepting_cpos) = yy_cp;
2023 		}
2024 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2025 		{
2026 		yy_current_state = (int) yy_def[yy_current_state];
2027 		if ( yy_current_state >= 568 )
2028 			yy_c = yy_meta[(unsigned int) yy_c];
2029 		}
2030 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2031 	yy_is_jam = (yy_current_state == 567);
2032 
2033 	return yy_is_jam ? 0 : yy_current_state;
2034 }
2035 
2036     static void yyunput (int c, register char * yy_bp )
2037 {
2038 	register char *yy_cp;
2039 
2040     yy_cp = (yy_c_buf_p);
2041 
2042 	/* undo effects of setting up yytext */
2043 	*yy_cp = (yy_hold_char);
2044 
2045 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2046 		{ /* need to shift things up to make room */
2047 		/* +2 for EOB chars. */
2048 		register yy_size_t number_to_move = (yy_n_chars) + 2;
2049 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2050 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2051 		register char *source =
2052 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2053 
2054 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2055 			*--dest = *--source;
2056 
2057 		yy_cp += (int) (dest - source);
2058 		yy_bp += (int) (dest - source);
2059 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2060 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2061 
2062 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2063 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
2064 		}
2065 
2066 	*--yy_cp = (char) c;
2067 
2068 	(yytext_ptr) = yy_bp;
2069 	(yy_hold_char) = *yy_cp;
2070 	(yy_c_buf_p) = yy_cp;
2071 }
2072 
2073 #ifndef YY_NO_INPUT
2074 #ifdef __cplusplus
2075     static int yyinput (void)
2076 #else
2077     static int input  (void)
2078 #endif
2079 
2080 {
2081 	int c;
2082 
2083 	*(yy_c_buf_p) = (yy_hold_char);
2084 
2085 	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2086 		{
2087 		/* yy_c_buf_p now points to the character we want to return.
2088 		 * If this occurs *before* the EOB characters, then it's a
2089 		 * valid NUL; if not, then we've hit the end of the buffer.
2090 		 */
2091 		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2092 			/* This was really a NUL. */
2093 			*(yy_c_buf_p) = '\0';
2094 
2095 		else
2096 			{ /* need more input */
2097 			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
2098 			++(yy_c_buf_p);
2099 
2100 			switch ( yy_get_next_buffer(  ) )
2101 				{
2102 				case EOB_ACT_LAST_MATCH:
2103 					/* This happens because yy_g_n_b()
2104 					 * sees that we've accumulated a
2105 					 * token and flags that we need to
2106 					 * try matching the token before
2107 					 * proceeding.  But for input(),
2108 					 * there's no matching to consider.
2109 					 * So convert the EOB_ACT_LAST_MATCH
2110 					 * to EOB_ACT_END_OF_FILE.
2111 					 */
2112 
2113 					/* Reset buffer status. */
2114 					yyrestart(yyin );
2115 
2116 					/*FALLTHROUGH*/
2117 
2118 				case EOB_ACT_END_OF_FILE:
2119 					{
2120 					if ( yywrap( ) )
2121 						return 0;
2122 
2123 					if ( ! (yy_did_buffer_switch_on_eof) )
2124 						YY_NEW_FILE;
2125 #ifdef __cplusplus
2126 					return yyinput();
2127 #else
2128 					return input();
2129 #endif
2130 					}
2131 
2132 				case EOB_ACT_CONTINUE_SCAN:
2133 					(yy_c_buf_p) = (yytext_ptr) + offset;
2134 					break;
2135 				}
2136 			}
2137 		}
2138 
2139 	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
2140 	*(yy_c_buf_p) = '\0';	/* preserve yytext */
2141 	(yy_hold_char) = *++(yy_c_buf_p);
2142 
2143 	return c;
2144 }
2145 #endif	/* ifndef YY_NO_INPUT */
2146 
2147 /** Immediately switch to a different input stream.
2148  * @param input_file A readable stream.
2149  *
2150  * @note This function does not reset the start condition to @c INITIAL .
2151  */
2152     void yyrestart  (FILE * input_file )
2153 {
2154 
2155 	if ( ! YY_CURRENT_BUFFER ){
2156         yyensure_buffer_stack ();
2157 		YY_CURRENT_BUFFER_LVALUE =
2158             yy_create_buffer(yyin,YY_BUF_SIZE );
2159 	}
2160 
2161 	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
2162 	yy_load_buffer_state( );
2163 }
2164 
2165 /** Switch to a different input buffer.
2166  * @param new_buffer The new input buffer.
2167  *
2168  */
2169     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
2170 {
2171 
2172 	/* TODO. We should be able to replace this entire function body
2173 	 * with
2174 	 *		yypop_buffer_state();
2175 	 *		yypush_buffer_state(new_buffer);
2176      */
2177 	yyensure_buffer_stack ();
2178 	if ( YY_CURRENT_BUFFER == new_buffer )
2179 		return;
2180 
2181 	if ( YY_CURRENT_BUFFER )
2182 		{
2183 		/* Flush out information for old buffer. */
2184 		*(yy_c_buf_p) = (yy_hold_char);
2185 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2186 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2187 		}
2188 
2189 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
2190 	yy_load_buffer_state( );
2191 
2192 	/* We don't actually know whether we did this switch during
2193 	 * EOF (yywrap()) processing, but the only time this flag
2194 	 * is looked at is after yywrap() is called, so it's safe
2195 	 * to go ahead and always set it.
2196 	 */
2197 	(yy_did_buffer_switch_on_eof) = 1;
2198 }
2199 
2200 static void yy_load_buffer_state  (void)
2201 {
2202     	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2203 	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2204 	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2205 	(yy_hold_char) = *(yy_c_buf_p);
2206 }
2207 
2208 /** Allocate and initialize an input buffer state.
2209  * @param file A readable stream.
2210  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2211  *
2212  * @return the allocated buffer state.
2213  */
2214     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
2215 {
2216 	YY_BUFFER_STATE b;
2217 
2218 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
2219 	if ( ! b )
2220 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2221 
2222 	b->yy_buf_size = size;
2223 
2224 	/* yy_ch_buf has to be 2 characters longer than the size given because
2225 	 * we need to put in 2 end-of-buffer characters.
2226 	 */
2227 	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
2228 	if ( ! b->yy_ch_buf )
2229 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2230 
2231 	b->yy_is_our_buffer = 1;
2232 
2233 	yy_init_buffer(b,file );
2234 
2235 	return b;
2236 }
2237 
2238 /** Destroy the buffer.
2239  * @param b a buffer created with yy_create_buffer()
2240  *
2241  */
2242     void yy_delete_buffer (YY_BUFFER_STATE  b )
2243 {
2244 
2245 	if ( ! b )
2246 		return;
2247 
2248 	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2249 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2250 
2251 	if ( b->yy_is_our_buffer )
2252 		yyfree((void *) b->yy_ch_buf  );
2253 
2254 	yyfree((void *) b  );
2255 }
2256 
2257 #ifndef __cplusplus
2258 extern int isatty (int );
2259 #endif /* __cplusplus */
2260 
2261 /* Initializes or reinitializes a buffer.
2262  * This function is sometimes called more than once on the same buffer,
2263  * such as during a yyrestart() or at EOF.
2264  */
2265     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
2266 
2267 {
2268 	int oerrno = errno;
2269 
2270 	yy_flush_buffer(b );
2271 
2272 	b->yy_input_file = file;
2273 	b->yy_fill_buffer = 1;
2274 
2275     /* If b is the current buffer, then yy_init_buffer was _probably_
2276      * called from yyrestart() or through yy_get_next_buffer.
2277      * In that case, we don't want to reset the lineno or column.
2278      */
2279     if (b != YY_CURRENT_BUFFER){
2280         b->yy_bs_lineno = 1;
2281         b->yy_bs_column = 0;
2282     }
2283 
2284         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2285 
2286 	errno = oerrno;
2287 }
2288 
2289 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2290  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2291  *
2292  */
2293     void yy_flush_buffer (YY_BUFFER_STATE  b )
2294 {
2295     	if ( ! b )
2296 		return;
2297 
2298 	b->yy_n_chars = 0;
2299 
2300 	/* We always need two end-of-buffer characters.  The first causes
2301 	 * a transition to the end-of-buffer state.  The second causes
2302 	 * a jam in that state.
2303 	 */
2304 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2305 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2306 
2307 	b->yy_buf_pos = &b->yy_ch_buf[0];
2308 
2309 	b->yy_at_bol = 1;
2310 	b->yy_buffer_status = YY_BUFFER_NEW;
2311 
2312 	if ( b == YY_CURRENT_BUFFER )
2313 		yy_load_buffer_state( );
2314 }
2315 
2316 /** Pushes the new state onto the stack. The new state becomes
2317  *  the current state. This function will allocate the stack
2318  *  if necessary.
2319  *  @param new_buffer The new state.
2320  *
2321  */
2322 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2323 {
2324     	if (new_buffer == NULL)
2325 		return;
2326 
2327 	yyensure_buffer_stack();
2328 
2329 	/* This block is copied from yy_switch_to_buffer. */
2330 	if ( YY_CURRENT_BUFFER )
2331 		{
2332 		/* Flush out information for old buffer. */
2333 		*(yy_c_buf_p) = (yy_hold_char);
2334 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2335 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2336 		}
2337 
2338 	/* Only push if top exists. Otherwise, replace top. */
2339 	if (YY_CURRENT_BUFFER)
2340 		(yy_buffer_stack_top)++;
2341 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
2342 
2343 	/* copied from yy_switch_to_buffer. */
2344 	yy_load_buffer_state( );
2345 	(yy_did_buffer_switch_on_eof) = 1;
2346 }
2347 
2348 /** Removes and deletes the top of the stack, if present.
2349  *  The next element becomes the new top.
2350  *
2351  */
2352 void yypop_buffer_state (void)
2353 {
2354     	if (!YY_CURRENT_BUFFER)
2355 		return;
2356 
2357 	yy_delete_buffer(YY_CURRENT_BUFFER );
2358 	YY_CURRENT_BUFFER_LVALUE = NULL;
2359 	if ((yy_buffer_stack_top) > 0)
2360 		--(yy_buffer_stack_top);
2361 
2362 	if (YY_CURRENT_BUFFER) {
2363 		yy_load_buffer_state( );
2364 		(yy_did_buffer_switch_on_eof) = 1;
2365 	}
2366 }
2367 
2368 /* Allocates the stack if it does not exist.
2369  *  Guarantees space for at least one push.
2370  */
2371 static void yyensure_buffer_stack (void)
2372 {
2373 	yy_size_t num_to_alloc;
2374 
2375 	if (!(yy_buffer_stack)) {
2376 
2377 		/* First allocation is just for 2 elements, since we don't know if this
2378 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2379 		 * immediate realloc on the next call.
2380          */
2381 		num_to_alloc = 1;
2382 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2383 								(num_to_alloc * sizeof(struct yy_buffer_state*)
2384 								);
2385 		if ( ! (yy_buffer_stack) )
2386 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2387 
2388 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2389 
2390 		(yy_buffer_stack_max) = num_to_alloc;
2391 		(yy_buffer_stack_top) = 0;
2392 		return;
2393 	}
2394 
2395 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2396 
2397 		/* Increase the buffer to prepare for a possible push. */
2398 		int grow_size = 8 /* arbitrary grow size */;
2399 
2400 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
2401 		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
2402 								((yy_buffer_stack),
2403 								num_to_alloc * sizeof(struct yy_buffer_state*)
2404 								);
2405 		if ( ! (yy_buffer_stack) )
2406 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2407 
2408 		/* zero only the new slots.*/
2409 		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2410 		(yy_buffer_stack_max) = num_to_alloc;
2411 	}
2412 }
2413 
2414 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2415  * @param base the character buffer
2416  * @param size the size in bytes of the character buffer
2417  *
2418  * @return the newly allocated buffer state object.
2419  */
2420 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
2421 {
2422 	YY_BUFFER_STATE b;
2423 
2424 	if ( size < 2 ||
2425 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
2426 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
2427 		/* They forgot to leave room for the EOB's. */
2428 		return 0;
2429 
2430 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
2431 	if ( ! b )
2432 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2433 
2434 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
2435 	b->yy_buf_pos = b->yy_ch_buf = base;
2436 	b->yy_is_our_buffer = 0;
2437 	b->yy_input_file = 0;
2438 	b->yy_n_chars = b->yy_buf_size;
2439 	b->yy_is_interactive = 0;
2440 	b->yy_at_bol = 1;
2441 	b->yy_fill_buffer = 0;
2442 	b->yy_buffer_status = YY_BUFFER_NEW;
2443 
2444 	yy_switch_to_buffer(b  );
2445 
2446 	return b;
2447 }
2448 
2449 /** Setup the input buffer state to scan a string. The next call to yylex() will
2450  * scan from a @e copy of @a str.
2451  * @param yystr a NUL-terminated string to scan
2452  *
2453  * @return the newly allocated buffer state object.
2454  * @note If you want to scan bytes that may contain NUL values, then use
2455  *       yy_scan_bytes() instead.
2456  */
2457 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
2458 {
2459 
2460 	return yy_scan_bytes(yystr,strlen(yystr) );
2461 }
2462 
2463 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2464  * scan from a @e copy of @a bytes.
2465  * @param bytes the byte buffer to scan
2466  * @param len the number of bytes in the buffer pointed to by @a bytes.
2467  *
2468  * @return the newly allocated buffer state object.
2469  */
2470 YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
2471 {
2472 	YY_BUFFER_STATE b;
2473 	char *buf;
2474 	yy_size_t n, i;
2475 
2476 	/* Get memory for full buffer, including space for trailing EOB's. */
2477 	n = _yybytes_len + 2;
2478 	buf = (char *) yyalloc(n  );
2479 	if ( ! buf )
2480 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2481 
2482 	for ( i = 0; i < _yybytes_len; ++i )
2483 		buf[i] = yybytes[i];
2484 
2485 	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2486 
2487 	b = yy_scan_buffer(buf,n );
2488 	if ( ! b )
2489 		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2490 
2491 	/* It's okay to grow etc. this buffer, and we should throw it
2492 	 * away when we're done.
2493 	 */
2494 	b->yy_is_our_buffer = 1;
2495 
2496 	return b;
2497 }
2498 
2499 #ifndef YY_EXIT_FAILURE
2500 #define YY_EXIT_FAILURE 2
2501 #endif
2502 
2503 static void yy_fatal_error (yyconst char* msg )
2504 {
2505     	(void) fprintf( stderr, "%s\n", msg );
2506 	exit( YY_EXIT_FAILURE );
2507 }
2508 
2509 /* Redefine yyless() so it works in section 3 code. */
2510 
2511 #undef yyless
2512 #define yyless(n) \
2513 	do \
2514 		{ \
2515 		/* Undo effects of setting up yytext. */ \
2516         int yyless_macro_arg = (n); \
2517         YY_LESS_LINENO(yyless_macro_arg);\
2518 		yytext[yyleng] = (yy_hold_char); \
2519 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
2520 		(yy_hold_char) = *(yy_c_buf_p); \
2521 		*(yy_c_buf_p) = '\0'; \
2522 		yyleng = yyless_macro_arg; \
2523 		} \
2524 	while ( 0 )
2525 
2526 /* Accessor  methods (get/set functions) to struct members. */
2527 
2528 /** Get the current line number.
2529  *
2530  */
2531 int yyget_lineno  (void)
2532 {
2533 
2534     return yylineno;
2535 }
2536 
2537 /** Get the input stream.
2538  *
2539  */
2540 FILE *yyget_in  (void)
2541 {
2542         return yyin;
2543 }
2544 
2545 /** Get the output stream.
2546  *
2547  */
2548 FILE *yyget_out  (void)
2549 {
2550         return yyout;
2551 }
2552 
2553 /** Get the length of the current token.
2554  *
2555  */
2556 yy_size_t yyget_leng  (void)
2557 {
2558         return yyleng;
2559 }
2560 
2561 /** Get the current token.
2562  *
2563  */
2564 
2565 char *yyget_text  (void)
2566 {
2567         return yytext;
2568 }
2569 
2570 /** Set the current line number.
2571  * @param line_number
2572  *
2573  */
2574 void yyset_lineno (int  line_number )
2575 {
2576 
2577     yylineno = line_number;
2578 }
2579 
2580 /** Set the input stream. This does not discard the current
2581  * input buffer.
2582  * @param in_str A readable stream.
2583  *
2584  * @see yy_switch_to_buffer
2585  */
2586 void yyset_in (FILE *  in_str )
2587 {
2588         yyin = in_str ;
2589 }
2590 
2591 void yyset_out (FILE *  out_str )
2592 {
2593         yyout = out_str ;
2594 }
2595 
2596 int yyget_debug  (void)
2597 {
2598         return yy_flex_debug;
2599 }
2600 
2601 void yyset_debug (int  bdebug )
2602 {
2603         yy_flex_debug = bdebug ;
2604 }
2605 
2606 static int yy_init_globals (void)
2607 {
2608         /* Initialization is the same as for the non-reentrant scanner.
2609      * This function is called from yylex_destroy(), so don't allocate here.
2610      */
2611 
2612     (yy_buffer_stack) = 0;
2613     (yy_buffer_stack_top) = 0;
2614     (yy_buffer_stack_max) = 0;
2615     (yy_c_buf_p) = (char *) 0;
2616     (yy_init) = 0;
2617     (yy_start) = 0;
2618 
2619 /* Defined in main.c */
2620 #ifdef YY_STDINIT
2621     yyin = stdin;
2622     yyout = stdout;
2623 #else
2624     yyin = (FILE *) 0;
2625     yyout = (FILE *) 0;
2626 #endif
2627 
2628     /* For future reference: Set errno on error, since we are called by
2629      * yylex_init()
2630      */
2631     return 0;
2632 }
2633 
2634 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
2635 int yylex_destroy  (void)
2636 {
2637 
2638     /* Pop the buffer stack, destroying each element. */
2639 	while(YY_CURRENT_BUFFER){
2640 		yy_delete_buffer(YY_CURRENT_BUFFER  );
2641 		YY_CURRENT_BUFFER_LVALUE = NULL;
2642 		yypop_buffer_state();
2643 	}
2644 
2645 	/* Destroy the stack itself. */
2646 	yyfree((yy_buffer_stack) );
2647 	(yy_buffer_stack) = NULL;
2648 
2649     /* Reset the globals. This is important in a non-reentrant scanner so the next time
2650      * yylex() is called, initialization will occur. */
2651     yy_init_globals( );
2652 
2653     return 0;
2654 }
2655 
2656 /*
2657  * Internal utility routines.
2658  */
2659 
2660 #ifndef yytext_ptr
2661 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2662 {
2663 	register int i;
2664 	for ( i = 0; i < n; ++i )
2665 		s1[i] = s2[i];
2666 }
2667 #endif
2668 
2669 #ifdef YY_NEED_STRLEN
2670 static int yy_flex_strlen (yyconst char * s )
2671 {
2672 	register int n;
2673 	for ( n = 0; s[n]; ++n )
2674 		;
2675 
2676 	return n;
2677 }
2678 #endif
2679 
2680 void *yyalloc (yy_size_t  size )
2681 {
2682 	return (void *) malloc( size );
2683 }
2684 
2685 void *yyrealloc  (void * ptr, yy_size_t  size )
2686 {
2687 	/* The cast to (char *) in the following accommodates both
2688 	 * implementations that use char* generic pointers, and those
2689 	 * that use void* generic pointers.  It works with the latter
2690 	 * because both ANSI C and C++ allow castless assignment from
2691 	 * any pointer type to void*, and deal with argument conversions
2692 	 * as though doing an assignment.
2693 	 */
2694 	return (void *) realloc( (char *) ptr, size );
2695 }
2696 
2697 void yyfree (void * ptr )
2698 {
2699 	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
2700 }
2701 
2702 #define YYTABLES_NAME "yytables"
2703 
2704 #line 275 "lex.l"
2705 
2706 
2707 
2708 int
2709 yywrap ()
2710 {
2711      return 1;
2712 }
2713 
2714 void
2715 lex_error_message (const char *format, ...)
2716 {
2717     va_list args;
2718 
2719     va_start (args, format);
2720     fprintf (stderr, "%s:%d: ", get_filename(), lineno);
2721     vfprintf (stderr, format, args);
2722     va_end (args);
2723     error_flag++;
2724 }
2725 
2726 static void
2727 unterminated(const char *type, unsigned start_lineno)
2728 {
2729     lex_error_message("unterminated %s, possibly started on line %d\n", type, start_lineno);
2730 }
2731 
2732