OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
lex.he5das.cc
Go to the documentation of this file.
1 #line 2 "lex.he5das.cc"
2 
3 #line 4 "lex.he5das.cc"
4 
5 #define YY_INT_ALIGNED short int
6 
7 /* A lexical scanner generated by flex */
8 
9 #define yy_create_buffer he5das_create_buffer
10 #define yy_delete_buffer he5das_delete_buffer
11 #define yy_flex_debug he5das_flex_debug
12 #define yy_init_buffer he5das_init_buffer
13 #define yy_flush_buffer he5das_flush_buffer
14 #define yy_load_buffer_state he5das_load_buffer_state
15 #define yy_switch_to_buffer he5das_switch_to_buffer
16 #define yyin he5dasin
17 #define yyleng he5dasleng
18 #define yylex he5daslex
19 #define yylineno he5daslineno
20 #define yyout he5dasout
21 #define yyrestart he5dasrestart
22 #define yytext he5dastext
23 #define yywrap he5daswrap
24 #define yyalloc he5dasalloc
25 #define yyrealloc he5dasrealloc
26 #define yyfree he5dasfree
27 
28 #define FLEX_SCANNER
29 #define YY_FLEX_MAJOR_VERSION 2
30 #define YY_FLEX_MINOR_VERSION 5
31 #define YY_FLEX_SUBMINOR_VERSION 35
32 #if YY_FLEX_SUBMINOR_VERSION > 0
33 #define FLEX_BETA
34 #endif
35 
36 /* First, we deal with platform-specific or compiler-specific issues. */
37 
38 /* begin standard C headers. */
39 #include <stdio.h>
40 #include <string.h>
41 #include <errno.h>
42 #include <stdlib.h>
43 
44 /* end standard C headers. */
45 
46 /* flex integer type definitions */
47 
48 #ifndef FLEXINT_H
49 #define FLEXINT_H
50 
51 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52 
53 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
54 
55 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
56  * if you want the limit (max/min) macros for int types.
57  */
58 #ifndef __STDC_LIMIT_MACROS
59 #define __STDC_LIMIT_MACROS 1
60 #endif
61 
62 #include <inttypes.h>
63 typedef int8_t flex_int8_t;
64 typedef uint8_t flex_uint8_t;
65 typedef int16_t flex_int16_t;
66 typedef uint16_t flex_uint16_t;
67 typedef int32_t flex_int32_t;
68 typedef uint32_t flex_uint32_t;
69 typedef uint64_t flex_uint64_t;
70 #else
71 typedef signed char flex_int8_t;
72 typedef short int flex_int16_t;
73 typedef int flex_int32_t;
74 typedef unsigned char flex_uint8_t;
75 typedef unsigned short int flex_uint16_t;
76 typedef unsigned int flex_uint32_t;
77 #endif /* ! C99 */
78 
79 /* Limits of integral types. */
80 #ifndef INT8_MIN
81 #define INT8_MIN (-128)
82 #endif
83 #ifndef INT16_MIN
84 #define INT16_MIN (-32767-1)
85 #endif
86 #ifndef INT32_MIN
87 #define INT32_MIN (-2147483647-1)
88 #endif
89 #ifndef INT8_MAX
90 #define INT8_MAX (127)
91 #endif
92 #ifndef INT16_MAX
93 #define INT16_MAX (32767)
94 #endif
95 #ifndef INT32_MAX
96 #define INT32_MAX (2147483647)
97 #endif
98 #ifndef UINT8_MAX
99 #define UINT8_MAX (255U)
100 #endif
101 #ifndef UINT16_MAX
102 #define UINT16_MAX (65535U)
103 #endif
104 #ifndef UINT32_MAX
105 #define UINT32_MAX (4294967295U)
106 #endif
107 
108 #endif /* ! FLEXINT_H */
109 
110 #ifdef __cplusplus
111 
112 /* The "const" storage-class-modifier is valid. */
113 #define YY_USE_CONST
114 
115 #else /* ! __cplusplus */
116 
117 /* C99 requires __STDC__ to be defined as 1. */
118 #if defined (__STDC__)
119 
120 #define YY_USE_CONST
121 
122 #endif /* defined (__STDC__) */
123 #endif /* ! __cplusplus */
124 
125 #ifdef YY_USE_CONST
126 #define yyconst const
127 #else
128 #define yyconst
129 #endif
130 
131 /* Returned upon end-of-file. */
132 #define YY_NULL 0
133 
134 /* Promotes a possibly negative, possibly signed char to an unsigned
135  * integer for use as an array index. If the signed char is negative,
136  * we want to instead treat it as an 8-bit unsigned char, hence the
137  * double cast.
138  */
139 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
140 
141 /* Enter a start condition. This macro really ought to take a parameter,
142  * but we do it the disgusting crufty way forced on us by the ()-less
143  * definition of BEGIN.
144  */
145 #define BEGIN (yy_start) = 1 + 2 *
146 
147 /* Translate the current start state into a value that can be later handed
148  * to BEGIN to return to the state. The YYSTATE alias is for lex
149  * compatibility.
150  */
151 #define YY_START (((yy_start) - 1) / 2)
152 #define YYSTATE YY_START
153 
154 /* Action number for EOF rule of a given start state. */
155 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
156 
157 /* Special action meaning "start processing a new file". */
158 #define YY_NEW_FILE he5dasrestart(he5dasin )
159 
160 #define YY_END_OF_BUFFER_CHAR 0
161 
162 /* Size of default input buffer. */
163 #ifndef YY_BUF_SIZE
164 #define YY_BUF_SIZE 16384
165 #endif
166 
167 /* The state buf must be large enough to hold one state per character in the main buffer.
168  */
169 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
170 
171 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
172 #define YY_TYPEDEF_YY_BUFFER_STATE
173 typedef struct yy_buffer_state *YY_BUFFER_STATE;
174 #endif
175 
176 #ifndef YY_TYPEDEF_YY_SIZE_T
177 #define YY_TYPEDEF_YY_SIZE_T
178 typedef size_t yy_size_t;
179 #endif
180 
181 extern yy_size_t he5dasleng;
182 
183 extern FILE *he5dasin, *he5dasout;
184 
185 #define EOB_ACT_CONTINUE_SCAN 0
186 #define EOB_ACT_END_OF_FILE 1
187 #define EOB_ACT_LAST_MATCH 2
188 
189  #define YY_LESS_LINENO(n)
190 
191 /* Return all but the first "n" matched characters back to the input stream. */
192 #define yyless(n) \
193  do \
194  { \
195  /* Undo effects of setting up he5dastext. */ \
196  int yyless_macro_arg = (n); \
197  YY_LESS_LINENO(yyless_macro_arg);\
198  *yy_cp = (yy_hold_char); \
199  YY_RESTORE_YY_MORE_OFFSET \
200  (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
201  YY_DO_BEFORE_ACTION; /* set up he5dastext again */ \
202  } \
203  while ( 0 )
204 
205 #define unput(c) yyunput( c, (yytext_ptr) )
206 
207 #ifndef YY_STRUCT_YY_BUFFER_STATE
208 #define YY_STRUCT_YY_BUFFER_STATE
209 struct yy_buffer_state
210  {
211  FILE *yy_input_file;
212 
213  char *yy_ch_buf; /* input buffer */
214  char *yy_buf_pos; /* current position in input buffer */
215 
216  /* Size of input buffer in bytes, not including room for EOB
217  * characters.
218  */
219  yy_size_t yy_buf_size;
220 
221  /* Number of characters read into yy_ch_buf, not including EOB
222  * characters.
223  */
224  yy_size_t yy_n_chars;
225 
226  /* Whether we "own" the buffer - i.e., we know we created it,
227  * and can realloc() it to grow it, and should free() it to
228  * delete it.
229  */
230  int yy_is_our_buffer;
231 
232  /* Whether this is an "interactive" input source; if so, and
233  * if we're using stdio for input, then we want to use getc()
234  * instead of fread(), to make sure we stop fetching input after
235  * each newline.
236  */
237  int yy_is_interactive;
238 
239  /* Whether we're considered to be at the beginning of a line.
240  * If so, '^' rules will be active on the next match, otherwise
241  * not.
242  */
243  int yy_at_bol;
244 
245  int yy_bs_lineno;
246  int yy_bs_column;
248  /* Whether to try to fill the input buffer when we reach the
249  * end of it.
250  */
251  int yy_fill_buffer;
252 
253  int yy_buffer_status;
254 
255 #define YY_BUFFER_NEW 0
256 #define YY_BUFFER_NORMAL 1
257  /* When an EOF's been seen but there's still some text to process
258  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
259  * shouldn't try reading from the input source any more. We might
260  * still have a bunch of tokens to match, though, because of
261  * possible backing-up.
262  *
263  * When we actually see the EOF, we change the status to "new"
264  * (via he5dasrestart()), so that the user can continue scanning by
265  * just pointing he5dasin at a new input file.
266  */
267 #define YY_BUFFER_EOF_PENDING 2
268 
269  };
270 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
271 
272 /* Stack of input buffers. */
273 static size_t yy_buffer_stack_top = 0;
274 static size_t yy_buffer_stack_max = 0;
275 static YY_BUFFER_STATE * yy_buffer_stack = 0;
277 /* We provide macros for accessing buffer states in case in the
278  * future we want to put the buffer states in a more general
279  * "scanner state".
280  *
281  * Returns the top of the stack, or NULL.
282  */
283 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
284  ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
285  : NULL)
286 
287 /* Same as previous macro, but useful when we know that the buffer stack is not
288  * NULL or when we need an lvalue. For internal use only.
289  */
290 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
291 
292 /* yy_hold_char holds the character lost when he5dastext is formed. */
293 static char yy_hold_char;
294 static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
296 
297 /* Points to current character in buffer. */
298 static char *yy_c_buf_p = (char *) 0;
299 static int yy_init = 0; /* whether we need to initialize */
300 static int yy_start = 0; /* start state number */
301 
302 /* Flag which is used to allow he5daswrap()'s to do buffer switches
303  * instead of setting up a fresh he5dasin. A bit of a hack ...
304  */
305 static int yy_did_buffer_switch_on_eof;
306 
307 void he5dasrestart (FILE *input_file );
308 void he5das_switch_to_buffer (YY_BUFFER_STATE new_buffer );
309 YY_BUFFER_STATE he5das_create_buffer (FILE *file,int size );
312 void he5daspush_buffer_state (YY_BUFFER_STATE new_buffer );
313 void he5daspop_buffer_state (void );
314 
315 static void he5dasensure_buffer_stack (void );
316 static void he5das_load_buffer_state (void );
317 static void he5das_init_buffer (YY_BUFFER_STATE b,FILE *file );
318 
319 #define YY_FLUSH_BUFFER he5das_flush_buffer(YY_CURRENT_BUFFER )
320 
321 YY_BUFFER_STATE he5das_scan_buffer (char *base,yy_size_t size );
324 
325 void *he5dasalloc (yy_size_t );
326 void *he5dasrealloc (void *,yy_size_t );
327 void he5dasfree (void * );
328 
329 #define yy_new_buffer he5das_create_buffer
330 
331 #define yy_set_interactive(is_interactive) \
332  { \
333  if ( ! YY_CURRENT_BUFFER ){ \
334  he5dasensure_buffer_stack (); \
335  YY_CURRENT_BUFFER_LVALUE = \
336  he5das_create_buffer(he5dasin,YY_BUF_SIZE ); \
337  } \
338  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
339  }
340 
341 #define yy_set_bol(at_bol) \
342  { \
343  if ( ! YY_CURRENT_BUFFER ){\
344  he5dasensure_buffer_stack (); \
345  YY_CURRENT_BUFFER_LVALUE = \
346  he5das_create_buffer(he5dasin,YY_BUF_SIZE ); \
347  } \
348  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
349  }
350 
351 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
352 
353 /* Begin user sect3 */
354 
355 #define he5daswrap(n) 1
356 #define YY_SKIP_YYWRAP
357 
358 typedef unsigned char YY_CHAR;
359 
360 FILE *he5dasin = (FILE *) 0, *he5dasout = (FILE *) 0;
361 
362 typedef int yy_state_type;
363 
364 extern int he5daslineno;
365 
366 int he5daslineno = 1;
367 
368 extern char *he5dastext;
369 #define yytext_ptr he5dastext
370 
371 static yy_state_type yy_get_previous_state (void );
372 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
373 static int yy_get_next_buffer (void );
374 static void yy_fatal_error (yyconst char msg[] );
375 
376 /* Done after the current pattern has been matched and before the
377  * corresponding action - sets up he5dastext.
378  */
379 #define YY_DO_BEFORE_ACTION \
380  (yytext_ptr) = yy_bp; \
381  (yytext_ptr) -= (yy_more_len); \
382  he5dasleng = (yy_size_t) (yy_cp - (yytext_ptr)); \
383  (yy_hold_char) = *yy_cp; \
384  *yy_cp = '\0'; \
385  (yy_c_buf_p) = yy_cp;
386 
387 #define YY_NUM_RULES 30
388 #define YY_END_OF_BUFFER 31
389 /* This struct is not used in this scanner,
390  but its presence is necessary. */
391 struct yy_trans_info
392  {
393  flex_int32_t yy_verify;
394  flex_int32_t yy_nxt;
395  };
396 static yyconst flex_int16_t yy_accept[89] =
397  { 0,
398  0, 0, 25, 25, 19, 19, 31, 29, 15, 16,
399  24, 9, 11, 12, 9, 13, 9, 9, 6, 14,
400  10, 9, 9, 9, 9, 30, 25, 26, 28, 30,
401  19, 20, 30, 30, 15, 9, 9, 6, 7, 17,
402  7, 6, 9, 9, 9, 9, 9, 25, 26, 27,
403  19, 20, 21, 22, 18, 23, 7, 9, 7, 9,
404  5, 9, 9, 9, 9, 9, 9, 9, 9, 9,
405  1, 9, 9, 9, 9, 3, 9, 9, 9, 9,
406  9, 9, 8, 2, 9, 8, 4, 0
407  } ;
408 
409 static yyconst flex_int32_t yy_ec[256] =
410  { 0,
411  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
412  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
413  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
414  1, 2, 1, 4, 1, 1, 5, 1, 1, 6,
415  7, 8, 9, 10, 9, 11, 12, 13, 13, 13,
416  13, 13, 13, 13, 13, 13, 13, 5, 14, 1,
417  15, 1, 1, 1, 16, 17, 18, 19, 20, 16,
418  21, 16, 16, 22, 16, 16, 16, 23, 24, 25,
419  16, 26, 16, 27, 28, 16, 16, 16, 16, 16,
420  1, 29, 1, 1, 30, 1, 31, 5, 5, 5,
421 
422  32, 5, 5, 5, 5, 5, 5, 5, 5, 5,
423  5, 33, 5, 5, 5, 34, 5, 5, 5, 5,
424  35, 5, 36, 1, 36, 1, 1, 1, 1, 1,
425  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
426  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
427  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
428  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
429  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
430  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
431  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
432 
433  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
435  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
436  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
437  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
438  1, 1, 1, 1, 1
439  } ;
440 
441 static yyconst flex_int32_t yy_meta[37] =
442  { 0,
443  1, 1, 2, 3, 4, 1, 1, 5, 4, 1,
444  4, 4, 6, 1, 1, 6, 6, 6, 6, 6,
445  6, 6, 6, 6, 6, 6, 6, 6, 3, 6,
446  4, 4, 4, 4, 4, 1
447  } ;
448 
449 static yyconst flex_int16_t yy_base[98] =
450  { 0,
451  0, 0, 34, 36, 38, 40, 160, 161, 157, 161,
452  161, 0, 161, 161, 34, 161, 145, 149, 38, 161,
453  161, 125, 132, 128, 136, 161, 149, 161, 161, 0,
454  148, 161, 47, 0, 148, 0, 136, 41, 40, 161,
455  42, 55, 67, 114, 128, 122, 123, 141, 161, 161,
456  140, 161, 161, 161, 161, 161, 51, 129, 128, 109,
457  109, 110, 117, 109, 57, 110, 116, 98, 102, 102,
458  0, 90, 77, 81, 79, 0, 54, 57, 64, 67,
459  54, 59, 0, 0, 30, 0, 0, 161, 87, 93,
460  96, 102, 108, 114, 120, 126, 50
461 
462  } ;
463 
464 static yyconst flex_int16_t yy_def[98] =
465  { 0,
466  88, 1, 89, 89, 90, 90, 88, 88, 88, 88,
467  88, 91, 88, 88, 91, 88, 91, 91, 91, 88,
468  88, 91, 91, 91, 91, 88, 92, 88, 88, 93,
469  94, 88, 95, 96, 88, 91, 91, 91, 91, 88,
470  91, 91, 91, 91, 91, 91, 91, 92, 88, 88,
471  94, 88, 88, 88, 88, 88, 91, 91, 91, 91,
472  91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
473  91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
474  91, 91, 97, 91, 91, 97, 91, 0, 88, 88,
475  88, 88, 88, 88, 88, 88, 88
476 
477  } ;
478 
479 static yyconst flex_int16_t yy_nxt[198] =
480  { 0,
481  8, 9, 10, 11, 12, 13, 14, 8, 15, 16,
482  17, 18, 19, 20, 21, 12, 12, 12, 22, 23,
483  24, 12, 12, 25, 12, 12, 12, 12, 8, 12,
484  12, 12, 12, 12, 12, 26, 28, 29, 28, 29,
485  32, 26, 32, 26, 37, 33, 38, 33, 41, 54,
486  42, 41, 39, 42, 57, 86, 87, 43, 55, 43,
487  43, 43, 30, 57, 30, 41, 34, 42, 34, 43,
488  43, 43, 43, 43, 43, 58, 85, 69, 84, 59,
489  70, 83, 43, 82, 81, 80, 43, 27, 27, 27,
490  27, 27, 27, 31, 31, 31, 31, 31, 31, 36,
491 
492  79, 36, 48, 48, 78, 48, 48, 48, 50, 77,
493  50, 50, 50, 50, 51, 51, 76, 51, 75, 51,
494  53, 53, 53, 53, 53, 53, 56, 74, 56, 56,
495  56, 56, 73, 72, 71, 68, 67, 66, 65, 64,
496  59, 59, 52, 49, 63, 62, 61, 60, 39, 35,
497  52, 49, 47, 46, 45, 44, 40, 39, 35, 88,
498  7, 88, 88, 88, 88, 88, 88, 88, 88, 88,
499  88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
500  88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
501  88, 88, 88, 88, 88, 88, 88
502 
503  } ;
504 
505 static yyconst flex_int16_t yy_chk[198] =
506  { 0,
507  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
508  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
509  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
510  1, 1, 1, 1, 1, 1, 3, 3, 4, 4,
511  5, 5, 6, 6, 15, 5, 15, 6, 19, 33,
512  19, 38, 39, 38, 41, 97, 85, 19, 33, 39,
513  38, 41, 3, 57, 4, 42, 5, 42, 6, 19,
514  57, 39, 38, 41, 42, 43, 82, 65, 81, 43,
515  65, 80, 57, 79, 78, 77, 42, 89, 89, 89,
516  89, 89, 89, 90, 90, 90, 90, 90, 90, 91,
517 
518  75, 91, 92, 92, 74, 92, 92, 92, 93, 73,
519  93, 93, 93, 93, 94, 94, 72, 94, 70, 94,
520  95, 95, 95, 95, 95, 95, 96, 69, 96, 96,
521  96, 96, 68, 67, 66, 64, 63, 62, 61, 60,
522  59, 58, 51, 48, 47, 46, 45, 44, 37, 35,
523  31, 27, 25, 24, 23, 22, 18, 17, 9, 7,
524  88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
525  88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
526  88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
527  88, 88, 88, 88, 88, 88, 88
528 
529  } ;
530 
531 static yy_state_type yy_last_accepting_state;
532 static char *yy_last_accepting_cpos;
533 
534 extern int he5das_flex_debug;
535 int he5das_flex_debug = 0;
536 
537 /* The intent behind this definition is that it'll catch
538  * any uses of REJECT which flex missed.
539  */
540 #define REJECT reject_used_but_not_detected
541 static int yy_more_flag = 0;
542 static int yy_more_len = 0;
543 #define yymore() ((yy_more_flag) = 1)
544 #define YY_MORE_ADJ (yy_more_len)
545 #define YY_RESTORE_YY_MORE_OFFSET
547 #line 1 "he5das.lex"
548 /*
549 // Copyright 1996, by the California Institute of Technology.
550 // ALL RIGHTS RESERVED. United States Government Sponsorship
551 // acknowledged. Any commercial use must be negotiated with the
552 // Office of Technology Transfer at the California Institute of
553 // Technology. This software may be subject to U.S. export control
554 // laws and regulations. By accepting this software, the user
555 // agrees to comply with all applicable U.S. export laws and
556 // regulations. User has the responsibility to obtain export
557 // licenses, or other export authority as may be required before
558 // exporting such information to foreign countries or providing
559 // access to foreign persons.
560 
561 // Author: Jake Hamby, NASA/Jet Propulsion Laboratory
562 // Jake.Hamby@jpl.nasa.gov
563 //
564 //
565 */
566 /*
567  Scanner for the HDF-EOS StructMetadata attribute. This file works with
568  gnu's flex scanner generator. It returns either ATTR, ID, VAL, TYPE or
569  one of the single character tokens `{', `}', `;', `,' or `\n' as integers.
570  In the case of an ID or VAL, the scanner stores a pointer to the lexeme
571  in yylval (whose type is char *).
572 
573  The scanner discards all comment text.
574 
575  The scanner returns quoted strings as VALs. Any characters may appear in a
576  quoted string except backslash (\) and quote("). To include these escape
577  them with a backslash.
578 
579  The scanner is not reentrant, but can share name spaces with other
580  scanners.
581 
582  Note:
583  1) The `defines' file he5dds.tab.h is built using `bison -d'.
584  2) Define YY_DECL such that the scanner is called `he5ddslex'.
585  3) When bison builds the he5dds.tab.h file, it uses `he5dds' instead of `yy' for
586  variable name prefixes (e.g., yylval --> he5ddslval).
587  4) The quote stuff is very complicated because we want backslash (\)
588  escapes to work and because we want line counts to work too. In order to
589  properly scan a quoted string two C functions are used: one to remove the
590  escape characters from escape sequences and one to remove the trailing
591  quote on the end of the string.
592 
593  jeh 6/19/1998
594 */
595 #line 51 "he5das.lex"
596 #ifndef YY_PROTO
597 #define YY_PROTO(proto) proto
598 #endif
599 #define YYSTYPE char *
600 #define YY_DECL int he5daslex YY_PROTO(( void ))
601 #define YY_READ_BUF_SIZE 16384
602 #define ECHO if (fwrite( he5dastext, he5dasleng, 1, he5dasout )) {}
603 
604 #include <string.h>
605 #include <assert.h>
606 #include <string>
607 #include <sstream>
608 #include <iostream>
609 
610 #include "config_hdf5.h"
611 #include "parser.h"
612 #include "he5das.tab.hh"
613 
614 using namespace std;
615 using namespace libdap;
616 
618 static int start_line; /* used in quote and comment error handlers */
619 
620 
621 
622 #line 623 "lex.he5das.cc"
623 
624 #define INITIAL 0
625 #define quote 1
626 #define comment 2
627 
628 #ifndef YY_NO_UNISTD_H
629 /* Special case for "unistd.h", since it is non-ANSI. We include it way
630  * down here because we want the user's section 1 to have been scanned first.
631  * The user has a chance to override it with an option.
632  */
633 #include <unistd.h>
634 #endif
635 
636 #ifndef YY_EXTRA_TYPE
637 #define YY_EXTRA_TYPE void *
638 #endif
639 
640 static int yy_init_globals (void );
641 
642 /* Accessor methods to globals.
643  These are made visible to non-reentrant scanners for convenience. */
644 
645 int he5daslex_destroy (void );
646 
647 int he5dasget_debug (void );
648 
649 void he5dasset_debug (int debug_flag );
650 
652 
653 void he5dasset_extra (YY_EXTRA_TYPE user_defined );
654 
655 FILE *he5dasget_in (void );
656 
657 void he5dasset_in (FILE * in_str );
658 
659 FILE *he5dasget_out (void );
660 
661 void he5dasset_out (FILE * out_str );
662 
663 yy_size_t he5dasget_leng (void );
664 
665 char *he5dasget_text (void );
666 
667 int he5dasget_lineno (void );
668 
669 void he5dasset_lineno (int line_number );
670 
671 /* Macros after this point can all be overridden by user definitions in
672  * section 1.
673  */
674 
675 #ifndef YY_SKIP_YYWRAP
676 #ifdef __cplusplus
677 extern "C" int he5daswrap (void );
678 #else
679 extern int he5daswrap (void );
680 #endif
681 #endif
682 
683  static void yyunput (int c,char *buf_ptr );
684 
685 #ifndef yytext_ptr
686 static void yy_flex_strncpy (char *,yyconst char *,int );
687 #endif
688 
689 #ifdef YY_NEED_STRLEN
690 static int yy_flex_strlen (yyconst char * );
691 #endif
692 
693 #ifndef YY_NO_INPUT
694 
695 #ifdef __cplusplus
696 static int yyinput (void );
697 #else
698 static int input (void );
699 #endif
700 
701 #endif
702 
703 /* Amount of stuff to slurp up with each read. */
704 #ifndef YY_READ_BUF_SIZE
705 #define YY_READ_BUF_SIZE 8192
706 #endif
707 
708 /* Copy whatever the last rule matched to the standard output. */
709 #ifndef ECHO
710 /* This used to be an fputs(), but since the string might contain NUL's,
711  * we now use fwrite().
712  */
713 #define ECHO fwrite( he5dastext, he5dasleng, 1, he5dasout )
714 #endif
715 
716 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
717  * is returned in "result".
718  */
719 #ifndef YY_INPUT
720 #define YY_INPUT(buf,result,max_size) \
721  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
722  { \
723  int c = '*'; \
724  yy_size_t n; \
725  for ( n = 0; n < max_size && \
726  (c = getc( he5dasin )) != EOF && c != '\n'; ++n ) \
727  buf[n] = (char) c; \
728  if ( c == '\n' ) \
729  buf[n++] = (char) c; \
730  if ( c == EOF && ferror( he5dasin ) ) \
731  YY_FATAL_ERROR( "input in flex scanner failed" ); \
732  result = n; \
733  } \
734  else \
735  { \
736  errno=0; \
737  while ( (result = fread(buf, 1, max_size, he5dasin))==0 && ferror(he5dasin)) \
738  { \
739  if( errno != EINTR) \
740  { \
741  YY_FATAL_ERROR( "input in flex scanner failed" ); \
742  break; \
743  } \
744  errno=0; \
745  clearerr(he5dasin); \
746  } \
747  }\
748 \
749 
750 #endif
751 
752 /* No semi-colon after return; correct usage is to write "yyterminate();" -
753  * we don't want an extra ';' after the "return" because that will cause
754  * some compilers to complain about unreachable statements.
755  */
756 #ifndef yyterminate
757 #define yyterminate() return YY_NULL
758 #endif
759 
760 /* Number of entries by which start-condition stack grows. */
761 #ifndef YY_START_STACK_INCR
762 #define YY_START_STACK_INCR 25
763 #endif
764 
765 /* Report a fatal error. */
766 #ifndef YY_FATAL_ERROR
767 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
768 #endif
769 
770 /* end tables serialization structures and prototypes */
771 
772 /* Default declaration of generated scanner - a define so the user can
773  * easily add parameters.
774  */
775 #ifndef YY_DECL
776 #define YY_DECL_IS_OURS 1
777 
778 extern int he5daslex (void);
779 
780 #define YY_DECL int he5daslex (void)
781 #endif /* !YY_DECL */
782 
783 /* Code executed at the beginning of each rule, after he5dastext and he5dasleng
784  * have been set up.
785  */
786 #ifndef YY_USER_ACTION
787 #define YY_USER_ACTION
788 #endif
789 
790 /* Code executed at the end of each rule. */
791 #ifndef YY_BREAK
792 #define YY_BREAK break;
793 #endif
794 
795 #define YY_RULE_SETUP \
796  YY_USER_ACTION
797 
800 YY_DECL
801 {
802  register yy_state_type yy_current_state;
803  register char *yy_cp, *yy_bp;
804  register int yy_act;
805 
806 #line 103 "he5das.lex"
807 
808 
809 #line 810 "lex.he5das.cc"
810 
811  if ( !(yy_init) )
812  {
813  (yy_init) = 1;
814 
815 #ifdef YY_USER_INIT
816  YY_USER_INIT;
817 #endif
818 
819  if ( ! (yy_start) )
820  (yy_start) = 1; /* first start state */
821 
822  if ( ! he5dasin )
823  he5dasin = stdin;
824 
825  if ( ! he5dasout )
826  he5dasout = stdout;
827 
828  if ( ! YY_CURRENT_BUFFER ) {
829  he5dasensure_buffer_stack ();
832  }
833 
834  he5das_load_buffer_state( );
835  }
836 
837  while ( 1 ) /* loops until end-of-file is reached */
838  {
839  (yy_more_len) = 0;
840  if ( (yy_more_flag) )
841  {
842  (yy_more_len) = (yy_c_buf_p) - (yytext_ptr);
843  (yy_more_flag) = 0;
844  }
845  yy_cp = (yy_c_buf_p);
846 
847  /* Support of he5dastext. */
848  *yy_cp = (yy_hold_char);
849 
850  /* yy_bp points to the position in yy_ch_buf of the start of
851  * the current run.
852  */
853  yy_bp = yy_cp;
854 
855  yy_current_state = (yy_start);
856 yy_match:
857  do
858  {
859  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
860  if ( yy_accept[yy_current_state] )
861  {
862  (yy_last_accepting_state) = yy_current_state;
863  (yy_last_accepting_cpos) = yy_cp;
864  }
865  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
866  {
867  yy_current_state = (int) yy_def[yy_current_state];
868  if ( yy_current_state >= 89 )
869  yy_c = yy_meta[(unsigned int) yy_c];
870  }
871  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
872  ++yy_cp;
873  }
874  while ( yy_base[yy_current_state] != 161 );
875 
876 yy_find_action:
877  yy_act = yy_accept[yy_current_state];
878  if ( yy_act == 0 )
879  { /* have to back up */
880  yy_cp = (yy_last_accepting_cpos);
881  yy_current_state = (yy_last_accepting_state);
882  yy_act = yy_accept[yy_current_state];
883  }
884 
886 
887 do_action: /* This label is used only to access EOF actions. */
888 
889  switch ( yy_act )
890  { /* beginning of action switch */
891  case 0: /* must back up */
892  /* undo the effects of YY_DO_BEFORE_ACTION */
893  *yy_cp = (yy_hold_char);
894  yy_cp = (yy_last_accepting_cpos);
895  yy_current_state = (yy_last_accepting_state);
896  goto yy_find_action;
897 
898 case 1:
900 #line 105 "he5das.lex"
902  YY_BREAK
903 case 2:
905 #line 106 "he5das.lex"
906 he5daslval = he5dastext; return DAS_END_GROUP;
907  YY_BREAK
908 case 3:
910 #line 107 "he5das.lex"
911 he5daslval = he5dastext; return DAS_OBJECT;
912  YY_BREAK
913 case 4:
915 #line 108 "he5das.lex"
916 he5daslval = he5dastext; return DAS_END_OBJECT;
917  YY_BREAK
918 case 5:
920 #line 109 "he5das.lex"
921 /* Ignore */
922  YY_BREAK
923 case 6:
925 #line 110 "he5das.lex"
926 he5daslval = he5dastext; return DAS_INT;
927  YY_BREAK
928 case 7:
930 #line 111 "he5das.lex"
931 he5daslval = he5dastext; return DAS_FLOAT;
932  YY_BREAK
933 case 8:
935 #line 112 "he5das.lex"
936 /* Ignore */
937  YY_BREAK
938 case 9:
940 #line 113 "he5das.lex"
941 he5daslval = he5dastext; return DAS_STR;
942  YY_BREAK
943 case 10:
945 #line 115 "he5das.lex"
946 return (int)*he5dastext;
947  YY_BREAK
948 case 11:
950 #line 116 "he5das.lex"
951 return (int)*he5dastext;
952  YY_BREAK
953 case 12:
955 #line 117 "he5das.lex"
956 return (int)*he5dastext;
957  YY_BREAK
958 case 13:
960 #line 118 "he5das.lex"
961 return (int)*he5dastext;
962  YY_BREAK
963 case 14:
965 #line 119 "he5das.lex"
966 /* Ignore */
967  YY_BREAK
968 case 15:
970 #line 121 "he5das.lex"
971 
972  YY_BREAK
973 case 16:
974 /* rule 16 can match eol */
976 #line 122 "he5das.lex"
978  YY_BREAK
979 case YY_STATE_EOF(INITIAL):
980 #line 123 "he5das.lex"
981 yy_init = 1; he5das_line_num = 1; yyterminate();
982  YY_BREAK
983 case 17:
985 #line 125 "he5das.lex"
986 BEGIN(comment); start_line = he5das_line_num; yymore();
987  YY_BREAK
988 case 18:
990 #line 126 "he5das.lex"
991 {
992  BEGIN(INITIAL);
993 
994  he5daslval = he5dastext;
995 
996  return DAS_COMMENT;
997  }
998  YY_BREAK
999 case 19:
1001 #line 133 "he5das.lex"
1002 yymore();
1003  YY_BREAK
1004 case 20:
1005 /* rule 20 can match eol */
1007 #line 134 "he5das.lex"
1008 yymore(); ++he5das_line_num;
1009  YY_BREAK
1010 case 21:
1012 #line 135 "he5das.lex"
1013 yymore();
1014  YY_BREAK
1015 case 22:
1016 /* rule 22 can match eol */
1018 #line 136 "he5das.lex"
1019 yymore(); ++he5das_line_num;
1020  YY_BREAK
1021 case 23:
1023 #line 137 "he5das.lex"
1024 yymore();
1025  YY_BREAK
1026 case YY_STATE_EOF(comment):
1027 #line 138 "he5das.lex"
1028 {
1029  ostringstream msg;
1030  msg << "Unterminated comment (starts on line "
1031  << start_line << ")";
1032  YY_FATAL_ERROR(msg.str().c_str());
1033  }
1034  YY_BREAK
1035 case 24:
1037 #line 145 "he5das.lex"
1038 BEGIN(quote); start_line = he5das_line_num; yymore();
1039  YY_BREAK
1040 case 25:
1042 #line 146 "he5das.lex"
1043 yymore();
1044  YY_BREAK
1045 case 26:
1046 /* rule 26 can match eol */
1048 #line 147 "he5das.lex"
1049 yymore(); ++he5das_line_num;
1050  YY_BREAK
1051 case 27:
1053 #line 148 "he5das.lex"
1054 yymore();
1055  YY_BREAK
1056 case 28:
1058 #line 149 "he5das.lex"
1059 {
1060  BEGIN(INITIAL);
1061 
1062  he5daslval = he5dastext;
1063 
1064  return DAS_STR;
1065  }
1066  YY_BREAK
1067 case YY_STATE_EOF(quote):
1068 #line 156 "he5das.lex"
1069 {
1070  ostringstream msg;
1071  msg << "Unterminated quote (starts on line "
1072  << start_line << ")";
1073  YY_FATAL_ERROR(msg.str().c_str());
1074  }
1075  YY_BREAK
1076 case 29:
1077 /* rule 29 can match eol */
1079 #line 163 "he5das.lex"
1080 {
1081  if (he5dastext) { /* suppress msgs about `' chars */
1082  fprintf(stderr, "Character '%c' (%d) is not", *he5dastext, *he5dastext);
1083  fprintf(stderr, " allowed (except within");
1084  fprintf(stderr, " quotes) and has been ignored\n");
1085  }
1086  }
1087  YY_BREAK
1088 case 30:
1090 #line 170 "he5das.lex"
1091 ECHO;
1092  YY_BREAK
1093 #line 1094 "lex.he5das.cc"
1094 
1095  case YY_END_OF_BUFFER:
1096  {
1097  /* Amount of text matched not including the EOB char. */
1098  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1099 
1100  /* Undo the effects of YY_DO_BEFORE_ACTION. */
1101  *yy_cp = (yy_hold_char);
1103 
1104  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1105  {
1106  /* We're scanning a new file or input source. It's
1107  * possible that this happened because the user
1108  * just pointed he5dasin at a new source and called
1109  * he5daslex(). If so, then we have to assure
1110  * consistency between YY_CURRENT_BUFFER and our
1111  * globals. Here is the right place to do so, because
1112  * this is the first action (other than possibly a
1113  * back-up) that will match for the new input source.
1114  */
1115  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1116  YY_CURRENT_BUFFER_LVALUE->yy_input_file = he5dasin;
1117  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1118  }
1119 
1120  /* Note that here we test for yy_c_buf_p "<=" to the position
1121  * of the first EOB in the buffer, since yy_c_buf_p will
1122  * already have been incremented past the NUL character
1123  * (since all states make transitions on EOB to the
1124  * end-of-buffer state). Contrast this with the test
1125  * in input().
1126  */
1127  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1128  { /* This was really a NUL. */
1129  yy_state_type yy_next_state;
1130 
1131  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1132 
1133  yy_current_state = yy_get_previous_state( );
1134 
1135  /* Okay, we're now positioned to make the NUL
1136  * transition. We couldn't have
1137  * yy_get_previous_state() go ahead and do it
1138  * for us because it doesn't know how to deal
1139  * with the possibility of jamming (and we don't
1140  * want to build jamming into it because then it
1141  * will run more slowly).
1142  */
1143 
1144  yy_next_state = yy_try_NUL_trans( yy_current_state );
1145 
1146  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1147 
1148  if ( yy_next_state )
1149  {
1150  /* Consume the NUL. */
1151  yy_cp = ++(yy_c_buf_p);
1152  yy_current_state = yy_next_state;
1153  goto yy_match;
1154  }
1155 
1156  else
1157  {
1158  yy_cp = (yy_c_buf_p);
1159  goto yy_find_action;
1160  }
1161  }
1162 
1163  else switch ( yy_get_next_buffer( ) )
1164  {
1165  case EOB_ACT_END_OF_FILE:
1166  {
1167  (yy_did_buffer_switch_on_eof) = 0;
1168 
1169  if ( he5daswrap( ) )
1170  {
1171  /* Note: because we've taken care in
1172  * yy_get_next_buffer() to have set up
1173  * he5dastext, we can now set up
1174  * yy_c_buf_p so that if some total
1175  * hoser (like flex itself) wants to
1176  * call the scanner after we return the
1177  * YY_NULL, it'll still work - another
1178  * YY_NULL will get returned.
1179  */
1180  (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1181 
1182  yy_act = YY_STATE_EOF(YY_START);
1183  goto do_action;
1184  }
1185 
1186  else
1187  {
1188  if ( ! (yy_did_buffer_switch_on_eof) )
1189  YY_NEW_FILE;
1190  }
1191  break;
1192  }
1193 
1194  case EOB_ACT_CONTINUE_SCAN:
1195  (yy_c_buf_p) =
1196  (yytext_ptr) + yy_amount_of_matched_text;
1197 
1198  yy_current_state = yy_get_previous_state( );
1199 
1200  yy_cp = (yy_c_buf_p);
1201  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1202  goto yy_match;
1203 
1204  case EOB_ACT_LAST_MATCH:
1205  (yy_c_buf_p) =
1206  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1207 
1208  yy_current_state = yy_get_previous_state( );
1209 
1210  yy_cp = (yy_c_buf_p);
1211  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1212  goto yy_find_action;
1213  }
1214  break;
1215  }
1216 
1217  default:
1219  "fatal flex scanner internal error--no action found" );
1220  } /* end of action switch */
1221  } /* end of scanning one token */
1222 } /* end of he5daslex */
1223 
1224 /* yy_get_next_buffer - try to read in a new buffer
1225  *
1226  * Returns a code representing an action:
1227  * EOB_ACT_LAST_MATCH -
1228  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1229  * EOB_ACT_END_OF_FILE - end of file
1230  */
1231 static int yy_get_next_buffer (void)
1232 {
1233  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1234  register char *source = (yytext_ptr);
1235  register int number_to_move, i;
1236  int ret_val;
1237 
1238  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1240  "fatal flex scanner internal error--end of buffer missed" );
1241 
1242  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1243  { /* Don't try to fill the buffer, so this is an EOF. */
1244  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1245  {
1246  /* We matched a single character, the EOB, so
1247  * treat this as a final EOF.
1248  */
1249  return EOB_ACT_END_OF_FILE;
1250  }
1251 
1252  else
1253  {
1254  /* We matched some text prior to the EOB, first
1255  * process it.
1256  */
1257  return EOB_ACT_LAST_MATCH;
1258  }
1259  }
1260 
1261  /* Try to read more data. */
1262 
1263  /* First move last chars to start of buffer. */
1264  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1265 
1266  for ( i = 0; i < number_to_move; ++i )
1267  *(dest++) = *(source++);
1268 
1269  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1270  /* don't do the read, it's not guaranteed to return an EOF,
1271  * just force an EOF
1272  */
1273  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1274 
1275  else
1276  {
1277  yy_size_t num_to_read =
1278  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1279 
1280  while ( num_to_read <= 0 )
1281  { /* Not enough room in the buffer - grow it. */
1282 
1283  /* just a shorter name for the current buffer */
1285 
1286  int yy_c_buf_p_offset =
1287  (int) ((yy_c_buf_p) - b->yy_ch_buf);
1288 
1289  if ( b->yy_is_our_buffer )
1290  {
1291  yy_size_t new_size = b->yy_buf_size * 2;
1292 
1293  if ( new_size <= 0 )
1294  b->yy_buf_size += b->yy_buf_size / 8;
1295  else
1296  b->yy_buf_size *= 2;
1297 
1298  b->yy_ch_buf = (char *)
1299  /* Include room in for 2 EOB chars. */
1300  he5dasrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
1301  }
1302  else
1303  /* Can't grow it, we don't own it. */
1304  b->yy_ch_buf = 0;
1305 
1306  if ( ! b->yy_ch_buf )
1308  "fatal error - scanner input buffer overflow" );
1309 
1310  (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1311 
1312  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1313  number_to_move - 1;
1314 
1315  }
1316 
1317  if ( num_to_read > YY_READ_BUF_SIZE )
1318  num_to_read = YY_READ_BUF_SIZE;
1319 
1320  /* Read in more data. */
1321  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1322  (yy_n_chars), num_to_read );
1323 
1324  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1325  }
1326 
1327  if ( (yy_n_chars) == 0 )
1328  {
1329  if ( number_to_move == YY_MORE_ADJ )
1330  {
1331  ret_val = EOB_ACT_END_OF_FILE;
1333  }
1334 
1335  else
1336  {
1337  ret_val = EOB_ACT_LAST_MATCH;
1338  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1340  }
1341  }
1342 
1343  else
1344  ret_val = EOB_ACT_CONTINUE_SCAN;
1345 
1346  if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1347  /* Extend the array by 50%, plus the number we really need. */
1348  yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1349  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) he5dasrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
1350  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1351  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1352  }
1353 
1354  (yy_n_chars) += number_to_move;
1355  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1356  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1357 
1358  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1359 
1360  return ret_val;
1361 }
1362 
1363 /* yy_get_previous_state - get the state just before the EOB char was reached */
1364 
1365  static yy_state_type yy_get_previous_state (void)
1366 {
1367  register yy_state_type yy_current_state;
1368  register char *yy_cp;
1369 
1370  yy_current_state = (yy_start);
1371 
1372  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1373  {
1374  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1375  if ( yy_accept[yy_current_state] )
1376  {
1377  (yy_last_accepting_state) = yy_current_state;
1378  (yy_last_accepting_cpos) = yy_cp;
1379  }
1380  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1381  {
1382  yy_current_state = (int) yy_def[yy_current_state];
1383  if ( yy_current_state >= 89 )
1384  yy_c = yy_meta[(unsigned int) yy_c];
1385  }
1386  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1387  }
1388 
1389  return yy_current_state;
1390 }
1391 
1392 /* yy_try_NUL_trans - try to make a transition on the NUL character
1393  *
1394  * synopsis
1395  * next_state = yy_try_NUL_trans( current_state );
1396  */
1397  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
1398 {
1399  register int yy_is_jam;
1400  register char *yy_cp = (yy_c_buf_p);
1401 
1402  register YY_CHAR yy_c = 1;
1403  if ( yy_accept[yy_current_state] )
1404  {
1405  (yy_last_accepting_state) = yy_current_state;
1406  (yy_last_accepting_cpos) = yy_cp;
1407  }
1408  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1409  {
1410  yy_current_state = (int) yy_def[yy_current_state];
1411  if ( yy_current_state >= 89 )
1412  yy_c = yy_meta[(unsigned int) yy_c];
1413  }
1414  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1415  yy_is_jam = (yy_current_state == 88);
1416 
1417  return yy_is_jam ? 0 : yy_current_state;
1418 }
1419 
1420  static void yyunput (int c, register char * yy_bp )
1421 {
1422  register char *yy_cp;
1423 
1424  yy_cp = (yy_c_buf_p);
1425 
1426  /* undo effects of setting up he5dastext */
1427  *yy_cp = (yy_hold_char);
1428 
1429  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1430  { /* need to shift things up to make room */
1431  /* +2 for EOB chars. */
1432  register yy_size_t number_to_move = (yy_n_chars) + 2;
1433  register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1434  YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1435  register char *source =
1436  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1437 
1438  while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1439  *--dest = *--source;
1440 
1441  yy_cp += (int) (dest - source);
1442  yy_bp += (int) (dest - source);
1443  YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1444  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1445 
1446  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1447  YY_FATAL_ERROR( "flex scanner push-back overflow" );
1448  }
1449 
1450  *--yy_cp = (char) c;
1451 
1452  (yytext_ptr) = yy_bp;
1453  (yy_hold_char) = *yy_cp;
1454  (yy_c_buf_p) = yy_cp;
1455 }
1456 
1457 #ifndef YY_NO_INPUT
1458 #ifdef __cplusplus
1459  static int yyinput (void)
1460 #else
1461  static int input (void)
1462 #endif
1463 
1464 {
1465  int c;
1466 
1467  *(yy_c_buf_p) = (yy_hold_char);
1468 
1469  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1470  {
1471  /* yy_c_buf_p now points to the character we want to return.
1472  * If this occurs *before* the EOB characters, then it's a
1473  * valid NUL; if not, then we've hit the end of the buffer.
1474  */
1475  if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1476  /* This was really a NUL. */
1477  *(yy_c_buf_p) = '\0';
1478 
1479  else
1480  { /* need more input */
1481  yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
1482  ++(yy_c_buf_p);
1483 
1484  switch ( yy_get_next_buffer( ) )
1485  {
1486  case EOB_ACT_LAST_MATCH:
1487  /* This happens because yy_g_n_b()
1488  * sees that we've accumulated a
1489  * token and flags that we need to
1490  * try matching the token before
1491  * proceeding. But for input(),
1492  * there's no matching to consider.
1493  * So convert the EOB_ACT_LAST_MATCH
1494  * to EOB_ACT_END_OF_FILE.
1495  */
1496 
1497  /* Reset buffer status. */
1499 
1500  /*FALLTHROUGH*/
1501 
1502  case EOB_ACT_END_OF_FILE:
1503  {
1504  if ( he5daswrap( ) )
1505  return 0;
1506 
1507  if ( ! (yy_did_buffer_switch_on_eof) )
1508  YY_NEW_FILE;
1509 #ifdef __cplusplus
1510  return yyinput();
1511 #else
1512  return input();
1513 #endif
1514  }
1515 
1516  case EOB_ACT_CONTINUE_SCAN:
1517  (yy_c_buf_p) = (yytext_ptr) + offset;
1518  break;
1519  }
1520  }
1521  }
1522 
1523  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
1524  *(yy_c_buf_p) = '\0'; /* preserve he5dastext */
1525  (yy_hold_char) = *++(yy_c_buf_p);
1526 
1527  return c;
1528 }
1529 #endif /* ifndef YY_NO_INPUT */
1530 
1536  void he5dasrestart (FILE * input_file )
1537 {
1538 
1539  if ( ! YY_CURRENT_BUFFER ){
1540  he5dasensure_buffer_stack ();
1543  }
1544 
1545  he5das_init_buffer(YY_CURRENT_BUFFER,input_file );
1546  he5das_load_buffer_state( );
1547 }
1548 
1554 {
1555 
1556  /* TODO. We should be able to replace this entire function body
1557  * with
1558  * he5daspop_buffer_state();
1559  * he5daspush_buffer_state(new_buffer);
1560  */
1561  he5dasensure_buffer_stack ();
1562  if ( YY_CURRENT_BUFFER == new_buffer )
1563  return;
1564 
1565  if ( YY_CURRENT_BUFFER )
1566  {
1567  /* Flush out information for old buffer. */
1568  *(yy_c_buf_p) = (yy_hold_char);
1569  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1570  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1571  }
1572 
1573  YY_CURRENT_BUFFER_LVALUE = new_buffer;
1574  he5das_load_buffer_state( );
1575 
1576  /* We don't actually know whether we did this switch during
1577  * EOF (he5daswrap()) processing, but the only time this flag
1578  * is looked at is after he5daswrap() is called, so it's safe
1579  * to go ahead and always set it.
1580  */
1581  (yy_did_buffer_switch_on_eof) = 1;
1582 }
1583 
1584 static void he5das_load_buffer_state (void)
1585 {
1586  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1587  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1588  he5dasin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1589  (yy_hold_char) = *(yy_c_buf_p);
1590 }
1591 
1598  YY_BUFFER_STATE he5das_create_buffer (FILE * file, int size )
1599 {
1600  YY_BUFFER_STATE b;
1601 
1602  b = (YY_BUFFER_STATE) he5dasalloc(sizeof( struct yy_buffer_state ) );
1603  if ( ! b )
1604  YY_FATAL_ERROR( "out of dynamic memory in he5das_create_buffer()" );
1605 
1606  b->yy_buf_size = size;
1607 
1608  /* yy_ch_buf has to be 2 characters longer than the size given because
1609  * we need to put in 2 end-of-buffer characters.
1610  */
1611  b->yy_ch_buf = (char *) he5dasalloc(b->yy_buf_size + 2 );
1612  if ( ! b->yy_ch_buf )
1613  YY_FATAL_ERROR( "out of dynamic memory in he5das_create_buffer()" );
1614 
1615  b->yy_is_our_buffer = 1;
1616 
1617  he5das_init_buffer(b,file );
1618 
1619  return b;
1620 }
1621 
1627 {
1628 
1629  if ( ! b )
1630  return;
1631 
1632  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1634 
1635  if ( b->yy_is_our_buffer )
1636  he5dasfree((void *) b->yy_ch_buf );
1637 
1638  he5dasfree((void *) b );
1639 }
1640 
1641 #ifndef __cplusplus
1642 extern int isatty (int );
1643 #endif /* __cplusplus */
1644 
1645 /* Initializes or reinitializes a buffer.
1646  * This function is sometimes called more than once on the same buffer,
1647  * such as during a he5dasrestart() or at EOF.
1648  */
1649  static void he5das_init_buffer (YY_BUFFER_STATE b, FILE * file )
1650 
1651 {
1652  int oerrno = errno;
1653 
1654  he5das_flush_buffer(b );
1655 
1656  b->yy_input_file = file;
1657  b->yy_fill_buffer = 1;
1658 
1659  /* If b is the current buffer, then he5das_init_buffer was _probably_
1660  * called from he5dasrestart() or through yy_get_next_buffer.
1661  * In that case, we don't want to reset the lineno or column.
1662  */
1663  if (b != YY_CURRENT_BUFFER){
1664  b->yy_bs_lineno = 1;
1665  b->yy_bs_column = 0;
1666  }
1667 
1668  b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1669 
1670  errno = oerrno;
1671 }
1672 
1678 {
1679  if ( ! b )
1680  return;
1681 
1682  b->yy_n_chars = 0;
1683 
1684  /* We always need two end-of-buffer characters. The first causes
1685  * a transition to the end-of-buffer state. The second causes
1686  * a jam in that state.
1687  */
1688  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1689  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1690 
1691  b->yy_buf_pos = &b->yy_ch_buf[0];
1692 
1693  b->yy_at_bol = 1;
1694  b->yy_buffer_status = YY_BUFFER_NEW;
1695 
1696  if ( b == YY_CURRENT_BUFFER )
1697  he5das_load_buffer_state( );
1698 }
1699 
1707 {
1708  if (new_buffer == NULL)
1709  return;
1710 
1711  he5dasensure_buffer_stack();
1712 
1713  /* This block is copied from he5das_switch_to_buffer. */
1714  if ( YY_CURRENT_BUFFER )
1715  {
1716  /* Flush out information for old buffer. */
1717  *(yy_c_buf_p) = (yy_hold_char);
1718  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1719  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1720  }
1721 
1722  /* Only push if top exists. Otherwise, replace top. */
1723  if (YY_CURRENT_BUFFER)
1724  (yy_buffer_stack_top)++;
1725  YY_CURRENT_BUFFER_LVALUE = new_buffer;
1726 
1727  /* copied from he5das_switch_to_buffer. */
1728  he5das_load_buffer_state( );
1729  (yy_did_buffer_switch_on_eof) = 1;
1730 }
1731 
1737 {
1738  if (!YY_CURRENT_BUFFER)
1739  return;
1740 
1743  if ((yy_buffer_stack_top) > 0)
1744  --(yy_buffer_stack_top);
1745 
1746  if (YY_CURRENT_BUFFER) {
1747  he5das_load_buffer_state( );
1748  (yy_did_buffer_switch_on_eof) = 1;
1749  }
1750 }
1751 
1752 /* Allocates the stack if it does not exist.
1753  * Guarantees space for at least one push.
1754  */
1755 static void he5dasensure_buffer_stack (void)
1756 {
1757  yy_size_t num_to_alloc;
1758 
1759  if (!(yy_buffer_stack)) {
1760 
1761  /* First allocation is just for 2 elements, since we don't know if this
1762  * scanner will even need a stack. We use 2 instead of 1 to avoid an
1763  * immediate realloc on the next call.
1764  */
1765  num_to_alloc = 1;
1766  (yy_buffer_stack) = (struct yy_buffer_state**)he5dasalloc
1767  (num_to_alloc * sizeof(struct yy_buffer_state*)
1768  );
1769  if ( ! (yy_buffer_stack) )
1770  YY_FATAL_ERROR( "out of dynamic memory in he5dasensure_buffer_stack()" );
1771 
1772  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1773 
1774  (yy_buffer_stack_max) = num_to_alloc;
1775  (yy_buffer_stack_top) = 0;
1776  return;
1777  }
1778 
1779  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
1780 
1781  /* Increase the buffer to prepare for a possible push. */
1782  int grow_size = 8 /* arbitrary grow size */;
1783 
1784  num_to_alloc = (yy_buffer_stack_max) + grow_size;
1785  (yy_buffer_stack) = (struct yy_buffer_state**)he5dasrealloc
1786  ((yy_buffer_stack),
1787  num_to_alloc * sizeof(struct yy_buffer_state*)
1788  );
1789  if ( ! (yy_buffer_stack) )
1790  YY_FATAL_ERROR( "out of dynamic memory in he5dasensure_buffer_stack()" );
1791 
1792  /* zero only the new slots.*/
1793  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
1794  (yy_buffer_stack_max) = num_to_alloc;
1795  }
1796 }
1797 
1805 {
1806  YY_BUFFER_STATE b;
1807 
1808  if ( size < 2 ||
1809  base[size-2] != YY_END_OF_BUFFER_CHAR ||
1810  base[size-1] != YY_END_OF_BUFFER_CHAR )
1811  /* They forgot to leave room for the EOB's. */
1812  return 0;
1813 
1814  b = (YY_BUFFER_STATE) he5dasalloc(sizeof( struct yy_buffer_state ) );
1815  if ( ! b )
1816  YY_FATAL_ERROR( "out of dynamic memory in he5das_scan_buffer()" );
1817 
1818  b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1819  b->yy_buf_pos = b->yy_ch_buf = base;
1820  b->yy_is_our_buffer = 0;
1821  b->yy_input_file = 0;
1822  b->yy_n_chars = b->yy_buf_size;
1823  b->yy_is_interactive = 0;
1824  b->yy_at_bol = 1;
1825  b->yy_fill_buffer = 0;
1826  b->yy_buffer_status = YY_BUFFER_NEW;
1827 
1829 
1830  return b;
1831 }
1832 
1842 {
1843 
1844  return he5das_scan_bytes(yystr,strlen(yystr) );
1845 }
1846 
1854 YY_BUFFER_STATE he5das_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
1855 {
1856  YY_BUFFER_STATE b;
1857  char *buf;
1858  yy_size_t n, i;
1859 
1860  /* Get memory for full buffer, including space for trailing EOB's. */
1861  n = _yybytes_len + 2;
1862  buf = (char *) he5dasalloc(n );
1863  if ( ! buf )
1864  YY_FATAL_ERROR( "out of dynamic memory in he5das_scan_bytes()" );
1865 
1866  for ( i = 0; i < _yybytes_len; ++i )
1867  buf[i] = yybytes[i];
1868 
1869  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
1870 
1871  b = he5das_scan_buffer(buf,n );
1872  if ( ! b )
1873  YY_FATAL_ERROR( "bad buffer in he5das_scan_bytes()" );
1874 
1875  /* It's okay to grow etc. this buffer, and we should throw it
1876  * away when we're done.
1877  */
1878  b->yy_is_our_buffer = 1;
1879 
1880  return b;
1881 }
1882 
1883 #ifndef YY_EXIT_FAILURE
1884 #define YY_EXIT_FAILURE 2
1885 #endif
1886 
1887 static void yy_fatal_error (yyconst char* msg )
1888 {
1889  (void) fprintf( stderr, "%s\n", msg );
1890  exit( YY_EXIT_FAILURE );
1891 }
1892 
1893 /* Redefine yyless() so it works in section 3 code. */
1894 
1895 #undef yyless
1896 #define yyless(n) \
1897  do \
1898  { \
1899  /* Undo effects of setting up he5dastext. */ \
1900  int yyless_macro_arg = (n); \
1901  YY_LESS_LINENO(yyless_macro_arg);\
1902  he5dastext[he5dasleng] = (yy_hold_char); \
1903  (yy_c_buf_p) = he5dastext + yyless_macro_arg; \
1904  (yy_hold_char) = *(yy_c_buf_p); \
1905  *(yy_c_buf_p) = '\0'; \
1906  he5dasleng = yyless_macro_arg; \
1907  } \
1908  while ( 0 )
1909 
1910 /* Accessor methods (get/set functions) to struct members. */
1911 
1916 {
1917 
1918  return he5daslineno;
1919 }
1920 
1924 FILE *he5dasget_in (void)
1925 {
1926  return he5dasin;
1927 }
1928 
1932 FILE *he5dasget_out (void)
1933 {
1934  return he5dasout;
1935 }
1936 
1941 {
1942  return he5dasleng;
1943 }
1944 
1949 char *he5dasget_text (void)
1950 {
1951  return he5dastext;
1952 }
1953 
1958 void he5dasset_lineno (int line_number )
1959 {
1960 
1961  he5daslineno = line_number;
1962 }
1963 
1970 void he5dasset_in (FILE * in_str )
1971 {
1972  he5dasin = in_str ;
1973 }
1974 
1975 void he5dasset_out (FILE * out_str )
1976 {
1977  he5dasout = out_str ;
1978 }
1979 
1981 {
1982  return he5das_flex_debug;
1983 }
1984 
1985 void he5dasset_debug (int bdebug )
1986 {
1987  he5das_flex_debug = bdebug ;
1988 }
1989 
1990 static int yy_init_globals (void)
1991 {
1992  /* Initialization is the same as for the non-reentrant scanner.
1993  * This function is called from he5daslex_destroy(), so don't allocate here.
1994  */
1995 
1996  (yy_buffer_stack) = 0;
1997  (yy_buffer_stack_top) = 0;
1998  (yy_buffer_stack_max) = 0;
1999  (yy_c_buf_p) = (char *) 0;
2000  (yy_init) = 0;
2001  (yy_start) = 0;
2002 
2003 /* Defined in main.c */
2004 #ifdef YY_STDINIT
2005  he5dasin = stdin;
2006  he5dasout = stdout;
2007 #else
2008  he5dasin = (FILE *) 0;
2009  he5dasout = (FILE *) 0;
2010 #endif
2011 
2012  /* For future reference: Set errno on error, since we are called by
2013  * he5daslex_init()
2014  */
2015  return 0;
2016 }
2017 
2018 /* he5daslex_destroy is for both reentrant and non-reentrant scanners. */
2020 {
2021 
2022  /* Pop the buffer stack, destroying each element. */
2023  while(YY_CURRENT_BUFFER){
2027  }
2028 
2029  /* Destroy the stack itself. */
2030  he5dasfree((yy_buffer_stack) );
2031  (yy_buffer_stack) = NULL;
2032 
2033  /* Reset the globals. This is important in a non-reentrant scanner so the next time
2034  * he5daslex() is called, initialization will occur. */
2035  yy_init_globals( );
2036 
2037  return 0;
2038 }
2039 
2040 /*
2041  * Internal utility routines.
2042  */
2043 
2044 #ifndef yytext_ptr
2045 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2046 {
2047  register int i;
2048  for ( i = 0; i < n; ++i )
2049  s1[i] = s2[i];
2050 }
2051 #endif
2052 
2053 #ifdef YY_NEED_STRLEN
2054 static int yy_flex_strlen (yyconst char * s )
2055 {
2056  register int n;
2057  for ( n = 0; s[n]; ++n )
2058  ;
2059 
2060  return n;
2061 }
2062 #endif
2063 
2064 void *he5dasalloc (yy_size_t size )
2065 {
2066  return (void *) malloc( size );
2067 }
2068 
2069 void *he5dasrealloc (void * ptr, yy_size_t size )
2070 {
2071  /* The cast to (char *) in the following accommodates both
2072  * implementations that use char* generic pointers, and those
2073  * that use void* generic pointers. It works with the latter
2074  * because both ANSI C and C++ allow castless assignment from
2075  * any pointer type to void*, and deal with argument conversions
2076  * as though doing an assignment.
2077  */
2078  return (void *) realloc( (char *) ptr, size );
2079 }
2080 
2081 void he5dasfree (void * ptr )
2082 {
2083  free( (char *) ptr ); /* see he5dasrealloc() for (char *) cast */
2084 }
2085 
2086 #define YYTABLES_NAME "yytables"
2087 
2088 #line 170 "he5das.lex"
2089 
2090 
2091 
#define YY_EXTRA_TYPE
Definition: lex.he5das.cc:637
void free(void *)
YY_BUFFER_STATE he5das_create_buffer(FILE *file, int size)
Allocate and initialize an input buffer state.
Definition: lex.he5das.cc:1598
#define YY_RULE_SETUP
Definition: lex.he5das.cc:795
int he5daslineno
Definition: lex.he5das.cc:366
#define YY_SC_TO_UI(c)
Definition: lex.he5das.cc:139
int yy_state_type
Definition: lex.he5das.cc:362
size_t yy_size_t
Definition: lex.he5das.cc:178
#define yytext_ptr
Definition: lex.he5das.cc:369
void he5dasset_debug(int debug_flag)
Definition: lex.he5das.cc:1985
#define he5daswrap(n)
Definition: lex.he5das.cc:355
FILE * he5dasget_in(void)
Get the input stream.
Definition: lex.he5das.cc:1924
FILE * he5dasget_out(void)
Get the output stream.
Definition: lex.he5das.cc:1932
#define EOB_ACT_LAST_MATCH
Definition: lex.he5das.cc:187
FILE * he5dasout
Definition: lex.he5das.cc:360
#define YY_FATAL_ERROR(msg)
Definition: lex.he5das.cc:767
#define YY_BUFFER_NORMAL
Definition: lex.he5das.cc:256
#define quote
Definition: lex.he5das.cc:625
int flex_int32_t
Definition: lex.he5das.cc:73
#define YY_START
Definition: lex.he5das.cc:151
void he5das_flush_buffer(YY_BUFFER_STATE b)
Discard all buffered characters.
Definition: lex.he5das.cc:1677
void he5dasset_extra(YY_EXTRA_TYPE user_defined)
YY_EXTRA_TYPE he5dasget_extra(void)
YY_BUFFER_STATE he5das_scan_bytes(yyconst char *bytes, yy_size_t len)
Setup the input buffer state to scan the given bytes.
Definition: lex.he5das.cc:1854
YY_BUFFER_STATE he5das_scan_buffer(char *base, yy_size_t size)
Setup the input buffer state to scan directly from a user-specified character buffer.
Definition: lex.he5das.cc:1804
#define YY_BUFFER_EOF_PENDING
Definition: lex.he5das.cc:267
register char * yy_bp
Definition: lex.he5das.cc:803
#define EOB_ACT_END_OF_FILE
Definition: lex.he5das.cc:186
STL namespace.
#define YY_DECL
Definition: lex.he5das.cc:600
unsigned int flex_uint32_t
Definition: lex.he5das.cc:76
short int flex_int16_t
Definition: lex.gse.cc:72
void he5das_delete_buffer(YY_BUFFER_STATE b)
Destroy the buffer.
Definition: lex.he5das.cc:1626
#define INITIAL
Definition: lex.he5das.cc:624
#define YY_BUFFER_NEW
Definition: lex.he5das.cc:255
#define YY_BUF_SIZE
Definition: lex.he5das.cc:164
#define yymore()
Definition: lex.he5das.cc:543
#define YY_END_OF_BUFFER_CHAR
Definition: lex.he5das.cc:160
#define YY_MORE_ADJ
Definition: lex.he5das.cc:544
#define YY_NEW_FILE
Definition: lex.he5das.cc:158
int he5dasget_lineno(void)
Get the current line number.
Definition: lex.he5das.cc:1915
static class NCMLUtil overview
#define YY_DO_BEFORE_ACTION
Definition: lex.he5das.cc:379
#define YY_INPUT(buf, result, max_size)
Definition: lex.he5das.cc:720
YYSTYPE he5daslval
short int flex_int16_t
Definition: lex.he5das.cc:72
if(!(yy_init))
Definition: lex.he5das.cc:811
void he5das_switch_to_buffer(YY_BUFFER_STATE new_buffer)
Switch to a different input buffer.
Definition: lex.he5das.cc:1553
YY_DECL register yy_state_type yy_current_state
The main scanner function which does all the work.
Definition: lex.he5das.cc:802
yy_size_t he5dasleng
Definition: lex.he5das.cc:295
#define YY_BREAK
Definition: lex.he5das.cc:792
#define NULL
Definition: wcsUtil.h:65
void he5dasset_out(FILE *out_str)
Definition: lex.he5das.cc:1975
int he5daslex(void)
void he5dasset_lineno(int line_number)
Set the current line number.
Definition: lex.he5das.cc:1958
void he5daspop_buffer_state(void)
Removes and deletes the top of the stack, if present.
Definition: lex.he5das.cc:1736
register int yy_act
Definition: lex.he5das.cc:804
struct yy_buffer_state * YY_BUFFER_STATE
Definition: lex.he5das.cc:173
register char * yy_cp
Definition: lex.he5das.cc:803
#define YY_RESTORE_YY_MORE_OFFSET
Definition: lex.he5das.cc:545
FILE * he5dasin
Definition: lex.he5das.cc:360
YY_BUFFER_STATE he5das_scan_string(yyconst char *yy_str)
Setup the input buffer state to scan a string.
Definition: lex.he5das.cc:1841
int he5das_line_num
Definition: lex.he5das.cc:617
void he5dasfree(void *)
Definition: lex.he5das.cc:2081
void * he5dasrealloc(void *, yy_size_t)
Definition: lex.he5das.cc:2069
#define EOB_ACT_CONTINUE_SCAN
Definition: lex.he5das.cc:185
int isatty(int)
void he5dasset_in(FILE *in_str)
Set the input stream.
Definition: lex.he5das.cc:1970
char * he5dastext
Definition: lex.he5das.cc:546
int he5das_flex_debug
Definition: lex.he5das.cc:535
#define YY_READ_BUF_SIZE
Definition: lex.he5das.cc:601
int flex_int32_t
Definition: lex.gse.cc:73
#define YY_EXIT_FAILURE
Definition: lex.he5das.cc:1884
unsigned char YY_CHAR
Definition: lex.he5das.cc:358
unsigned short int flex_uint16_t
Definition: lex.he5das.cc:75
void he5dasrestart(FILE *input_file)
Immediately switch to a different input stream.
Definition: lex.he5das.cc:1536
#define YY_CURRENT_BUFFER_LVALUE
Definition: lex.he5das.cc:290
unsigned char YY_CHAR
Definition: lex.gse.cc:358
#define yyterminate()
Definition: lex.he5das.cc:757
void * he5dasalloc(yy_size_t)
Definition: lex.he5das.cc:2064
#define yyconst
Definition: lex.he5das.cc:128
int he5daslex_destroy(void)
Definition: lex.he5das.cc:2019
void he5daspush_buffer_state(YY_BUFFER_STATE new_buffer)
Pushes the new state onto the stack.
Definition: lex.he5das.cc:1706
void * malloc(YYSIZE_T)
yy_size_t he5dasget_leng(void)
Get the length of the current token.
Definition: lex.he5das.cc:1940
#define YY_END_OF_BUFFER
Definition: lex.he5das.cc:388
size_t yy_size_t
Definition: lex.gse.cc:178
#define comment
Definition: lex.he5das.cc:626
#define YY_CURRENT_BUFFER
Definition: lex.he5das.cc:283
#define ECHO
Definition: lex.he5das.cc:602
signed char flex_int8_t
Definition: lex.he5das.cc:71
struct yy_buffer_state * YY_BUFFER_STATE
Definition: lex.gse.cc:173
#define BEGIN
Definition: lex.he5das.cc:145
char * he5dasget_text(void)
Get the current token.
Definition: lex.he5das.cc:1949
#define YY_STATE_EOF(state)
Definition: lex.he5das.cc:155
unsigned char flex_uint8_t
Definition: lex.he5das.cc:74
int he5dasget_debug(void)
Definition: lex.he5das.cc:1980