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

Last change on this file since 642 was 642, checked in by rlacroix, 9 years ago

Use the filter infrastructure to handle the expressions

Parse the expressions to get a new tree representation that can be converted to a filter graph based on new arithmetic filters.

Temporal operations are still unsupported.

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