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

Last change on this file since 1038 was 1038, checked in by ymipsl, 7 years ago
  • Add generic ternary arithmetic operators and filters
  • Add conditional operator "(cond) ? x : y" for arithmetic filters.

YM

  • 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: 74.2 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,   14,    4,
375       15,   16,   17,   18,   19,   20,   20,   20,   20,   20,
376
377       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
378       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
379       20,    4,    4,    4,   21,    4,    4,   20,   20,   20,
380       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
381       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
382       20,   20,   20,    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,   14,    4,
393       15,   16,   17,   18,   19,   20,   20,   20,   20,   20,
394       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
395       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
396       20,    4,    4,    4,   21,    4,    4,   20,   20,   20,
397       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
398       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
399       20,   20,   20,    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,   23,
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,   23,   -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,   24,   24,   24,   24,   24,
463       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
464       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
465       24,   -6,   -6,   -6,   -6,   -6,   -6,   24,   24,   24,
466       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
467       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
468
469       24,   24,   24,   -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,   25,  -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,   26,  -13,   27,   27,
582       27,   27,   27,   27,   27,   27,   27,   27,  -13,  -13,
583      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,   28,
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,   28,  -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,  -14,  -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,   29,  -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,   30,  -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,   31,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
653      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
654      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
655
656      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
657      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
658      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
659      -17,  -17,  -17,  -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,  -18,  -18,
668      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
669
670      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
671      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
672      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
673      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
674      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
675      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
676      -18,  -18,  -18,  -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,   32,   32,   32,   32,   32,
688       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
689       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
690       32,  -19,  -19,  -19,  -19,  -19,  -19,   32,   32,   32,
691       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
692       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
693       32,   32,   32,  -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,   33,   33,
703       33,   33,   33,   33,   33,   33,   33,   33,  -20,  -20,
704      -20,  -20,  -20,  -20,  -20,   33,   33,   33,   33,   33,
705       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
706       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
707       33,  -20,  -20,  -20,  -20,   33,  -20,   33,   33,   33,
708
709       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
710       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
711       33,   33,   33,  -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,  -22,  -22,
738      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
739      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
740      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
741      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
742      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
743      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
744      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
745      -22,  -22,  -22,  -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,   34,   34,
772       34,   34,   34,   34,   34,   34,   34,   34,  -24,  -24,
773      -24,  -24,  -24,  -24,  -24,   34,   34,   34,   34,   34,
774       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
775
776       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
777       34,  -24,  -24,  -24,  -24,   34,  -24,   34,   34,   34,
778       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
779       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
780       34,   34,   34,  -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,  -25,  -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,  -25,
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,  -25,  -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,  -26,  -26,  -26,  -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,   26,  -27,   27,   27,
824       27,   27,   27,   27,   27,   27,   27,   27,  -27,  -27,
825      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,   28,
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,   28,  -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,   36,  -28,   36,  -28,  -28,   37,   37,
841       37,   37,   37,   37,   37,   37,   37,   37,  -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,  -30,  -30,
876      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
877      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
878      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
879      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
880      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
881
882      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
883      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
884      -30,  -30,  -30,  -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,   38,   38,
911       38,   38,   38,   38,   38,   38,   38,   38,  -32,  -32,
912      -32,  -32,  -32,  -32,  -32,   38,   38,   38,   38,   38,
913       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
914       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
915       38,  -32,  -32,  -32,  -32,   38,  -32,   38,   38,   38,
916       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
917       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
918       38,   38,   38,  -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,   33,
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,   33,   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,   34,   34,
945       34,   34,   34,   34,   34,   34,   34,   34,  -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,   28,
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,   28,  -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,   37,   37,
980       37,   37,   37,   37,   37,   37,   37,   37,  -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        3,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
993      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
994      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
995      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
996      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,   37,   37,
997       37,   37,   37,   37,   37,   37,   37,   37,  -37,  -37,
998      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
999      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
1000      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
1001
1002      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
1003      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
1004      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
1005      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37
1006    },
1007
1008    {
1009        3,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1010      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1011      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1012      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
1013      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,   38,   38,
1014       38,   38,   38,   38,   38,   38,   38,   38,  -38,  -38,
1015
1016      -38,  -38,  -38,  -38,  -38,   38,   38,   38,   38,   38,
1017       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1018       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1019       38,  -38,  -38,  -38,  -38,   38,  -38,   38,   38,   38,
1020       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1021       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1022       38,   38,   38,  -38,  -38,  -38,  -38,  -38
1023    },
1024
1025    } ;
1026
1027static yy_state_type yy_get_previous_state (void );
1028static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
1029static int yy_get_next_buffer (void );
1030static void yy_fatal_error (yyconst char msg[]  );
1031
1032/* Done after the current pattern has been matched and before the
1033 * corresponding action - sets up yytext.
1034 */
1035#define YY_DO_BEFORE_ACTION \
1036        (yytext_ptr) = yy_bp; \
1037        yyleng = (size_t) (yy_cp - yy_bp); \
1038        (yy_hold_char) = *yy_cp; \
1039        *yy_cp = '\0'; \
1040        (yy_c_buf_p) = yy_cp;
1041
1042#define YY_NUM_RULES 22
1043#define YY_END_OF_BUFFER 23
1044/* This struct is not used in this scanner,
1045   but its presence is necessary. */
1046struct yy_trans_info
1047        {
1048        flex_int32_t yy_verify;
1049        flex_int32_t yy_nxt;
1050        };
1051static yyconst flex_int16_t yy_accept[39] =
1052    {   0,
1053        0,    0,   23,   22,    1,   22,   19,   20,    8,    6,
1054        7,    9,    2,   18,   12,   22,   13,   17,   22,    5,
1055       10,   21,    1,    4,   16,    0,    2,    0,   14,   11,
1056       15,    3,    5,    4,    2,    0,    2,    3
1057    } ;
1058
1059static yy_state_type yy_last_accepting_state;
1060static char *yy_last_accepting_cpos;
1061
1062static yyconst yy_state_type yy_NUL_trans[39] =
1063    {   0,
1064       22,   22,    0,    0,    0,    0,    0,    0,    0,    0,
1065        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1066        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1067        0,    0,    0,    0,    0,    0,    0,    0
1068    } ;
1069
1070extern int yy_flex_debug;
1071int yy_flex_debug = 0;
1072
1073/* The intent behind this definition is that it'll catch
1074 * any uses of REJECT which flex missed.
1075 */
1076#define REJECT reject_used_but_not_detected
1077#define yymore() yymore_used_but_not_detected
1078#define YY_MORE_ADJ 0
1079#define YY_RESTORE_YY_MORE_OFFSET
1080char *yytext;
1081#line 1 "lex_parser.lex"
1082#line 3 "lex_parser.lex"
1083
1084extern "C"
1085{
1086  int yylex(void);
1087}
1088#undef  YY_INPUT
1089#define YY_INPUT(b, r, s) readInputForLexer(b, &r, s)
1090#include <string>
1091
1092int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead);
1093
1094#include "filter_expr_node.hpp"
1095#include "yacc_parser.hpp"
1096
1097#line 1098 "lex_parser.cpp"
1098
1099#define INITIAL 0
1100
1101#ifndef YY_NO_UNISTD_H
1102/* Special case for "unistd.h", since it is non-ANSI. We include it way
1103 * down here because we want the user's section 1 to have been scanned first.
1104 * The user has a chance to override it with an option.
1105 */
1106#include <unistd.h>
1107#endif
1108
1109#ifndef YY_EXTRA_TYPE
1110#define YY_EXTRA_TYPE void *
1111#endif
1112
1113static int yy_init_globals (void );
1114
1115/* Accessor methods to globals.
1116   These are made visible to non-reentrant scanners for convenience. */
1117
1118int yylex_destroy (void );
1119
1120int yyget_debug (void );
1121
1122void yyset_debug (int debug_flag  );
1123
1124YY_EXTRA_TYPE yyget_extra (void );
1125
1126void yyset_extra (YY_EXTRA_TYPE user_defined  );
1127
1128FILE *yyget_in (void );
1129
1130void yyset_in  (FILE * in_str  );
1131
1132FILE *yyget_out (void );
1133
1134void yyset_out  (FILE * out_str  );
1135
1136yy_size_t yyget_leng (void );
1137
1138char *yyget_text (void );
1139
1140int yyget_lineno (void );
1141
1142void yyset_lineno (int line_number  );
1143
1144/* Macros after this point can all be overridden by user definitions in
1145 * section 1.
1146 */
1147
1148#ifndef YY_SKIP_YYWRAP
1149#ifdef __cplusplus
1150extern "C" int yywrap (void );
1151#else
1152extern int yywrap (void );
1153#endif
1154#endif
1155
1156    static void yyunput (int c,char *buf_ptr  );
1157   
1158#ifndef yytext_ptr
1159static void yy_flex_strncpy (char *,yyconst char *,int );
1160#endif
1161
1162#ifdef YY_NEED_STRLEN
1163static int yy_flex_strlen (yyconst char * );
1164#endif
1165
1166#ifndef YY_NO_INPUT
1167
1168#ifdef __cplusplus
1169static int yyinput (void );
1170#else
1171static int input (void );
1172#endif
1173
1174#endif
1175
1176/* Amount of stuff to slurp up with each read. */
1177#ifndef YY_READ_BUF_SIZE
1178#define YY_READ_BUF_SIZE 8192
1179#endif
1180
1181/* Copy whatever the last rule matched to the standard output. */
1182#ifndef ECHO
1183/* This used to be an fputs(), but since the string might contain NUL's,
1184 * we now use fwrite().
1185 */
1186#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1187#endif
1188
1189/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1190 * is returned in "result".
1191 */
1192#ifndef YY_INPUT
1193#define YY_INPUT(buf,result,max_size) \
1194        errno=0; \
1195        while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
1196        { \
1197                if( errno != EINTR) \
1198                { \
1199                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
1200                        break; \
1201                } \
1202                errno=0; \
1203                clearerr(yyin); \
1204        }\
1205\
1206
1207#endif
1208
1209/* No semi-colon after return; correct usage is to write "yyterminate();" -
1210 * we don't want an extra ';' after the "return" because that will cause
1211 * some compilers to complain about unreachable statements.
1212 */
1213#ifndef yyterminate
1214#define yyterminate() return YY_NULL
1215#endif
1216
1217/* Number of entries by which start-condition stack grows. */
1218#ifndef YY_START_STACK_INCR
1219#define YY_START_STACK_INCR 25
1220#endif
1221
1222/* Report a fatal error. */
1223#ifndef YY_FATAL_ERROR
1224#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1225#endif
1226
1227/* end tables serialization structures and prototypes */
1228
1229/* Default declaration of generated scanner - a define so the user can
1230 * easily add parameters.
1231 */
1232#ifndef YY_DECL
1233#define YY_DECL_IS_OURS 1
1234
1235extern int yylex (void);
1236
1237#define YY_DECL int yylex (void)
1238#endif /* !YY_DECL */
1239
1240/* Code executed at the beginning of each rule, after yytext and yyleng
1241 * have been set up.
1242 */
1243#ifndef YY_USER_ACTION
1244#define YY_USER_ACTION
1245#endif
1246
1247/* Code executed at the end of each rule. */
1248#ifndef YY_BREAK
1249#define YY_BREAK break;
1250#endif
1251
1252#define YY_RULE_SETUP \
1253        YY_USER_ACTION
1254
1255/** The main scanner function which does all the work.
1256 */
1257YY_DECL
1258{
1259        register yy_state_type yy_current_state;
1260        register char *yy_cp, *yy_bp;
1261        register int yy_act;
1262   
1263#line 29 "lex_parser.lex"
1264
1265
1266#line 1267 "lex_parser.cpp"
1267
1268        if ( !(yy_init) )
1269                {
1270                (yy_init) = 1;
1271
1272#ifdef YY_USER_INIT
1273                YY_USER_INIT;
1274#endif
1275
1276                if ( ! (yy_start) )
1277                        (yy_start) = 1; /* first start state */
1278
1279                if ( ! yyin )
1280                        yyin = stdin;
1281
1282                if ( ! yyout )
1283                        yyout = stdout;
1284
1285                if ( ! YY_CURRENT_BUFFER ) {
1286                        yyensure_buffer_stack ();
1287                        YY_CURRENT_BUFFER_LVALUE =
1288                                yy_create_buffer(yyin,YY_BUF_SIZE );
1289                }
1290
1291                yy_load_buffer_state( );
1292                }
1293
1294        while ( 1 )             /* loops until end-of-file is reached */
1295                {
1296                yy_cp = (yy_c_buf_p);
1297
1298                /* Support of yytext. */
1299                *yy_cp = (yy_hold_char);
1300
1301                /* yy_bp points to the position in yy_ch_buf of the start of
1302                 * the current run.
1303                 */
1304                yy_bp = yy_cp;
1305
1306                yy_current_state = (yy_start);
1307yy_match:
1308                while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
1309                        {
1310                        if ( yy_accept[yy_current_state] )
1311                                {
1312                                (yy_last_accepting_state) = yy_current_state;
1313                                (yy_last_accepting_cpos) = yy_cp;
1314                                }
1315
1316                        ++yy_cp;
1317                        }
1318
1319                yy_current_state = -yy_current_state;
1320
1321yy_find_action:
1322                yy_act = yy_accept[yy_current_state];
1323
1324                YY_DO_BEFORE_ACTION;
1325
1326do_action:      /* This label is used only to access EOF actions. */
1327
1328                switch ( yy_act )
1329        { /* beginning of action switch */
1330                        case 0: /* must back up */
1331                        /* undo the effects of YY_DO_BEFORE_ACTION */
1332                        *yy_cp = (yy_hold_char);
1333                        yy_cp = (yy_last_accepting_cpos) + 1;
1334                        yy_current_state = (yy_last_accepting_state);
1335                        goto yy_find_action;
1336
1337case 1:
1338YY_RULE_SETUP
1339#line 31 "lex_parser.lex"
1340{ /* We ignore white characters */ }
1341        YY_BREAK
1342case 2:
1343YY_RULE_SETUP
1344#line 33 "lex_parser.lex"
1345{
1346            yylval.str = new std::string(yytext);
1347            return NUMBER;
1348          }
1349        YY_BREAK
1350case 3:
1351YY_RULE_SETUP
1352#line 38 "lex_parser.lex"
1353{
1354            yylval.str = new std::string(yytext + 1);
1355            return AVERAGE;
1356          }
1357        YY_BREAK
1358case 4:
1359YY_RULE_SETUP
1360#line 43 "lex_parser.lex"
1361{
1362            yylval.str = new std::string(yytext + 1);
1363            return VAR;
1364          }
1365        YY_BREAK
1366case 5:
1367YY_RULE_SETUP
1368#line 48 "lex_parser.lex"
1369{
1370            yylval.str = new std::string(yytext);
1371            return ID;
1372          }                   
1373        YY_BREAK
1374case 6:
1375YY_RULE_SETUP
1376#line 54 "lex_parser.lex"
1377return PLUS;
1378        YY_BREAK
1379case 7:
1380YY_RULE_SETUP
1381#line 55 "lex_parser.lex"
1382return MINUS;
1383        YY_BREAK
1384case 8:
1385YY_RULE_SETUP
1386#line 57 "lex_parser.lex"
1387return TIMES;
1388        YY_BREAK
1389case 9:
1390YY_RULE_SETUP
1391#line 58 "lex_parser.lex"
1392return DIVIDE;
1393        YY_BREAK
1394case 10:
1395YY_RULE_SETUP
1396#line 60 "lex_parser.lex"
1397return POWER;
1398        YY_BREAK
1399case 11:
1400YY_RULE_SETUP
1401#line 62 "lex_parser.lex"
1402return EQ;
1403        YY_BREAK
1404case 12:
1405YY_RULE_SETUP
1406#line 63 "lex_parser.lex"
1407return LT;
1408        YY_BREAK
1409case 13:
1410YY_RULE_SETUP
1411#line 64 "lex_parser.lex"
1412return GT;
1413        YY_BREAK
1414case 14:
1415YY_RULE_SETUP
1416#line 65 "lex_parser.lex"
1417return LE;
1418        YY_BREAK
1419case 15:
1420YY_RULE_SETUP
1421#line 66 "lex_parser.lex"
1422return GE;
1423        YY_BREAK
1424case 16:
1425YY_RULE_SETUP
1426#line 67 "lex_parser.lex"
1427return NE;
1428        YY_BREAK
1429case 17:
1430YY_RULE_SETUP
1431#line 68 "lex_parser.lex"
1432return QUESTION_MARK;
1433        YY_BREAK
1434case 18:
1435YY_RULE_SETUP
1436#line 69 "lex_parser.lex"
1437return COLON;
1438        YY_BREAK
1439case 19:
1440YY_RULE_SETUP
1441#line 70 "lex_parser.lex"
1442return LEFT_PARENTHESIS;
1443        YY_BREAK
1444case 20:
1445YY_RULE_SETUP
1446#line 71 "lex_parser.lex"
1447return RIGHT_PARENTHESIS;
1448        YY_BREAK
1449case 21:
1450YY_RULE_SETUP
1451#line 73 "lex_parser.lex"
1452return END;
1453        YY_BREAK
1454case 22:
1455YY_RULE_SETUP
1456#line 74 "lex_parser.lex"
1457ECHO;
1458        YY_BREAK
1459#line 1460 "lex_parser.cpp"
1460case YY_STATE_EOF(INITIAL):
1461        yyterminate();
1462
1463        case YY_END_OF_BUFFER:
1464                {
1465                /* Amount of text matched not including the EOB char. */
1466                int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1467
1468                /* Undo the effects of YY_DO_BEFORE_ACTION. */
1469                *yy_cp = (yy_hold_char);
1470                YY_RESTORE_YY_MORE_OFFSET
1471
1472                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1473                        {
1474                        /* We're scanning a new file or input source.  It's
1475                         * possible that this happened because the user
1476                         * just pointed yyin at a new source and called
1477                         * yylex().  If so, then we have to assure
1478                         * consistency between YY_CURRENT_BUFFER and our
1479                         * globals.  Here is the right place to do so, because
1480                         * this is the first action (other than possibly a
1481                         * back-up) that will match for the new input source.
1482                         */
1483                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1484                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1485                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1486                        }
1487
1488                /* Note that here we test for yy_c_buf_p "<=" to the position
1489                 * of the first EOB in the buffer, since yy_c_buf_p will
1490                 * already have been incremented past the NUL character
1491                 * (since all states make transitions on EOB to the
1492                 * end-of-buffer state).  Contrast this with the test
1493                 * in input().
1494                 */
1495                if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1496                        { /* This was really a NUL. */
1497                        yy_state_type yy_next_state;
1498
1499                        (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1500
1501                        yy_current_state = yy_get_previous_state(  );
1502
1503                        /* Okay, we're now positioned to make the NUL
1504                         * transition.  We couldn't have
1505                         * yy_get_previous_state() go ahead and do it
1506                         * for us because it doesn't know how to deal
1507                         * with the possibility of jamming (and we don't
1508                         * want to build jamming into it because then it
1509                         * will run more slowly).
1510                         */
1511
1512                        yy_next_state = yy_try_NUL_trans( yy_current_state );
1513
1514                        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1515
1516                        if ( yy_next_state )
1517                                {
1518                                /* Consume the NUL. */
1519                                yy_cp = ++(yy_c_buf_p);
1520                                yy_current_state = yy_next_state;
1521                                goto yy_match;
1522                                }
1523
1524                        else
1525                                {
1526                                yy_cp = (yy_c_buf_p);
1527                                goto yy_find_action;
1528                                }
1529                        }
1530
1531                else switch ( yy_get_next_buffer(  ) )
1532                        {
1533                        case EOB_ACT_END_OF_FILE:
1534                                {
1535                                (yy_did_buffer_switch_on_eof) = 0;
1536
1537                                if ( yywrap( ) )
1538                                        {
1539                                        /* Note: because we've taken care in
1540                                         * yy_get_next_buffer() to have set up
1541                                         * yytext, we can now set up
1542                                         * yy_c_buf_p so that if some total
1543                                         * hoser (like flex itself) wants to
1544                                         * call the scanner after we return the
1545                                         * YY_NULL, it'll still work - another
1546                                         * YY_NULL will get returned.
1547                                         */
1548                                        (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1549
1550                                        yy_act = YY_STATE_EOF(YY_START);
1551                                        goto do_action;
1552                                        }
1553
1554                                else
1555                                        {
1556                                        if ( ! (yy_did_buffer_switch_on_eof) )
1557                                                YY_NEW_FILE;
1558                                        }
1559                                break;
1560                                }
1561
1562                        case EOB_ACT_CONTINUE_SCAN:
1563                                (yy_c_buf_p) =
1564                                        (yytext_ptr) + yy_amount_of_matched_text;
1565
1566                                yy_current_state = yy_get_previous_state(  );
1567
1568                                yy_cp = (yy_c_buf_p);
1569                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1570                                goto yy_match;
1571
1572                        case EOB_ACT_LAST_MATCH:
1573                                (yy_c_buf_p) =
1574                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1575
1576                                yy_current_state = yy_get_previous_state(  );
1577
1578                                yy_cp = (yy_c_buf_p);
1579                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1580                                goto yy_find_action;
1581                        }
1582                break;
1583                }
1584
1585        default:
1586                YY_FATAL_ERROR(
1587                        "fatal flex scanner internal error--no action found" );
1588        } /* end of action switch */
1589                } /* end of scanning one token */
1590} /* end of yylex */
1591
1592/* yy_get_next_buffer - try to read in a new buffer
1593 *
1594 * Returns a code representing an action:
1595 *      EOB_ACT_LAST_MATCH -
1596 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1597 *      EOB_ACT_END_OF_FILE - end of file
1598 */
1599static int yy_get_next_buffer (void)
1600{
1601        register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1602        register char *source = (yytext_ptr);
1603        register int number_to_move, i;
1604        int ret_val;
1605
1606        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1607                YY_FATAL_ERROR(
1608                "fatal flex scanner internal error--end of buffer missed" );
1609
1610        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1611                { /* Don't try to fill the buffer, so this is an EOF. */
1612                if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1613                        {
1614                        /* We matched a single character, the EOB, so
1615                         * treat this as a final EOF.
1616                         */
1617                        return EOB_ACT_END_OF_FILE;
1618                        }
1619
1620                else
1621                        {
1622                        /* We matched some text prior to the EOB, first
1623                         * process it.
1624                         */
1625                        return EOB_ACT_LAST_MATCH;
1626                        }
1627                }
1628
1629        /* Try to read more data. */
1630
1631        /* First move last chars to start of buffer. */
1632        number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1633
1634        for ( i = 0; i < number_to_move; ++i )
1635                *(dest++) = *(source++);
1636
1637        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1638                /* don't do the read, it's not guaranteed to return an EOF,
1639                 * just force an EOF
1640                 */
1641                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1642
1643        else
1644                {
1645                        yy_size_t num_to_read =
1646                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1647
1648                while ( num_to_read <= 0 )
1649                        { /* Not enough room in the buffer - grow it. */
1650
1651                        /* just a shorter name for the current buffer */
1652                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
1653
1654                        int yy_c_buf_p_offset =
1655                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
1656
1657                        if ( b->yy_is_our_buffer )
1658                                {
1659                                yy_size_t new_size = b->yy_buf_size * 2;
1660
1661                                if ( new_size <= 0 )
1662                                        b->yy_buf_size += b->yy_buf_size / 8;
1663                                else
1664                                        b->yy_buf_size *= 2;
1665
1666                                b->yy_ch_buf = (char *)
1667                                        /* Include room in for 2 EOB chars. */
1668                                        yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
1669                                }
1670                        else
1671                                /* Can't grow it, we don't own it. */
1672                                b->yy_ch_buf = 0;
1673
1674                        if ( ! b->yy_ch_buf )
1675                                YY_FATAL_ERROR(
1676                                "fatal error - scanner input buffer overflow" );
1677
1678                        (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1679
1680                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1681                                                number_to_move - 1;
1682
1683                        }
1684
1685                if ( num_to_read > YY_READ_BUF_SIZE )
1686                        num_to_read = YY_READ_BUF_SIZE;
1687
1688                /* Read in more data. */
1689                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1690                        (yy_n_chars), num_to_read );
1691
1692                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1693                }
1694
1695        if ( (yy_n_chars) == 0 )
1696                {
1697                if ( number_to_move == YY_MORE_ADJ )
1698                        {
1699                        ret_val = EOB_ACT_END_OF_FILE;
1700                        yyrestart(yyin  );
1701                        }
1702
1703                else
1704                        {
1705                        ret_val = EOB_ACT_LAST_MATCH;
1706                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1707                                YY_BUFFER_EOF_PENDING;
1708                        }
1709                }
1710
1711        else
1712                ret_val = EOB_ACT_CONTINUE_SCAN;
1713
1714        if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1715                /* Extend the array by 50%, plus the number we really need. */
1716                yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1717                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
1718                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1719                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1720        }
1721
1722        (yy_n_chars) += number_to_move;
1723        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1724        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1725
1726        (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1727
1728        return ret_val;
1729}
1730
1731/* yy_get_previous_state - get the state just before the EOB char was reached */
1732
1733    static yy_state_type yy_get_previous_state (void)
1734{
1735        register yy_state_type yy_current_state;
1736        register char *yy_cp;
1737   
1738        yy_current_state = (yy_start);
1739
1740        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1741                {
1742                if ( *yy_cp )
1743                        {
1744                        yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
1745                        }
1746                else
1747                        yy_current_state = yy_NUL_trans[yy_current_state];
1748                if ( yy_accept[yy_current_state] )
1749                        {
1750                        (yy_last_accepting_state) = yy_current_state;
1751                        (yy_last_accepting_cpos) = yy_cp;
1752                        }
1753                }
1754
1755        return yy_current_state;
1756}
1757
1758/* yy_try_NUL_trans - try to make a transition on the NUL character
1759 *
1760 * synopsis
1761 *      next_state = yy_try_NUL_trans( current_state );
1762 */
1763    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
1764{
1765        register int yy_is_jam;
1766        register char *yy_cp = (yy_c_buf_p);
1767
1768        yy_current_state = yy_NUL_trans[yy_current_state];
1769        yy_is_jam = (yy_current_state == 0);
1770
1771        if ( ! yy_is_jam )
1772                {
1773                if ( yy_accept[yy_current_state] )
1774                        {
1775                        (yy_last_accepting_state) = yy_current_state;
1776                        (yy_last_accepting_cpos) = yy_cp;
1777                        }
1778                }
1779
1780                return yy_is_jam ? 0 : yy_current_state;
1781}
1782
1783    static void yyunput (int c, register char * yy_bp )
1784{
1785        register char *yy_cp;
1786   
1787    yy_cp = (yy_c_buf_p);
1788
1789        /* undo effects of setting up yytext */
1790        *yy_cp = (yy_hold_char);
1791
1792        if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1793                { /* need to shift things up to make room */
1794                /* +2 for EOB chars. */
1795                register yy_size_t number_to_move = (yy_n_chars) + 2;
1796                register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1797                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1798                register char *source =
1799                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1800
1801                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1802                        *--dest = *--source;
1803
1804                yy_cp += (int) (dest - source);
1805                yy_bp += (int) (dest - source);
1806                YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1807                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1808
1809                if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1810                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
1811                }
1812
1813        *--yy_cp = (char) c;
1814
1815        (yytext_ptr) = yy_bp;
1816        (yy_hold_char) = *yy_cp;
1817        (yy_c_buf_p) = yy_cp;
1818}
1819
1820#ifndef YY_NO_INPUT
1821#ifdef __cplusplus
1822    static int yyinput (void)
1823#else
1824    static int input  (void)
1825#endif
1826
1827{
1828        int c;
1829   
1830        *(yy_c_buf_p) = (yy_hold_char);
1831
1832        if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1833                {
1834                /* yy_c_buf_p now points to the character we want to return.
1835                 * If this occurs *before* the EOB characters, then it's a
1836                 * valid NUL; if not, then we've hit the end of the buffer.
1837                 */
1838                if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1839                        /* This was really a NUL. */
1840                        *(yy_c_buf_p) = '\0';
1841
1842                else
1843                        { /* need more input */
1844                        yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
1845                        ++(yy_c_buf_p);
1846
1847                        switch ( yy_get_next_buffer(  ) )
1848                                {
1849                                case EOB_ACT_LAST_MATCH:
1850                                        /* This happens because yy_g_n_b()
1851                                         * sees that we've accumulated a
1852                                         * token and flags that we need to
1853                                         * try matching the token before
1854                                         * proceeding.  But for input(),
1855                                         * there's no matching to consider.
1856                                         * So convert the EOB_ACT_LAST_MATCH
1857                                         * to EOB_ACT_END_OF_FILE.
1858                                         */
1859
1860                                        /* Reset buffer status. */
1861                                        yyrestart(yyin );
1862
1863                                        /*FALLTHROUGH*/
1864
1865                                case EOB_ACT_END_OF_FILE:
1866                                        {
1867                                        if ( yywrap( ) )
1868                                                return EOF;
1869
1870                                        if ( ! (yy_did_buffer_switch_on_eof) )
1871                                                YY_NEW_FILE;
1872#ifdef __cplusplus
1873                                        return yyinput();
1874#else
1875                                        return input();
1876#endif
1877                                        }
1878
1879                                case EOB_ACT_CONTINUE_SCAN:
1880                                        (yy_c_buf_p) = (yytext_ptr) + offset;
1881                                        break;
1882                                }
1883                        }
1884                }
1885
1886        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
1887        *(yy_c_buf_p) = '\0';   /* preserve yytext */
1888        (yy_hold_char) = *++(yy_c_buf_p);
1889
1890        return c;
1891}
1892#endif  /* ifndef YY_NO_INPUT */
1893
1894/** Immediately switch to a different input stream.
1895 * @param input_file A readable stream.
1896 *
1897 * @note This function does not reset the start condition to @c INITIAL .
1898 */
1899    void yyrestart  (FILE * input_file )
1900{
1901   
1902        if ( ! YY_CURRENT_BUFFER ){
1903        yyensure_buffer_stack ();
1904                YY_CURRENT_BUFFER_LVALUE =
1905            yy_create_buffer(yyin,YY_BUF_SIZE );
1906        }
1907
1908        yy_init_buffer(YY_CURRENT_BUFFER,input_file );
1909        yy_load_buffer_state( );
1910}
1911
1912/** Switch to a different input buffer.
1913 * @param new_buffer The new input buffer.
1914 *
1915 */
1916    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
1917{
1918   
1919        /* TODO. We should be able to replace this entire function body
1920         * with
1921         *              yypop_buffer_state();
1922         *              yypush_buffer_state(new_buffer);
1923     */
1924        yyensure_buffer_stack ();
1925        if ( YY_CURRENT_BUFFER == new_buffer )
1926                return;
1927
1928        if ( YY_CURRENT_BUFFER )
1929                {
1930                /* Flush out information for old buffer. */
1931                *(yy_c_buf_p) = (yy_hold_char);
1932                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1933                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1934                }
1935
1936        YY_CURRENT_BUFFER_LVALUE = new_buffer;
1937        yy_load_buffer_state( );
1938
1939        /* We don't actually know whether we did this switch during
1940         * EOF (yywrap()) processing, but the only time this flag
1941         * is looked at is after yywrap() is called, so it's safe
1942         * to go ahead and always set it.
1943         */
1944        (yy_did_buffer_switch_on_eof) = 1;
1945}
1946
1947static void yy_load_buffer_state  (void)
1948{
1949        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1950        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1951        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1952        (yy_hold_char) = *(yy_c_buf_p);
1953}
1954
1955/** Allocate and initialize an input buffer state.
1956 * @param file A readable stream.
1957 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1958 *
1959 * @return the allocated buffer state.
1960 */
1961    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
1962{
1963        YY_BUFFER_STATE b;
1964   
1965        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
1966        if ( ! b )
1967                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1968
1969        b->yy_buf_size = size;
1970
1971        /* yy_ch_buf has to be 2 characters longer than the size given because
1972         * we need to put in 2 end-of-buffer characters.
1973         */
1974        b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
1975        if ( ! b->yy_ch_buf )
1976                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1977
1978        b->yy_is_our_buffer = 1;
1979
1980        yy_init_buffer(b,file );
1981
1982        return b;
1983}
1984
1985/** Destroy the buffer.
1986 * @param b a buffer created with yy_create_buffer()
1987 *
1988 */
1989    void yy_delete_buffer (YY_BUFFER_STATE  b )
1990{
1991   
1992        if ( ! b )
1993                return;
1994
1995        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1996                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1997
1998        if ( b->yy_is_our_buffer )
1999                yyfree((void *) b->yy_ch_buf  );
2000
2001        yyfree((void *) b  );
2002}
2003
2004/* Initializes or reinitializes a buffer.
2005 * This function is sometimes called more than once on the same buffer,
2006 * such as during a yyrestart() or at EOF.
2007 */
2008    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
2009
2010{
2011        int oerrno = errno;
2012   
2013        yy_flush_buffer(b );
2014
2015        b->yy_input_file = file;
2016        b->yy_fill_buffer = 1;
2017
2018    /* If b is the current buffer, then yy_init_buffer was _probably_
2019     * called from yyrestart() or through yy_get_next_buffer.
2020     * In that case, we don't want to reset the lineno or column.
2021     */
2022    if (b != YY_CURRENT_BUFFER){
2023        b->yy_bs_lineno = 1;
2024        b->yy_bs_column = 0;
2025    }
2026
2027        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2028   
2029        errno = oerrno;
2030}
2031
2032/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2033 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2034 *
2035 */
2036    void yy_flush_buffer (YY_BUFFER_STATE  b )
2037{
2038        if ( ! b )
2039                return;
2040
2041        b->yy_n_chars = 0;
2042
2043        /* We always need two end-of-buffer characters.  The first causes
2044         * a transition to the end-of-buffer state.  The second causes
2045         * a jam in that state.
2046         */
2047        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2048        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2049
2050        b->yy_buf_pos = &b->yy_ch_buf[0];
2051
2052        b->yy_at_bol = 1;
2053        b->yy_buffer_status = YY_BUFFER_NEW;
2054
2055        if ( b == YY_CURRENT_BUFFER )
2056                yy_load_buffer_state( );
2057}
2058
2059/** Pushes the new state onto the stack. The new state becomes
2060 *  the current state. This function will allocate the stack
2061 *  if necessary.
2062 *  @param new_buffer The new state.
2063 * 
2064 */
2065void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2066{
2067        if (new_buffer == NULL)
2068                return;
2069
2070        yyensure_buffer_stack();
2071
2072        /* This block is copied from yy_switch_to_buffer. */
2073        if ( YY_CURRENT_BUFFER )
2074                {
2075                /* Flush out information for old buffer. */
2076                *(yy_c_buf_p) = (yy_hold_char);
2077                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2078                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2079                }
2080
2081        /* Only push if top exists. Otherwise, replace top. */
2082        if (YY_CURRENT_BUFFER)
2083                (yy_buffer_stack_top)++;
2084        YY_CURRENT_BUFFER_LVALUE = new_buffer;
2085
2086        /* copied from yy_switch_to_buffer. */
2087        yy_load_buffer_state( );
2088        (yy_did_buffer_switch_on_eof) = 1;
2089}
2090
2091/** Removes and deletes the top of the stack, if present.
2092 *  The next element becomes the new top.
2093 * 
2094 */
2095void yypop_buffer_state (void)
2096{
2097        if (!YY_CURRENT_BUFFER)
2098                return;
2099
2100        yy_delete_buffer(YY_CURRENT_BUFFER );
2101        YY_CURRENT_BUFFER_LVALUE = NULL;
2102        if ((yy_buffer_stack_top) > 0)
2103                --(yy_buffer_stack_top);
2104
2105        if (YY_CURRENT_BUFFER) {
2106                yy_load_buffer_state( );
2107                (yy_did_buffer_switch_on_eof) = 1;
2108        }
2109}
2110
2111/* Allocates the stack if it does not exist.
2112 *  Guarantees space for at least one push.
2113 */
2114static void yyensure_buffer_stack (void)
2115{
2116        yy_size_t num_to_alloc;
2117   
2118        if (!(yy_buffer_stack)) {
2119
2120                /* First allocation is just for 2 elements, since we don't know if this
2121                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2122                 * immediate realloc on the next call.
2123         */
2124                num_to_alloc = 1;
2125                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2126                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
2127                                                                );
2128                if ( ! (yy_buffer_stack) )
2129                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2130                                                                 
2131                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2132                               
2133                (yy_buffer_stack_max) = num_to_alloc;
2134                (yy_buffer_stack_top) = 0;
2135                return;
2136        }
2137
2138        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2139
2140                /* Increase the buffer to prepare for a possible push. */
2141                int grow_size = 8 /* arbitrary grow size */;
2142
2143                num_to_alloc = (yy_buffer_stack_max) + grow_size;
2144                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
2145                                                                ((yy_buffer_stack),
2146                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
2147                                                                );
2148                if ( ! (yy_buffer_stack) )
2149                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2150
2151                /* zero only the new slots.*/
2152                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2153                (yy_buffer_stack_max) = num_to_alloc;
2154        }
2155}
2156
2157/** Setup the input buffer state to scan directly from a user-specified character buffer.
2158 * @param base the character buffer
2159 * @param size the size in bytes of the character buffer
2160 *
2161 * @return the newly allocated buffer state object.
2162 */
2163YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
2164{
2165        YY_BUFFER_STATE b;
2166   
2167        if ( size < 2 ||
2168             base[size-2] != YY_END_OF_BUFFER_CHAR ||
2169             base[size-1] != YY_END_OF_BUFFER_CHAR )
2170                /* They forgot to leave room for the EOB's. */
2171                return 0;
2172
2173        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
2174        if ( ! b )
2175                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2176
2177        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2178        b->yy_buf_pos = b->yy_ch_buf = base;
2179        b->yy_is_our_buffer = 0;
2180        b->yy_input_file = 0;
2181        b->yy_n_chars = b->yy_buf_size;
2182        b->yy_is_interactive = 0;
2183        b->yy_at_bol = 1;
2184        b->yy_fill_buffer = 0;
2185        b->yy_buffer_status = YY_BUFFER_NEW;
2186
2187        yy_switch_to_buffer();
2188
2189        return b;
2190}
2191
2192/** Setup the input buffer state to scan a string. The next call to yylex() will
2193 * scan from a @e copy of @a str.
2194 * @param yystr a NUL-terminated string to scan
2195 *
2196 * @return the newly allocated buffer state object.
2197 * @note If you want to scan bytes that may contain NUL values, then use
2198 *       yy_scan_bytes() instead.
2199 */
2200YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
2201{
2202   
2203        return yy_scan_bytes(yystr,strlen(yystr) );
2204}
2205
2206/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2207 * scan from a @e copy of @a bytes.
2208 * @param yybytes the byte buffer to scan
2209 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2210 *
2211 * @return the newly allocated buffer state object.
2212 */
2213YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
2214{
2215        YY_BUFFER_STATE b;
2216        char *buf;
2217        yy_size_t n;
2218        int i;
2219   
2220        /* Get memory for full buffer, including space for trailing EOB's. */
2221        n = _yybytes_len + 2;
2222        buf = (char *) yyalloc();
2223        if ( ! buf )
2224                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2225
2226        for ( i = 0; i < _yybytes_len; ++i )
2227                buf[i] = yybytes[i];
2228
2229        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2230
2231        b = yy_scan_buffer(buf,n );
2232        if ( ! b )
2233                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2234
2235        /* It's okay to grow etc. this buffer, and we should throw it
2236         * away when we're done.
2237         */
2238        b->yy_is_our_buffer = 1;
2239
2240        return b;
2241}
2242
2243#ifndef YY_EXIT_FAILURE
2244#define YY_EXIT_FAILURE 2
2245#endif
2246
2247static void yy_fatal_error (yyconst char* msg )
2248{
2249        (void) fprintf( stderr, "%s\n", msg );
2250        exit( YY_EXIT_FAILURE );
2251}
2252
2253/* Redefine yyless() so it works in section 3 code. */
2254
2255#undef yyless
2256#define yyless(n) \
2257        do \
2258                { \
2259                /* Undo effects of setting up yytext. */ \
2260        int yyless_macro_arg = (n); \
2261        YY_LESS_LINENO(yyless_macro_arg);\
2262                yytext[yyleng] = (yy_hold_char); \
2263                (yy_c_buf_p) = yytext + yyless_macro_arg; \
2264                (yy_hold_char) = *(yy_c_buf_p); \
2265                *(yy_c_buf_p) = '\0'; \
2266                yyleng = yyless_macro_arg; \
2267                } \
2268        while ( 0 )
2269
2270/* Accessor  methods (get/set functions) to struct members. */
2271
2272/** Get the current line number.
2273 *
2274 */
2275int yyget_lineno  (void)
2276{
2277       
2278    return yylineno;
2279}
2280
2281/** Get the input stream.
2282 *
2283 */
2284FILE *yyget_in  (void)
2285{
2286        return yyin;
2287}
2288
2289/** Get the output stream.
2290 *
2291 */
2292FILE *yyget_out  (void)
2293{
2294        return yyout;
2295}
2296
2297/** Get the length of the current token.
2298 *
2299 */
2300yy_size_t yyget_leng  (void)
2301{
2302        return yyleng;
2303}
2304
2305/** Get the current token.
2306 *
2307 */
2308
2309char *yyget_text  (void)
2310{
2311        return yytext;
2312}
2313
2314/** Set the current line number.
2315 * @param line_number
2316 *
2317 */
2318void yyset_lineno (int  line_number )
2319{
2320   
2321    yylineno = line_number;
2322}
2323
2324/** Set the input stream. This does not discard the current
2325 * input buffer.
2326 * @param in_str A readable stream.
2327 *
2328 * @see yy_switch_to_buffer
2329 */
2330void yyset_in (FILE *  in_str )
2331{
2332        yyin = in_str ;
2333}
2334
2335void yyset_out (FILE *  out_str )
2336{
2337        yyout = out_str ;
2338}
2339
2340int yyget_debug  (void)
2341{
2342        return yy_flex_debug;
2343}
2344
2345void yyset_debug (int  bdebug )
2346{
2347        yy_flex_debug = bdebug ;
2348}
2349
2350static int yy_init_globals (void)
2351{
2352        /* Initialization is the same as for the non-reentrant scanner.
2353     * This function is called from yylex_destroy(), so don't allocate here.
2354     */
2355
2356    (yy_buffer_stack) = 0;
2357    (yy_buffer_stack_top) = 0;
2358    (yy_buffer_stack_max) = 0;
2359    (yy_c_buf_p) = (char *) 0;
2360    (yy_init) = 0;
2361    (yy_start) = 0;
2362
2363/* Defined in main.c */
2364#ifdef YY_STDINIT
2365    yyin = stdin;
2366    yyout = stdout;
2367#else
2368    yyin = (FILE *) 0;
2369    yyout = (FILE *) 0;
2370#endif
2371
2372    /* For future reference: Set errno on error, since we are called by
2373     * yylex_init()
2374     */
2375    return 0;
2376}
2377
2378/* yylex_destroy is for both reentrant and non-reentrant scanners. */
2379int yylex_destroy  (void)
2380{
2381   
2382    /* Pop the buffer stack, destroying each element. */
2383        while(YY_CURRENT_BUFFER){
2384                yy_delete_buffer(YY_CURRENT_BUFFER  );
2385                YY_CURRENT_BUFFER_LVALUE = NULL;
2386                yypop_buffer_state();
2387        }
2388
2389        /* Destroy the stack itself. */
2390        yyfree((yy_buffer_stack) );
2391        (yy_buffer_stack) = NULL;
2392
2393    /* Reset the globals. This is important in a non-reentrant scanner so the next time
2394     * yylex() is called, initialization will occur. */
2395    yy_init_globals( );
2396
2397    return 0;
2398}
2399
2400/*
2401 * Internal utility routines.
2402 */
2403
2404#ifndef yytext_ptr
2405static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2406{
2407        register int i;
2408        for ( i = 0; i < n; ++i )
2409                s1[i] = s2[i];
2410}
2411#endif
2412
2413#ifdef YY_NEED_STRLEN
2414static int yy_flex_strlen (yyconst char * s )
2415{
2416        register int n;
2417        for ( n = 0; s[n]; ++n )
2418                ;
2419
2420        return n;
2421}
2422#endif
2423
2424void *yyalloc (yy_size_t  size )
2425{
2426        return (void *) malloc( size );
2427}
2428
2429void *yyrealloc  (void * ptr, yy_size_t  size )
2430{
2431        /* The cast to (char *) in the following accommodates both
2432         * implementations that use char* generic pointers, and those
2433         * that use void* generic pointers.  It works with the latter
2434         * because both ANSI C and C++ allow castless assignment from
2435         * any pointer type to void*, and deal with argument conversions
2436         * as though doing an assignment.
2437         */
2438        return (void *) realloc( (char *) ptr, size );
2439}
2440
2441void yyfree (void * ptr )
2442{
2443        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
2444}
2445
2446#define YYTABLES_NAME "yytables"
2447
2448#line 74 "lex_parser.lex"
Note: See TracBrowser for help on using the repository browser.