Skip to content
Snippets Groups Projects
ast_expr2f.c 104 KiB
Newer Older
  • Learn to ignore specific revisions
  •       -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
          -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
          -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
        },
    
        {
            7,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
          -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
          -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
    
    
          -39,  -39,  -39,  -39,  -39,   39,   39,  -39,  -39,   39,
          -39,  -39,  -39,  -39,   39,  -39,   39,  -39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,  -39,   39,
          -39,  -39,  -39,  -39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,  -39,   39,  -39,   39,   39,  -39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,  -39,  -39,  -39,  -39,  -39
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    
        },
    
        {
            7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
    
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
          -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
        },
    
        {
            7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
    
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
    
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
          -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
        },
    
        {
            7,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
          -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
          -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
    
          -42,  -42,  -42,  -42,  -42,   39,   39,  -42,  -42,   39,
    
          -42,  -42,  -42,  -42,   39,  -42,   39,  -42,   42,   42,
           42,   42,   42,   42,   42,   42,   42,   42,  -42,   39,
          -42,  -42,  -42,  -42,   39,   39,   39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,  -42,   39,  -42,   39,   39,  -42,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
           39,   39,   39,  -42,  -42,  -42,  -42,  -42
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
        },
    
        {
            7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
    
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
    
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
          -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
        },
    
        {
            7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
    
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
          -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44
        },
    
        {
    
            7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
    
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
          -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
        },
    
        {
            7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
    
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
    
          -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46
        },
    
        {
            7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
    
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
          -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47
        },
    
        {
    
            7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
    
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
          -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
        },
    
        {
    
            7,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
    
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   50,   49,   51,   49,   49
    
        },
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    
    
        {
            7,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
    
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
          -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50
        },
    
        {
            7,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
    
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
          -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51
        },
    
        {
            7,   52,   52,   52,   52,   52,   52,   52,   52,  -52,
          -52,   52,   52,  -52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
           52,   52,  -52,  -52,   52,   52,  -52,  -52,  -52,   52,
    
          -52,  -52,  -52,  -52,   52,  -52,   52,  -52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,  -52,   52,
          -52,  -52,  -52,  -52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
           52,   52,   52,   52,  -52,   52,   52,   52
        },
    
        {
            7,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
    
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
    
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
          -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
        },
    
    
    
    static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
    static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
    static int yy_get_next_buffer (yyscan_t yyscanner );
    static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
    
    /* Done after the current pattern has been matched and before the
     * corresponding action - sets up yytext.
     */
    #define YY_DO_BEFORE_ACTION \
    	yyg->yytext_ptr = yy_bp; \
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    	yyg->yytext_ptr -= yyg->yy_more_len; \
    	yyleng = (size_t) (yy_cp - yyg->yytext_ptr); \
    
    	yyg->yy_hold_char = *yy_cp; \
    	*yy_cp = '\0'; \
    	yyg->yy_c_buf_p = yy_cp;
    
    
    #define YY_NUM_RULES 35
    #define YY_END_OF_BUFFER 36
    
    /* This struct is not used in this scanner,
       but its presence is necessary. */
    struct yy_trans_info
    	{
    	flex_int32_t yy_verify;
    	flex_int32_t yy_nxt;
    	};
    
    static yyconst flex_int16_t yy_accept[54] =
    
            0,    0,    0,    0,   32,   32,   36,   35,   25,   27,
           19,   35,   29,   29,   17,    2,   22,   23,   15,   13,
           14,   16,   28,   20,    9,    3,    8,   18,    1,   35,
           31,   30,   32,   33,   33,   12,    0,   26,   29,   24,
            5,   28,   21,   11,    6,    7,   10,    4,    0,   31,
           30,   32,   34
    
    static yyconst yy_state_type yy_NUL_trans[54] =
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
            8,    8,   30,   30,   33,   33,    0,    0,    0,    0,
    
            0,   37,    0,    0,    0,    0,    0,    0,    0,    0,
            0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
            0,    0,   52,    0,    0,    0,   37,    0,    0,    0,
            0,    0,    0,    0,    0,    0,    0,    0,   49,    0,
            0,   52,    0
    
        } ;
    
    /* The intent behind this definition is that it'll catch
     * any uses of REJECT which flex missed.
     */
    #define REJECT reject_used_but_not_detected
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    #define yymore() (yyg->yy_more_flag = 1)
    #define YY_MORE_ADJ yyg->yy_more_len
    
    #define YY_RESTORE_YY_MORE_OFFSET
    #line 1 "ast_expr2.fl"
    #line 2 "ast_expr2.fl"
    
    /*
     * Asterisk -- An open source telephony toolkit.
     *
     * Copyright (C) 1999 - 2006, Digium, Inc.
     *
     * Mark Spencer <markster@digium.com>
     *
     * See http://www.asterisk.org for more information about
     * the Asterisk project. Please do not directly contact
     * any of the maintainers of this project for assistance;
     * the project provides a web site, mailing lists and IRC
     * channels for your use.
     *
     * This program is free software, distributed under the terms of
     * the GNU General Public License Version 2. See the LICENSE file
     * at the top of the source tree.
     */
    
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    /*! \file
     *
    
     * \brief Dialplan Expression Lexical Scanner
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
     */
    
    
    #include <sys/types.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <locale.h>
    #include <ctype.h>
    
    Kevin P. Fleming's avatar
    Kevin P. Fleming committed
    #if !defined(SOLARIS) && !defined(__CYGWIN__)
    
    #endif
    #include <errno.h>
    #include <regex.h>
    #include <limits.h>
    
    
    #include "asterisk.h"
    
    ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
    
    #include "asterisk/ast_expr.h"
    #include "asterisk/logger.h"
    #include "asterisk/strings.h"
    
    
    enum valtype {
    	AST_EXPR_integer, AST_EXPR_numeric_string, AST_EXPR_string
    } ;
    
    struct val {
    	enum valtype type;
    	union {
    		char *s;
    		quad_t i;
    	} u;
    } ;
    
    #include "ast_expr2.h" /* the o/p of the bison on ast_expr2.y */
    
    #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
    #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);
    #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);
    
    struct parse_io
    {
    	char *string;
    	struct val *val;
    	yyscan_t scanner;
    };
     
    
    void ast_yyset_column(int column_no, yyscan_t yyscanner);
    int ast_yyget_column(yyscan_t yyscanner);
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    static int curlycount = 0;
    
    static char *expr2_token_subst(char *mess);
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    #define var 1
    #define trail 2
    
    
    /* Special case for "unistd.h", since it is non-ANSI. We include it way
     * down here because we want the user's section 1 to have been scanned first.
     * The user has a chance to override it with an option.
     */
    #include <unistd.h>
    
    #ifndef YY_EXTRA_TYPE
    #define YY_EXTRA_TYPE void *
    #endif
    
    /* Holds the entire state of the reentrant scanner. */
    struct yyguts_t
        {
    
        /* User-defined. Not touched by flex. */
        YY_EXTRA_TYPE yyextra_r;
    
        /* The rest are the same as the globals declared in the non-reentrant scanner. */
        FILE *yyin_r, *yyout_r;
        size_t yy_buffer_stack_top; /**< index of top of stack. */
        size_t yy_buffer_stack_max; /**< capacity of stack. */
        YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
        char yy_hold_char;
        int yy_n_chars;
        int yyleng_r;
        char *yy_c_buf_p;
        int yy_init;
        int yy_start;
        int yy_did_buffer_switch_on_eof;
        int yy_start_stack_ptr;
        int yy_start_stack_depth;
        int *yy_start_stack;
        yy_state_type yy_last_accepting_state;
        char* yy_last_accepting_cpos;
    
        int yylineno_r;
        int yy_flex_debug_r;
    
        char *yytext_r;
        int yy_more_flag;
        int yy_more_len;
    
        YYSTYPE * yylval_r;
    
        YYLTYPE * yylloc_r;
    
        }; /* end struct yyguts_t */
    
        /* This must go here because YYSTYPE and YYLTYPE are included
         * from bison output in section 1.*/
        #    define yylval yyg->yylval_r
        
        #    define yylloc yyg->yylloc_r
        
    /* Accessor methods to globals.
       These are made visible to non-reentrant scanners for convenience. */
    
    int ast_yylex_destroy (yyscan_t yyscanner );
    
    int ast_yyget_debug (yyscan_t yyscanner );
    
    void ast_yyset_debug (int debug_flag ,yyscan_t yyscanner );
    
    YY_EXTRA_TYPE ast_yyget_extra (yyscan_t yyscanner );
    
    void ast_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
    
    FILE *ast_yyget_in (yyscan_t yyscanner );
    
    void ast_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
    
    FILE *ast_yyget_out (yyscan_t yyscanner );
    
    void ast_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
    
    int ast_yyget_leng (yyscan_t yyscanner );
    
    char *ast_yyget_text (yyscan_t yyscanner );
    
    int ast_yyget_lineno (yyscan_t yyscanner );
    
    void ast_yyset_lineno (int line_number ,yyscan_t yyscanner );
    
    YYSTYPE * ast_yyget_lval (yyscan_t yyscanner );
    
    void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
    
           YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
        
            void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
        
    /* Macros after this point can all be overridden by user definitions in
     * section 1.
     */
    
    #ifndef YY_SKIP_YYWRAP
    #ifdef __cplusplus
    extern "C" int ast_yywrap (yyscan_t yyscanner );
    #else
    extern int ast_yywrap (yyscan_t yyscanner );
    #endif
    #endif
    
        static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
        
    #ifndef yytext_ptr
    static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
    #endif
    
    #ifdef YY_NEED_STRLEN
    static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
    #endif
    
    #ifndef YY_NO_INPUT
    
    #ifdef __cplusplus
    static int yyinput (yyscan_t yyscanner );
    #else
    static int input (yyscan_t yyscanner );
    #endif
    
    #endif
    
    /* Amount of stuff to slurp up with each read. */
    #ifndef YY_READ_BUF_SIZE
    #define YY_READ_BUF_SIZE 8192
    #endif
    
    /* Copy whatever the last rule matched to the standard output. */
    #ifndef ECHO
    /* This used to be an fputs(), but since the string might contain NUL's,
     * we now use fwrite().
     */
    #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
    #endif
    
    /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
     * is returned in "result".
     */
    #ifndef YY_INPUT
    #define YY_INPUT(buf,result,max_size) \
    
    	errno=0; \
    	while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
    	{ \
    		if( errno != EINTR) \
    
    		{ \
    			YY_FATAL_ERROR( "input in flex scanner failed" ); \
    
    \
    
    #endif
    
    /* No semi-colon after return; correct usage is to write "yyterminate();" -
     * we don't want an extra ';' after the "return" because that will cause
     * some compilers to complain about unreachable statements.
     */
    #ifndef yyterminate
    #define yyterminate() return YY_NULL
    #endif
    
    /* Number of entries by which start-condition stack grows. */
    #ifndef YY_START_STACK_INCR
    #define YY_START_STACK_INCR 25
    #endif
    
    /* Report a fatal error. */
    #ifndef YY_FATAL_ERROR
    #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
    #endif
    
    /* end tables serialization structures and prototypes */
    
    /* Default declaration of generated scanner - a define so the user can
     * easily add parameters.
     */
    #ifndef YY_DECL
    #define YY_DECL_IS_OURS 1
    
    extern int ast_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
    
    #define YY_DECL int ast_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
    #endif /* !YY_DECL */
    
    /* Code executed at the beginning of each rule, after yytext and yyleng
     * have been set up.
     */
    #ifndef YY_USER_ACTION
    #define YY_USER_ACTION
    #endif
    
    /* Code executed at the end of each rule. */
    #ifndef YY_BREAK
    #define YY_BREAK break;
    #endif
    
    #define YY_RULE_SETUP \
    	YY_USER_ACTION
    
    /** The main scanner function which does all the work.
     */
    YY_DECL
    {
    	register yy_state_type yy_current_state;
    	register char *yy_cp, *yy_bp;
    	register int yy_act;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    
    
        yylval = yylval_param;
    
        yylloc = yylloc_param;
    
    	if ( yyg->yy_init )
    		{
    		yyg->yy_init = 0;
    
    #ifdef YY_USER_INIT
    		YY_USER_INIT;
    #endif
    
    		if ( ! yyg->yy_start )
    			yyg->yy_start = 1;	/* first start state */
    
    		if ( ! yyin )
    			yyin = stdin;
    
    		if ( ! yyout )
    			yyout = stdout;
    
    		if ( ! YY_CURRENT_BUFFER ) {
    			ast_yyensure_buffer_stack (yyscanner);
    			YY_CURRENT_BUFFER_LVALUE =
    				ast_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
    		}
    
    		ast_yy_load_buffer_state(yyscanner );
    		}
    
    	while ( 1 )		/* loops until end-of-file is reached */
    		{
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    		yyg->yy_more_len = 0;
    		if ( yyg->yy_more_flag )
    			{
    			yyg->yy_more_len = yyg->yy_c_buf_p - yyg->yytext_ptr;
    			yyg->yy_more_flag = 0;
    			}
    
    		yy_cp = yyg->yy_c_buf_p;
    
    		/* Support of yytext. */
    		*yy_cp = yyg->yy_hold_char;
    
    		/* yy_bp points to the position in yy_ch_buf of the start of
    		 * the current run.
    		 */
    		yy_bp = yy_cp;
    
    		yy_current_state = yyg->yy_start;
    yy_match:
    
    		while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
    
    			{
    			if ( yy_accept[yy_current_state] )
    				{
    				yyg->yy_last_accepting_state = yy_current_state;
    				yyg->yy_last_accepting_cpos = yy_cp;
    				}
    
    
    		yy_current_state = -yy_current_state;
    
    
    yy_find_action:
    		yy_act = yy_accept[yy_current_state];
    
    		YY_DO_BEFORE_ACTION;
    
    do_action:	/* This label is used only to access EOF actions. */
    
    		switch ( yy_act )
    	{ /* beginning of action switch */
    			case 0: /* must back up */
    			/* undo the effects of YY_DO_BEFORE_ACTION */
    			*yy_cp = yyg->yy_hold_char;
    
    			yy_cp = yyg->yy_last_accepting_cpos + 1;
    
    			yy_current_state = yyg->yy_last_accepting_state;
    			goto yy_find_action;
    
    case 1:
    YY_RULE_SETUP
    
    { SET_COLUMNS; SET_STRING; return TOK_OR;}
    	YY_BREAK
    case 2:
    YY_RULE_SETUP
    
    { SET_COLUMNS; SET_STRING; return TOK_AND;}
    	YY_BREAK
    case 3:
    YY_RULE_SETUP
    
    { SET_COLUMNS; SET_STRING; return TOK_EQ;}
    	YY_BREAK
    case 4:
    YY_RULE_SETUP
    
    #line 88 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_OR;}
    
    #line 89 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_AND;}
    
    #line 90 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_EQ;}
    
    #line 91 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
    
    #line 92 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_GT;}
    
    #line 93 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_LT;}
    
    #line 94 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_GE;}
    
    #line 95 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_LE;}
    
    #line 96 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_NE;}
    
    #line 97 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
    
    #line 98 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
    
    #line 99 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_MULT;}
    
    #line 100 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_DIV;}
    
    #line 101 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_MOD;}
    
    #line 102 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_COND;}
    
    #line 103 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
    	YY_BREAK
    case 20:
    YY_RULE_SETUP
    #line 104 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_COLON;}
    	YY_BREAK
    case 21:
    YY_RULE_SETUP
    #line 105 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
    	YY_BREAK
    case 22:
    YY_RULE_SETUP
    #line 106 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_LP;}
    	YY_BREAK
    case 23:
    YY_RULE_SETUP
    #line 107 "ast_expr2.fl"
    { SET_COLUMNS; SET_STRING; return TOK_RP;}
    	YY_BREAK
    case 24:
    YY_RULE_SETUP
    #line 108 "ast_expr2.fl"
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {/* gather the contents of ${} expressions, with trailing stuff, into a single TOKEN. They are much more complex now than they used to be */
                           curlycount = 0; BEGIN(var); yymore();}
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {}
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {SET_COLUMNS; SET_STRING; return TOKEN;}
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {/* what to do with eol */}
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    YY_RULE_SETUP
    
    {   SET_COLUMNS;  /* the original behavior of the expression parser was to bring in numbers as a numeric string */
    				SET_NUMERIC_STRING;
    				return TOKEN;}
    	YY_BREAK
    
    {SET_COLUMNS; SET_STRING; return TOKEN;}
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {curlycount--; if(curlycount < 0){ BEGIN(trail);  yymore();} else {  yymore();}}
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    YY_RULE_SETUP
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {curlycount++; yymore();  }
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    YY_RULE_SETUP
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN;}
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    YY_RULE_SETUP
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {char c = yytext[yyleng-1]; BEGIN(0); unput(c); SET_COLUMNS; SET_STRING; return TOKEN;}
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    YY_RULE_SETUP
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    {curlycount = 0; BEGIN(var); yymore();  }
    	YY_BREAK
    case YY_STATE_EOF(trail):
    
    #line 126 "ast_expr2.fl"
    {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN; /*actually, if an expr is only a variable ref, this could happen a LOT */}
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    	YY_BREAK
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    YY_RULE_SETUP
    
    Tilghman Lesher's avatar
     
    Tilghman Lesher committed
    case YY_STATE_EOF(var):
    
    	yyterminate();
    
    	case YY_END_OF_BUFFER:
    		{
    		/* Amount of text matched not including the EOB char. */
    		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
    
    		/* Undo the effects of YY_DO_BEFORE_ACTION. */
    		*yy_cp = yyg->yy_hold_char;
    		YY_RESTORE_YY_MORE_OFFSET
    
    		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
    			{
    			/* We're scanning a new file or input source.  It's
    			 * possible that this happened because the user
    			 * just pointed yyin at a new source and called
    			 * ast_yylex().  If so, then we have to assure
    			 * consistency between YY_CURRENT_BUFFER and our
    			 * globals.  Here is the right place to do so, because
    			 * this is the first action (other than possibly a
    			 * back-up) that will match for the new input source.
    			 */
    			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
    			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
    			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
    			}
    
    		/* Note that here we test for yy_c_buf_p "<=" to the position
    		 * of the first EOB in the buffer, since yy_c_buf_p will
    		 * already have been incremented past the NUL character
    		 * (since all states make transitions on EOB to the
    		 * end-of-buffer state).  Contrast this with the test
    		 * in input().
    		 */
    		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
    			{ /* This was really a NUL. */
    			yy_state_type yy_next_state;
    
    			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
    
    			yy_current_state = yy_get_previous_state( yyscanner );
    
    			/* Okay, we're now positioned to make the NUL
    			 * transition.  We couldn't have
    			 * yy_get_previous_state() go ahead and do it
    			 * for us because it doesn't know how to deal
    			 * with the possibility of jamming (and we don't
    			 * want to build jamming into it because then it
    			 * will run more slowly).
    			 */
    
    			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
    
    			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    
    			if ( yy_next_state )
    				{
    				/* Consume the NUL. */
    				yy_cp = ++yyg->yy_c_buf_p;
    				yy_current_state = yy_next_state;
    				goto yy_match;
    				}
    
    			else
    				{
    
    				yy_cp = yyg->yy_c_buf_p;
    
    				goto yy_find_action;
    				}
    			}
    
    		else switch ( yy_get_next_buffer( yyscanner ) )
    			{
    			case EOB_ACT_END_OF_FILE:
    				{
    				yyg->yy_did_buffer_switch_on_eof = 0;
    
    				if ( ast_yywrap(yyscanner ) )
    					{
    					/* Note: because we've taken care in
    					 * yy_get_next_buffer() to have set up
    					 * yytext, we can now set up
    					 * yy_c_buf_p so that if some total
    					 * hoser (like flex itself) wants to
    					 * call the scanner after we return the
    					 * YY_NULL, it'll still work - another
    					 * YY_NULL will get returned.
    					 */
    					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
    
    					yy_act = YY_STATE_EOF(YY_START);
    					goto do_action;
    					}
    
    				else
    					{
    					if ( ! yyg->yy_did_buffer_switch_on_eof )
    						YY_NEW_FILE;
    					}
    				break;
    				}
    
    			case EOB_ACT_CONTINUE_SCAN:
    				yyg->yy_c_buf_p =
    					yyg->yytext_ptr + yy_amount_of_matched_text;
    
    				yy_current_state = yy_get_previous_state( yyscanner );
    
    				yy_cp = yyg->yy_c_buf_p;
    				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    				goto yy_match;
    
    			case EOB_ACT_LAST_MATCH: