source: XIOS/trunk/src/parse_expr/lex_parser.cpp @ 1019

Last change on this file since 1019 was 1019, checked in by mhnguyen, 7 years ago

Adding new operator for expression: Not Equal, NE, /=

Test
+) On Curie
+) Okie

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