From: Francis Dupont Date: Fri, 14 Jun 2019 18:42:31 +0000 (+0000) Subject: [#150,!385] regen bison X-Git-Tag: Kea-1.6.0~41^2~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4aaa3db0e1250050d4772a156cbb41e324d41b7e;p=thirdparty%2Fkea.git [#150,!385] regen bison --- diff --git a/src/lib/eval/lexer.cc b/src/lib/eval/lexer.cc index d73a278ef6..898fb5f304 100644 --- a/src/lib/eval/lexer.cc +++ b/src/lib/eval/lexer.cc @@ -1,27 +1,22 @@ -#line 1 "lexer.cc" +#line 2 "lexer.cc" -#line 3 "lexer.cc" +#line 4 "lexer.cc" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ /* %not-for-header */ + /* %if-c-only */ /* %if-not-reentrant */ #define yy_create_buffer eval_create_buffer #define yy_delete_buffer eval_delete_buffer -#define yy_scan_buffer eval_scan_buffer -#define yy_scan_string eval_scan_string -#define yy_scan_bytes eval_scan_bytes +#define yy_flex_debug eval_flex_debug #define yy_init_buffer eval_init_buffer #define yy_flush_buffer eval_flush_buffer #define yy_load_buffer_state eval_load_buffer_state #define yy_switch_to_buffer eval_switch_to_buffer -#define yypush_buffer_state evalpush_buffer_state -#define yypop_buffer_state evalpop_buffer_state -#define yyensure_buffer_stack evalensure_buffer_stack -#define yy_flex_debug eval_flex_debug #define yyin evalin #define yyleng evalleng #define yylex evallex @@ -40,8 +35,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -50,244 +45,11 @@ /* %endif */ /* %if-c-only */ -#ifdef yy_create_buffer -#define eval_create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer eval_create_buffer -#endif - -#ifdef yy_delete_buffer -#define eval_delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer eval_delete_buffer -#endif - -#ifdef yy_scan_buffer -#define eval_scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer eval_scan_buffer -#endif - -#ifdef yy_scan_string -#define eval_scan_string_ALREADY_DEFINED -#else -#define yy_scan_string eval_scan_string -#endif - -#ifdef yy_scan_bytes -#define eval_scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes eval_scan_bytes -#endif - -#ifdef yy_init_buffer -#define eval_init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer eval_init_buffer -#endif - -#ifdef yy_flush_buffer -#define eval_flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer eval_flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define eval_load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state eval_load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define eval_switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer eval_switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define evalpush_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state evalpush_buffer_state -#endif - -#ifdef yypop_buffer_state -#define evalpop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state evalpop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define evalensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack evalensure_buffer_stack -#endif - -#ifdef yylex -#define evallex_ALREADY_DEFINED -#else -#define yylex evallex -#endif - -#ifdef yyrestart -#define evalrestart_ALREADY_DEFINED -#else -#define yyrestart evalrestart -#endif - -#ifdef yylex_init -#define evallex_init_ALREADY_DEFINED -#else -#define yylex_init evallex_init -#endif - -#ifdef yylex_init_extra -#define evallex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra evallex_init_extra -#endif - -#ifdef yylex_destroy -#define evallex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy evallex_destroy -#endif - -#ifdef yyget_debug -#define evalget_debug_ALREADY_DEFINED -#else -#define yyget_debug evalget_debug -#endif - -#ifdef yyset_debug -#define evalset_debug_ALREADY_DEFINED -#else -#define yyset_debug evalset_debug -#endif - -#ifdef yyget_extra -#define evalget_extra_ALREADY_DEFINED -#else -#define yyget_extra evalget_extra -#endif - -#ifdef yyset_extra -#define evalset_extra_ALREADY_DEFINED -#else -#define yyset_extra evalset_extra -#endif - -#ifdef yyget_in -#define evalget_in_ALREADY_DEFINED -#else -#define yyget_in evalget_in -#endif - -#ifdef yyset_in -#define evalset_in_ALREADY_DEFINED -#else -#define yyset_in evalset_in -#endif - -#ifdef yyget_out -#define evalget_out_ALREADY_DEFINED -#else -#define yyget_out evalget_out -#endif - -#ifdef yyset_out -#define evalset_out_ALREADY_DEFINED -#else -#define yyset_out evalset_out -#endif - -#ifdef yyget_leng -#define evalget_leng_ALREADY_DEFINED -#else -#define yyget_leng evalget_leng -#endif - -#ifdef yyget_text -#define evalget_text_ALREADY_DEFINED -#else -#define yyget_text evalget_text -#endif - -#ifdef yyget_lineno -#define evalget_lineno_ALREADY_DEFINED -#else -#define yyget_lineno evalget_lineno -#endif - -#ifdef yyset_lineno -#define evalset_lineno_ALREADY_DEFINED -#else -#define yyset_lineno evalset_lineno -#endif - -#ifdef yywrap -#define evalwrap_ALREADY_DEFINED -#else -#define yywrap evalwrap -#endif - + /* %endif */ -#ifdef yyalloc -#define evalalloc_ALREADY_DEFINED -#else -#define yyalloc evalalloc -#endif - -#ifdef yyrealloc -#define evalrealloc_ALREADY_DEFINED -#else -#define yyrealloc evalrealloc -#endif - -#ifdef yyfree -#define evalfree_ALREADY_DEFINED -#else -#define yyfree evalfree -#endif - /* %if-c-only */ -#ifdef yytext -#define evaltext_ALREADY_DEFINED -#else -#define yytext evaltext -#endif - -#ifdef yyleng -#define evalleng_ALREADY_DEFINED -#else -#define yyleng evalleng -#endif - -#ifdef yyin -#define evalin_ALREADY_DEFINED -#else -#define yyin evalin -#endif - -#ifdef yyout -#define evalout_ALREADY_DEFINED -#else -#define yyout evalout -#endif - -#ifdef yy_flex_debug -#define eval_flex_debug_ALREADY_DEFINED -#else -#define yy_flex_debug eval_flex_debug -#endif - -#ifdef yylineno -#define evallineno_ALREADY_DEFINED -#else -#define yylineno evallineno -#endif - /* %endif */ /* First, we deal with platform-specific or compiler-specific issues. */ @@ -328,6 +90,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -335,6 +98,7 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -365,39 +129,48 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - #endif /* ! FLEXINT_H */ /* %endif */ -/* begin standard C++ headers. */ /* %if-c++-only */ /* %endif */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* %not-for-header */ + /* Returned upon end-of-file. */ #define YY_NULL 0 /* %ok-for-header */ /* %not-for-header */ -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* %ok-for-header */ /* %if-reentrant */ @@ -412,29 +185,25 @@ typedef unsigned int flex_uint32_t; * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * + /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START + /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) +#define YY_NEW_FILE evalrestart(evalin ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -452,54 +221,48 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t evalleng; /* %endif */ /* %if-c-only */ /* %if-not-reentrant */ -extern FILE *yyin, *yyout; +extern FILE *evalin, *evalout; /* %endif */ /* %endif */ #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. + * existing scanners that call yyless() from OUTSIDE evallex. * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is + * a 5% performance hit in a non-evallineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ - int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - #define YY_LINENO_REWIND_TO(dst) \ - do {\ - const char *p;\ - for ( p = yy_cp-1; p >= (dst); --p)\ - if ( *p == '\n' )\ - --yylineno;\ + yy_size_t yyl;\ + for ( yyl = n; yyl < evalleng; ++yyl )\ + if ( evaltext[yyl] == '\n' )\ + --evallineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up evaltext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + YY_DO_BEFORE_ACTION; /* set up evaltext again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -519,12 +282,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -547,7 +310,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -564,8 +327,8 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. + * (via evalrestart()), so that the user can continue scanning by + * just pointing evalin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 @@ -574,12 +337,13 @@ struct yy_buffer_state /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + /* %if-not-reentrant */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* %endif */ /* %ok-for-header */ @@ -594,6 +358,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) + /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -603,112 +368,115 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %if-not-reentrant */ /* %not-for-header */ -/* yy_hold_char holds the character lost when yytext is formed. */ + +/* yy_hold_char holds the character lost when evaltext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t evalleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... +/* Flag which is used to allow evalwrap()'s to do buffer switches + * instead of setting up a fresh evalin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; /* %ok-for-header */ /* %endif */ -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); +void evalrestart (FILE *input_file ); +void eval_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE eval_create_buffer (FILE *file,int size ); +void eval_delete_buffer (YY_BUFFER_STATE b ); +void eval_flush_buffer (YY_BUFFER_STATE b ); +void evalpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void evalpop_buffer_state (void ); + +static void evalensure_buffer_stack (void ); +static void eval_load_buffer_state (void ); +static void eval_init_buffer (YY_BUFFER_STATE b,FILE *file ); -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) +#define YY_FLUSH_BUFFER eval_flush_buffer(YY_CURRENT_BUFFER ) -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE eval_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE eval_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE eval_scan_bytes (yyconst char *bytes,yy_size_t len ); /* %endif */ -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); +void *evalalloc (yy_size_t ); +void *evalrealloc (void *,yy_size_t ); +void evalfree (void * ); + +#define yy_new_buffer eval_create_buffer -#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ + evalensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + eval_create_buffer(evalin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } + #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ + evalensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + eval_create_buffer(evalin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } + #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ +/* %% [1.0] evaltext/evalin/evalout/yy_state_type/evallineno etc. def's & init go here */ /* Begin user sect3 */ -#define evalwrap() (/*CONSTCOND*/1) +#define evalwrap(n) 1 #define YY_SKIP_YYWRAP #define FLEX_DEBUG -typedef flex_uint8_t YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +typedef unsigned char YY_CHAR; + +FILE *evalin = (FILE *) 0, *evalout = (FILE *) 0; typedef int yy_state_type; -extern int yylineno; -int yylineno = 1; +extern int evallineno; -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext +int evallineno = 1; -/* %% [1.5] DFA */ +extern char *evaltext; +#define yytext_ptr evaltext /* %if-c-only Standard (non-C++) definition */ -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); /* %endif */ /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. + * corresponding action - sets up evaltext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ -/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ +/* %% [2.0] code to fiddle evaltext and evalleng for yymore() goes here \ */\ + evalleng = (yy_size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ -/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ +/* %% [3.0] code to copy yytext_ptr to evaltext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; + /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ #define YY_NUM_RULES 54 #define YY_END_OF_BUFFER 55 @@ -719,7 +487,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[213] = +static yyconst flex_int16_t yy_accept[213] = { 0, 0, 0, 55, 53, 1, 2, 53, 47, 48, 52, 51, 53, 46, 5, 5, 53, 53, 53, 53, 49, @@ -747,7 +515,7 @@ static const flex_int16_t yy_accept[213] = 34, 0 } ; -static const YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -779,7 +547,7 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[45] = +static yyconst flex_int32_t yy_meta[45] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 5, 1, 4, 1, 1, 1, @@ -788,7 +556,7 @@ static const YY_CHAR yy_meta[45] = 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[218] = +static yyconst flex_int16_t yy_base[218] = { 0, 0, 0, 325, 326, 322, 320, 318, 326, 326, 326, 326, 34, 326, 39, 36, 306, 304, 81, 115, 326, @@ -816,7 +584,7 @@ static const flex_int16_t yy_base[218] = 0, 326, 208, 210, 212, 85, 215 } ; -static const flex_int16_t yy_def[218] = +static yyconst flex_int16_t yy_def[218] = { 0, 212, 1, 212, 212, 212, 212, 213, 212, 212, 212, 212, 212, 212, 212, 14, 214, 212, 212, 18, 212, @@ -844,7 +612,7 @@ static const flex_int16_t yy_def[218] = 19, 0, 212, 212, 212, 212, 212 } ; -static const flex_int16_t yy_nxt[371] = +static yyconst flex_int16_t yy_nxt[371] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 16, 17, 18, 19, 19, 20, @@ -888,7 +656,7 @@ static const flex_int16_t yy_nxt[371] = 212, 212, 212, 212, 212, 212, 212, 212, 212, 212 } ; -static const flex_int16_t yy_chk[371] = +static yyconst flex_int16_t yy_chk[371] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -933,7 +701,7 @@ static const flex_int16_t yy_chk[371] = } ; /* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[55] = +static yyconst flex_int32_t yy_rule_can_match_eol[55] = { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -942,17 +710,17 @@ static const flex_int32_t yy_rule_can_match_eol[55] = static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; -extern int yy_flex_debug; -int yy_flex_debug = 1; +extern int eval_flex_debug; +int eval_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[54] = +static yyconst flex_int16_t yy_rule_linenum[54] = { 0, - 106, 111, 117, 127, 133, 151, 175, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234 + 105, 110, 116, 126, 132, 150, 174, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233 } ; /* The intent behind this definition is that it'll catch @@ -962,7 +730,7 @@ static const flex_int16_t yy_rule_linenum[54] = #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *yytext; +char *evaltext; #line 1 "lexer.ll" /* Copyright (C) 2015-2019 Internet Systems Consortium, Inc. ("ISC") @@ -989,8 +757,8 @@ char *yytext; 2.5.31 through 2.5.33): it generates code that does not conform to C89. See Debian bug 333231 . */ -# undef yywrap -# define yywrap() 1 +# undef evalwrap +# define evalwrap() 1 /* The location of the current token. The lexer will keep updating it. This variable will be useful for logging errors. */ @@ -1003,10 +771,9 @@ namespace { /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg) -#line 1006 "lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And - using yywrap requires linking with -lfl, which provides the default yywrap + using evalwrap requires linking with -lfl, which provides the default evalwrap implementation that always returns 1 anyway. */ /* nounput simplifies the lexer, by removing support for putting a character back into the input stream. We never use such capability anyway. */ @@ -1025,11 +792,10 @@ namespace { incorrect inputs (e.g., IP addresses) which must be checked. */ #line 80 "lexer.ll" /* This code run each time a pattern is matched. It updates the location - by moving it ahead by yyleng bytes. yyleng specifies the length of the + by moving it ahead by evalleng bytes. evalleng specifies the length of the currently matched token. */ #define YY_USER_ACTION loc.columns(evalleng); -#line 1031 "lexer.cc" -#line 1032 "lexer.cc" +#line 799 "lexer.cc" #define INITIAL 0 @@ -1053,7 +819,7 @@ namespace { /* %if-reentrant */ /* %if-c-only */ -static int yy_init_globals ( void ); +static int yy_init_globals (void ); /* %endif */ /* %if-reentrant */ @@ -1063,31 +829,31 @@ static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( void ); +int evallex_destroy (void ); -int yyget_debug ( void ); +int evalget_debug (void ); -void yyset_debug ( int debug_flag ); +void evalset_debug (int debug_flag ); -YY_EXTRA_TYPE yyget_extra ( void ); +YY_EXTRA_TYPE evalget_extra (void ); -void yyset_extra ( YY_EXTRA_TYPE user_defined ); +void evalset_extra (YY_EXTRA_TYPE user_defined ); -FILE *yyget_in ( void ); +FILE *evalget_in (void ); -void yyset_in ( FILE * _in_str ); +void evalset_in (FILE * in_str ); -FILE *yyget_out ( void ); +FILE *evalget_out (void ); -void yyset_out ( FILE * _out_str ); +void evalset_out (FILE * out_str ); - int yyget_leng ( void ); +yy_size_t evalget_leng (void ); -char *yyget_text ( void ); +char *evalget_text (void ); -int yyget_lineno ( void ); +int evalget_lineno (void ); -void yyset_lineno ( int _line_number ); +void evalset_lineno (int line_number ); /* %if-bison-bridge */ /* %endif */ @@ -1098,35 +864,34 @@ void yyset_lineno ( int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( void ); +extern "C" int evalwrap (void ); #else -extern int yywrap ( void ); +extern int evalwrap (void ); #endif #endif /* %not-for-header */ -#ifndef YY_NO_UNPUT - -#endif + /* %ok-for-header */ /* %endif */ #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + #ifdef __cplusplus -static int yyinput ( void ); +static int yyinput (void ); #else -static int input ( void ); +static int input (void ); #endif /* %ok-for-header */ @@ -1139,12 +904,7 @@ static int input ( void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1153,7 +913,7 @@ static int input ( void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO fwrite( evaltext, evalleng, 1, evalout ) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ @@ -1168,20 +928,20 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + yy_size_t n; \ for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + (c = getc( evalin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ + if ( c == EOF && ferror( evalin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, evalin))==0 && ferror(evalin)) \ { \ if( errno != EINTR) \ { \ @@ -1189,7 +949,7 @@ static int input ( void ); break; \ } \ errno=0; \ - clearerr(yyin); \ + clearerr(evalin); \ } \ }\ \ @@ -1222,9 +982,11 @@ static int input ( void ); /* %if-tables-serialization structures and prototypes */ /* %not-for-header */ + /* %ok-for-header */ /* %not-for-header */ + /* %tables-yydmap generated elements */ /* %endif */ /* end tables serialization structures and prototypes */ @@ -1238,15 +1000,15 @@ static int input ( void ); #define YY_DECL_IS_OURS 1 /* %if-c-only Standard (non-C++) definition */ -extern int yylex (void); +extern int evallex (void); -#define YY_DECL int yylex (void) +#define YY_DECL int evallex (void) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* !YY_DECL */ -/* Code executed at the beginning of each rule, after yytext and yyleng +/* Code executed at the beginning of each rule, after evaltext and evalleng * have been set up. */ #ifndef YY_USER_ACTION @@ -1255,7 +1017,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif /* %% [6.0] YY_RULE_SETUP definition goes here */ @@ -1263,14 +1025,38 @@ extern int yylex (void); YY_USER_ACTION /* %not-for-header */ + /** The main scanner function which does all the work. */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; +/* %% [7.0] user's declarations go here */ +#line 86 "lexer.ll" + + + + /* Code run each time evallex is called. */ + loc.step(); + + if (start_token_flag) { + start_token_flag = false; + switch (start_token_value) { + case EvalContext::PARSER_BOOL: + return isc::eval::EvalParser::make_TOPLEVEL_BOOL(loc); + default: + case EvalContext::PARSER_STRING: + return isc::eval::EvalParser::make_TOPLEVEL_STRING(loc); + } + } + + + +#line 1059 "lexer.cc" + if ( !(yy_init) ) { (yy_init) = 1; @@ -1282,60 +1068,35 @@ YY_DECL if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ - if ( ! yyin ) + if ( ! evalin ) /* %if-c-only */ - yyin = stdin; + evalin = stdin; /* %endif */ /* %if-c++-only */ /* %endif */ - if ( ! yyout ) + if ( ! evalout ) /* %if-c-only */ - yyout = stdout; + evalout = stdout; /* %endif */ /* %if-c++-only */ /* %endif */ if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); + evalensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + eval_create_buffer(evalin,YY_BUF_SIZE ); } - yy_load_buffer_state( ); + eval_load_buffer_state( ); } - { -/* %% [7.0] user's declarations go here */ -#line 86 "lexer.ll" - - - -#line 90 "lexer.ll" - /* Code run each time evallex is called. */ - loc.step(); - - if (start_token_flag) { - start_token_flag = false; - switch (start_token_value) { - case EvalContext::PARSER_BOOL: - return isc::eval::EvalParser::make_TOPLEVEL_BOOL(loc); - default: - case EvalContext::PARSER_STRING: - return isc::eval::EvalParser::make_TOPLEVEL_STRING(loc); - } - } - - - -#line 1331 "lexer.cc" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + while ( 1 ) /* loops until end-of-file is reached */ { /* %% [8.0] yymore()-related code goes here */ yy_cp = (yy_c_buf_p); - /* Support of yytext. */ + /* Support of evaltext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of @@ -1348,7 +1109,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1358,9 +1119,9 @@ yy_match: { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 213 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_current_state != 212 ); @@ -1373,31 +1134,31 @@ yy_find_action: YY_DO_BEFORE_ACTION; -/* %% [11.0] code for yylineno update goes here */ +/* %% [11.0] code for evallineno update goes here */ if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; + yy_size_t yyl; + for ( yyl = 0; yyl < evalleng; ++yyl ) + if ( evaltext[yyl] == '\n' ) + + evallineno++; ; } do_action: /* This label is used only to access EOF actions. */ /* %% [12.0] debug code goes here */ - if ( yy_flex_debug ) + if ( eval_flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 54 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", - (long)yy_rule_linenum[yy_act], yytext ); + (long)yy_rule_linenum[yy_act], evaltext ); else if ( yy_act == 54 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", - yytext ); + evaltext ); else if ( yy_act == 55 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else @@ -1416,7 +1177,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 106 "lexer.ll" +#line 105 "lexer.ll" { /* Ok, we found a with space. Let's ignore it and update loc variable. */ loc.step(); @@ -1425,7 +1186,7 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 111 "lexer.ll" +#line 110 "lexer.ll" { /* Newline found. Let's update the location and continue. */ loc.lines(evalleng); @@ -1434,7 +1195,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 117 "lexer.ll" +#line 116 "lexer.ll" { /* A string has been matched. It contains the actual string and single quotes. We need to get those quotes out of the way and just use its content, e.g. @@ -1447,7 +1208,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 127 "lexer.ll" +#line 126 "lexer.ll" { /* A hex string has been matched. It contains the '0x' or '0X' header followed by at least one hexadecimal digit. */ @@ -1456,7 +1217,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 133 "lexer.ll" +#line 132 "lexer.ll" { /* An integer was found. */ std::string tmp(evaltext); @@ -1477,12 +1238,11 @@ YY_RULE_SETUP YY_BREAK case 6: /* rule 6 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ -YY_LINENO_REWIND_TO(yy_cp - 1); +*yy_cp = (yy_hold_char); /* undo effects of setting up evaltext */ (yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_DO_BEFORE_ACTION; /* set up evaltext again */ YY_RULE_SETUP -#line 151 "lexer.ll" +#line 150 "lexer.ll" { /* This string specifies option name starting with a letter and further containing letters, digits, hyphens and @@ -1509,7 +1269,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 175 "lexer.ll" +#line 174 "lexer.ll" { /* IPv4 or IPv6 address */ std::string tmp(evaltext); @@ -1526,244 +1286,244 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 189 "lexer.ll" +#line 188 "lexer.ll" return isc::eval::EvalParser::make_EQUAL(loc); YY_BREAK case 9: YY_RULE_SETUP -#line 190 "lexer.ll" +#line 189 "lexer.ll" return isc::eval::EvalParser::make_OPTION(loc); YY_BREAK case 10: YY_RULE_SETUP -#line 191 "lexer.ll" +#line 190 "lexer.ll" return isc::eval::EvalParser::make_RELAY4(loc); YY_BREAK case 11: YY_RULE_SETUP -#line 192 "lexer.ll" +#line 191 "lexer.ll" return isc::eval::EvalParser::make_RELAY6(loc); YY_BREAK case 12: YY_RULE_SETUP -#line 193 "lexer.ll" +#line 192 "lexer.ll" return isc::eval::EvalParser::make_PEERADDR(loc); YY_BREAK case 13: YY_RULE_SETUP -#line 194 "lexer.ll" +#line 193 "lexer.ll" return isc::eval::EvalParser::make_LINKADDR(loc); YY_BREAK case 14: YY_RULE_SETUP -#line 195 "lexer.ll" +#line 194 "lexer.ll" return isc::eval::EvalParser::make_TEXT(loc); YY_BREAK case 15: YY_RULE_SETUP -#line 196 "lexer.ll" +#line 195 "lexer.ll" return isc::eval::EvalParser::make_HEX(loc); YY_BREAK case 16: YY_RULE_SETUP -#line 197 "lexer.ll" +#line 196 "lexer.ll" return isc::eval::EvalParser::make_EXISTS(loc); YY_BREAK case 17: YY_RULE_SETUP -#line 198 "lexer.ll" +#line 197 "lexer.ll" return isc::eval::EvalParser::make_PKT(loc); YY_BREAK case 18: YY_RULE_SETUP -#line 199 "lexer.ll" +#line 198 "lexer.ll" return isc::eval::EvalParser::make_IFACE(loc); YY_BREAK case 19: YY_RULE_SETUP -#line 200 "lexer.ll" +#line 199 "lexer.ll" return isc::eval::EvalParser::make_SRC(loc); YY_BREAK case 20: YY_RULE_SETUP -#line 201 "lexer.ll" +#line 200 "lexer.ll" return isc::eval::EvalParser::make_DST(loc); YY_BREAK case 21: YY_RULE_SETUP -#line 202 "lexer.ll" +#line 201 "lexer.ll" return isc::eval::EvalParser::make_LEN(loc); YY_BREAK case 22: YY_RULE_SETUP -#line 203 "lexer.ll" +#line 202 "lexer.ll" return isc::eval::EvalParser::make_PKT4(loc); YY_BREAK case 23: YY_RULE_SETUP -#line 204 "lexer.ll" +#line 203 "lexer.ll" return isc::eval::EvalParser::make_CHADDR(loc); YY_BREAK case 24: YY_RULE_SETUP -#line 205 "lexer.ll" +#line 204 "lexer.ll" return isc::eval::EvalParser::make_HLEN(loc); YY_BREAK case 25: YY_RULE_SETUP -#line 206 "lexer.ll" +#line 205 "lexer.ll" return isc::eval::EvalParser::make_HTYPE(loc); YY_BREAK case 26: YY_RULE_SETUP -#line 207 "lexer.ll" +#line 206 "lexer.ll" return isc::eval::EvalParser::make_CIADDR(loc); YY_BREAK case 27: YY_RULE_SETUP -#line 208 "lexer.ll" +#line 207 "lexer.ll" return isc::eval::EvalParser::make_GIADDR(loc); YY_BREAK case 28: YY_RULE_SETUP -#line 209 "lexer.ll" +#line 208 "lexer.ll" return isc::eval::EvalParser::make_YIADDR(loc); YY_BREAK case 29: YY_RULE_SETUP -#line 210 "lexer.ll" +#line 209 "lexer.ll" return isc::eval::EvalParser::make_SIADDR(loc); YY_BREAK case 30: YY_RULE_SETUP -#line 211 "lexer.ll" +#line 210 "lexer.ll" return isc::eval::EvalParser::make_PKT6(loc); YY_BREAK case 31: YY_RULE_SETUP -#line 212 "lexer.ll" +#line 211 "lexer.ll" return isc::eval::EvalParser::make_MSGTYPE(loc); YY_BREAK case 32: YY_RULE_SETUP -#line 213 "lexer.ll" +#line 212 "lexer.ll" return isc::eval::EvalParser::make_TRANSID(loc); YY_BREAK case 33: YY_RULE_SETUP -#line 214 "lexer.ll" +#line 213 "lexer.ll" return isc::eval::EvalParser::make_VENDOR(loc); YY_BREAK case 34: YY_RULE_SETUP -#line 215 "lexer.ll" +#line 214 "lexer.ll" return isc::eval::EvalParser::make_VENDOR_CLASS(loc); YY_BREAK case 35: YY_RULE_SETUP -#line 216 "lexer.ll" +#line 215 "lexer.ll" return isc::eval::EvalParser::make_DATA(loc); YY_BREAK case 36: YY_RULE_SETUP -#line 217 "lexer.ll" +#line 216 "lexer.ll" return isc::eval::EvalParser::make_ENTERPRISE(loc); YY_BREAK case 37: YY_RULE_SETUP -#line 218 "lexer.ll" +#line 217 "lexer.ll" return isc::eval::EvalParser::make_SUBSTRING(loc); YY_BREAK case 38: YY_RULE_SETUP -#line 219 "lexer.ll" +#line 218 "lexer.ll" return isc::eval::EvalParser::make_ALL(loc); YY_BREAK case 39: YY_RULE_SETUP -#line 220 "lexer.ll" +#line 219 "lexer.ll" return isc::eval::EvalParser::make_CONCAT(loc); YY_BREAK case 40: YY_RULE_SETUP -#line 221 "lexer.ll" +#line 220 "lexer.ll" return isc::eval::EvalParser::make_IFELSE(loc); YY_BREAK case 41: YY_RULE_SETUP -#line 222 "lexer.ll" +#line 221 "lexer.ll" return isc::eval::EvalParser::make_TOHEXSTRING(loc); YY_BREAK case 42: YY_RULE_SETUP -#line 223 "lexer.ll" +#line 222 "lexer.ll" return isc::eval::EvalParser::make_NOT(loc); YY_BREAK case 43: YY_RULE_SETUP -#line 224 "lexer.ll" +#line 223 "lexer.ll" return isc::eval::EvalParser::make_AND(loc); YY_BREAK case 44: YY_RULE_SETUP -#line 225 "lexer.ll" +#line 224 "lexer.ll" return isc::eval::EvalParser::make_OR(loc); YY_BREAK case 45: YY_RULE_SETUP -#line 226 "lexer.ll" +#line 225 "lexer.ll" return isc::eval::EvalParser::make_MEMBER(loc); YY_BREAK case 46: YY_RULE_SETUP -#line 227 "lexer.ll" +#line 226 "lexer.ll" return isc::eval::EvalParser::make_DOT(loc); YY_BREAK case 47: YY_RULE_SETUP -#line 228 "lexer.ll" +#line 227 "lexer.ll" return isc::eval::EvalParser::make_LPAREN(loc); YY_BREAK case 48: YY_RULE_SETUP -#line 229 "lexer.ll" +#line 228 "lexer.ll" return isc::eval::EvalParser::make_RPAREN(loc); YY_BREAK case 49: YY_RULE_SETUP -#line 230 "lexer.ll" +#line 229 "lexer.ll" return isc::eval::EvalParser::make_LBRACKET(loc); YY_BREAK case 50: YY_RULE_SETUP -#line 231 "lexer.ll" +#line 230 "lexer.ll" return isc::eval::EvalParser::make_RBRACKET(loc); YY_BREAK case 51: YY_RULE_SETUP -#line 232 "lexer.ll" +#line 231 "lexer.ll" return isc::eval::EvalParser::make_COMA(loc); YY_BREAK case 52: YY_RULE_SETUP -#line 233 "lexer.ll" +#line 232 "lexer.ll" return isc::eval::EvalParser::make_ANY(loc); YY_BREAK case 53: YY_RULE_SETUP -#line 234 "lexer.ll" +#line 233 "lexer.ll" driver.error (loc, "Invalid character: " + std::string(evaltext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 235 "lexer.ll" +#line 234 "lexer.ll" return isc::eval::EvalParser::make_END(loc); YY_BREAK case 54: YY_RULE_SETUP -#line 236 "lexer.ll" +#line 235 "lexer.ll" ECHO; YY_BREAK -#line 1766 "lexer.cc" +#line 1527 "lexer.cc" case YY_END_OF_BUFFER: { @@ -1778,19 +1538,15 @@ ECHO; { /* 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 - * yylex(). If so, then we have to assure + * just pointed evalin at a new source and called + * evallex(). 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. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; -/* %if-c-only */ - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + YY_CURRENT_BUFFER_LVALUE->yy_input_file = evalin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } @@ -1845,11 +1601,11 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( evalwrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * yytext, we can now set up + * evaltext, 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 @@ -1898,12 +1654,12 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ +} /* end of evallex */ /* %ok-for-header */ /* %if-c++-only */ /* %not-for-header */ + /* %ok-for-header */ /* %endif */ @@ -1921,9 +1677,9 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -1952,7 +1708,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -1965,21 +1721,21 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1988,12 +1744,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); + evalrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -2021,7 +1776,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + evalrestart(evalin ); } else @@ -2035,15 +1790,12 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) evalrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -2059,13 +1811,14 @@ static int yy_get_next_buffer (void) /* %if-c-only */ /* %not-for-header */ + static yy_state_type yy_get_previous_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; /* %% [15.0] code to get the start state into yy_current_state goes here */ yy_current_state = (yy_start); @@ -2073,7 +1826,7 @@ static int yy_get_next_buffer (void) for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { /* %% [16.0] code to find the next state goes here */ - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2083,9 +1836,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 213 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -2102,11 +1855,11 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - int yy_is_jam; + register int yy_is_jam; /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ - char *yy_cp = (yy_c_buf_p); + register char *yy_cp = (yy_c_buf_p); - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2116,19 +1869,17 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 213 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 212); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT /* %if-c-only */ /* %endif */ -#endif /* %if-c-only */ #ifndef YY_NO_INPUT @@ -2158,7 +1909,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -2175,13 +1926,13 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart( yyin ); + evalrestart(evalin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) + if ( evalwrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) @@ -2201,13 +1952,13 @@ static int yy_get_next_buffer (void) } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ + *(yy_c_buf_p) = '\0'; /* preserve evaltext */ (yy_hold_char) = *++(yy_c_buf_p); -/* %% [19.0] update BOL and yylineno */ +/* %% [19.0] update BOL and evallineno */ if ( c == '\n' ) - - yylineno++; + + evallineno++; ; return c; @@ -2222,31 +1973,28 @@ static int yy_get_next_buffer (void) * @note This function does not reset the start condition to @c INITIAL . */ /* %if-c-only */ - void yyrestart (FILE * input_file ) + void evalrestart (FILE * input_file ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); + evalensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + eval_create_buffer(evalin,YY_BUF_SIZE ); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); + eval_init_buffer(YY_CURRENT_BUFFER,input_file ); + eval_load_buffer_state( ); } -/* %if-c++-only */ -/* %endif */ - /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ /* %if-c-only */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) + void eval_switch_to_buffer (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2254,10 +2002,10 @@ static int yy_get_next_buffer (void) /* TODO. We should be able to replace this entire function body * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); + * evalpop_buffer_state(); + * evalpush_buffer_state(new_buffer); */ - yyensure_buffer_stack (); + evalensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; @@ -2270,29 +2018,25 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + eval_load_buffer_state( ); /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe + * EOF (evalwrap()) processing, but the only time this flag + * is looked at is after evalwrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } /* %if-c-only */ -static void yy_load_buffer_state (void) +static void eval_load_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; -/* %if-c-only */ - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + evalin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } @@ -2303,42 +2047,39 @@ static void yy_load_buffer_state (void) * @return the allocated buffer state. */ /* %if-c-only */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) + YY_BUFFER_STATE eval_create_buffer (FILE * file, int size ) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) evalalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) evalalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + eval_init_buffer(b,file ); return b; } -/* %if-c++-only */ -/* %endif */ - /** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() + * @param b a buffer created with eval_create_buffer() * */ /* %if-c-only */ - void yy_delete_buffer (YY_BUFFER_STATE b ) + void eval_delete_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2351,17 +2092,28 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); + evalfree((void *) b->yy_ch_buf ); - yyfree( (void *) b ); + evalfree((void *) b ); } +/* %if-c-only */ + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* %endif */ + +/* %if-c++-only */ +/* %endif */ + /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. + * such as during a evalrestart() or at EOF. */ /* %if-c-only */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + static void eval_init_buffer (YY_BUFFER_STATE b, FILE * file ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2369,17 +2121,13 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer( b ); + eval_flush_buffer(b ); -/* %if-c-only */ b->yy_input_file = file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. + /* If b is the current buffer, then eval_init_buffer was _probably_ + * called from evalrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ @@ -2402,7 +2150,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ - void yy_flush_buffer (YY_BUFFER_STATE b ) + void eval_flush_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2425,7 +2173,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + eval_load_buffer_state( ); } /* %if-c-or-c++ */ @@ -2436,7 +2184,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +void evalpush_buffer_state (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2444,9 +2192,9 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) if (new_buffer == NULL) return; - yyensure_buffer_stack(); + evalensure_buffer_stack(); - /* This block is copied from yy_switch_to_buffer. */ + /* This block is copied from eval_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ @@ -2460,8 +2208,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + /* copied from eval_switch_to_buffer. */ + eval_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /* %endif */ @@ -2472,7 +2220,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) * */ /* %if-c-only */ -void yypop_buffer_state (void) +void evalpop_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2480,13 +2228,13 @@ void yypop_buffer_state (void) if (!YY_CURRENT_BUFFER) return; - yy_delete_buffer(YY_CURRENT_BUFFER ); + eval_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + eval_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -2497,7 +2245,7 @@ void yypop_buffer_state (void) * Guarantees space for at least one push. */ /* %if-c-only */ -static void yyensure_buffer_stack (void) +static void evalensure_buffer_stack (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2510,15 +2258,15 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)evalalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + YY_FATAL_ERROR( "out of dynamic memory in evalensure_buffer_stack()" ); + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -2527,15 +2275,15 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + (yy_buffer_stack) = (struct yy_buffer_state**)evalrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in evalensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -2549,9 +2297,9 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +YY_BUFFER_STATE eval_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; @@ -2559,73 +2307,72 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) evalalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_scan_buffer()" ); - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b ); + eval_switch_to_buffer(b ); return b; } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan a string. The next call to yylex() will +/** Setup the input buffer state to scan a string. The next call to evallex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. + * eval_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) +YY_BUFFER_STATE eval_scan_string (yyconst char * yystr ) { - return yy_scan_bytes( yystr, (int) strlen(yystr) ); + return eval_scan_bytes(yystr,strlen(yystr) ); } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to evallex() will * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE eval_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; - yy_size_t n; - int i; + yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); + n = _yybytes_len + 2; + buf = (char *) evalalloc(n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n ); + b = eval_scan_buffer(buf,n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in eval_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -2641,9 +2388,9 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) #endif /* %if-c-only */ -static void yynoreturn yy_fatal_error (const char* msg ) +static void yy_fatal_error (yyconst char* msg ) { - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* %endif */ @@ -2656,14 +2403,14 @@ static void yynoreturn yy_fatal_error (const char* msg ) #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up evaltext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ + evaltext[evalleng] = (yy_hold_char); \ + (yy_c_buf_p) = evaltext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ + evalleng = yyless_macro_arg; \ } \ while ( 0 ) @@ -2676,82 +2423,82 @@ static void yynoreturn yy_fatal_error (const char* msg ) /** Get the current line number. * */ -int yyget_lineno (void) +int evalget_lineno (void) { - - return yylineno; + + return evallineno; } /** Get the input stream. * */ -FILE *yyget_in (void) +FILE *evalget_in (void) { - return yyin; + return evalin; } /** Get the output stream. * */ -FILE *yyget_out (void) +FILE *evalget_out (void) { - return yyout; + return evalout; } /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t evalget_leng (void) { - return yyleng; + return evalleng; } /** Get the current token. * */ -char *yyget_text (void) +char *evalget_text (void) { - return yytext; + return evaltext; } /* %if-reentrant */ /* %endif */ /** Set the current line number. - * @param _line_number line number + * @param line_number * */ -void yyset_lineno (int _line_number ) +void evalset_lineno (int line_number ) { - yylineno = _line_number; + evallineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * - * @see yy_switch_to_buffer + * @see eval_switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void evalset_in (FILE * in_str ) { - yyin = _in_str ; + evalin = in_str ; } -void yyset_out (FILE * _out_str ) +void evalset_out (FILE * out_str ) { - yyout = _out_str ; + evalout = out_str ; } -int yyget_debug (void) +int evalget_debug (void) { - return yy_flex_debug; + return eval_flex_debug; } -void yyset_debug (int _bdebug ) +void evalset_debug (int bdebug ) { - yy_flex_debug = _bdebug ; + eval_flex_debug = bdebug ; } /* %endif */ @@ -2765,53 +2512,53 @@ void yyset_debug (int _bdebug ) static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. + * This function is called from evallex_destroy(), so don't allocate here. */ - /* We do not touch yylineno unless the option is enabled. */ - yylineno = 1; + /* We do not touch evallineno unless the option is enabled. */ + evallineno = 1; - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + evalin = stdin; + evalout = stdout; #else - yyin = NULL; - yyout = NULL; + evalin = (FILE *) 0; + evalout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by - * yylex_init() + * evallex_init() */ return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) +/* evallex_destroy is for both reentrant and non-reentrant scanners. */ +int evallex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); + eval_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); + evalpop_buffer_state(); } /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); + evalfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ + * evallex() is called, initialization will occur. */ yy_init_globals( ); /* %if-reentrant */ @@ -2825,19 +2572,18 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) +static int yy_flex_strlen (yyconst char * s ) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -2845,14 +2591,13 @@ static int yy_flex_strlen (const char * s ) } #endif -void *yyalloc (yy_size_t size ) +void *evalalloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } -void *yyrealloc (void * ptr, yy_size_t size ) +void *evalrealloc (void * ptr, yy_size_t size ) { - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -2860,12 +2605,12 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } -void yyfree (void * ptr ) +void evalfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see evalrealloc() for (char *) cast */ } /* %if-tables-serialization definitions */ @@ -2875,7 +2620,8 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 236 "lexer.ll" +#line 235 "lexer.ll" + using namespace isc::eval; diff --git a/src/lib/eval/location.hh b/src/lib/eval/location.hh index 135200f062..cf3341af9b 100644 --- a/src/lib/eval/location.hh +++ b/src/lib/eval/location.hh @@ -1,4 +1,3 @@ -// Generated 201906181714 // A Bison parser, made by GNU Bison 3.4.1. // Locations for Bison parsers in C++ diff --git a/src/lib/eval/parser.cc b/src/lib/eval/parser.cc index ca0869e596..890a4706eb 100644 --- a/src/lib/eval/parser.cc +++ b/src/lib/eval/parser.cc @@ -849,6 +849,15 @@ namespace isc { namespace eval { case 11: #line 156 "parser.yy" + { + TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS)); + ctx.expression.push_back(opt); + } +#line 857 "parser.cc" + break; + + case 12: +#line 161 "parser.yy" { switch (ctx.getUniverse()) { case Option::V4: @@ -868,11 +877,11 @@ namespace isc { namespace eval { error(yystack_[5].location, "relay4 can only be used in DHCPv4."); } } -#line 872 "parser.cc" +#line 881 "parser.cc" break; - case 12: -#line 176 "parser.yy" + case 13: +#line 181 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -886,11 +895,11 @@ namespace isc { namespace eval { error(yystack_[10].location, "relay6 can only be used in DHCPv6."); } } -#line 890 "parser.cc" +#line 899 "parser.cc" break; - case 13: -#line 190 "parser.yy" + case 14: +#line 195 "parser.yy" { // Expression: vendor-class[1234].exists // @@ -899,11 +908,11 @@ namespace isc { namespace eval { TokenPtr exist(new TokenVendorClass(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS)); ctx.expression.push_back(exist); } -#line 903 "parser.cc" +#line 912 "parser.cc" break; - case 14: -#line 199 "parser.yy" + case 15: +#line 204 "parser.yy" { // Expression: vendor[1234].exists // @@ -912,11 +921,11 @@ namespace isc { namespace eval { TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS)); ctx.expression.push_back(exist); } -#line 916 "parser.cc" +#line 925 "parser.cc" break; - case 15: -#line 208 "parser.yy" + case 16: +#line 213 "parser.yy" { // Expression vendor[1234].option[123].exists // @@ -926,11 +935,11 @@ namespace isc { namespace eval { TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), TokenOption::EXISTS, yystack_[3].value.as < uint16_t > ())); ctx.expression.push_back(exist); } -#line 930 "parser.cc" +#line 939 "parser.cc" break; - case 16: -#line 218 "parser.yy" + case 17: +#line 223 "parser.yy" { // Expression member('foo') // @@ -945,23 +954,14 @@ namespace isc { namespace eval { TokenPtr member(new TokenMember(cc)); ctx.expression.push_back(member); } -#line 949 "parser.cc" - break; - - case 17: -#line 235 "parser.yy" - { - TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); - ctx.expression.push_back(str); - } #line 958 "parser.cc" break; case 18: #line 240 "parser.yy" { - TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ())); - ctx.expression.push_back(hex); + TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); + ctx.expression.push_back(str); } #line 967 "parser.cc" break; @@ -969,8 +969,8 @@ namespace isc { namespace eval { case 19: #line 245 "parser.yy" { - TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ())); - ctx.expression.push_back(ip); + TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ())); + ctx.expression.push_back(hex); } #line 976 "parser.cc" break; @@ -978,14 +978,32 @@ namespace isc { namespace eval { case 20: #line 250 "parser.yy" { - TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ())); - ctx.expression.push_back(opt); + TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ())); + ctx.expression.push_back(ip); } #line 985 "parser.cc" break; case 21: #line 255 "parser.yy" + { + TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ())); + ctx.expression.push_back(opt); + } +#line 994 "parser.cc" + break; + + case 22: +#line 260 "parser.yy" + { + TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ())); + ctx.expression.push_back(opt); + } +#line 1003 "parser.cc" + break; + + case 23: +#line 265 "parser.yy" { switch (ctx.getUniverse()) { case Option::V4: @@ -1005,11 +1023,11 @@ namespace isc { namespace eval { error(yystack_[5].location, "relay4 can only be used in DHCPv4."); } } -#line 1009 "parser.cc" +#line 1027 "parser.cc" break; - case 22: -#line 276 "parser.yy" + case 24: +#line 286 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -1023,20 +1041,20 @@ namespace isc { namespace eval { error(yystack_[10].location, "relay6 can only be used in DHCPv6."); } } -#line 1027 "parser.cc" +#line 1045 "parser.cc" break; - case 23: -#line 291 "parser.yy" + case 25: +#line 301 "parser.yy" { TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ())); ctx.expression.push_back(pkt_metadata); } -#line 1036 "parser.cc" +#line 1054 "parser.cc" break; - case 24: -#line 296 "parser.yy" + case 26: +#line 306 "parser.yy" { switch (ctx.getUniverse()) { case Option::V4: @@ -1050,11 +1068,11 @@ namespace isc { namespace eval { error(yystack_[2].location, "pkt4 can only be used in DHCPv4."); } } -#line 1054 "parser.cc" +#line 1072 "parser.cc" break; - case 25: -#line 310 "parser.yy" + case 27: +#line 320 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -1068,11 +1086,11 @@ namespace isc { namespace eval { error(yystack_[2].location, "pkt6 can only be used in DHCPv6."); } } -#line 1072 "parser.cc" +#line 1090 "parser.cc" break; - case 26: -#line 324 "parser.yy" + case 28: +#line 334 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -1086,47 +1104,47 @@ namespace isc { namespace eval { error(yystack_[5].location, "relay6 can only be used in DHCPv6."); } } -#line 1090 "parser.cc" +#line 1108 "parser.cc" break; - case 27: -#line 339 "parser.yy" + case 29: +#line 349 "parser.yy" { TokenPtr sub(new TokenSubstring()); ctx.expression.push_back(sub); } -#line 1099 "parser.cc" +#line 1117 "parser.cc" break; - case 28: -#line 344 "parser.yy" + case 30: +#line 354 "parser.yy" { TokenPtr conc(new TokenConcat()); ctx.expression.push_back(conc); } -#line 1108 "parser.cc" +#line 1126 "parser.cc" break; - case 29: -#line 349 "parser.yy" + case 31: +#line 359 "parser.yy" { TokenPtr cond(new TokenIfElse()); ctx.expression.push_back(cond); } -#line 1117 "parser.cc" +#line 1135 "parser.cc" break; - case 30: -#line 354 "parser.yy" + case 32: +#line 364 "parser.yy" { TokenPtr tohex(new TokenToHexString()); ctx.expression.push_back(tohex); } -#line 1126 "parser.cc" +#line 1144 "parser.cc" break; - case 31: -#line 359 "parser.yy" + case 33: +#line 369 "parser.yy" { // expression: vendor.enterprise // @@ -1135,11 +1153,11 @@ namespace isc { namespace eval { TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID)); ctx.expression.push_back(vendor); } -#line 1139 "parser.cc" +#line 1157 "parser.cc" break; - case 32: -#line 368 "parser.yy" + case 34: +#line 378 "parser.yy" { // expression: vendor-class.enterprise // @@ -1149,11 +1167,11 @@ namespace isc { namespace eval { TokenVendor::ENTERPRISE_ID)); ctx.expression.push_back(vendor); } -#line 1153 "parser.cc" +#line 1171 "parser.cc" break; - case 33: -#line 378 "parser.yy" + case 35: +#line 388 "parser.yy" { // This token will search for vendor option with // specified enterprise-id. If found, will search @@ -1162,11 +1180,11 @@ namespace isc { namespace eval { TokenPtr opt(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), yystack_[0].value.as < TokenOption::RepresentationType > (), yystack_[3].value.as < uint16_t > ())); ctx.expression.push_back(opt); } -#line 1166 "parser.cc" +#line 1184 "parser.cc" break; - case 34: -#line 387 "parser.yy" + case 36: +#line 397 "parser.yy" { // expression: vendor-class[1234].data // @@ -1179,11 +1197,11 @@ namespace isc { namespace eval { TokenVendor::DATA, 0)); ctx.expression.push_back(vendor_class); } -#line 1183 "parser.cc" +#line 1201 "parser.cc" break; - case 35: -#line 400 "parser.yy" + case 37: +#line 410 "parser.yy" { // expression: vendor-class[1234].data[5] // @@ -1196,247 +1214,247 @@ namespace isc { namespace eval { TokenVendor::DATA, index)); ctx.expression.push_back(vendor_class); } -#line 1200 "parser.cc" +#line 1218 "parser.cc" break; - case 36: -#line 413 "parser.yy" + case 38: +#line 423 "parser.yy" { TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ())); ctx.expression.push_back(integer); } -#line 1209 "parser.cc" +#line 1227 "parser.cc" break; - case 37: -#line 420 "parser.yy" + case 39: +#line 430 "parser.yy" { yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1217 "parser.cc" +#line 1235 "parser.cc" break; - case 38: -#line 426 "parser.yy" + case 40: +#line 436 "parser.yy" { yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1225 "parser.cc" +#line 1243 "parser.cc" break; - case 39: -#line 430 "parser.yy" + case 41: +#line 440 "parser.yy" { yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1233 "parser.cc" +#line 1251 "parser.cc" break; - case 40: -#line 436 "parser.yy" + case 42: +#line 446 "parser.yy" { yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL; } -#line 1241 "parser.cc" +#line 1259 "parser.cc" break; - case 41: -#line 440 "parser.yy" + case 43: +#line 450 "parser.yy" { yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL; } -#line 1249 "parser.cc" +#line 1267 "parser.cc" break; - case 42: -#line 446 "parser.yy" + case 44: +#line 456 "parser.yy" { yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1257 "parser.cc" +#line 1275 "parser.cc" break; - case 43: -#line 455 "parser.yy" + case 45: +#line 465 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE; } -#line 1265 "parser.cc" +#line 1283 "parser.cc" break; - case 44: -#line 459 "parser.yy" + case 46: +#line 469 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC; } -#line 1273 "parser.cc" +#line 1291 "parser.cc" break; - case 45: -#line 463 "parser.yy" + case 47: +#line 473 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST; } -#line 1281 "parser.cc" +#line 1299 "parser.cc" break; - case 46: -#line 467 "parser.yy" + case 48: +#line 477 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN; } -#line 1289 "parser.cc" +#line 1307 "parser.cc" break; - case 47: -#line 473 "parser.yy" + case 49: +#line 483 "parser.yy" { yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1297 "parser.cc" +#line 1315 "parser.cc" break; - case 48: -#line 477 "parser.yy" + case 50: +#line 487 "parser.yy" { yylhs.value.as < uint32_t > () = 0; } -#line 1305 "parser.cc" +#line 1323 "parser.cc" break; - case 49: -#line 483 "parser.yy" + case 51: +#line 493 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR; } -#line 1313 "parser.cc" +#line 1331 "parser.cc" break; - case 50: -#line 487 "parser.yy" + case 52: +#line 497 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN; } -#line 1321 "parser.cc" +#line 1339 "parser.cc" break; - case 51: -#line 491 "parser.yy" + case 53: +#line 501 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE; } -#line 1329 "parser.cc" +#line 1347 "parser.cc" break; - case 52: -#line 495 "parser.yy" + case 54: +#line 505 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR; } -#line 1337 "parser.cc" +#line 1355 "parser.cc" break; - case 53: -#line 499 "parser.yy" + case 55: +#line 509 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR; } -#line 1345 "parser.cc" +#line 1363 "parser.cc" break; - case 54: -#line 503 "parser.yy" + case 56: +#line 513 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR; } -#line 1353 "parser.cc" +#line 1371 "parser.cc" break; - case 55: -#line 507 "parser.yy" + case 57: +#line 517 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR; } -#line 1361 "parser.cc" +#line 1379 "parser.cc" break; - case 56: -#line 511 "parser.yy" + case 58: +#line 521 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE; } -#line 1369 "parser.cc" +#line 1387 "parser.cc" break; - case 57: -#line 515 "parser.yy" + case 59: +#line 525 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID; } -#line 1377 "parser.cc" +#line 1395 "parser.cc" break; - case 58: -#line 521 "parser.yy" + case 60: +#line 531 "parser.yy" { yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE; } -#line 1385 "parser.cc" +#line 1403 "parser.cc" break; - case 59: -#line 525 "parser.yy" + case 61: +#line 535 "parser.yy" { yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID; } -#line 1393 "parser.cc" +#line 1411 "parser.cc" break; - case 60: -#line 531 "parser.yy" + case 62: +#line 541 "parser.yy" { yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR; } -#line 1401 "parser.cc" +#line 1419 "parser.cc" break; - case 61: -#line 535 "parser.yy" + case 63: +#line 545 "parser.yy" { yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR; } -#line 1409 "parser.cc" +#line 1427 "parser.cc" break; - case 62: -#line 541 "parser.yy" + case 64: +#line 551 "parser.yy" { TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(str); } -#line 1418 "parser.cc" +#line 1436 "parser.cc" break; - case 63: -#line 548 "parser.yy" + case 65: +#line 558 "parser.yy" { TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(str); } -#line 1427 "parser.cc" +#line 1445 "parser.cc" break; - case 64: -#line 553 "parser.yy" + case 66: +#line 563 "parser.yy" { TokenPtr str(new TokenString("all")); ctx.expression.push_back(str); } -#line 1436 "parser.cc" +#line 1454 "parser.cc" break; -#line 1440 "parser.cc" +#line 1458 "parser.cc" default: break; @@ -1714,113 +1732,121 @@ namespace isc { namespace eval { const short EvalParser::yypact_[] = { - -14, 27, 76, 17, 27, 27, 37, 41, 53, 39, - 52, 59, 77, 85, 93, 98, 88, 29, 94, -118, - -118, -118, -118, -118, 56, 104, -118, 114, 124, 129, - 119, 120, -118, -118, 7, -118, 87, 87, 67, 95, - 50, 62, 76, 76, 27, 76, 100, -35, 99, -35, - 101, 27, 27, 76, 87, 87, 67, -35, -35, -118, - -118, -118, 131, 133, -118, 134, 147, -118, -118, -118, + 25, 50, -6, 14, 50, 50, 8, 20, 32, 39, + 41, 108, 96, 145, 146, 147, 134, 35, 88, -118, + -118, -118, -118, -118, 85, 9, -118, 137, 138, 139, + 124, 125, -118, -118, 79, -118, 92, 92, 104, 106, + 73, 82, -6, -6, 50, -6, 80, 27, 110, 27, + 111, 50, 50, -6, 92, 92, 104, 27, 27, -118, + -118, -118, 143, 144, -118, 148, 157, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, - -118, -118, 116, 117, -3, 118, -118, -118, -118, -118, - -118, 139, -118, 140, -118, -118, 151, -118, 142, 143, - 144, 145, 146, 148, 149, 150, -118, 112, 76, 76, - 76, 152, 153, 154, 155, 156, 157, 158, 9, 64, - 12, -118, 128, 164, 141, 172, -15, 0, 103, 103, - 36, 132, 170, -118, -118, -118, -118, -118, -118, 165, - -118, -118, -118, -29, -118, 76, -118, -118, 166, 167, - -118, 168, 169, 87, -118, -118, 181, 182, 136, 87, - 87, 87, 173, -118, -118, 174, 175, 176, 177, 171, - -118, 178, 179, 180, 80, 113, 103, 103, -118, -118, - -118, -118 + -118, -118, 126, 127, 0, 129, -118, -118, -118, -118, + -118, 150, -118, 151, -118, -118, 162, -118, 153, 154, + 155, 156, 158, 159, 160, 161, -118, 122, -6, -6, + -6, 163, 164, 165, 166, 167, 168, 169, 7, 98, + 66, -118, 152, 171, 170, 175, -7, 2, 45, 128, + 68, 141, 180, 176, -118, -118, -118, -118, -118, -118, + 177, -118, -118, -118, -27, -118, -6, -118, -118, 178, + 179, -118, 181, 182, 183, 92, 92, -118, -118, 186, + 191, 149, 92, 92, 92, 92, 185, 187, -118, -118, + 188, 189, 192, 193, 194, 190, 195, -118, 196, 197, + 198, 199, 112, 115, 118, 128, 128, 128, -118, -118, + -118, -118, -118, -118 }; const unsigned char EvalParser::yydefact_[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 37, 18, 19, 2, 4, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 39, 19, 20, 2, 4, 0, 38, 0, 0, 0, 0, 0, 3, 1, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, - 38, 39, 0, 0, 42, 0, 0, 43, 44, 45, - 46, 23, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 24, 0, 0, 0, 0, 58, 59, 25, 48, - 47, 0, 32, 0, 31, 7, 8, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 40, 41, 0, 0, 44, 0, 0, 45, 46, 47, + 48, 25, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 26, 0, 0, 0, 0, 60, 61, 27, 50, + 49, 0, 34, 0, 33, 7, 8, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 40, 41, 10, 20, 11, 21, 0, - 60, 61, 26, 0, 28, 0, 30, 13, 34, 0, - 14, 0, 0, 0, 64, 63, 0, 0, 0, 0, - 0, 0, 0, 27, 29, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 12, 22, - 15, 33 + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 42, 43, 10, 21, 12, 23, + 0, 62, 63, 28, 0, 30, 0, 32, 14, 36, + 0, 15, 0, 0, 0, 0, 0, 66, 65, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 22, + 13, 24, 16, 35 }; const short EvalParser::yypgoto_[] = { - -118, -118, -118, 3, -2, -118, -36, -117, 138, -118, - -34, -118, -118, -118, -118, -118 + -118, -118, -118, 5, -2, -118, -36, -117, 172, -118, + -28, -118, -118, -118, -118, -118 }; const short EvalParser::yydefgoto_[] = { - -1, 3, 23, 24, 25, 26, 62, 136, 65, 71, - 91, 81, 88, 142, 122, 156 + -1, 3, 23, 24, 25, 26, 62, 137, 65, 71, + 91, 81, 88, 143, 122, 159 }; const unsigned char EvalParser::yytable_[] = { - 32, 63, 138, 51, 52, 147, 154, 34, 35, 149, - 89, 59, 138, 51, 52, 93, 90, 33, 98, 99, - 150, 139, 155, 101, 102, 140, 141, 133, 134, 135, - 4, 148, 5, 109, 1, 2, 6, 7, 8, 9, - 82, 83, 39, 85, 47, 151, 48, 84, 10, 140, - 141, 97, 36, 11, 95, 96, 37, 179, 181, 179, - 181, 12, 51, 52, 13, 14, 15, 16, 38, 40, - 17, 18, 67, 68, 69, 70, 41, 19, 20, 21, - 42, 22, 133, 134, 137, 27, 28, 29, 43, 72, - 73, 74, 75, 76, 77, 78, 44, 10, 133, 134, - 178, 45, 11, 79, 80, 46, 123, 124, 125, 49, - 12, 50, 53, 13, 14, 15, 16, 162, 64, 30, - 31, 133, 134, 166, 167, 168, 19, 20, 21, 54, - 22, 133, 134, 180, 57, 58, 48, 50, 60, 55, - 61, 86, 87, 157, 56, 66, 92, 103, 94, 104, - 105, 106, 107, 108, 110, 111, 112, 51, 113, 114, - 115, 116, 117, 121, 143, 118, 119, 120, 144, 126, - 127, 128, 129, 130, 131, 132, 146, 145, 148, 152, - 153, 158, 159, 160, 161, 163, 164, 165, 174, 169, - 170, 171, 172, 173, 100, 175, 176, 177 + 32, 63, 139, 27, 28, 29, 51, 52, 157, 34, + 35, 150, 139, 148, 33, 10, 133, 53, 98, 99, + 11, 93, 151, 36, 158, 134, 135, 136, 12, 101, + 102, 13, 14, 15, 16, 37, 109, 30, 31, 149, + 82, 83, 39, 85, 19, 20, 21, 38, 22, 84, + 47, 97, 48, 4, 152, 5, 95, 96, 40, 6, + 7, 8, 9, 134, 135, 189, 191, 193, 189, 191, + 193, 10, 89, 1, 2, 140, 11, 153, 90, 141, + 142, 141, 142, 59, 12, 51, 52, 13, 14, 15, + 16, 51, 52, 17, 18, 67, 68, 69, 70, 42, + 19, 20, 21, 49, 22, 50, 123, 124, 125, 72, + 73, 74, 75, 76, 77, 78, 134, 135, 138, 166, + 167, 86, 87, 79, 80, 41, 171, 172, 173, 174, + 134, 135, 188, 134, 135, 190, 134, 135, 192, 57, + 58, 48, 50, 60, 160, 61, 134, 135, 43, 44, + 45, 46, 54, 55, 56, 64, 66, 92, 94, 103, + 104, 106, 107, 108, 105, 110, 111, 112, 51, 113, + 114, 115, 116, 121, 117, 145, 118, 119, 120, 147, + 126, 127, 128, 129, 130, 131, 132, 149, 144, 154, + 168, 155, 156, 161, 162, 169, 163, 164, 165, 0, + 170, 175, 0, 176, 177, 178, 146, 182, 179, 180, + 181, 0, 183, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 100 }; - const unsigned char + const short EvalParser::yycheck_[] = { - 2, 37, 119, 6, 7, 20, 35, 4, 5, 9, - 45, 4, 129, 6, 7, 49, 51, 0, 54, 55, - 20, 9, 51, 57, 58, 13, 14, 18, 19, 20, - 3, 46, 5, 36, 48, 49, 9, 10, 11, 12, - 42, 43, 3, 45, 15, 9, 17, 44, 21, 13, - 14, 53, 15, 26, 51, 52, 15, 174, 175, 176, - 177, 34, 6, 7, 37, 38, 39, 40, 15, 17, - 43, 44, 22, 23, 24, 25, 17, 50, 51, 52, - 3, 54, 18, 19, 20, 9, 10, 11, 3, 27, - 28, 29, 30, 31, 32, 33, 3, 21, 18, 19, - 20, 3, 26, 41, 42, 17, 108, 109, 110, 15, - 34, 17, 8, 37, 38, 39, 40, 153, 51, 43, - 44, 18, 19, 159, 160, 161, 50, 51, 52, 15, - 54, 18, 19, 20, 15, 15, 17, 17, 51, 15, - 53, 41, 42, 145, 15, 50, 47, 16, 47, 16, - 16, 4, 36, 36, 36, 16, 16, 6, 16, 16, - 16, 16, 16, 51, 36, 17, 17, 17, 4, 17, - 17, 17, 17, 17, 17, 17, 4, 36, 46, 9, - 15, 15, 15, 15, 15, 4, 4, 51, 17, 16, - 16, 16, 16, 16, 56, 17, 17, 17 + 2, 37, 119, 9, 10, 11, 6, 7, 35, 4, + 5, 9, 129, 20, 0, 21, 9, 8, 54, 55, + 26, 49, 20, 15, 51, 18, 19, 20, 34, 57, + 58, 37, 38, 39, 40, 15, 36, 43, 44, 46, + 42, 43, 3, 45, 50, 51, 52, 15, 54, 44, + 15, 53, 17, 3, 9, 5, 51, 52, 17, 9, + 10, 11, 12, 18, 19, 182, 183, 184, 185, 186, + 187, 21, 45, 48, 49, 9, 26, 9, 51, 13, + 14, 13, 14, 4, 34, 6, 7, 37, 38, 39, + 40, 6, 7, 43, 44, 22, 23, 24, 25, 3, + 50, 51, 52, 15, 54, 17, 108, 109, 110, 27, + 28, 29, 30, 31, 32, 33, 18, 19, 20, 155, + 156, 41, 42, 41, 42, 17, 162, 163, 164, 165, + 18, 19, 20, 18, 19, 20, 18, 19, 20, 15, + 15, 17, 17, 51, 146, 53, 18, 19, 3, 3, + 3, 17, 15, 15, 15, 51, 50, 47, 47, 16, + 16, 4, 36, 36, 16, 36, 16, 16, 6, 16, + 16, 16, 16, 51, 16, 4, 17, 17, 17, 4, + 17, 17, 17, 17, 17, 17, 17, 46, 36, 9, + 4, 15, 15, 15, 15, 4, 15, 15, 15, -1, + 51, 16, -1, 16, 16, 16, 36, 17, 16, 16, + 16, -1, 17, 17, 17, 17, 17, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 56 }; const unsigned char @@ -1839,36 +1865,37 @@ namespace isc { namespace eval { 63, 65, 65, 16, 16, 16, 4, 36, 36, 36, 36, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 51, 69, 59, 59, 59, 17, 17, 17, 17, - 17, 17, 17, 18, 19, 20, 62, 20, 62, 9, - 13, 14, 68, 36, 4, 36, 4, 20, 46, 9, - 20, 9, 9, 15, 35, 51, 70, 59, 15, 15, - 15, 15, 61, 4, 4, 51, 61, 61, 61, 16, - 16, 16, 16, 16, 17, 17, 17, 17, 20, 62, - 20, 62 + 17, 17, 17, 9, 18, 19, 20, 62, 20, 62, + 9, 13, 14, 68, 36, 4, 36, 4, 20, 46, + 9, 20, 9, 9, 9, 15, 15, 35, 51, 70, + 59, 15, 15, 15, 15, 15, 61, 61, 4, 4, + 51, 61, 61, 61, 61, 16, 16, 16, 16, 16, + 16, 16, 17, 17, 17, 17, 17, 17, 20, 62, + 20, 62, 20, 62 }; const unsigned char EvalParser::yyr1_[] = { 0, 55, 56, 56, 57, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, + 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 60, 61, 61, - 62, 62, 63, 64, 64, 64, 64, 65, 65, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, - 68, 68, 69, 70, 70 + 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, + 61, 61, 62, 62, 63, 64, 64, 64, 64, 65, + 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 67, 67, 68, 68, 69, 70, 70 }; const unsigned char EvalParser::yyr2_[] = { 0, 2, 2, 2, 1, 3, 2, 3, 3, 3, - 6, 6, 11, 6, 6, 11, 4, 1, 1, 1, - 6, 6, 11, 3, 3, 3, 6, 8, 6, 8, - 6, 3, 3, 11, 6, 9, 1, 1, 1, 1, + 6, 11, 6, 11, 6, 6, 11, 4, 1, 1, + 1, 6, 11, 6, 11, 3, 3, 3, 6, 8, + 6, 8, 6, 3, 3, 11, 6, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1 }; @@ -1900,12 +1927,12 @@ namespace isc { namespace eval { EvalParser::yyrline_[] = { 0, 120, 120, 121, 126, 129, 130, 135, 140, 145, - 150, 155, 175, 189, 198, 207, 217, 234, 239, 244, - 249, 254, 275, 290, 295, 309, 323, 338, 343, 348, - 353, 358, 367, 377, 386, 399, 412, 419, 425, 429, - 435, 439, 445, 454, 458, 462, 466, 472, 476, 482, - 486, 490, 494, 498, 502, 506, 510, 514, 520, 524, - 530, 534, 540, 547, 552 + 150, 155, 160, 180, 194, 203, 212, 222, 239, 244, + 249, 254, 259, 264, 285, 300, 305, 319, 333, 348, + 353, 358, 363, 368, 377, 387, 396, 409, 422, 429, + 435, 439, 445, 449, 455, 464, 468, 472, 476, 482, + 486, 492, 496, 500, 504, 508, 512, 516, 520, 524, + 530, 534, 540, 544, 550, 557, 562 }; // Print the state stack on the debug stream. @@ -1940,9 +1967,9 @@ namespace isc { namespace eval { #line 14 "parser.yy" } } // isc::eval -#line 1944 "parser.cc" +#line 1971 "parser.cc" -#line 559 "parser.yy" +#line 569 "parser.yy" void isc::eval::EvalParser::error(const location_type& loc, diff --git a/src/lib/eval/parser.h b/src/lib/eval/parser.h index c789ce4685..3959db25e5 100644 --- a/src/lib/eval/parser.h +++ b/src/lib/eval/parser.h @@ -1737,7 +1737,7 @@ switch (yytype) // number is the opposite. If YYTABLE_NINF, syntax error. static const unsigned char yytable_[]; - static const unsigned char yycheck_[]; + static const short yycheck_[]; // YYSTOS[STATE-NUM] -- The (internal number of the) accessing // symbol of state STATE-NUM. @@ -1987,7 +1987,7 @@ switch (yytype) enum { yyeof_ = 0, - yylast_ = 197, ///< Last index in yytable_. + yylast_ = 228, ///< Last index in yytable_. yynnts_ = 16, ///< Number of nonterminal symbols. yyfinal_ = 33, ///< Termination state number. yyterror_ = 1, diff --git a/src/lib/eval/position.hh b/src/lib/eval/position.hh index 160393c15e..c1280f1a34 100644 --- a/src/lib/eval/position.hh +++ b/src/lib/eval/position.hh @@ -1,4 +1,3 @@ -// Generated 201906181714 // A Bison parser, made by GNU Bison 3.4.1. // Starting with Bison 3.2, this file is useless: the structure it diff --git a/src/lib/eval/stack.hh b/src/lib/eval/stack.hh index 958da53ee1..0f7aafe529 100644 --- a/src/lib/eval/stack.hh +++ b/src/lib/eval/stack.hh @@ -1,4 +1,3 @@ -// Generated 201906181714 // A Bison parser, made by GNU Bison 3.4.1. // Starting with Bison 3.2, this file is useless: the structure it