Mon Mar 20 08:25:37 2006

Asterisk developer's documentation


Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

ast_expr2f.c

Go to the documentation of this file.
00001 #line 2 "ast_expr2f.c"
00002 
00003 #line 4 "ast_expr2f.c"
00004 
00005 #define  YY_INT_ALIGNED short int
00006 
00007 /* A lexical scanner generated by flex */
00008 
00009 #define FLEX_SCANNER
00010 #define YY_FLEX_MAJOR_VERSION 2
00011 #define YY_FLEX_MINOR_VERSION 5
00012 #define YY_FLEX_SUBMINOR_VERSION 31
00013 #if YY_FLEX_SUBMINOR_VERSION > 0
00014 #define FLEX_BETA
00015 #endif
00016 
00017 /* First, we deal with  platform-specific or compiler-specific issues. */
00018 
00019 /* begin standard C headers. */
00020 #include <stdio.h>
00021 #include <string.h>
00022 #include <errno.h>
00023 #include <stdlib.h>
00024 
00025 /* end standard C headers. */
00026 
00027 /* flex integer type definitions */
00028 
00029 #ifndef FLEXINT_H
00030 #define FLEXINT_H
00031 
00032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00033 
00034 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
00035 #include <inttypes.h>
00036 typedef int8_t flex_int8_t;
00037 typedef uint8_t flex_uint8_t;
00038 typedef int16_t flex_int16_t;
00039 typedef uint16_t flex_uint16_t;
00040 typedef int32_t flex_int32_t;
00041 typedef uint32_t flex_uint32_t;
00042 #else
00043 typedef signed char flex_int8_t;
00044 typedef short int flex_int16_t;
00045 typedef int flex_int32_t;
00046 typedef unsigned char flex_uint8_t; 
00047 typedef unsigned short int flex_uint16_t;
00048 typedef unsigned int flex_uint32_t;
00049 #endif /* ! C99 */
00050 
00051 /* Limits of integral types. */
00052 #ifndef INT8_MIN
00053 #define INT8_MIN               (-128)
00054 #endif
00055 #ifndef INT16_MIN
00056 #define INT16_MIN              (-32767-1)
00057 #endif
00058 #ifndef INT32_MIN
00059 #define INT32_MIN              (-2147483647-1)
00060 #endif
00061 #ifndef INT8_MAX
00062 #define INT8_MAX               (127)
00063 #endif
00064 #ifndef INT16_MAX
00065 #define INT16_MAX              (32767)
00066 #endif
00067 #ifndef INT32_MAX
00068 #define INT32_MAX              (2147483647)
00069 #endif
00070 #ifndef UINT8_MAX
00071 #define UINT8_MAX              (255U)
00072 #endif
00073 #ifndef UINT16_MAX
00074 #define UINT16_MAX             (65535U)
00075 #endif
00076 #ifndef UINT32_MAX
00077 #define UINT32_MAX             (4294967295U)
00078 #endif
00079 
00080 #endif /* ! FLEXINT_H */
00081 
00082 #ifdef __cplusplus
00083 
00084 /* The "const" storage-class-modifier is valid. */
00085 #define YY_USE_CONST
00086 
00087 #else /* ! __cplusplus */
00088 
00089 #if __STDC__
00090 
00091 #define YY_USE_CONST
00092 
00093 #endif   /* __STDC__ */
00094 #endif   /* ! __cplusplus */
00095 
00096 #ifdef YY_USE_CONST
00097 #define yyconst const
00098 #else
00099 #define yyconst
00100 #endif
00101 
00102 /* Returned upon end-of-file. */
00103 #define YY_NULL 0
00104 
00105 /* Promotes a possibly negative, possibly signed char to an unsigned
00106  * integer for use as an array index.  If the signed char is negative,
00107  * we want to instead treat it as an 8-bit unsigned char, hence the
00108  * double cast.
00109  */
00110 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00111 
00112 /* An opaque pointer. */
00113 #ifndef YY_TYPEDEF_YY_SCANNER_T
00114 #define YY_TYPEDEF_YY_SCANNER_T
00115 typedef void* yyscan_t;
00116 #endif
00117 
00118 /* For convenience, these vars (plus the bison vars far below)
00119    are macros in the reentrant scanner. */
00120 #define yyin yyg->yyin_r
00121 #define yyout yyg->yyout_r
00122 #define yyextra yyg->yyextra_r
00123 #define yyleng yyg->yyleng_r
00124 #define yytext yyg->yytext_r
00125 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
00126 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
00127 #define yy_flex_debug yyg->yy_flex_debug_r
00128 
00129 int ast_yylex_init (yyscan_t* scanner);
00130 
00131 /* Enter a start condition.  This macro really ought to take a parameter,
00132  * but we do it the disgusting crufty way forced on us by the ()-less
00133  * definition of BEGIN.
00134  */
00135 #define BEGIN yyg->yy_start = 1 + 2 *
00136 
00137 /* Translate the current start state into a value that can be later handed
00138  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00139  * compatibility.
00140  */
00141 #define YY_START ((yyg->yy_start - 1) / 2)
00142 #define YYSTATE YY_START
00143 
00144 /* Action number for EOF rule of a given start state. */
00145 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00146 
00147 /* Special action meaning "start processing a new file". */
00148 #define YY_NEW_FILE ast_yyrestart(yyin ,yyscanner )
00149 
00150 #define YY_END_OF_BUFFER_CHAR 0
00151 
00152 /* Size of default input buffer. */
00153 #ifndef YY_BUF_SIZE
00154 #define YY_BUF_SIZE 16384
00155 #endif
00156 
00157 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00158 #define YY_TYPEDEF_YY_BUFFER_STATE
00159 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00160 #endif
00161 
00162 #define EOB_ACT_CONTINUE_SCAN 0
00163 #define EOB_ACT_END_OF_FILE 1
00164 #define EOB_ACT_LAST_MATCH 2
00165 
00166     #define YY_LESS_LINENO(n)
00167     
00168 /* Return all but the first "n" matched characters back to the input stream. */
00169 #define yyless(n) \
00170    do \
00171       { \
00172       /* Undo effects of setting up yytext. */ \
00173         int yyless_macro_arg = (n); \
00174         YY_LESS_LINENO(yyless_macro_arg);\
00175       *yy_cp = yyg->yy_hold_char; \
00176       YY_RESTORE_YY_MORE_OFFSET \
00177       yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00178       YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00179       } \
00180    while ( 0 )
00181 
00182 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
00183 
00184 /* The following is because we cannot portably get our hands on size_t
00185  * (without autoconf's help, which isn't available because we want
00186  * flex-generated scanners to compile on their own).
00187  */
00188 
00189 #ifndef YY_TYPEDEF_YY_SIZE_T
00190 #define YY_TYPEDEF_YY_SIZE_T
00191 typedef unsigned int yy_size_t;
00192 #endif
00193 
00194 #ifndef YY_STRUCT_YY_BUFFER_STATE
00195 #define YY_STRUCT_YY_BUFFER_STATE
00196 struct yy_buffer_state
00197    {
00198    FILE *yy_input_file;
00199 
00200    char *yy_ch_buf;     /* input buffer */
00201    char *yy_buf_pos;    /* current position in input buffer */
00202 
00203    /* Size of input buffer in bytes, not including room for EOB
00204     * characters.
00205     */
00206    yy_size_t yy_buf_size;
00207 
00208    /* Number of characters read into yy_ch_buf, not including EOB
00209     * characters.
00210     */
00211    int yy_n_chars;
00212 
00213    /* Whether we "own" the buffer - i.e., we know we created it,
00214     * and can realloc() it to grow it, and should free() it to
00215     * delete it.
00216     */
00217    int yy_is_our_buffer;
00218 
00219    /* Whether this is an "interactive" input source; if so, and
00220     * if we're using stdio for input, then we want to use getc()
00221     * instead of fread(), to make sure we stop fetching input after
00222     * each newline.
00223     */
00224    int yy_is_interactive;
00225 
00226    /* Whether we're considered to be at the beginning of a line.
00227     * If so, '^' rules will be active on the next match, otherwise
00228     * not.
00229     */
00230    int yy_at_bol;
00231 
00232     int yy_bs_lineno; /**< The line count. */
00233     int yy_bs_column; /**< The column count. */
00234     
00235    /* Whether to try to fill the input buffer when we reach the
00236     * end of it.
00237     */
00238    int yy_fill_buffer;
00239 
00240    int yy_buffer_status;
00241 
00242 #define YY_BUFFER_NEW 0
00243 #define YY_BUFFER_NORMAL 1
00244    /* When an EOF's been seen but there's still some text to process
00245     * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00246     * shouldn't try reading from the input source any more.  We might
00247     * still have a bunch of tokens to match, though, because of
00248     * possible backing-up.
00249     *
00250     * When we actually see the EOF, we change the status to "new"
00251     * (via ast_yyrestart()), so that the user can continue scanning by
00252     * just pointing yyin at a new input file.
00253     */
00254 #define YY_BUFFER_EOF_PENDING 2
00255 
00256    };
00257 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00258 
00259 /* We provide macros for accessing buffer states in case in the
00260  * future we want to put the buffer states in a more general
00261  * "scanner state".
00262  *
00263  * Returns the top of the stack, or NULL.
00264  */
00265 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
00266                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
00267                           : NULL)
00268 
00269 /* Same as previous macro, but useful when we know that the buffer stack is not
00270  * NULL or when we need an lvalue. For internal use only.
00271  */
00272 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
00273 
00274 void ast_yyrestart (FILE *input_file ,yyscan_t yyscanner );
00275 void ast_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00276 YY_BUFFER_STATE ast_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
00277 void ast_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00278 void ast_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00279 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00280 void ast_yypop_buffer_state (yyscan_t yyscanner );
00281 
00282 static void ast_yyensure_buffer_stack (yyscan_t yyscanner );
00283 static void ast_yy_load_buffer_state (yyscan_t yyscanner );
00284 static void ast_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
00285 
00286 #define YY_FLUSH_BUFFER ast_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
00287 
00288 YY_BUFFER_STATE ast_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
00289 YY_BUFFER_STATE ast_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
00290 YY_BUFFER_STATE ast_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
00291 
00292 void *ast_yyalloc (yy_size_t ,yyscan_t yyscanner );
00293 void *ast_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
00294 void ast_yyfree (void * ,yyscan_t yyscanner );
00295 
00296 #define yy_new_buffer ast_yy_create_buffer
00297 
00298 #define yy_set_interactive(is_interactive) \
00299    { \
00300    if ( ! YY_CURRENT_BUFFER ){ \
00301         ast_yyensure_buffer_stack (yyscanner); \
00302       YY_CURRENT_BUFFER_LVALUE =    \
00303             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00304    } \
00305    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00306    }
00307 
00308 #define yy_set_bol(at_bol) \
00309    { \
00310    if ( ! YY_CURRENT_BUFFER ){\
00311         ast_yyensure_buffer_stack (yyscanner); \
00312       YY_CURRENT_BUFFER_LVALUE =    \
00313             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00314    } \
00315    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00316    }
00317 
00318 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00319 
00320 /* Begin user sect3 */
00321 
00322 #define ast_yywrap(n) 1
00323 #define YY_SKIP_YYWRAP
00324 
00325 typedef char YY_CHAR;
00326 
00327 typedef int yy_state_type;
00328 
00329 #define yytext_ptr yytext_r
00330 static yyconst flex_int16_t yy_nxt[][128] =
00331     {
00332     {
00333         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00334         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00335         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00336         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00337         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00338         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00339         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00340         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00342         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00343 
00344         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00346         0,    0,    0,    0,    0,    0,    0,    0
00347     },
00348 
00349     {
00350         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
00351        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
00352         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
00353         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
00354        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
00355        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
00356        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
00357 
00358        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00359        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00360        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
00361        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00362        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00363        13,   13,   13,    8,   29,    8,    8,    8
00364     },
00365 
00366     {
00367         7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
00368        10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
00369         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
00370         8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
00371 
00372        17,   18,   19,   20,   13,   21,   13,   22,   23,   23,
00373        23,   23,   23,   23,   23,   23,   23,   23,   24,   13,
00374        25,   26,   27,   28,   13,   13,   13,   13,   13,   13,
00375        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00376        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00377        13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
00378        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00379        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
00380        13,   13,   13,    8,   29,    8,    8,    8
00381     },
00382 
00383     {
00384         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00385 
00386        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00387        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00388        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00389        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00390        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00391        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00392        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00393        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00394        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00395        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00396 
00397        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00398        30,   30,   30,   31,   30,   32,   30,   30
00399     },
00400 
00401     {
00402         7,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00403        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00404        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00405        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00406        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00407        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00408        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00409        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00410 
00411        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00412        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00413        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00414        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
00415        30,   30,   30,   31,   30,   32,   30,   30
00416     },
00417 
00418     {
00419         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
00420        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
00421        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00422        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
00423        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
00424 
00425        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
00426        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
00427        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00428        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00429        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00430        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00431        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00432        33,   33,   33,   33,   34,   33,   33,   33
00433     },
00434 
00435     {
00436         7,   33,   33,   33,   33,   33,   33,   33,   33,   34,
00437        34,   33,   33,   34,   33,   33,   33,   33,   33,   33,
00438 
00439        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00440        33,   33,   34,   34,   33,   33,   35,   34,   34,   33,
00441        34,   34,   34,   34,   33,   34,   33,   34,   33,   33,
00442        33,   33,   33,   33,   33,   33,   33,   33,   34,   33,
00443        34,   34,   34,   34,   33,   33,   33,   33,   33,   33,
00444        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00445        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00446        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00447        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00448        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
00449 
00450        33,   33,   33,   33,   34,   33,   33,   33
00451     },
00452 
00453     {
00454        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00455        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00456        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00457        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00458        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00459        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00460        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00461        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00462        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00463 
00464        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00465        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00466        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
00467        -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7
00468     },
00469 
00470     {
00471         7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00472        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00473        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00474        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00475        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00476        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00477 
00478        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00479        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00480        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00481        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00482        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00483        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
00484        -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8
00485     },
00486 
00487     {
00488         7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00489        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00490        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00491 
00492        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00493        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00494        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00495        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00496        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00497        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00498        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00499        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00500        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
00501        -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9
00502 
00503     },
00504 
00505     {
00506         7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00507       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00508       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00509       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00510       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00511       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00512       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00513       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00514       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00515       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00516 
00517       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00518       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
00519       -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10
00520     },
00521 
00522     {
00523         7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00524       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00525       -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
00526       -11,  -11,  -11,   36,  -11,   36,   36,   36,  -11,   36,
00527       -11,  -11,  -11,  -11,   36,  -11,   36,  -11,   36,   36,
00528        36,   36,   36,   36,   36,   36,   36,   36,  -11,   36,
00529       -11,   37,  -11,  -11,   36,   36,   36,   36,   36,   36,
00530 
00531        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00532        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00533        36,  -11,   36,  -11,   36,   36,  -11,   36,   36,   36,
00534        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00535        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00536        36,   36,   36,  -11,  -11,  -11,  -11,  -11
00537     },
00538 
00539     {
00540         7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00541        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00542        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00543        38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
00544 
00545        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00546        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00547        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00548        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00549        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00550        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00551        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00552        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00553        38,   38,   38,   38,   38,   38,   38,   38
00554     },
00555 
00556     {
00557         7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00558 
00559       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00560       -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
00561       -13,  -13,  -13,   36,  -13,   36,   36,   36,  -13,   36,
00562       -13,  -13,  -13,  -13,   36,  -13,   36,  -13,   36,   36,
00563        36,   36,   36,   36,   36,   36,   36,   36,  -13,   36,
00564       -13,  -13,  -13,  -13,   36,   36,   36,   36,   36,   36,
00565        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00566        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00567        36,  -13,   36,  -13,   36,   36,  -13,   36,   36,   36,
00568        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00569 
00570        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00571        36,   36,   36,  -13,  -13,  -13,  -13,  -13
00572     },
00573 
00574     {
00575         7,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00576       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00577       -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
00578       -14,  -14,  -14,   36,  -14,   36,   36,   36,  -14,   36,
00579       -14,  -14,  -14,  -14,   36,  -14,   36,  -14,   36,   36,
00580        36,   36,   36,   36,   36,   36,   36,   36,  -14,   36,
00581       -14,  -14,  -14,  -14,   36,   36,   36,   36,   36,   36,
00582        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00583 
00584        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00585        36,  -14,   36,  -14,   36,   36,  -14,   36,   36,   36,
00586        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00587        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00588        36,   36,   36,   40,  -14,  -14,  -14,  -14
00589     },
00590 
00591     {
00592         7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00593       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00594       -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
00595       -15,  -15,  -15,   36,  -15,   36,   36,   36,  -15,   36,
00596       -15,  -15,  -15,  -15,   36,  -15,   36,  -15,   36,   36,
00597 
00598        36,   36,   36,   36,   36,   36,   36,   36,  -15,   36,
00599       -15,  -15,  -15,  -15,   36,   36,   36,   36,   36,   36,
00600        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00601        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00602        36,  -15,   36,  -15,   36,   36,  -15,   36,   36,   36,
00603        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00604        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00605        36,   36,   36,  -15,  -15,  -15,  -15,  -15
00606     },
00607 
00608     {
00609         7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00610       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00611 
00612       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00613       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00614       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00615       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00616       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00617       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00618       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00619       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00620       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00621       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
00622 
00623       -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
00624     },
00625 
00626     {
00627         7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00628       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00629       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00630       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00631       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00632       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00633       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00634       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00635       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00636 
00637       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00638       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00639       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
00640       -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
00641     },
00642 
00643     {
00644         7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00645       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00646       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00647       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00648       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00649       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00650 
00651       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00652       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00653       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00654       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00655       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00656       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
00657       -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18
00658     },
00659 
00660     {
00661         7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00662       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00663       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00664 
00665       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00666       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00667       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00668       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00669       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00670       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00671       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00672       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00673       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
00674       -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19
00675 
00676     },
00677 
00678     {
00679         7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00680       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00681       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00682       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00683       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00684       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00685       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00686       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00687       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00688       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00689 
00690       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00691       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
00692       -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20
00693     },
00694 
00695     {
00696         7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00697       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00698       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00699       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00700       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00701       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00702       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00703 
00704       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00705       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00706       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00707       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00708       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
00709       -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21
00710     },
00711 
00712     {
00713         7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00714       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00715       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00716       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00717 
00718       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00719       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00720       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00721       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00722       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00723       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00724       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00725       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
00726       -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22
00727     },
00728 
00729     {
00730         7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00731 
00732       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00733       -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
00734       -23,  -23,  -23,   36,  -23,   36,   36,   36,  -23,   36,
00735       -23,  -23,  -23,  -23,   36,  -23,   36,  -23,   41,   41,
00736        41,   41,   41,   41,   41,   41,   41,   41,  -23,   36,
00737       -23,  -23,  -23,  -23,   36,   36,   36,   36,   36,   36,
00738        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00739        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00740        36,  -23,   36,  -23,   36,   36,  -23,   36,   36,   36,
00741        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00742 
00743        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00744        36,   36,   36,  -23,  -23,  -23,  -23,  -23
00745     },
00746 
00747     {
00748         7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00749       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00750       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00751       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00752       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00753       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,   42,  -24,
00754       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00755       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00756 
00757       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00758       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00759       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00760       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
00761       -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24
00762     },
00763 
00764     {
00765         7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00766       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00767       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00768       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00769       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00770 
00771       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00772       -25,   43,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00773       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00774       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00775       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00776       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00777       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
00778       -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25
00779     },
00780 
00781     {
00782         7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00783       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00784 
00785       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00786       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00787       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00788       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00789       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00790       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00791       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00792       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00793       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00794       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
00795 
00796       -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26
00797     },
00798 
00799     {
00800         7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00801       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00802       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00803       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00804       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00805       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00806       -27,   44,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00807       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00808       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00809 
00810       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00811       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00812       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
00813       -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27
00814     },
00815 
00816     {
00817         7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00818       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00819       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00820       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00821       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00822       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00823 
00824       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00825       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00826       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00827       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00828       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00829       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
00830       -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28
00831     },
00832 
00833     {
00834         7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00835       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00836       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00837 
00838       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00839       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00840       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00841       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00842       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00843       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00844       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00845       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00846       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
00847       -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29
00848 
00849     },
00850 
00851     {
00852         7,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00853        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00854        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00855        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00856        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00857        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00858        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00859        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00860        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00861        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00862 
00863        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00864        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
00865        45,   45,   45,   46,   45,   47,   45,   45
00866     },
00867 
00868     {
00869         7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00870       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00871       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00872       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00873       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00874       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00875       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00876 
00877       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00878       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00879       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00880       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00881       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
00882       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31
00883     },
00884 
00885     {
00886         7,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00887       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00888       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00889       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00890 
00891       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00892       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00893       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00894       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00895       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00896       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00897       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00898       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
00899       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
00900     },
00901 
00902     {
00903         7,   48,   48,   48,   48,   48,   48,   48,   48,  -33,
00904 
00905       -33,   48,   48,  -33,   48,   48,   48,   48,   48,   48,
00906        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
00907        48,   48,  -33,  -33,   48,   48,  -33,  -33,  -33,   48,
00908       -33,  -33,  -33,  -33,   48,  -33,   48,  -33,   48,   48,
00909        48,   48,   48,   48,   48,   48,   48,   48,  -33,   48,
00910       -33,  -33,  -33,  -33,   48,   48,   48,   48,   48,   48,
00911        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
00912        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
00913        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
00914        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
00915 
00916        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
00917        48,   48,   48,   48,  -33,   48,   48,   48
00918     },
00919 
00920     {
00921         7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00922       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00923       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00924       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00925       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00926       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00927       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00928       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00929 
00930       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00931       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00932       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00933       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
00934       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34
00935     },
00936 
00937     {
00938         7,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00939       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00940       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00941       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00942       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00943 
00944       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00945       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00946       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00947       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00948       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00949       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00950       -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
00951       -35,  -35,  -35,   49,  -35,  -35,  -35,  -35
00952     },
00953 
00954     {
00955         7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00956       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00957 
00958       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
00959       -36,  -36,  -36,   36,  -36,   36,   36,   36,  -36,   36,
00960       -36,  -36,  -36,  -36,   36,  -36,   36,  -36,   36,   36,
00961        36,   36,   36,   36,   36,   36,   36,   36,  -36,   36,
00962       -36,  -36,  -36,  -36,   36,   36,   36,   36,   36,   36,
00963        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00964        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00965        36,  -36,   36,  -36,   36,   36,  -36,   36,   36,   36,
00966        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00967        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
00968 
00969        36,   36,   36,  -36,  -36,  -36,  -36,  -36
00970     },
00971 
00972     {
00973         7,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00974       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00975       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00976       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00977       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00978       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00979       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00980       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00981       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00982 
00983       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00984       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00985       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
00986       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37
00987     },
00988 
00989     {
00990         7,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00991        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00992        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00993        38,   38,   38,   38,   39,   38,   38,   38,   38,   38,
00994        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00995        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00996 
00997        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00998        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00999        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
01000        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
01001        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
01002        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
01003        38,   38,   38,   38,   38,   38,   38,   38
01004     },
01005 
01006     {
01007         7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01008       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01009       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01010 
01011       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01012       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01013       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01014       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01015       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01016       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01017       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01018       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01019       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
01020       -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39
01021 
01022     },
01023 
01024     {
01025         7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01026       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01027       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01028       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01029       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01030       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01031       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01032       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01033       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01034       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01035 
01036       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01037       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
01038       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
01039     },
01040 
01041     {
01042         7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01043       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01044       -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
01045       -41,  -41,  -41,   36,  -41,   36,   36,   36,  -41,   36,
01046       -41,  -41,  -41,  -41,   36,  -41,   36,  -41,   41,   41,
01047        41,   41,   41,   41,   41,   41,   41,   41,  -41,   36,
01048       -41,  -41,  -41,  -41,   36,   36,   36,   36,   36,   36,
01049 
01050        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
01051        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
01052        36,  -41,   36,  -41,   36,   36,  -41,   36,   36,   36,
01053        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
01054        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
01055        36,   36,   36,  -41,  -41,  -41,  -41,  -41
01056     },
01057 
01058     {
01059         7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01060       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01061       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01062       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01063 
01064       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01065       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01066       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01067       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01068       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01069       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01070       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01071       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
01072       -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42
01073     },
01074 
01075     {
01076         7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01077 
01078       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01079       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01080       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01081       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01082       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01083       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01084       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01085       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01086       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01087       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01088 
01089       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
01090       -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
01091     },
01092 
01093     {
01094         7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01095       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01096       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01097       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01098       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01099       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01100       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01101       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01102 
01103       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01104       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01105       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01106       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
01107       -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
01108     },
01109 
01110     {
01111         7,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01112        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01113        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01114        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01115        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01116 
01117        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01118        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01119        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01120        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01121        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01122        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01123        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
01124        45,   45,   45,   46,   45,   47,   45,   45
01125     },
01126 
01127     {
01128         7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01129       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01130 
01131       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01132       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01133       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01134       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01135       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01136       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01137       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01138       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01139       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01140       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
01141 
01142       -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
01143     },
01144 
01145     {
01146         7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01147       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01148       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01149       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01150       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01151       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01152       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01153       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01154       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01155 
01156       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01157       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01158       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
01159       -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
01160     },
01161 
01162     {
01163         7,   48,   48,   48,   48,   48,   48,   48,   48,  -48,
01164       -48,   48,   48,  -48,   48,   48,   48,   48,   48,   48,
01165        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
01166        48,   48,  -48,  -48,   48,   48,  -48,  -48,  -48,   48,
01167       -48,  -48,  -48,  -48,   48,  -48,   48,  -48,   48,   48,
01168        48,   48,   48,   48,   48,   48,   48,   48,  -48,   48,
01169 
01170       -48,  -48,  -48,  -48,   48,   48,   48,   48,   48,   48,
01171        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
01172        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
01173        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
01174        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
01175        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
01176        48,   48,   48,   48,  -48,   48,   48,   48
01177     },
01178 
01179     {
01180         7,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01181       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01182       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01183 
01184       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01185       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01186       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01187       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01188       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01189       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01190       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01191       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01192       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
01193       -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49
01194 
01195     },
01196 
01197     } ;
01198 
01199 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
01200 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
01201 static int yy_get_next_buffer (yyscan_t yyscanner );
01202 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
01203 
01204 /* Done after the current pattern has been matched and before the
01205  * corresponding action - sets up yytext.
01206  */
01207 #define YY_DO_BEFORE_ACTION \
01208    yyg->yytext_ptr = yy_bp; \
01209    yyg->yytext_ptr -= yyg->yy_more_len; \
01210    yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
01211    yyg->yy_hold_char = *yy_cp; \
01212    *yy_cp = '\0'; \
01213    yyg->yy_c_buf_p = yy_cp;
01214 
01215 #define YY_NUM_RULES 30
01216 #define YY_END_OF_BUFFER 31
01217 /* This struct is not used in this scanner,
01218    but its presence is necessary. */
01219 struct yy_trans_info
01220    {
01221    flex_int32_t yy_verify;
01222    flex_int32_t yy_nxt;
01223    };
01224 static yyconst flex_int16_t yy_accept[50] =
01225     {   0,
01226         0,    0,    0,    0,   27,   27,   31,   30,   20,   22,
01227        24,   30,   24,   24,   13,    2,   17,   18,   11,    9,
01228        10,   12,   23,   15,    5,    3,    4,   14,    1,   30,
01229        26,   25,   27,   28,   28,   24,    8,    0,   21,   19,
01230        23,   16,    7,    6,    0,   26,   25,   27,   29
01231     } ;
01232 
01233 static yyconst yy_state_type yy_NUL_trans[50] =
01234     {   0,
01235         8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
01236         0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
01237         0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
01238         0,    0,   48,    0,    0,    0,    0,   38,    0,    0,
01239         0,    0,    0,    0,   45,    0,    0,   48,    0
01240     } ;
01241 
01242 /* The intent behind this definition is that it'll catch
01243  * any uses of REJECT which flex missed.
01244  */
01245 #define REJECT reject_used_but_not_detected
01246 #define yymore() (yyg->yy_more_flag = 1)
01247 #define YY_MORE_ADJ yyg->yy_more_len
01248 #define YY_RESTORE_YY_MORE_OFFSET
01249 #line 1 "ast_expr2.fl"
01250 #line 2 "ast_expr2.fl"
01251 /*! \file
01252  *
01253  * \brief Dialplan Expression Parser
01254  */
01255 
01256 #include <sys/types.h>
01257 #include <stdio.h>
01258 #include <stdlib.h>
01259 #include <string.h>
01260 #include <locale.h>
01261 #include <ctype.h>
01262 #if !defined(SOLARIS) && !defined(__CYGWIN__)
01263 #include <err.h>
01264 #else
01265 #define quad_t int64_t
01266 #endif
01267 #include <errno.h>
01268 #include <regex.h>
01269 #include <limits.h>
01270 #include <asterisk/ast_expr.h>
01271 #include <asterisk/logger.h>
01272 #include <asterisk/strings.h>
01273 
01274 enum valtype {
01275    AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
01276 } ;
01277 
01278 struct val {
01279    enum valtype type;
01280    union {
01281       char *s;
01282       quad_t i;
01283    } u;
01284 } ;
01285 
01286 #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
01287 
01288 #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
01289 #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);
01290 #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);
01291 
01292 struct parse_io
01293 {
01294    char *string;
01295    struct val *val;
01296    yyscan_t scanner;
01297 };
01298  
01299 void ast_yyset_column(int column_no, yyscan_t yyscanner);
01300 int ast_yyget_column(yyscan_t yyscanner);
01301 static int curlycount = 0;
01302 
01303 #line 1304 "ast_expr2f.c"
01304 
01305 #define INITIAL 0
01306 #define var 1
01307 #define trail 2
01308 
01309 /* Special case for "unistd.h", since it is non-ANSI. We include it way
01310  * down here because we want the user's section 1 to have been scanned first.
01311  * The user has a chance to override it with an option.
01312  */
01313 #include <unistd.h>
01314 
01315 #ifndef YY_EXTRA_TYPE
01316 #define YY_EXTRA_TYPE void *
01317 #endif
01318 
01319 /* Holds the entire state of the reentrant scanner. */
01320 struct yyguts_t
01321     {
01322 
01323     /* User-defined. Not touched by flex. */
01324     YY_EXTRA_TYPE yyextra_r;
01325 
01326     /* The rest are the same as the globals declared in the non-reentrant scanner. */
01327     FILE *yyin_r, *yyout_r;
01328     size_t yy_buffer_stack_top; /**< index of top of stack. */
01329     size_t yy_buffer_stack_max; /**< capacity of stack. */
01330     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
01331     char yy_hold_char;
01332     int yy_n_chars;
01333     int yyleng_r;
01334     char *yy_c_buf_p;
01335     int yy_init;
01336     int yy_start;
01337     int yy_did_buffer_switch_on_eof;
01338     int yy_start_stack_ptr;
01339     int yy_start_stack_depth;
01340     int *yy_start_stack;
01341     yy_state_type yy_last_accepting_state;
01342     char* yy_last_accepting_cpos;
01343 
01344     int yylineno_r;
01345     int yy_flex_debug_r;
01346 
01347     char *yytext_r;
01348     int yy_more_flag;
01349     int yy_more_len;
01350 
01351     YYSTYPE * yylval_r;
01352 
01353     YYLTYPE * yylloc_r;
01354 
01355     }; /* end struct yyguts_t */
01356 
01357     /* This must go here because YYSTYPE and YYLTYPE are included
01358      * from bison output in section 1.*/
01359     #    define yylval yyg->yylval_r
01360     
01361     #    define yylloc yyg->yylloc_r
01362     
01363 /* Accessor methods to globals.
01364    These are made visible to non-reentrant scanners for convenience. */
01365 
01366 int ast_yylex_destroy (yyscan_t yyscanner );
01367 
01368 int ast_yyget_debug (yyscan_t yyscanner );
01369 
01370 void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
01371 
01372 YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
01373 
01374 void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
01375 
01376 FILE *ast_yyget_in (yyscan_t yyscanner );
01377 
01378 void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
01379 
01380 FILE *ast_yyget_out (yyscan_t yyscanner );
01381 
01382 void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
01383 
01384 int ast_yyget_leng (yyscan_t yyscanner );
01385 
01386 char *ast_yyget_text (yyscan_t yyscanner );
01387 
01388 int ast_yyget_lineno (yyscan_t yyscanner );
01389 
01390 void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
01391 
01392 YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
01393 
01394 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
01395 
01396        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
01397     
01398         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
01399     
01400 /* Macros after this point can all be overridden by user definitions in
01401  * section 1.
01402  */
01403 
01404 #ifndef YY_SKIP_YYWRAP
01405 #ifdef __cplusplus
01406 extern "C" int ast_yywrap (yyscan_t yyscanner );
01407 #else
01408 extern int ast_yywrap (yyscan_t yyscanner );
01409 #endif
01410 #endif
01411 
01412     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
01413     
01414 #ifndef yytext_ptr
01415 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
01416 #endif
01417 
01418 #ifdef YY_NEED_STRLEN
01419 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
01420 #endif
01421 
01422 #ifndef YY_NO_INPUT
01423 
01424 #ifdef __cplusplus
01425 static int yyinput (yyscan_t yyscanner );
01426 #else
01427 static int input (yyscan_t yyscanner );
01428 #endif
01429 
01430 #endif
01431 
01432 /* Amount of stuff to slurp up with each read. */
01433 #ifndef YY_READ_BUF_SIZE
01434 #define YY_READ_BUF_SIZE 8192
01435 #endif
01436 
01437 /* Copy whatever the last rule matched to the standard output. */
01438 #ifndef ECHO
01439 /* This used to be an fputs(), but since the string might contain NUL's,
01440  * we now use fwrite().
01441  */
01442 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
01443 #endif
01444 
01445 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01446  * is returned in "result".
01447  */
01448 #ifndef YY_INPUT
01449 #define YY_INPUT(buf,result,max_size) \
01450    errno=0; \
01451    while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
01452    { \
01453       if( errno != EINTR) \
01454       { \
01455          YY_FATAL_ERROR( "input in flex scanner failed" ); \
01456          break; \
01457       } \
01458       errno=0; \
01459       clearerr(yyin); \
01460    }\
01461 \
01462 
01463 #endif
01464 
01465 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01466  * we don't want an extra ';' after the "return" because that will cause
01467  * some compilers to complain about unreachable statements.
01468  */
01469 #ifndef yyterminate
01470 #define yyterminate() return YY_NULL
01471 #endif
01472 
01473 /* Number of entries by which start-condition stack grows. */
01474 #ifndef YY_START_STACK_INCR
01475 #define YY_START_STACK_INCR 25
01476 #endif
01477 
01478 /* Report a fatal error. */
01479 #ifndef YY_FATAL_ERROR
01480 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
01481 #endif
01482 
01483 /* end tables serialization structures and prototypes */
01484 
01485 /* Default declaration of generated scanner - a define so the user can
01486  * easily add parameters.
01487  */
01488 #ifndef YY_DECL
01489 #define YY_DECL_IS_OURS 1
01490 
01491 extern int ast_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
01492 
01493 #define YY_DECL int ast_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
01494 #endif /* !YY_DECL */
01495 
01496 /* Code executed at the beginning of each rule, after yytext and yyleng
01497  * have been set up.
01498  */
01499 #ifndef YY_USER_ACTION
01500 #define YY_USER_ACTION
01501 #endif
01502 
01503 /* Code executed at the end of each rule. */
01504 #ifndef YY_BREAK
01505 #define YY_BREAK break;
01506 #endif
01507 
01508 #define YY_RULE_SETUP \
01509    YY_USER_ACTION
01510 
01511 /** The main scanner function which does all the work.
01512  */
01513 YY_DECL
01514 {
01515    register yy_state_type yy_current_state;
01516    register char *yy_cp, *yy_bp;
01517    register int yy_act;
01518     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
01519 
01520 #line 64 "ast_expr2.fl"
01521 
01522 
01523 #line 1524 "ast_expr2f.c"
01524 
01525     yylval = yylval_param;
01526 
01527     yylloc = yylloc_param;
01528 
01529    if ( yyg->yy_init )
01530       {
01531       yyg->yy_init = 0;
01532 
01533 #ifdef YY_USER_INIT
01534       YY_USER_INIT;
01535 #endif
01536 
01537       if ( ! yyg->yy_start )
01538          yyg->yy_start = 1;   /* first start state */
01539 
01540       if ( ! yyin )
01541          yyin = stdin;
01542 
01543       if ( ! yyout )
01544          yyout = stdout;
01545 
01546       if ( ! YY_CURRENT_BUFFER ) {
01547          ast_yyensure_buffer_stack (yyscanner);
01548          YY_CURRENT_BUFFER_LVALUE =
01549             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
01550       }
01551 
01552       ast_yy_load_buffer_state(yyscanner );
01553       }
01554 
01555    while ( 1 )    /* loops until end-of-file is reached */
01556       {
01557       yyg->yy_more_len = 0;
01558       if ( yyg->yy_more_flag )
01559          {
01560          yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
01561          yyg->yy_more_flag = 0;
01562          }
01563       yy_cp = yyg->yy_c_buf_p;
01564 
01565       /* Support of yytext. */
01566       *yy_cp = yyg->yy_hold_char;
01567 
01568       /* yy_bp points to the position in yy_ch_buf of the start of
01569        * the current run.
01570        */
01571       yy_bp = yy_cp;
01572 
01573       yy_current_state = yyg->yy_start;
01574 yy_match:
01575       while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
01576          {
01577          if ( yy_accept[yy_current_state] )
01578             {
01579             yyg->yy_last_accepting_state = yy_current_state;
01580             yyg->yy_last_accepting_cpos = yy_cp;
01581             }
01582 
01583          ++yy_cp;
01584          }
01585 
01586       yy_current_state = -yy_current_state;
01587 
01588 yy_find_action:
01589       yy_act = yy_accept[yy_current_state];
01590 
01591       YY_DO_BEFORE_ACTION;
01592 
01593 do_action:  /* This label is used only to access EOF actions. */
01594 
01595       switch ( yy_act )
01596    { /* beginning of action switch */
01597          case 0: /* must back up */
01598          /* undo the effects of YY_DO_BEFORE_ACTION */
01599          *yy_cp = yyg->yy_hold_char;
01600          yy_cp = yyg->yy_last_accepting_cpos + 1;
01601          yy_current_state = yyg->yy_last_accepting_state;
01602          goto yy_find_action;
01603 
01604 case 1:
01605 YY_RULE_SETUP
01606 #line 66 "ast_expr2.fl"
01607 { SET_COLUMNS; SET_STRING; return TOK_OR;}
01608    YY_BREAK
01609 case 2:
01610 YY_RULE_SETUP
01611 #line 67 "ast_expr2.fl"
01612 { SET_COLUMNS; SET_STRING; return TOK_AND;}
01613    YY_BREAK
01614 case 3:
01615 YY_RULE_SETUP
01616 #line 68 "ast_expr2.fl"
01617 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
01618    YY_BREAK
01619 case 4:
01620 YY_RULE_SETUP
01621 #line 69 "ast_expr2.fl"
01622 { SET_COLUMNS; SET_STRING; return TOK_GT;}
01623    YY_BREAK
01624 case 5:
01625 YY_RULE_SETUP
01626 #line 70 "ast_expr2.fl"
01627 { SET_COLUMNS; SET_STRING; return TOK_LT;}
01628    YY_BREAK
01629 case 6:
01630 YY_RULE_SETUP
01631 #line 71 "ast_expr2.fl"
01632 { SET_COLUMNS; SET_STRING; return TOK_GE;}
01633    YY_BREAK
01634 case 7:
01635 YY_RULE_SETUP
01636 #line 72 "ast_expr2.fl"
01637 { SET_COLUMNS; SET_STRING; return TOK_LE;}
01638    YY_BREAK
01639 case 8:
01640 YY_RULE_SETUP
01641 #line 73 "ast_expr2.fl"
01642 { SET_COLUMNS; SET_STRING; return TOK_NE;}
01643    YY_BREAK
01644 case 9:
01645 YY_RULE_SETUP
01646 #line 74 "ast_expr2.fl"
01647 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
01648    YY_BREAK
01649 case 10:
01650 YY_RULE_SETUP
01651 #line 75 "ast_expr2.fl"
01652 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
01653    YY_BREAK
01654 case 11:
01655 YY_RULE_SETUP
01656 #line 76 "ast_expr2.fl"
01657 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
01658    YY_BREAK
01659 case 12:
01660 YY_RULE_SETUP
01661 #line 77 "ast_expr2.fl"
01662 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
01663    YY_BREAK
01664 case 13:
01665 YY_RULE_SETUP
01666 #line 78 "ast_expr2.fl"
01667 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
01668    YY_BREAK
01669 case 14:
01670 YY_RULE_SETUP
01671 #line 79 "ast_expr2.fl"
01672 { SET_COLUMNS; SET_STRING; return TOK_COND;}
01673    YY_BREAK
01674 case 15:
01675 YY_RULE_SETUP
01676 #line 80 "ast_expr2.fl"
01677 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
01678    YY_BREAK
01679 case 16:
01680 YY_RULE_SETUP
01681 #line 81 "ast_expr2.fl"
01682 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
01683    YY_BREAK
01684 case 17:
01685 YY_RULE_SETUP
01686 #line 82 "ast_expr2.fl"
01687 { SET_COLUMNS; SET_STRING; return TOK_LP;}
01688    YY_BREAK
01689 case 18:
01690 YY_RULE_SETUP
01691 #line 83 "ast_expr2.fl"
01692 { SET_COLUMNS; SET_STRING; return TOK_RP;}
01693    YY_BREAK
01694 case 19:
01695 YY_RULE_SETUP
01696 #line 84 "ast_expr2.fl"
01697 {/* gather the contents of ${} expressions, with trailing stuff, into a single TOKEN. They are much more complex now than they used to be */
01698                        curlycount = 0; BEGIN(var); yymore();}
01699    YY_BREAK
01700 case 20:
01701 YY_RULE_SETUP
01702 #line 87 "ast_expr2.fl"
01703 {}
01704    YY_BREAK
01705 case 21:
01706 /* rule 21 can match eol */
01707 YY_RULE_SETUP
01708 #line 88 "ast_expr2.fl"
01709 {SET_COLUMNS; SET_STRING; return TOKEN;}
01710    YY_BREAK
01711 case 22:
01712 /* rule 22 can match eol */
01713 YY_RULE_SETUP
01714 #line 90 "ast_expr2.fl"
01715 {/* what to do with eol */}
01716    YY_BREAK
01717 case 23:
01718 YY_RULE_SETUP
01719 #line 91 "ast_expr2.fl"
01720 {   SET_COLUMNS;  /* the original behavior of the expression parser was to bring in numbers as a numeric string */
01721             SET_NUMERIC_STRING;
01722             return TOKEN;}
01723    YY_BREAK
01724 case 24:
01725 YY_RULE_SETUP
01726 #line 94 "ast_expr2.fl"
01727 {SET_COLUMNS; SET_STRING; return TOKEN;}
01728    YY_BREAK
01729 case 25:
01730 /* rule 25 can match eol */
01731 YY_RULE_SETUP
01732 #line 96 "ast_expr2.fl"
01733 {curlycount--; if(curlycount < 0){ BEGIN(trail);  yymore();} else {  yymore();}}
01734    YY_BREAK
01735 case 26:
01736 /* rule 26 can match eol */
01737 YY_RULE_SETUP
01738 #line 97 "ast_expr2.fl"
01739 {curlycount++; yymore();  }
01740    YY_BREAK
01741 case 27:
01742 YY_RULE_SETUP
01743 #line 98 "ast_expr2.fl"
01744 {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN;}
01745    YY_BREAK
01746 case 28:
01747 /* rule 28 can match eol */
01748 YY_RULE_SETUP
01749 #line 99 "ast_expr2.fl"
01750 {char c = yytext[yyleng-1]; BEGIN(0); unput(c); SET_COLUMNS; SET_STRING; return TOKEN;}
01751    YY_BREAK
01752 case 29:
01753 YY_RULE_SETUP
01754 #line 100 "ast_expr2.fl"
01755 {curlycount = 0; BEGIN(var); yymore();  }
01756    YY_BREAK
01757 case YY_STATE_EOF(trail):
01758 #line 101 "ast_expr2.fl"
01759 {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN; /* actually, if an expr is only a variable ref, this could happen a LOT */}
01760    YY_BREAK
01761 case 30:
01762 YY_RULE_SETUP
01763 #line 103 "ast_expr2.fl"
01764 ECHO;
01765    YY_BREAK
01766 #line 1767 "ast_expr2f.c"
01767 case YY_STATE_EOF(INITIAL):
01768 case YY_STATE_EOF(var):
01769    yyterminate();
01770 
01771    case YY_END_OF_BUFFER:
01772       {
01773       /* Amount of text matched not including the EOB char. */
01774       int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
01775 
01776       /* Undo the effects of YY_DO_BEFORE_ACTION. */
01777       *yy_cp = yyg->yy_hold_char;
01778       YY_RESTORE_YY_MORE_OFFSET
01779 
01780       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
01781          {
01782          /* We're scanning a new file or input source.  It's
01783           * possible that this happened because the user
01784           * just pointed yyin at a new source and called
01785           * ast_yylex().  If so, then we have to assure
01786           * consistency between YY_CURRENT_BUFFER and our
01787           * globals.  Here is the right place to do so, because
01788           * this is the first action (other than possibly a
01789           * back-up) that will match for the new input source.
01790           */
01791          yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
01792          YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
01793          YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
01794          }
01795 
01796       /* Note that here we test for yy_c_buf_p "<=" to the position
01797        * of the first EOB in the buffer, since yy_c_buf_p will
01798        * already have been incremented past the NUL character
01799        * (since all states make transitions on EOB to the
01800        * end-of-buffer state).  Contrast this with the test
01801        * in input().
01802        */
01803       if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
01804          { /* This was really a NUL. */
01805          yy_state_type yy_next_state;
01806 
01807          yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
01808 
01809          yy_current_state = yy_get_previous_state( yyscanner );
01810 
01811          /* Okay, we're now positioned to make the NUL
01812           * transition.  We couldn't have
01813           * yy_get_previous_state() go ahead and do it
01814           * for us because it doesn't know how to deal
01815           * with the possibility of jamming (and we don't
01816           * want to build jamming into it because then it
01817           * will run more slowly).
01818           */
01819 
01820          yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
01821 
01822          yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
01823 
01824          if ( yy_next_state )
01825             {
01826             /* Consume the NUL. */
01827             yy_cp = ++yyg->yy_c_buf_p;
01828             yy_current_state = yy_next_state;
01829             goto yy_match;
01830             }
01831 
01832          else
01833             {
01834             yy_cp = yyg->yy_c_buf_p;
01835             goto yy_find_action;
01836             }
01837          }
01838 
01839       else switch ( yy_get_next_buffer( yyscanner ) )
01840          {
01841          case EOB_ACT_END_OF_FILE:
01842             {
01843             yyg->yy_did_buffer_switch_on_eof = 0;
01844 
01845             if ( ast_yywrap(yyscanner ) )
01846                {
01847                /* Note: because we've taken care in
01848                 * yy_get_next_buffer() to have set up
01849                 * yytext, we can now set up
01850                 * yy_c_buf_p so that if some total
01851                 * hoser (like flex itself) wants to
01852                 * call the scanner after we return the
01853                 * YY_NULL, it'll still work - another
01854                 * YY_NULL will get returned.
01855                 */
01856                yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
01857 
01858                yy_act = YY_STATE_EOF(YY_START);
01859                goto do_action;
01860                }
01861 
01862             else
01863                {
01864                if ( ! yyg->yy_did_buffer_switch_on_eof )
01865                   YY_NEW_FILE;
01866                }
01867             break;
01868             }
01869 
01870          case EOB_ACT_CONTINUE_SCAN:
01871             yyg->yy_c_buf_p =
01872                yyg->yytext_ptr + yy_amount_of_matched_text;
01873 
01874             yy_current_state = yy_get_previous_state( yyscanner );
01875 
01876             yy_cp = yyg->yy_c_buf_p;
01877             yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
01878             goto yy_match;
01879 
01880          case EOB_ACT_LAST_MATCH:
01881             yyg->yy_c_buf_p =
01882             &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
01883 
01884             yy_current_state = yy_get_previous_state( yyscanner );
01885 
01886             yy_cp = yyg->yy_c_buf_p;
01887             yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
01888             goto yy_find_action;
01889          }
01890       break;
01891       }
01892 
01893    default:
01894       YY_FATAL_ERROR(
01895          "fatal flex scanner internal error--no action found" );
01896    } /* end of action switch */
01897       } /* end of scanning one token */
01898 } /* end of ast_yylex */
01899 
01900 /* yy_get_next_buffer - try to read in a new buffer
01901  *
01902  * Returns a code representing an action:
01903  * EOB_ACT_LAST_MATCH -
01904  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
01905  * EOB_ACT_END_OF_FILE - end of file
01906  */
01907 static int yy_get_next_buffer (yyscan_t yyscanner)
01908 {
01909     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
01910    register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
01911    register char *source = yyg->yytext_ptr;
01912    register int number_to_move, i;
01913    int ret_val;
01914 
01915    if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
01916       YY_FATAL_ERROR(
01917       "fatal flex scanner internal error--end of buffer missed" );
01918 
01919    if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
01920       { /* Don't try to fill the buffer, so this is an EOF. */
01921       if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
01922          {
01923          /* We matched a single character, the EOB, so
01924           * treat this as a final EOF.
01925           */
01926          return EOB_ACT_END_OF_FILE;
01927          }
01928 
01929       else
01930          {
01931          /* We matched some text prior to the EOB, first
01932           * process it.
01933           */
01934          return EOB_ACT_LAST_MATCH;
01935          }
01936       }
01937 
01938    /* Try to read more data. */
01939 
01940    /* First move last chars to start of buffer. */
01941    number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
01942 
01943    for ( i = 0; i < number_to_move; ++i )
01944       *(dest++) = *(source++);
01945 
01946    if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
01947       /* don't do the read, it's not guaranteed to return an EOF,
01948        * just force an EOF
01949        */
01950       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
01951 
01952    else
01953       {
01954          size_t num_to_read =
01955          YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
01956 
01957       while ( num_to_read <= 0 )
01958          { /* Not enough room in the buffer - grow it. */
01959 
01960          /* just a shorter name for the current buffer */
01961          YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
01962 
01963          int yy_c_buf_p_offset =
01964             (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
01965 
01966          if ( b->yy_is_our_buffer )
01967             {
01968             int new_size = b->yy_buf_size * 2;
01969 
01970             if ( new_size <= 0 )
01971                b->yy_buf_size += b->yy_buf_size / 8;
01972             else
01973                b->yy_buf_size *= 2;
01974 
01975             b->yy_ch_buf = (char *)
01976                /* Include room in for 2 EOB chars. */
01977                ast_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
01978             }
01979          else
01980             /* Can't grow it, we don't own it. */
01981             b->yy_ch_buf = 0;
01982 
01983          if ( ! b->yy_ch_buf )
01984             YY_FATAL_ERROR(
01985             "fatal error - scanner input buffer overflow" );
01986 
01987          yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
01988 
01989          num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
01990                   number_to_move - 1;
01991 
01992          }
01993 
01994       if ( num_to_read > YY_READ_BUF_SIZE )
01995          num_to_read = YY_READ_BUF_SIZE;
01996 
01997       /* Read in more data. */
01998       YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
01999          yyg->yy_n_chars, num_to_read );
02000 
02001       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02002       }
02003 
02004    if ( yyg->yy_n_chars == 0 )
02005       {
02006       if ( number_to_move == YY_MORE_ADJ )
02007          {
02008          ret_val = EOB_ACT_END_OF_FILE;
02009          ast_yyrestart(yyin  ,yyscanner);
02010          }
02011 
02012       else
02013          {
02014          ret_val = EOB_ACT_LAST_MATCH;
02015          YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
02016             YY_BUFFER_EOF_PENDING;
02017          }
02018       }
02019 
02020    else
02021       ret_val = EOB_ACT_CONTINUE_SCAN;
02022 
02023    yyg->yy_n_chars += number_to_move;
02024    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
02025    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
02026 
02027    yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
02028 
02029    return ret_val;
02030 }
02031 
02032 /* yy_get_previous_state - get the state just before the EOB char was reached */
02033 
02034     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
02035 {
02036    register yy_state_type yy_current_state;
02037    register char *yy_cp;
02038     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02039 
02040    yy_current_state = yyg->yy_start;
02041 
02042    for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
02043       {
02044       if ( *yy_cp )
02045          {
02046          yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
02047          }
02048       else
02049          yy_current_state = yy_NUL_trans[yy_current_state];
02050       if ( yy_accept[yy_current_state] )
02051          {
02052          yyg->yy_last_accepting_state = yy_current_state;
02053          yyg->yy_last_accepting_cpos = yy_cp;
02054          }
02055       }
02056 
02057    return yy_current_state;
02058 }
02059 
02060 /* yy_try_NUL_trans - try to make a transition on the NUL character
02061  *
02062  * synopsis
02063  * next_state = yy_try_NUL_trans( current_state );
02064  */
02065     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
02066 {
02067    register int yy_is_jam;
02068     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02069    register char *yy_cp = yyg->yy_c_buf_p;
02070 
02071    yy_current_state = yy_NUL_trans[yy_current_state];
02072    yy_is_jam = (yy_current_state == 0);
02073 
02074    if ( ! yy_is_jam )
02075       {
02076       if ( yy_accept[yy_current_state] )
02077          {
02078          yyg->yy_last_accepting_state = yy_current_state;
02079          yyg->yy_last_accepting_cpos = yy_cp;
02080          }
02081       }
02082 
02083    return yy_is_jam ? 0 : yy_current_state;
02084 }
02085 
02086     static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
02087 {
02088    register char *yy_cp;
02089     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02090 
02091     yy_cp = yyg->yy_c_buf_p;
02092 
02093    /* undo effects of setting up yytext */
02094    *yy_cp = yyg->yy_hold_char;
02095 
02096    if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02097       { /* need to shift things up to make room */
02098       /* +2 for EOB chars. */
02099       register int number_to_move = yyg->yy_n_chars + 2;
02100       register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
02101                YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
02102       register char *source =
02103             &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
02104 
02105       while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02106          *--dest = *--source;
02107 
02108       yy_cp += (int) (dest - source);
02109       yy_bp += (int) (dest - source);
02110       YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
02111          yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
02112 
02113       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02114          YY_FATAL_ERROR( "flex scanner push-back overflow" );
02115       }
02116 
02117    *--yy_cp = (char) c;
02118 
02119    yyg->yytext_ptr = yy_bp;
02120    yyg->yy_hold_char = *yy_cp;
02121    yyg->yy_c_buf_p = yy_cp;
02122 }
02123 
02124 #ifndef YY_NO_INPUT
02125 #ifdef __cplusplus
02126     static int yyinput (yyscan_t yyscanner)
02127 #else
02128     static int input  (yyscan_t yyscanner)
02129 #endif
02130 
02131 {
02132    int c;
02133     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02134 
02135    *yyg->yy_c_buf_p = yyg->yy_hold_char;
02136 
02137    if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
02138       {
02139       /* yy_c_buf_p now points to the character we want to return.
02140        * If this occurs *before* the EOB characters, then it's a
02141        * valid NUL; if not, then we've hit the end of the buffer.
02142        */
02143       if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
02144          /* This was really a NUL. */
02145          *yyg->yy_c_buf_p = '\0';
02146 
02147       else
02148          { /* need more input */
02149          int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
02150          ++yyg->yy_c_buf_p;
02151 
02152          switch ( yy_get_next_buffer( yyscanner ) )
02153             {
02154             case EOB_ACT_LAST_MATCH:
02155                /* This happens because yy_g_n_b()
02156                 * sees that we've accumulated a
02157                 * token and flags that we need to
02158                 * try matching the token before
02159                 * proceeding.  But for input(),
02160                 * there's no matching to consider.
02161                 * So convert the EOB_ACT_LAST_MATCH
02162                 * to EOB_ACT_END_OF_FILE.
02163                 */
02164 
02165                /* Reset buffer status. */
02166                ast_yyrestart(yyin ,yyscanner);
02167 
02168                /*FALLTHROUGH*/
02169 
02170             case EOB_ACT_END_OF_FILE:
02171                {
02172                if ( ast_yywrap(yyscanner ) )
02173                   return EOF;
02174 
02175                if ( ! yyg->yy_did_buffer_switch_on_eof )
02176                   YY_NEW_FILE;
02177 #ifdef __cplusplus
02178                return yyinput(yyscanner);
02179 #else
02180                return input(yyscanner);
02181 #endif
02182                }
02183 
02184             case EOB_ACT_CONTINUE_SCAN:
02185                yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
02186                break;
02187             }
02188          }
02189       }
02190 
02191    c = *(unsigned char *) yyg->yy_c_buf_p;   /* cast for 8-bit char's */
02192    *yyg->yy_c_buf_p = '\0';   /* preserve yytext */
02193    yyg->yy_hold_char = *++yyg->yy_c_buf_p;
02194 
02195    return c;
02196 }
02197 #endif   /* ifndef YY_NO_INPUT */
02198 
02199 /** Immediately switch to a different input stream.
02200  * @param input_file A readable stream.
02201  * @param yyscanner The scanner object.
02202  * @note This function does not reset the start condition to @c INITIAL .
02203  */
02204     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
02205 {
02206     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02207 
02208    if ( ! YY_CURRENT_BUFFER ){
02209         ast_yyensure_buffer_stack (yyscanner);
02210       YY_CURRENT_BUFFER_LVALUE =
02211             ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
02212    }
02213 
02214    ast_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
02215    ast_yy_load_buffer_state(yyscanner );
02216 }
02217 
02218 /** Switch to a different input buffer.
02219  * @param new_buffer The new input buffer.
02220  * @param yyscanner The scanner object.
02221  */
02222     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
02223 {
02224     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02225 
02226    /* TODO. We should be able to replace this entire function body
02227     * with
02228     *    ast_yypop_buffer_state();
02229     *    ast_yypush_buffer_state(new_buffer);
02230      */
02231    ast_yyensure_buffer_stack (yyscanner);
02232    if ( YY_CURRENT_BUFFER == new_buffer )
02233       return;
02234 
02235    if ( YY_CURRENT_BUFFER )
02236       {
02237       /* Flush out information for old buffer. */
02238       *yyg->yy_c_buf_p = yyg->yy_hold_char;
02239       YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02240       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02241       }
02242 
02243    YY_CURRENT_BUFFER_LVALUE = new_buffer;
02244    ast_yy_load_buffer_state(yyscanner );
02245 
02246    /* We don't actually know whether we did this switch during
02247     * EOF (ast_yywrap()) processing, but the only time this flag
02248     * is looked at is after ast_yywrap() is called, so it's safe
02249     * to go ahead and always set it.
02250     */
02251    yyg->yy_did_buffer_switch_on_eof = 1;
02252 }
02253 
02254 static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
02255 {
02256     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02257    yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02258    yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
02259    yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
02260    yyg->yy_hold_char = *yyg->yy_c_buf_p;
02261 }
02262 
02263 /** Allocate and initialize an input buffer state.
02264  * @param file A readable stream.
02265  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
02266  * @param yyscanner The scanner object.
02267  * @return the allocated buffer state.
02268  */
02269     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
02270 {
02271    YY_BUFFER_STATE b;
02272     
02273    b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02274    if ( ! b )
02275       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
02276 
02277    b->yy_buf_size = size;
02278 
02279    /* yy_ch_buf has to be 2 characters longer than the size given because
02280     * we need to put in 2 end-of-buffer characters.
02281     */
02282    b->yy_ch_buf = (char *) ast_yyalloc(b->yy_buf_size + 2 ,yyscanner );
02283    if ( ! b->yy_ch_buf )
02284       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
02285 
02286    b->yy_is_our_buffer = 1;
02287 
02288    ast_yy_init_buffer(b,file ,yyscanner);
02289 
02290    return b;
02291 }
02292 
02293 /** Destroy the buffer.
02294  * @param b a buffer created with ast_yy_create_buffer()
02295  * @param yyscanner The scanner object.
02296  */
02297     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02298 {
02299     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02300 
02301    if ( ! b )
02302       return;
02303 
02304    if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
02305       YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
02306 
02307    if ( b->yy_is_our_buffer )
02308       ast_yyfree((void *) b->yy_ch_buf ,yyscanner );
02309 
02310    ast_yyfree((void *) b ,yyscanner );
02311 }
02312 
02313 #ifndef __cplusplus
02314 extern int isatty (int );
02315 #endif /* __cplusplus */
02316     
02317 /* Initializes or reinitializes a buffer.
02318  * This function is sometimes called more than once on the same buffer,
02319  * such as during a ast_yyrestart() or at EOF.
02320  */
02321     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
02322 
02323 {
02324    int oerrno = errno;
02325     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02326 
02327    ast_yy_flush_buffer(b ,yyscanner);
02328 
02329    b->yy_input_file = file;
02330    b->yy_fill_buffer = 1;
02331 
02332     /* If b is the current buffer, then ast_yy_init_buffer was _probably_
02333      * called from ast_yyrestart() or through yy_get_next_buffer.
02334      * In that case, we don't want to reset the lineno or column.
02335      */
02336     if (b != YY_CURRENT_BUFFER){
02337         b->yy_bs_lineno = 1;
02338         b->yy_bs_column = 0;
02339     }
02340 
02341         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
02342     
02343    errno = oerrno;
02344 }
02345 
02346 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
02347  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
02348  * @param yyscanner The scanner object.
02349  */
02350     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02351 {
02352     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02353    if ( ! b )
02354       return;
02355 
02356    b->yy_n_chars = 0;
02357 
02358    /* We always need two end-of-buffer characters.  The first causes
02359     * a transition to the end-of-buffer state.  The second causes
02360     * a jam in that state.
02361     */
02362    b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
02363    b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
02364 
02365    b->yy_buf_pos = &b->yy_ch_buf[0];
02366 
02367    b->yy_at_bol = 1;
02368    b->yy_buffer_status = YY_BUFFER_NEW;
02369 
02370    if ( b == YY_CURRENT_BUFFER )
02371       ast_yy_load_buffer_state(yyscanner );
02372 }
02373 
02374 /** Pushes the new state onto the stack. The new state becomes
02375  *  the current state. This function will allocate the stack
02376  *  if necessary.
02377  *  @param new_buffer The new state.
02378  *  @param yyscanner The scanner object.
02379  */
02380 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
02381 {
02382     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02383    if (new_buffer == NULL)
02384       return;
02385 
02386    ast_yyensure_buffer_stack(yyscanner);
02387 
02388    /* This block is copied from ast_yy_switch_to_buffer. */
02389    if ( YY_CURRENT_BUFFER )
02390       {
02391       /* Flush out information for old buffer. */
02392       *yyg->yy_c_buf_p = yyg->yy_hold_char;
02393       YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02394       YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02395       }
02396 
02397    /* Only push if top exists. Otherwise, replace top. */
02398    if (YY_CURRENT_BUFFER)
02399       yyg->yy_buffer_stack_top++;
02400    YY_CURRENT_BUFFER_LVALUE = new_buffer;
02401 
02402    /* copied from ast_yy_switch_to_buffer. */
02403    ast_yy_load_buffer_state(yyscanner );
02404    yyg->yy_did_buffer_switch_on_eof = 1;
02405 }
02406 
02407 /** Removes and deletes the top of the stack, if present.
02408  *  The next element becomes the new top.
02409  *  @param yyscanner The scanner object.
02410  */
02411 void ast_yypop_buffer_state (yyscan_t yyscanner)
02412 {
02413     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02414    if (!YY_CURRENT_BUFFER)
02415       return;
02416 
02417    ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
02418    YY_CURRENT_BUFFER_LVALUE = NULL;
02419    if (yyg->yy_buffer_stack_top > 0)
02420       --yyg->yy_buffer_stack_top;
02421 
02422    if (YY_CURRENT_BUFFER) {
02423       ast_yy_load_buffer_state(yyscanner );
02424       yyg->yy_did_buffer_switch_on_eof = 1;
02425    }
02426 }
02427 
02428 /* Allocates the stack if it does not exist.
02429  *  Guarantees space for at least one push.
02430  */
02431 static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
02432 {
02433    int num_to_alloc;
02434     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02435 
02436    if (!yyg->yy_buffer_stack) {
02437 
02438       /* First allocation is just for 2 elements, since we don't know if this
02439        * scanner will even need a stack. We use 2 instead of 1 to avoid an
02440        * immediate realloc on the next call.
02441          */
02442       num_to_alloc = 1;
02443       yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyalloc
02444                         (num_to_alloc * sizeof(struct yy_buffer_state*)
02445                         , yyscanner);
02446       
02447       memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
02448             
02449       yyg->yy_buffer_stack_max = num_to_alloc;
02450       yyg->yy_buffer_stack_top = 0;
02451       return;
02452    }
02453 
02454    if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
02455 
02456       /* Increase the buffer to prepare for a possible push. */
02457       int grow_size = 8 /* arbitrary grow size */;
02458 
02459       num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
02460       yyg->yy_buffer_stack = (struct yy_buffer_state**)ast_yyrealloc
02461                         (yyg->yy_buffer_stack,
02462                         num_to_alloc * sizeof(struct yy_buffer_state*)
02463                         , yyscanner);
02464 
02465       /* zero only the new slots.*/
02466       memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
02467       yyg->yy_buffer_stack_max = num_to_alloc;
02468    }
02469 }
02470 
02471 /** Setup the input buffer state to scan directly from a user-specified character buffer.
02472  * @param base the character buffer
02473  * @param size the size in bytes of the character buffer
02474  * @param yyscanner The scanner object.
02475  * @return the newly allocated buffer state object. 
02476  */
02477 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
02478 {
02479    YY_BUFFER_STATE b;
02480     
02481    if ( size < 2 ||
02482         base[size-2] != YY_END_OF_BUFFER_CHAR ||
02483         base[size-1] != YY_END_OF_BUFFER_CHAR )
02484       /* They forgot to leave room for the EOB's. */
02485       return 0;
02486 
02487    b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02488    if ( ! b )
02489       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_buffer()" );
02490 
02491    b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
02492    b->yy_buf_pos = b->yy_ch_buf = base;
02493    b->yy_is_our_buffer = 0;
02494    b->yy_input_file = 0;
02495    b->yy_n_chars = b->yy_buf_size;
02496    b->yy_is_interactive = 0;
02497    b->yy_at_bol = 1;
02498    b->yy_fill_buffer = 0;
02499    b->yy_buffer_status = YY_BUFFER_NEW;
02500 
02501    ast_yy_switch_to_buffer(b ,yyscanner );
02502 
02503    return b;
02504 }
02505 
02506 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
02507  * scan from a @e copy of @a str.
02508  * @param str a NUL-terminated string to scan
02509  * @param yyscanner The scanner object.
02510  * @return the newly allocated buffer state object.
02511  * @note If you want to scan bytes that may contain NUL values, then use
02512  *       ast_yy_scan_bytes() instead.
02513  */
02514 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
02515 {
02516     
02517    return ast_yy_scan_bytes(str,strlen(str) ,yyscanner);
02518 }
02519 
02520 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
02521  * scan from a @e copy of @a bytes.
02522  * @param bytes the byte buffer to scan
02523  * @param len the number of bytes in the buffer pointed to by @a bytes.
02524  * @param yyscanner The scanner object.
02525  * @return the newly allocated buffer state object.
02526  */
02527 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * bytes, int  len , yyscan_t yyscanner)
02528 {
02529    YY_BUFFER_STATE b;
02530    char *buf;
02531    yy_size_t n;
02532    int i;
02533     
02534    /* Get memory for full buffer, including space for trailing EOB's. */
02535    n = len + 2;
02536    buf = (char *) ast_yyalloc(n ,yyscanner );
02537    if ( ! buf )
02538       YY_FATAL_ERROR( "out of dynamic memory in ast_yy_scan_bytes()" );
02539 
02540    for ( i = 0; i < len; ++i )
02541       buf[i] = bytes[i];
02542 
02543    buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
02544 
02545    b = ast_yy_scan_buffer(buf,n ,yyscanner);
02546    if ( ! b )
02547       YY_FATAL_ERROR( "bad buffer in ast_yy_scan_bytes()" );
02548 
02549    /* It's okay to grow etc. this buffer, and we should throw it
02550     * away when we're done.
02551     */
02552    b->yy_is_our_buffer = 1;
02553 
02554    return b;
02555 }
02556 
02557 #ifndef YY_EXIT_FAILURE
02558 #define YY_EXIT_FAILURE 2
02559 #endif
02560 
02561 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
02562 {
02563       (void) fprintf( stderr, "%s\n", msg );
02564    exit( YY_EXIT_FAILURE );
02565 }
02566 
02567 /* Redefine yyless() so it works in section 3 code. */
02568 
02569 #undef yyless
02570 #define yyless(n) \
02571    do \
02572       { \
02573       /* Undo effects of setting up yytext. */ \
02574         int yyless_macro_arg = (n); \
02575         YY_LESS_LINENO(yyless_macro_arg);\
02576       yytext[yyleng] = yyg->yy_hold_char; \
02577       yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
02578       yyg->yy_hold_char = *yyg->yy_c_buf_p; \
02579       *yyg->yy_c_buf_p = '\0'; \
02580       yyleng = yyless_macro_arg; \
02581       } \
02582    while ( 0 )
02583 
02584 /* Accessor  methods (get/set functions) to struct members. */
02585 
02586 /** Get the user-defined data for this scanner.
02587  * @param yyscanner The scanner object.
02588  */
02589 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
02590 {
02591     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02592     return yyextra;
02593 }
02594 
02595 /** Get the current line number.
02596  * @param yyscanner The scanner object.
02597  */
02598 int ast_yyget_lineno  (yyscan_t yyscanner)
02599 {
02600     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02601     
02602         if (! YY_CURRENT_BUFFER)
02603             return 0;
02604     
02605     return yylineno;
02606 }
02607 
02608 /** Get the current column number.
02609  * @param yyscanner The scanner object.
02610  */
02611 int ast_yyget_column  (yyscan_t yyscanner)
02612 {
02613     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02614     
02615         if (! YY_CURRENT_BUFFER)
02616             return 0;
02617     
02618     return yycolumn;
02619 }
02620 
02621 /** Get the input stream.
02622  * @param yyscanner The scanner object.
02623  */
02624 FILE *ast_yyget_in  (yyscan_t yyscanner)
02625 {
02626     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02627     return yyin;
02628 }
02629 
02630 /** Get the output stream.
02631  * @param yyscanner The scanner object.
02632  */
02633 FILE *ast_yyget_out  (yyscan_t yyscanner)
02634 {
02635     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02636     return yyout;
02637 }
02638 
02639 /** Get the length of the current token.
02640  * @param yyscanner The scanner object.
02641  */
02642 int ast_yyget_leng  (yyscan_t yyscanner)
02643 {
02644     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02645     return yyleng;
02646 }
02647 
02648 /** Get the current token.
02649  * @param yyscanner The scanner object.
02650  */
02651 
02652 char *ast_yyget_text  (yyscan_t yyscanner)
02653 {
02654     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02655     return yytext;
02656 }
02657 
02658 /** Set the user-defined data. This data is never touched by the scanner.
02659  * @param user_defined The data to be associated with this scanner.
02660  * @param yyscanner The scanner object.
02661  */
02662 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
02663 {
02664     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02665     yyextra = user_defined ;
02666 }
02667 
02668 /** Set the current line number.
02669  * @param line_number
02670  * @param yyscanner The scanner object.
02671  */
02672 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
02673 {
02674     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02675 
02676         /* lineno is only valid if an input buffer exists. */
02677         if (! YY_CURRENT_BUFFER )
02678            yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
02679     
02680     yylineno = line_number;
02681 }
02682 
02683 /** Set the current column.
02684  * @param line_number
02685  * @param yyscanner The scanner object.
02686  */
02687 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
02688 {
02689     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02690 
02691         /* column is only valid if an input buffer exists. */
02692         if (! YY_CURRENT_BUFFER )
02693            yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
02694     
02695     yycolumn = column_no;
02696 }
02697 
02698 /** Set the input stream. This does not discard the current
02699  * input buffer.
02700  * @param in_str A readable stream.
02701  * @param yyscanner The scanner object.
02702  * @see ast_yy_switch_to_buffer
02703  */
02704 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
02705 {
02706     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02707     yyin = in_str ;
02708 }
02709 
02710 void ast_yyset_out (FILE *  out_str , yyscan_t yyscanner)
02711 {
02712     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02713     yyout = out_str ;
02714 }
02715 
02716 int ast_yyget_debug  (yyscan_t yyscanner)
02717 {
02718     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02719     return yy_flex_debug;
02720 }
02721 
02722 void ast_yyset_debug (int  bdebug , yyscan_t yyscanner)
02723 {
02724     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02725     yy_flex_debug = bdebug ;
02726 }
02727 
02728 /* Accessor methods for yylval and yylloc */
02729 
02730 YYSTYPE * ast_yyget_lval  (yyscan_t yyscanner)
02731 {
02732     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02733     return yylval;
02734 }
02735 
02736 void ast_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
02737 {
02738     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02739     yylval = yylval_param;
02740 }
02741 
02742 YYLTYPE *ast_yyget_lloc  (yyscan_t yyscanner)
02743 {
02744     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02745     return yylloc;
02746 }
02747     
02748 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
02749 {
02750     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02751     yylloc = yylloc_param;
02752 }
02753     
02754 static int yy_init_globals (yyscan_t yyscanner)
02755 {
02756     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02757     /* Initialization is the same as for the non-reentrant scanner.
02758        This function is called once per scanner lifetime. */
02759 
02760     yyg->yy_buffer_stack = 0;
02761     yyg->yy_buffer_stack_top = 0;
02762     yyg->yy_buffer_stack_max = 0;
02763     yyg->yy_c_buf_p = (char *) 0;
02764     yyg->yy_init = 1;
02765     yyg->yy_start = 0;
02766     yyg->yy_start_stack_ptr = 0;
02767     yyg->yy_start_stack_depth = 0;
02768     yyg->yy_start_stack = (int *) 0;
02769 
02770 /* Defined in main.c */
02771 #ifdef YY_STDINIT
02772     yyin = stdin;
02773     yyout = stdout;
02774 #else
02775     yyin = (FILE *) 0;
02776     yyout = (FILE *) 0;
02777 #endif
02778 
02779     /* For future reference: Set errno on error, since we are called by
02780      * ast_yylex_init()
02781      */
02782     return 0;
02783 }
02784 
02785 /* User-visible API */
02786 
02787 /* ast_yylex_init is special because it creates the scanner itself, so it is
02788  * the ONLY reentrant function that doesn't take the scanner as the last argument.
02789  * That's why we explicitly handle the declaration, instead of using our macros.
02790  */
02791 
02792 int ast_yylex_init(yyscan_t* ptr_yy_globals)
02793 
02794 {
02795     if (ptr_yy_globals == NULL){
02796         errno = EINVAL;
02797         return 1;
02798     }
02799 
02800     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), NULL );
02801 
02802     if (*ptr_yy_globals == NULL){
02803         errno = ENOMEM;
02804         return 1;
02805     }
02806 
02807     memset(*ptr_yy_globals,0,sizeof(struct yyguts_t));
02808 
02809     return yy_init_globals ( *ptr_yy_globals );
02810 }
02811 
02812 /* ast_yylex_destroy is for both reentrant and non-reentrant scanners. */
02813 int ast_yylex_destroy  (yyscan_t yyscanner)
02814 {
02815     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02816 
02817     /* Pop the buffer stack, destroying each element. */
02818    while(YY_CURRENT_BUFFER){
02819       ast_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
02820       YY_CURRENT_BUFFER_LVALUE = NULL;
02821       ast_yypop_buffer_state(yyscanner);
02822    }
02823 
02824    /* Destroy the stack itself. */
02825    ast_yyfree(yyg->yy_buffer_stack ,yyscanner);
02826    yyg->yy_buffer_stack = NULL;
02827 
02828     /* Destroy the start condition stack. */
02829         ast_yyfree(yyg->yy_start_stack ,yyscanner );
02830         yyg->yy_start_stack = NULL;
02831 
02832     /* Destroy the main struct (reentrant only). */
02833     ast_yyfree ( yyscanner , yyscanner );
02834     return 0;
02835 }
02836 
02837 /*
02838  * Internal utility routines.
02839  */
02840 
02841 #ifndef yytext_ptr
02842 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
02843 {
02844    register int i;
02845     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02846    for ( i = 0; i < n; ++i )
02847       s1[i] = s2[i];
02848 }
02849 #endif
02850 
02851 #ifdef YY_NEED_STRLEN
02852 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
02853 {
02854    register int n;
02855     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02856    for ( n = 0; s[n]; ++n )
02857       ;
02858 
02859    return n;
02860 }
02861 #endif
02862 
02863 void *ast_yyalloc (yy_size_t  size , yyscan_t yyscanner)
02864 {
02865    return (void *) malloc( size );
02866 }
02867 
02868 void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
02869 {
02870    /* The cast to (char *) in the following accommodates both
02871     * implementations that use char* generic pointers, and those
02872     * that use void* generic pointers.  It works with the latter
02873     * because both ANSI C and C++ allow castless assignment from
02874     * any pointer type to void*, and deal with argument conversions
02875     * as though doing an assignment.
02876     */
02877    return (void *) realloc( (char *) ptr, size );
02878 }
02879 
02880 void ast_yyfree (void * ptr , yyscan_t yyscanner)
02881 {
02882    free( (char *) ptr );   /* see ast_yyrealloc() for (char *) cast */
02883 }
02884 
02885 #define YYTABLES_NAME "yytables"
02886 
02887 #undef YY_NEW_FILE
02888 #undef YY_FLUSH_BUFFER
02889 #undef yy_set_bol
02890 #undef yy_new_buffer
02891 #undef yy_set_interactive
02892 #undef yytext_ptr
02893 #undef YY_DO_BEFORE_ACTION
02894 
02895 #ifdef YY_DECL_IS_OURS
02896 #undef YY_DECL_IS_OURS
02897 #undef YY_DECL
02898 #endif
02899 #line 103 "ast_expr2.fl"
02900 
02901 
02902 
02903 /* I'm putting the interface routine to the whole parse here in the flexer input file
02904    mainly because of all the flexer initialization that has to be done. Shouldn't matter
02905    where it is, as long as it's somewhere. I didn't want to define a prototype for the
02906    ast_yy_scan_string in the .y file, because then, I'd have to define YY_BUFFER_STATE there...
02907    UGH! that would be inappropriate. */
02908 
02909 int ast_yyparse(void *); /* need to/should define this prototype for the call to yyparse */
02910 int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
02911 
02912 int ast_expr(char *expr, char *buf, int length)
02913 {
02914    struct parse_io io;
02915    int return_value = 0;
02916    
02917    memset(&io, 0, sizeof(io));
02918    io.string = expr;  /* to pass to the error routine */
02919    
02920    ast_yylex_init(&io.scanner);
02921    
02922    ast_yy_scan_string(expr, io.scanner);
02923    
02924    ast_yyparse ((void *) &io);
02925 
02926    ast_yylex_destroy(io.scanner);
02927 
02928    if (!io.val) {
02929       if (length > 1) {
02930          strcpy(buf, "0");
02931          return_value = 1;
02932       }
02933    } else {
02934       if (io.val->type == AST_EXPR_integer) {
02935          int res_length;
02936 
02937          res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
02938          return_value = (res_length <= length) ? res_length : length;
02939       } else {
02940 #ifdef STANDALONE
02941          strncpy(buf, io.val->u.s, length - 1);
02942 #else /* !STANDALONE */
02943          ast_copy_string(buf, io.val->u.s, length);
02944 #endif /* STANDALONE */
02945          return_value = strlen(buf);
02946          free(io.val->u.s);
02947       }
02948       free(io.val);
02949    }
02950    return return_value;
02951 }
02952 
02953 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )
02954 {  
02955    struct yyguts_t * yyg = (struct yyguts_t*)(parseio->scanner);
02956    char spacebuf[8000]; /* best safe than sorry */
02957    char spacebuf2[8000]; /* best safe than sorry */
02958    int i=0;
02959    spacebuf[0] = 0;
02960    
02961    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,
02962                                        which is the same thing as... get this:
02963                                        yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column
02964                                        I was tempted to just use yy_buf_pos in the STATE, but..., well:
02965                                           a. the yy_buf_pos is the current position in the buffer, which
02966                                              may not relate to the entire string/buffer because of the
02967                                              buffering.
02968                                           b. but, analysis of the situation is that when you use the
02969                                              ast_yy_scan_string func, it creates a single buffer the size of
02970                                              string, so the two would be the same... 
02971                                        so, in the end, the yycolumn macro is available, shorter, therefore easier. */
02972    spacebuf2[i++]='^';
02973    spacebuf2[i]= 0;
02974 
02975 #ifdef STANDALONE3
02976    /* easier to read in the standalone version */
02977    printf("ast_yyerror(): syntax error: %s; Input:\n%s\n%s\n",  
02978          s, parseio->string,spacebuf2);
02979 #else
02980    ast_log(LOG_WARNING,"ast_yyerror(): syntax error: %s; Input:\n%s\n%s\n",  
02981          s, parseio->string,spacebuf2);
02982 #endif
02983 #ifndef STANDALONE
02984    ast_log(LOG_WARNING,"If you have questions, please refer to doc/README.variables in the asterisk source.\n");
02985 #endif
02986    return(0);
02987 }
02988 

Generated on Mon Mar 20 08:25:38 2006 for Asterisk - the Open Source PBX by  doxygen 1.3.9.1