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