/* A lexical scanner generated by flex */
/* %not-for-header */
+
/* %if-c-only */
/* %if-not-reentrant */
#define yy_create_buffer agent__create_buffer
#define yy_delete_buffer agent__delete_buffer
-#define yy_scan_buffer agent__scan_buffer
-#define yy_scan_string agent__scan_string
-#define yy_scan_bytes agent__scan_bytes
+#define yy_flex_debug agent__flex_debug
#define yy_init_buffer agent__init_buffer
#define yy_flush_buffer agent__flush_buffer
#define yy_load_buffer_state agent__load_buffer_state
#define yy_switch_to_buffer agent__switch_to_buffer
-#define yypush_buffer_state agent_push_buffer_state
-#define yypop_buffer_state agent_pop_buffer_state
-#define yyensure_buffer_stack agent_ensure_buffer_stack
-#define yy_flex_debug agent__flex_debug
#define yyin agent_in
#define yyleng agent_leng
#define yylex agent_lex
#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
/* %endif */
/* %if-c-only */
-#ifdef yy_create_buffer
-#define agent__create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer agent__create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define agent__delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer agent__delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define agent__scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer agent__scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define agent__scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string agent__scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define agent__scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes agent__scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define agent__init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer agent__init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define agent__flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer agent__flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define agent__load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state agent__load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define agent__switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer agent__switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define agent_push_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state agent_push_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define agent_pop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state agent_pop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define agent_ensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack agent_ensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define agent_lex_ALREADY_DEFINED
-#else
-#define yylex agent_lex
-#endif
-
-#ifdef yyrestart
-#define agent_restart_ALREADY_DEFINED
-#else
-#define yyrestart agent_restart
-#endif
-
-#ifdef yylex_init
-#define agent_lex_init_ALREADY_DEFINED
-#else
-#define yylex_init agent_lex_init
-#endif
-
-#ifdef yylex_init_extra
-#define agent_lex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra agent_lex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define agent_lex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy agent_lex_destroy
-#endif
-
-#ifdef yyget_debug
-#define agent_get_debug_ALREADY_DEFINED
-#else
-#define yyget_debug agent_get_debug
-#endif
-
-#ifdef yyset_debug
-#define agent_set_debug_ALREADY_DEFINED
-#else
-#define yyset_debug agent_set_debug
-#endif
-
-#ifdef yyget_extra
-#define agent_get_extra_ALREADY_DEFINED
-#else
-#define yyget_extra agent_get_extra
-#endif
-
-#ifdef yyset_extra
-#define agent_set_extra_ALREADY_DEFINED
-#else
-#define yyset_extra agent_set_extra
-#endif
-
-#ifdef yyget_in
-#define agent_get_in_ALREADY_DEFINED
-#else
-#define yyget_in agent_get_in
-#endif
-
-#ifdef yyset_in
-#define agent_set_in_ALREADY_DEFINED
-#else
-#define yyset_in agent_set_in
-#endif
-
-#ifdef yyget_out
-#define agent_get_out_ALREADY_DEFINED
-#else
-#define yyget_out agent_get_out
-#endif
-
-#ifdef yyset_out
-#define agent_set_out_ALREADY_DEFINED
-#else
-#define yyset_out agent_set_out
-#endif
-
-#ifdef yyget_leng
-#define agent_get_leng_ALREADY_DEFINED
-#else
-#define yyget_leng agent_get_leng
-#endif
-
-#ifdef yyget_text
-#define agent_get_text_ALREADY_DEFINED
-#else
-#define yyget_text agent_get_text
-#endif
-
-#ifdef yyget_lineno
-#define agent_get_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno agent_get_lineno
-#endif
-
-#ifdef yyset_lineno
-#define agent_set_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno agent_set_lineno
-#endif
-
-#ifdef yywrap
-#define agent_wrap_ALREADY_DEFINED
-#else
-#define yywrap agent_wrap
-#endif
-
+
/* %endif */
-#ifdef yyalloc
-#define agent_alloc_ALREADY_DEFINED
-#else
-#define yyalloc agent_alloc
-#endif
-
-#ifdef yyrealloc
-#define agent_realloc_ALREADY_DEFINED
-#else
-#define yyrealloc agent_realloc
-#endif
-
-#ifdef yyfree
-#define agent_free_ALREADY_DEFINED
-#else
-#define yyfree agent_free
-#endif
-
/* %if-c-only */
-#ifdef yytext
-#define agent_text_ALREADY_DEFINED
-#else
-#define yytext agent_text
-#endif
-
-#ifdef yyleng
-#define agent_leng_ALREADY_DEFINED
-#else
-#define yyleng agent_leng
-#endif
-
-#ifdef yyin
-#define agent_in_ALREADY_DEFINED
-#else
-#define yyin agent_in
-#endif
-
-#ifdef yyout
-#define agent_out_ALREADY_DEFINED
-#else
-#define yyout agent_out
-#endif
-
-#ifdef yy_flex_debug
-#define agent__flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug agent__flex_debug
-#endif
-
-#ifdef yylineno
-#define agent_lineno_ALREADY_DEFINED
-#else
-#define yylineno agent_lineno
-#endif
-
/* %endif */
/* First, we deal with platform-specific or compiler-specific issues. */
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;
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
#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 */
* 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 agent_restart(agent_in )
+
#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.
#endif
/* %if-not-reentrant */
-extern int yyleng;
+extern yy_size_t agent_leng;
/* %endif */
/* %if-c-only */
/* %if-not-reentrant */
-extern FILE *yyin, *yyout;
+extern FILE *agent_in, *agent_out;
/* %endif */
/* %endif */
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
-
+
#define YY_LESS_LINENO(n)
- #define YY_LINENO_REWIND_TO(ptr)
/* 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 agent_text. */ \
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 agent_text again */ \
} \
while ( 0 )
+
#define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_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
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.
*/
* 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 agent_restart()), so that the user can continue scanning by
+ * just pointing agent_in at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
/* %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 */
#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.
*/
/* %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 agent_text 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 agent_leng;
/* 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 agent_wrap()'s to do buffer switches
+ * instead of setting up a fresh agent_in. 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 agent_restart (FILE *input_file );
+void agent__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE agent__create_buffer (FILE *file,int size );
+void agent__delete_buffer (YY_BUFFER_STATE b );
+void agent__flush_buffer (YY_BUFFER_STATE b );
+void agent_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void agent_pop_buffer_state (void );
-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 )
+static void agent_ensure_buffer_stack (void );
+static void agent__load_buffer_state (void );
+static void agent__init_buffer (YY_BUFFER_STATE b,FILE *file );
-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 );
+#define YY_FLUSH_BUFFER agent__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE agent__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE agent__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE agent__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 *agent_alloc (yy_size_t );
+void *agent_realloc (void *,yy_size_t );
+void agent_free (void * );
+
+#define yy_new_buffer agent__create_buffer
-#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
if ( ! YY_CURRENT_BUFFER ){ \
- yyensure_buffer_stack (); \
+ agent_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ agent__create_buffer(agent_in,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 (); \
+ agent_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ agent__create_buffer(agent_in,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] agent_text/agent_in/agent_out/yy_state_type/agent_lineno etc. def's & init go here */
/* Begin user sect3 */
-#define agent_wrap() (/*CONSTCOND*/1)
+#define agent_wrap(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 *agent_in = (FILE *) 0, *agent_out = (FILE *) 0;
typedef int yy_state_type;
-extern int yylineno;
-int yylineno = 1;
+extern int agent_lineno;
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
+int agent_lineno = 1;
-/* %% [1.5] DFA */
+extern char *agent_text;
+#define yytext_ptr agent_text
/* %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 agent_text.
*/
#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 agent_text and agent_leng for yymore() goes here \ */\
+ agent_leng = (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 agent_text[] 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 59
#define YY_END_OF_BUFFER 60
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[326] =
+static yyconst flex_int16_t yy_accept[326] =
{ 0,
52, 52, 0, 0, 0, 0, 0, 0, 0, 0,
60, 58, 10, 11, 58, 1, 52, 49, 52, 52,
0, 30, 17, 24, 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, 2, 1, 1, 1, 1, 1, 1, 1,
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[63] =
+static yyconst flex_int32_t yy_meta[63] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
3, 3, 3, 5, 5, 5, 5, 3, 3, 3,
3, 3
} ;
-static const flex_int16_t yy_base[338] =
+static yyconst flex_int16_t yy_base[338] =
{ 0,
0, 0, 61, 64, 67, 0, 65, 69, 49, 66,
277, 2165, 86, 269, 129, 0, 124, 2165, 172, 129,
2151, 2156, 2159, 132, 128, 121, 111
} ;
-static const flex_int16_t yy_def[338] =
+static yyconst flex_int16_t yy_def[338] =
{ 0,
325, 1, 326, 326, 1, 5, 5, 5, 5, 5,
325, 325, 325, 325, 327, 328, 325, 325, 325, 325,
325, 325, 325, 325, 325, 325, 325
} ;
-static const flex_int16_t yy_nxt[2228] =
+static yyconst flex_int16_t yy_nxt[2228] =
{ 0,
12, 13, 14, 13, 12, 15, 16, 12, 17, 18,
19, 20, 21, 22, 22, 22, 22, 23, 24, 12,
325, 325, 325, 325, 325, 325, 325
} ;
-static const flex_int16_t yy_chk[2228] =
+static yyconst flex_int16_t yy_chk[2228] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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 agent__flex_debug;
+int agent__flex_debug = 1;
-static const flex_int16_t yy_rule_linenum[59] =
+static yyconst flex_int16_t yy_rule_linenum[59] =
{ 0,
- 133, 135, 137, 142, 143, 148, 149, 150, 162, 165,
- 170, 177, 186, 195, 204, 215, 226, 235, 244, 253,
- 262, 271, 280, 289, 298, 307, 316, 325, 335, 344,
- 353, 362, 371, 380, 389, 398, 407, 416, 425, 434,
- 443, 542, 547, 552, 557, 558, 559, 560, 561, 562,
- 564, 582, 595, 600, 604, 606, 608, 610
+ 132, 134, 136, 141, 142, 147, 148, 149, 161, 164,
+ 169, 176, 185, 194, 203, 214, 225, 234, 243, 252,
+ 261, 270, 279, 288, 297, 306, 315, 324, 334, 343,
+ 352, 361, 370, 379, 388, 397, 406, 415, 424, 433,
+ 442, 541, 546, 551, 556, 557, 558, 559, 560, 561,
+ 563, 581, 594, 599, 603, 605, 607, 609
} ;
/* The intent behind this definition is that it'll catch
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *agent_text;
#line 1 "agent_lexer.ll"
/* Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
2.5.31 through 2.5.33): it generates code that does
not conform to C89. See Debian bug 333231
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
-# undef yywrap
-# define yywrap() 1
+# undef agent_wrap
+# define agent_wrap() 1
namespace {
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
-#line 1435 "agent_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 agent_wrap requires linking with -lfl, which provides the default agent_wrap
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. */
/* avoid to get static global variables to remain with C++. */
/* in last resort %option reentrant */
/* Enables debug mode. To see the debug messages, one needs to also set
- yy_flex_debug to 1, then the debug messages will be printed on stderr. */
+ agent__flex_debug to 1, then the debug messages will be printed on stderr. */
/* I have no idea what this option does, except it was specified in the bison
examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
be on the safe side and keep it. */
#define YY_NO_INPUT 1
+
/* These are not token expressions yet, just convenience expressions that
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
#line 96 "agent_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 agent_leng bytes. agent_leng specifies the length of the
currently matched token. */
-#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1461 "agent_lexer.cc"
-#line 1462 "agent_lexer.cc"
+#define YY_USER_ACTION driver.loc_.columns(agent_leng);
+#line 1235 "agent_lexer.cc"
#define INITIAL 0
#define COMMENT 1
/* %if-reentrant */
/* %if-c-only */
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
/* %endif */
/* %if-reentrant */
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
-int yylex_destroy ( void );
+int agent_lex_destroy (void );
-int yyget_debug ( void );
+int agent_get_debug (void );
-void yyset_debug ( int debug_flag );
+void agent_set_debug (int debug_flag );
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE agent_get_extra (void );
-void yyset_extra ( YY_EXTRA_TYPE user_defined );
+void agent_set_extra (YY_EXTRA_TYPE user_defined );
-FILE *yyget_in ( void );
+FILE *agent_get_in (void );
-void yyset_in ( FILE * _in_str );
+void agent_set_in (FILE * in_str );
-FILE *yyget_out ( void );
+FILE *agent_get_out (void );
-void yyset_out ( FILE * _out_str );
+void agent_set_out (FILE * out_str );
- int yyget_leng ( void );
+yy_size_t agent_get_leng (void );
-char *yyget_text ( void );
+char *agent_get_text (void );
-int yyget_lineno ( void );
+int agent_get_lineno (void );
-void yyset_lineno ( int _line_number );
+void agent_set_lineno (int line_number );
/* %if-bison-bridge */
/* %endif */
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int agent_wrap (void );
#else
-extern int yywrap ( void );
+extern int agent_wrap (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 */
/* 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. */
/* 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( agent_text, agent_leng, 1, agent_out )
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
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( agent_in )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
if ( c == '\n' ) \
buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
+ if ( c == EOF && ferror( agent_in ) ) \
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, agent_in))==0 && ferror(agent_in)) \
{ \
if( errno != EINTR) \
{ \
break; \
} \
errno=0; \
- clearerr(yyin); \
+ clearerr(agent_in); \
} \
}\
\
/* %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 */
#define YY_DECL_IS_OURS 1
/* %if-c-only Standard (non-C++) definition */
-extern int yylex (void);
+extern int agent_lex (void);
-#define YY_DECL int yylex (void)
+#define YY_DECL int agent_lex (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 agent_text and agent_leng
* have been set up.
*/
#ifndef YY_USER_ACTION
/* 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 */
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;
- if ( !(yy_init) )
- {
- (yy_init) = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
-
- if ( ! yyin )
-/* %if-c-only */
- yyin = stdin;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! yyout )
-/* %if-c-only */
- yyout = stdout;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! YY_CURRENT_BUFFER ) {
- yyensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
- }
-
- yy_load_buffer_state( );
- }
-
- {
/* %% [7.0] user's declarations go here */
#line 102 "agent_lexer.ll"
-#line 106 "agent_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
- of the generated yylex function. Explanation:
+ of the generated agent_lex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
- /* Code run each time yylex is called. */
+ /* Code run each time agent_lex is called. */
driver.loc_.step();
/* We currently have 3 points of entries defined:
}
-#line 1776 "agent_lexer.cc"
+#line 1510 "agent_lexer.cc"
- while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! agent_in )
+/* %if-c-only */
+ agent_in = stdin;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! agent_out )
+/* %if-c-only */
+ agent_out = stdout;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ agent_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ agent__create_buffer(agent_in,YY_BUF_SIZE );
+ }
+
+ agent__load_buffer_state( );
+ }
+
+ 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 agent_text. */
*yy_cp = (yy_hold_char);
/* yy_bp points to the position in yy_ch_buf of the start of
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 326 )
- 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 != 325 );
YY_DO_BEFORE_ACTION;
-/* %% [11.0] code for yylineno update goes here */
+/* %% [11.0] code for agent_lineno update goes here */
do_action: /* This label is used only to access EOF actions. */
/* %% [12.0] debug code goes here */
- if ( yy_flex_debug )
+ if ( agent__flex_debug )
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
else if ( yy_act < 59 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
- (long)yy_rule_linenum[yy_act], yytext );
+ (long)yy_rule_linenum[yy_act], agent_text );
else if ( yy_act == 59 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
- yytext );
+ agent_text );
else if ( yy_act == 60 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
case 1:
YY_RULE_SETUP
-#line 133 "agent_lexer.ll"
+#line 132 "agent_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 135 "agent_lexer.ll"
+#line 134 "agent_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 137 "agent_lexer.ll"
+#line 136 "agent_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 142 "agent_lexer.ll"
+#line 141 "agent_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 143 "agent_lexer.ll"
+#line 142 "agent_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 144 "agent_lexer.ll"
+#line 143 "agent_lexer.ll"
{
isc_throw(ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 148 "agent_lexer.ll"
+#line 147 "agent_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 149 "agent_lexer.ll"
+#line 148 "agent_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 150 "agent_lexer.ll"
+#line 149 "agent_lexer.ll"
{
/* Include directive. */
/* Extract the filename. */
- std::string tmp(yytext+1);
+ std::string tmp(agent_text+1);
tmp.resize(tmp.size() - 1);
driver.includeFile(tmp);
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 159 "agent_lexer.ll"
+#line 158 "agent_lexer.ll"
{
isc_throw(ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 162 "agent_lexer.ll"
+#line 161 "agent_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 165 "agent_lexer.ll"
+#line 164 "agent_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 170 "agent_lexer.ll"
+#line 169 "agent_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
- driver.loc_.lines(yyleng);
+ driver.loc_.lines(agent_leng);
driver.loc_.step();
}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 177 "agent_lexer.ll"
+#line 176 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 186 "agent_lexer.ll"
+#line 185 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 195 "agent_lexer.ll"
+#line 194 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 204 "agent_lexer.ll"
+#line 203 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 215 "agent_lexer.ll"
+#line 214 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 226 "agent_lexer.ll"
+#line 225 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 235 "agent_lexer.ll"
+#line 234 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKETS:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 244 "agent_lexer.ll"
+#line 243 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKETS:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 253 "agent_lexer.ll"
+#line 252 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKETS:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 262 "agent_lexer.ll"
+#line 261 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SERVER:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 271 "agent_lexer.ll"
+#line 270 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SERVER:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 280 "agent_lexer.ll"
+#line 279 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SOCKET_TYPE:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 289 "agent_lexer.ll"
+#line 288 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 298 "agent_lexer.ll"
+#line 297 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::HOOKS_LIBRARIES:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 307 "agent_lexer.ll"
+#line 306 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::HOOKS_LIBRARIES:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 316 "agent_lexer.ll"
+#line 315 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 325 "agent_lexer.ll"
+#line 324 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 335 "agent_lexer.ll"
+#line 334 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 344 "agent_lexer.ll"
+#line 343 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 353 "agent_lexer.ll"
+#line 352 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 362 "agent_lexer.ll"
+#line 361 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 371 "agent_lexer.ll"
+#line 370 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 380 "agent_lexer.ll"
+#line 379 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 389 "agent_lexer.ll"
+#line 388 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 398 "agent_lexer.ll"
+#line 397 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 407 "agent_lexer.ll"
+#line 406 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 416 "agent_lexer.ll"
+#line 415 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 425 "agent_lexer.ll"
+#line 424 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 434 "agent_lexer.ll"
+#line 433 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 443 "agent_lexer.ll"
+#line 442 "agent_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.
for 'foo' we should get foo */
- std::string raw(yytext+1);
+ std::string raw(agent_text+1);
size_t len = raw.size() - 1;
raw.resize(len);
std::string decoded;
case 42:
/* rule 42 can match eol */
YY_RULE_SETUP
-#line 542 "agent_lexer.ll"
+#line 541 "agent_lexer.ll"
{
/* Bad string with a forbidden control character inside */
- driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
+ driver.error(driver.loc_, "Invalid control in " + std::string(agent_text));
}
YY_BREAK
case 43:
/* rule 43 can match eol */
YY_RULE_SETUP
-#line 547 "agent_lexer.ll"
+#line 546 "agent_lexer.ll"
{
/* Bad string with a bad escape inside */
- driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Bad escape in " + std::string(agent_text));
}
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 552 "agent_lexer.ll"
+#line 551 "agent_lexer.ll"
{
/* Bad string with an open escape at the end */
- driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Overflow escape in " + std::string(agent_text));
}
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 557 "agent_lexer.ll"
+#line 556 "agent_lexer.ll"
{ return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 558 "agent_lexer.ll"
+#line 557 "agent_lexer.ll"
{ return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 559 "agent_lexer.ll"
+#line 558 "agent_lexer.ll"
{ return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 560 "agent_lexer.ll"
+#line 559 "agent_lexer.ll"
{ return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 561 "agent_lexer.ll"
+#line 560 "agent_lexer.ll"
{ return AgentParser::make_COMMA(driver.loc_); }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 562 "agent_lexer.ll"
+#line 561 "agent_lexer.ll"
{ return AgentParser::make_COLON(driver.loc_); }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 564 "agent_lexer.ll"
+#line 563 "agent_lexer.ll"
{
/* An integer was found. */
- std::string tmp(yytext);
+ std::string tmp(agent_text);
int64_t integer = 0;
try {
/* In substring we want to use negative values (e.g. -1).
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 582 "agent_lexer.ll"
+#line 581 "agent_lexer.ll"
{
/* A floating point was found. */
- std::string tmp(yytext);
+ std::string tmp(agent_text);
double fp = 0.0;
try {
fp = boost::lexical_cast<double>(tmp);
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 595 "agent_lexer.ll"
+#line 594 "agent_lexer.ll"
{
- string tmp(yytext);
+ string tmp(agent_text);
return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 600 "agent_lexer.ll"
+#line 599 "agent_lexer.ll"
{
return AgentParser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 604 "agent_lexer.ll"
+#line 603 "agent_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 606 "agent_lexer.ll"
+#line 605 "agent_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 608 "agent_lexer.ll"
+#line 607 "agent_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 610 "agent_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 609 "agent_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(agent_text));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 612 "agent_lexer.ll"
+#line 611 "agent_lexer.ll"
{
if (driver.states_.empty()) {
return AgentParser::make_END(driver.loc_);
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 635 "agent_lexer.ll"
+#line 634 "agent_lexer.ll"
ECHO;
YY_BREAK
-#line 2553 "agent_lexer.cc"
+#line 2321 "agent_lexer.cc"
case YY_END_OF_BUFFER:
{
{
/* 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 agent_in at a new source and called
+ * agent_lex(). 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 = agent_in;
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
{
(yy_did_buffer_switch_on_eof) = 0;
- if ( yywrap( ) )
+ if ( agent_wrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
- * yytext, we can now set up
+ * agent_text, 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
"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 agent_lex */
/* %ok-for-header */
/* %if-c++-only */
/* %not-for-header */
+
/* %ok-for-header */
/* %endif */
/* %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] )
/* 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++);
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;
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) );
+ agent_realloc((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(
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
+ agent_restart(agent_in );
}
else
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 *) agent_realloc((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;
/* %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);
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 326 )
- 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;
/* %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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 326 )
- 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 == 325);
- 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
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( ) )
*/
/* Reset buffer status. */
- yyrestart( yyin );
+ agent_restart(agent_in );
/*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
- if ( yywrap( ) )
+ if ( agent_wrap( ) )
return 0;
if ( ! (yy_did_buffer_switch_on_eof) )
}
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 agent_text */
(yy_hold_char) = *++(yy_c_buf_p);
-/* %% [19.0] update BOL and yylineno */
+/* %% [19.0] update BOL and agent_lineno */
return c;
}
* @note This function does not reset the start condition to @c INITIAL .
*/
/* %if-c-only */
- void yyrestart (FILE * input_file )
+ void agent_restart (FILE * input_file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! YY_CURRENT_BUFFER ){
- yyensure_buffer_stack ();
+ agent_ensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
+ agent__create_buffer(agent_in,YY_BUF_SIZE );
}
- yy_init_buffer( YY_CURRENT_BUFFER, input_file );
- yy_load_buffer_state( );
+ agent__init_buffer(YY_CURRENT_BUFFER,input_file );
+ agent__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 agent__switch_to_buffer (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
/* TODO. We should be able to replace this entire function body
* with
- * yypop_buffer_state();
- * yypush_buffer_state(new_buffer);
+ * agent_pop_buffer_state();
+ * agent_push_buffer_state(new_buffer);
*/
- yyensure_buffer_stack ();
+ agent_ensure_buffer_stack ();
if ( YY_CURRENT_BUFFER == new_buffer )
return;
}
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state( );
+ agent__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 (agent_wrap()) processing, but the only time this flag
+ * is looked at is after agent_wrap() 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 agent__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 */
+ agent_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
(yy_hold_char) = *(yy_c_buf_p);
}
* @return the allocated buffer state.
*/
/* %if-c-only */
- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+ YY_BUFFER_STATE agent__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) agent_alloc(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 agent__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 *) agent_alloc(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 agent__create_buffer()" );
b->yy_is_our_buffer = 1;
- yy_init_buffer( b, file );
+ agent__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 agent__create_buffer()
*
*/
/* %if-c-only */
- void yy_delete_buffer (YY_BUFFER_STATE b )
+ void agent__delete_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- yyfree( (void *) b->yy_ch_buf );
+ agent_free((void *) b->yy_ch_buf );
- yyfree( (void *) b );
+ agent_free((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 agent_restart() or at EOF.
*/
/* %if-c-only */
- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+ static void agent__init_buffer (YY_BUFFER_STATE b, FILE * file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
int oerrno = errno;
- yy_flush_buffer( b );
+ agent__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 agent__init_buffer was _probably_
+ * called from agent_restart() or through yy_get_next_buffer.
* In that case, we don't want to reset the lineno or column.
*/
if (b != YY_CURRENT_BUFFER){
*
*/
/* %if-c-only */
- void yy_flush_buffer (YY_BUFFER_STATE b )
+ void agent__flush_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state( );
+ agent__load_buffer_state( );
}
/* %if-c-or-c++ */
*
*/
/* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void agent_push_buffer_state (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
if (new_buffer == NULL)
return;
- yyensure_buffer_stack();
+ agent_ensure_buffer_stack();
- /* This block is copied from yy_switch_to_buffer. */
+ /* This block is copied from agent__switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
(yy_buffer_stack_top)++;
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- /* copied from yy_switch_to_buffer. */
- yy_load_buffer_state( );
+ /* copied from agent__switch_to_buffer. */
+ agent__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/* %endif */
*
*/
/* %if-c-only */
-void yypop_buffer_state (void)
+void agent_pop_buffer_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
if (!YY_CURRENT_BUFFER)
return;
- yy_delete_buffer(YY_CURRENT_BUFFER );
+ agent__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( );
+ agent__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
}
* Guarantees space for at least one push.
*/
/* %if-c-only */
-static void yyensure_buffer_stack (void)
+static void agent_ensure_buffer_stack (void)
/* %endif */
/* %if-c++-only */
/* %endif */
* 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**)agent_alloc
(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 agent_ensure_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;
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**)agent_realloc
((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 agent_ensure_buffer_stack()" );
/* zero only the new slots.*/
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
* @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 agent__scan_buffer (char * base, yy_size_t size )
{
YY_BUFFER_STATE b;
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) agent_alloc(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 agent__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 );
+ agent__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 agent_lex() 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.
+ * agent__scan_bytes() instead.
*/
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE agent__scan_string (yyconst char * yystr )
{
- return yy_scan_bytes( yystr, (int) strlen(yystr) );
+ return agent__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 agent_lex() 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 agent__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 *) agent_alloc(n );
if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "out of dynamic memory in agent__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 = agent__scan_buffer(buf,n );
if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "bad buffer in agent__scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
#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 */
#define yyless(n) \
do \
{ \
- /* Undo effects of setting up yytext. */ \
+ /* Undo effects of setting up agent_text. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
- yytext[yyleng] = (yy_hold_char); \
- (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ agent_text[agent_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = agent_text + yyless_macro_arg; \
(yy_hold_char) = *(yy_c_buf_p); \
*(yy_c_buf_p) = '\0'; \
- yyleng = yyless_macro_arg; \
+ agent_leng = yyless_macro_arg; \
} \
while ( 0 )
/** Get the current line number.
*
*/
-int yyget_lineno (void)
+int agent_get_lineno (void)
{
-
- return yylineno;
+
+ return agent_lineno;
}
/** Get the input stream.
*
*/
-FILE *yyget_in (void)
+FILE *agent_get_in (void)
{
- return yyin;
+ return agent_in;
}
/** Get the output stream.
*
*/
-FILE *yyget_out (void)
+FILE *agent_get_out (void)
{
- return yyout;
+ return agent_out;
}
/** Get the length of the current token.
*
*/
-int yyget_leng (void)
+yy_size_t agent_get_leng (void)
{
- return yyleng;
+ return agent_leng;
}
/** Get the current token.
*
*/
-char *yyget_text (void)
+char *agent_get_text (void)
{
- return yytext;
+ return agent_text;
}
/* %if-reentrant */
/* %endif */
/** Set the current line number.
- * @param _line_number line number
+ * @param line_number
*
*/
-void yyset_lineno (int _line_number )
+void agent_set_lineno (int line_number )
{
- yylineno = _line_number;
+ agent_lineno = 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 agent__switch_to_buffer
*/
-void yyset_in (FILE * _in_str )
+void agent_set_in (FILE * in_str )
{
- yyin = _in_str ;
+ agent_in = in_str ;
}
-void yyset_out (FILE * _out_str )
+void agent_set_out (FILE * out_str )
{
- yyout = _out_str ;
+ agent_out = out_str ;
}
-int yyget_debug (void)
+int agent_get_debug (void)
{
- return yy_flex_debug;
+ return agent__flex_debug;
}
-void yyset_debug (int _bdebug )
+void agent_set_debug (int bdebug )
{
- yy_flex_debug = _bdebug ;
+ agent__flex_debug = bdebug ;
}
/* %endif */
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 agent_lex_destroy(), so don't allocate here.
*/
- (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;
+ agent_in = stdin;
+ agent_out = stdout;
#else
- yyin = NULL;
- yyout = NULL;
+ agent_in = (FILE *) 0;
+ agent_out = (FILE *) 0;
#endif
/* For future reference: Set errno on error, since we are called by
- * yylex_init()
+ * agent_lex_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)
+/* agent_lex_destroy is for both reentrant and non-reentrant scanners. */
+int agent_lex_destroy (void)
{
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
- yy_delete_buffer( YY_CURRENT_BUFFER );
+ agent__delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
- yypop_buffer_state();
+ agent_pop_buffer_state();
}
/* Destroy the stack itself. */
- yyfree((yy_buffer_stack) );
+ agent_free((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. */
+ * agent_lex() is called, initialization will occur. */
yy_init_globals( );
/* %if-reentrant */
*/
#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 )
;
}
#endif
-void *yyalloc (yy_size_t size )
+void *agent_alloc (yy_size_t size )
{
- return malloc(size);
+ return (void *) malloc( size );
}
-void *yyrealloc (void * ptr, yy_size_t size )
+void *agent_realloc (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
* 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 agent_free (void * ptr )
{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+ free( (char *) ptr ); /* see agent_realloc() for (char *) cast */
}
/* %if-tables-serialization definitions */
/* %ok-for-header */
-#line 635 "agent_lexer.ll"
+#line 634 "agent_lexer.ll"
+
using namespace isc::dhcp;
file_ = "<string>";
sfile_ = 0;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ agent__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
buffer = agent__scan_bytes(str.c_str(), str.size());
if (!buffer) {
file_ = filename;
sfile_ = f;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ agent__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
/* See agent_lexer.cc header for available definitions */
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// Unqualified %code blocks.
-#line 33 "agent_parser.yy" // lalr1.cc:438
+#line 33 "agent_parser.yy"
#include <agent/parser_context.h>
-#line 51 "agent_parser.cc" // lalr1.cc:438
+#line 51 "agent_parser.cc"
#ifndef YY_
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
- while (/*CONSTCOND*/ false)
+ while (false)
# endif
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "agent_parser.yy" // lalr1.cc:513
+#line 14 "agent_parser.yy"
namespace isc { namespace agent {
-#line 146 "agent_parser.cc" // lalr1.cc:513
+#line 146 "agent_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
{
if (*yystr == '"')
{
- std::string yyr = "";
+ std::string yyr;
char const *yyp = yystr;
for (;;)
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- // Fall through.
+ else
+ goto append;
+
+ append:
default:
yyr += *yyp;
break;
AgentParser::~AgentParser ()
{}
+ AgentParser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+ {}
/*---------------.
| Symbol types. |
// by_state.
- AgentParser::by_state::by_state ()
+ AgentParser::by_state::by_state () YY_NOEXCEPT
: state (empty_state)
{}
- AgentParser::by_state::by_state (const by_state& other)
- : state (other.state)
+ AgentParser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+ : state (that.state)
{}
void
- AgentParser::by_state::clear ()
+ AgentParser::by_state::clear () YY_NOEXCEPT
{
state = empty_state;
}
that.clear ();
}
- AgentParser::by_state::by_state (state_type s)
+ AgentParser::by_state::by_state (state_type s) YY_NOEXCEPT
: state (s)
{}
AgentParser::symbol_number_type
- AgentParser::by_state::type_get () const
+ AgentParser::by_state::type_get () const YY_NOEXCEPT
{
if (state == empty_state)
return empty_symbol;
break;
}
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
// that is emptied.
that.state = empty_state;
#endif
that.type = empty_symbol;
}
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
AgentParser::stack_symbol_type&
AgentParser::stack_symbol_type::operator= (stack_symbol_type& that)
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
+#endif
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
switch (yytype)
{
- case 42: // "constant string"
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< std::string > (); }
-#line 386 "agent_parser.cc" // lalr1.cc:672
+ case 42: // "constant string"
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < std::string > (); }
+#line 393 "agent_parser.cc"
break;
case 43: // "integer"
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< int64_t > (); }
-#line 393 "agent_parser.cc" // lalr1.cc:672
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < int64_t > (); }
+#line 399 "agent_parser.cc"
break;
case 44: // "floating point"
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< double > (); }
-#line 400 "agent_parser.cc" // lalr1.cc:672
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < double > (); }
+#line 405 "agent_parser.cc"
break;
case 45: // "boolean"
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< bool > (); }
-#line 407 "agent_parser.cc" // lalr1.cc:672
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < bool > (); }
+#line 411 "agent_parser.cc"
break;
case 54: // value
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 414 "agent_parser.cc" // lalr1.cc:672
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 417 "agent_parser.cc"
break;
case 57: // map_value
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 421 "agent_parser.cc" // lalr1.cc:672
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 423 "agent_parser.cc"
break;
case 108: // socket_type_value
-
-#line 104 "agent_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 428 "agent_parser.cc" // lalr1.cc:672
+#line 104 "agent_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 429 "agent_parser.cc"
break;
-
default:
break;
}
void
AgentParser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
{
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
yypush_ (m, stack_symbol_type (s, std::move (sym)));
#else
stack_symbol_type ss (s, sym);
yystack_.clear ();
yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
- // A new symbol was pushed on the stack.
+ /*-----------------------------------------------.
+ | yynewstate -- push a new symbol on the stack. |
+ `-----------------------------------------------*/
yynewstate:
YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
+ YYACCEPT;
goto yybackup;
- // Backup.
+
+ /*-----------.
+ | yybackup. |
+ `-----------*/
yybackup:
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
goto yyerrlab1;
}
yypush_ ("Shifting", yyn, YY_MOVE (yyla));
goto yynewstate;
+
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
goto yyerrlab;
goto yyreduce;
+
/*-----------------------------.
- | yyreduce -- Do a reduction. |
+ | yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
// Default location.
{
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ stack_type::slice range (yystack_, yylen);
+ YYLLOC_DEFAULT (yylhs.location, range, yylen);
yyerror_range[1].location = yylhs.location;
}
switch (yyn)
{
case 2:
-#line 115 "agent_parser.yy" // lalr1.cc:907
+#line 115 "agent_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORDS; }
-#line 683 "agent_parser.cc" // lalr1.cc:907
+#line 691 "agent_parser.cc"
break;
case 4:
-#line 116 "agent_parser.yy" // lalr1.cc:907
+#line 116 "agent_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 689 "agent_parser.cc" // lalr1.cc:907
+#line 697 "agent_parser.cc"
break;
case 6:
-#line 117 "agent_parser.yy" // lalr1.cc:907
+#line 117 "agent_parser.yy"
{ ctx.ctx_ = ctx.AGENT; }
-#line 695 "agent_parser.cc" // lalr1.cc:907
+#line 703 "agent_parser.cc"
break;
case 8:
-#line 125 "agent_parser.yy" // lalr1.cc:907
+#line 125 "agent_parser.yy"
{
// Parse the Control-agent map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 705 "agent_parser.cc" // lalr1.cc:907
+#line 713 "agent_parser.cc"
break;
case 9:
-#line 129 "agent_parser.yy" // lalr1.cc:907
+#line 129 "agent_parser.yy"
{
// parsing completed
}
-#line 713 "agent_parser.cc" // lalr1.cc:907
+#line 721 "agent_parser.cc"
break;
case 10:
-#line 136 "agent_parser.yy" // lalr1.cc:907
+#line 136 "agent_parser.yy"
{
// Push back the JSON value on the stack
- ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 722 "agent_parser.cc" // lalr1.cc:907
+#line 730 "agent_parser.cc"
break;
case 11:
-#line 142 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 728 "agent_parser.cc" // lalr1.cc:907
+#line 142 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 736 "agent_parser.cc"
break;
case 12:
-#line 143 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 734 "agent_parser.cc" // lalr1.cc:907
+#line 143 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 742 "agent_parser.cc"
break;
case 13:
-#line 144 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 740 "agent_parser.cc" // lalr1.cc:907
+#line 144 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 748 "agent_parser.cc"
break;
case 14:
-#line 145 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 746 "agent_parser.cc" // lalr1.cc:907
+#line 145 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 754 "agent_parser.cc"
break;
case 15:
-#line 146 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 752 "agent_parser.cc" // lalr1.cc:907
+#line 146 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 760 "agent_parser.cc"
break;
case 16:
-#line 147 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 758 "agent_parser.cc" // lalr1.cc:907
+#line 147 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 766 "agent_parser.cc"
break;
case 17:
-#line 148 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 764 "agent_parser.cc" // lalr1.cc:907
+#line 148 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 772 "agent_parser.cc"
break;
case 18:
-#line 152 "agent_parser.yy" // lalr1.cc:907
+#line 152 "agent_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 775 "agent_parser.cc" // lalr1.cc:907
+#line 783 "agent_parser.cc"
break;
case 19:
-#line 157 "agent_parser.yy" // lalr1.cc:907
+#line 157 "agent_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 785 "agent_parser.cc" // lalr1.cc:907
+#line 793 "agent_parser.cc"
break;
case 20:
-#line 163 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 791 "agent_parser.cc" // lalr1.cc:907
+#line 163 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 799 "agent_parser.cc"
break;
case 23:
-#line 177 "agent_parser.yy" // lalr1.cc:907
+#line 177 "agent_parser.yy"
{
// map containing a single entry
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 800 "agent_parser.cc" // lalr1.cc:907
+#line 808 "agent_parser.cc"
break;
case 24:
-#line 181 "agent_parser.yy" // lalr1.cc:907
+#line 181 "agent_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 810 "agent_parser.cc" // lalr1.cc:907
+#line 818 "agent_parser.cc"
break;
case 25:
-#line 188 "agent_parser.yy" // lalr1.cc:907
+#line 188 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 819 "agent_parser.cc" // lalr1.cc:907
+#line 827 "agent_parser.cc"
break;
case 26:
-#line 191 "agent_parser.yy" // lalr1.cc:907
+#line 191 "agent_parser.yy"
{
}
-#line 826 "agent_parser.cc" // lalr1.cc:907
+#line 834 "agent_parser.cc"
break;
case 29:
-#line 198 "agent_parser.yy" // lalr1.cc:907
+#line 198 "agent_parser.yy"
{
// List consisting of a single element.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 835 "agent_parser.cc" // lalr1.cc:907
+#line 843 "agent_parser.cc"
break;
case 30:
-#line 202 "agent_parser.yy" // lalr1.cc:907
+#line 202 "agent_parser.yy"
{
// List ending with , and a value.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 844 "agent_parser.cc" // lalr1.cc:907
+#line 852 "agent_parser.cc"
break;
case 31:
-#line 215 "agent_parser.yy" // lalr1.cc:907
+#line 215 "agent_parser.yy"
{
const std::string& where = ctx.contextName();
- const std::string& keyword = yystack_[1].value.as< std::string > ();
+ const std::string& keyword = yystack_[1].value.as < std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 855 "agent_parser.cc" // lalr1.cc:907
+#line 863 "agent_parser.cc"
break;
case 32:
-#line 224 "agent_parser.yy" // lalr1.cc:907
+#line 224 "agent_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 866 "agent_parser.cc" // lalr1.cc:907
+#line 874 "agent_parser.cc"
break;
case 33:
-#line 229 "agent_parser.yy" // lalr1.cc:907
+#line 229 "agent_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 876 "agent_parser.cc" // lalr1.cc:907
+#line 884 "agent_parser.cc"
break;
case 42:
-#line 250 "agent_parser.yy" // lalr1.cc:907
+#line 250 "agent_parser.yy"
{
// Let's create a MapElement that will represent it, add it to the
ctx.stack_.push_back(m);
ctx.enter(ctx.AGENT);
}
-#line 892 "agent_parser.cc" // lalr1.cc:907
+#line 900 "agent_parser.cc"
break;
case 43:
-#line 260 "agent_parser.yy" // lalr1.cc:907
+#line 260 "agent_parser.yy"
{
// Ok, we're done with parsing control-agent. Let's take the map
// off the stack.
ctx.stack_.pop_back();
ctx.leave();
}
-#line 903 "agent_parser.cc" // lalr1.cc:907
+#line 911 "agent_parser.cc"
break;
case 54:
-#line 283 "agent_parser.yy" // lalr1.cc:907
+#line 283 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 911 "agent_parser.cc" // lalr1.cc:907
+#line 919 "agent_parser.cc"
break;
case 55:
-#line 285 "agent_parser.yy" // lalr1.cc:907
+#line 285 "agent_parser.yy"
{
- ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("http-host", host);
ctx.leave();
}
-#line 921 "agent_parser.cc" // lalr1.cc:907
+#line 929 "agent_parser.cc"
break;
case 56:
-#line 291 "agent_parser.yy" // lalr1.cc:907
+#line 291 "agent_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("http-port", prf);
}
-#line 930 "agent_parser.cc" // lalr1.cc:907
+#line 938 "agent_parser.cc"
break;
case 57:
-#line 296 "agent_parser.yy" // lalr1.cc:907
+#line 296 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 938 "agent_parser.cc" // lalr1.cc:907
+#line 946 "agent_parser.cc"
break;
case 58:
-#line 298 "agent_parser.yy" // lalr1.cc:907
+#line 298 "agent_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
- ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
ConstElementPtr old = parent->get("user-context");
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 965 "agent_parser.cc" // lalr1.cc:907
+#line 973 "agent_parser.cc"
break;
case 59:
-#line 321 "agent_parser.yy" // lalr1.cc:907
+#line 321 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 973 "agent_parser.cc" // lalr1.cc:907
+#line 981 "agent_parser.cc"
break;
case 60:
-#line 323 "agent_parser.yy" // lalr1.cc:907
+#line 323 "agent_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
- ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
user_context->set("comment", comment);
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 1002 "agent_parser.cc" // lalr1.cc:907
+#line 1010 "agent_parser.cc"
break;
case 61:
-#line 349 "agent_parser.yy" // lalr1.cc:907
+#line 349 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 1013 "agent_parser.cc" // lalr1.cc:907
+#line 1021 "agent_parser.cc"
break;
case 62:
-#line 354 "agent_parser.yy" // lalr1.cc:907
+#line 354 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1022 "agent_parser.cc" // lalr1.cc:907
+#line 1030 "agent_parser.cc"
break;
case 67:
-#line 367 "agent_parser.yy" // lalr1.cc:907
+#line 367 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1032 "agent_parser.cc" // lalr1.cc:907
+#line 1040 "agent_parser.cc"
break;
case 68:
-#line 371 "agent_parser.yy" // lalr1.cc:907
+#line 371 "agent_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1040 "agent_parser.cc" // lalr1.cc:907
+#line 1048 "agent_parser.cc"
break;
case 74:
-#line 384 "agent_parser.yy" // lalr1.cc:907
+#line 384 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1048 "agent_parser.cc" // lalr1.cc:907
+#line 1056 "agent_parser.cc"
break;
case 75:
-#line 386 "agent_parser.yy" // lalr1.cc:907
+#line 386 "agent_parser.yy"
{
- ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1058 "agent_parser.cc" // lalr1.cc:907
+#line 1066 "agent_parser.cc"
break;
case 76:
-#line 392 "agent_parser.yy" // lalr1.cc:907
+#line 392 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1066 "agent_parser.cc" // lalr1.cc:907
+#line 1074 "agent_parser.cc"
break;
case 77:
-#line 394 "agent_parser.yy" // lalr1.cc:907
+#line 394 "agent_parser.yy"
{
- ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1075 "agent_parser.cc" // lalr1.cc:907
+#line 1083 "agent_parser.cc"
break;
case 78:
-#line 402 "agent_parser.yy" // lalr1.cc:907
+#line 402 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
ctx.stack_.back()->set("control-sockets", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKETS);
}
-#line 1086 "agent_parser.cc" // lalr1.cc:907
+#line 1094 "agent_parser.cc"
break;
case 79:
-#line 407 "agent_parser.yy" // lalr1.cc:907
+#line 407 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1095 "agent_parser.cc" // lalr1.cc:907
+#line 1103 "agent_parser.cc"
break;
case 86:
-#line 428 "agent_parser.yy" // lalr1.cc:907
+#line 428 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1106 "agent_parser.cc" // lalr1.cc:907
+#line 1114 "agent_parser.cc"
break;
case 87:
-#line 433 "agent_parser.yy" // lalr1.cc:907
+#line 433 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1115 "agent_parser.cc" // lalr1.cc:907
+#line 1123 "agent_parser.cc"
break;
case 88:
-#line 439 "agent_parser.yy" // lalr1.cc:907
+#line 439 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp6", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1126 "agent_parser.cc" // lalr1.cc:907
+#line 1134 "agent_parser.cc"
break;
case 89:
-#line 444 "agent_parser.yy" // lalr1.cc:907
+#line 444 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1135 "agent_parser.cc" // lalr1.cc:907
+#line 1143 "agent_parser.cc"
break;
case 90:
-#line 450 "agent_parser.yy" // lalr1.cc:907
+#line 450 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("d2", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1146 "agent_parser.cc" // lalr1.cc:907
+#line 1154 "agent_parser.cc"
break;
case 91:
-#line 455 "agent_parser.yy" // lalr1.cc:907
+#line 455 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1155 "agent_parser.cc" // lalr1.cc:907
+#line 1163 "agent_parser.cc"
break;
case 99:
-#line 474 "agent_parser.yy" // lalr1.cc:907
+#line 474 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1163 "agent_parser.cc" // lalr1.cc:907
+#line 1171 "agent_parser.cc"
break;
case 100:
-#line 476 "agent_parser.yy" // lalr1.cc:907
+#line 476 "agent_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 1173 "agent_parser.cc" // lalr1.cc:907
+#line 1181 "agent_parser.cc"
break;
case 101:
-#line 483 "agent_parser.yy" // lalr1.cc:907
+#line 483 "agent_parser.yy"
{
ctx.enter(ctx.SOCKET_TYPE);
}
-#line 1181 "agent_parser.cc" // lalr1.cc:907
+#line 1189 "agent_parser.cc"
break;
case 102:
-#line 485 "agent_parser.yy" // lalr1.cc:907
+#line 485 "agent_parser.yy"
{
- ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1190 "agent_parser.cc" // lalr1.cc:907
+#line 1198 "agent_parser.cc"
break;
case 103:
-#line 491 "agent_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1196 "agent_parser.cc" // lalr1.cc:907
+#line 491 "agent_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
+#line 1204 "agent_parser.cc"
break;
case 104:
-#line 497 "agent_parser.yy" // lalr1.cc:907
+#line 497 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1204 "agent_parser.cc" // lalr1.cc:907
+#line 1212 "agent_parser.cc"
break;
case 105:
-#line 499 "agent_parser.yy" // lalr1.cc:907
+#line 499 "agent_parser.yy"
{
- ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1213 "agent_parser.cc" // lalr1.cc:907
+#line 1221 "agent_parser.cc"
break;
case 106:
-#line 504 "agent_parser.yy" // lalr1.cc:907
+#line 504 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1221 "agent_parser.cc" // lalr1.cc:907
+#line 1229 "agent_parser.cc"
break;
case 107:
-#line 506 "agent_parser.yy" // lalr1.cc:907
+#line 506 "agent_parser.yy"
{
- ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1230 "agent_parser.cc" // lalr1.cc:907
+#line 1238 "agent_parser.cc"
break;
case 108:
-#line 511 "agent_parser.yy" // lalr1.cc:907
+#line 511 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1238 "agent_parser.cc" // lalr1.cc:907
+#line 1246 "agent_parser.cc"
break;
case 109:
-#line 513 "agent_parser.yy" // lalr1.cc:907
+#line 513 "agent_parser.yy"
{
- ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1247 "agent_parser.cc" // lalr1.cc:907
+#line 1255 "agent_parser.cc"
break;
case 110:
-#line 523 "agent_parser.yy" // lalr1.cc:907
+#line 523 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 1258 "agent_parser.cc" // lalr1.cc:907
+#line 1266 "agent_parser.cc"
break;
case 111:
-#line 528 "agent_parser.yy" // lalr1.cc:907
+#line 528 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1267 "agent_parser.cc" // lalr1.cc:907
+#line 1275 "agent_parser.cc"
break;
case 115:
-#line 545 "agent_parser.yy" // lalr1.cc:907
+#line 545 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 1278 "agent_parser.cc" // lalr1.cc:907
+#line 1286 "agent_parser.cc"
break;
case 116:
-#line 550 "agent_parser.yy" // lalr1.cc:907
+#line 550 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1287 "agent_parser.cc" // lalr1.cc:907
+#line 1295 "agent_parser.cc"
break;
case 119:
-#line 562 "agent_parser.yy" // lalr1.cc:907
+#line 562 "agent_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 1297 "agent_parser.cc" // lalr1.cc:907
+#line 1305 "agent_parser.cc"
break;
case 120:
-#line 566 "agent_parser.yy" // lalr1.cc:907
+#line 566 "agent_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1305 "agent_parser.cc" // lalr1.cc:907
+#line 1313 "agent_parser.cc"
break;
case 130:
-#line 583 "agent_parser.yy" // lalr1.cc:907
+#line 583 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1313 "agent_parser.cc" // lalr1.cc:907
+#line 1321 "agent_parser.cc"
break;
case 131:
-#line 585 "agent_parser.yy" // lalr1.cc:907
+#line 585 "agent_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1323 "agent_parser.cc" // lalr1.cc:907
+#line 1331 "agent_parser.cc"
break;
case 132:
-#line 591 "agent_parser.yy" // lalr1.cc:907
+#line 591 "agent_parser.yy"
{
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 1332 "agent_parser.cc" // lalr1.cc:907
+#line 1340 "agent_parser.cc"
break;
case 133:
-#line 596 "agent_parser.yy" // lalr1.cc:907
+#line 596 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1340 "agent_parser.cc" // lalr1.cc:907
+#line 1348 "agent_parser.cc"
break;
case 134:
-#line 598 "agent_parser.yy" // lalr1.cc:907
+#line 598 "agent_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 1350 "agent_parser.cc" // lalr1.cc:907
+#line 1358 "agent_parser.cc"
break;
case 135:
-#line 604 "agent_parser.yy" // lalr1.cc:907
+#line 604 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 1361 "agent_parser.cc" // lalr1.cc:907
+#line 1369 "agent_parser.cc"
break;
case 136:
-#line 609 "agent_parser.yy" // lalr1.cc:907
+#line 609 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1370 "agent_parser.cc" // lalr1.cc:907
+#line 1378 "agent_parser.cc"
break;
case 139:
-#line 618 "agent_parser.yy" // lalr1.cc:907
+#line 618 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1380 "agent_parser.cc" // lalr1.cc:907
+#line 1388 "agent_parser.cc"
break;
case 140:
-#line 622 "agent_parser.yy" // lalr1.cc:907
+#line 622 "agent_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1388 "agent_parser.cc" // lalr1.cc:907
+#line 1396 "agent_parser.cc"
break;
case 148:
-#line 637 "agent_parser.yy" // lalr1.cc:907
+#line 637 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1396 "agent_parser.cc" // lalr1.cc:907
+#line 1404 "agent_parser.cc"
break;
case 149:
-#line 639 "agent_parser.yy" // lalr1.cc:907
+#line 639 "agent_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 1406 "agent_parser.cc" // lalr1.cc:907
+#line 1414 "agent_parser.cc"
break;
case 150:
-#line 645 "agent_parser.yy" // lalr1.cc:907
+#line 645 "agent_parser.yy"
{
- ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 1415 "agent_parser.cc" // lalr1.cc:907
+#line 1423 "agent_parser.cc"
break;
case 151:
-#line 650 "agent_parser.yy" // lalr1.cc:907
+#line 650 "agent_parser.yy"
{
- ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 1424 "agent_parser.cc" // lalr1.cc:907
+#line 1432 "agent_parser.cc"
break;
case 152:
-#line 655 "agent_parser.yy" // lalr1.cc:907
+#line 655 "agent_parser.yy"
{
- ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 1433 "agent_parser.cc" // lalr1.cc:907
+#line 1441 "agent_parser.cc"
break;
case 153:
-#line 660 "agent_parser.yy" // lalr1.cc:907
+#line 660 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1441 "agent_parser.cc" // lalr1.cc:907
+#line 1449 "agent_parser.cc"
break;
case 154:
-#line 662 "agent_parser.yy" // lalr1.cc:907
+#line 662 "agent_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 1451 "agent_parser.cc" // lalr1.cc:907
+#line 1459 "agent_parser.cc"
break;
-#line 1455 "agent_parser.cc" // lalr1.cc:907
+#line 1463 "agent_parser.cc"
+
default:
break;
}
#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
YYERROR;
}
}
goto yynewstate;
+
/*--------------------------------------.
| yyerrlab -- here on detecting error. |
`--------------------------------------*/
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
+ /* Pacify compilers when the user code never invokes YYERROR and
+ the label yyerrorlab therefore never appears in user code. */
if (false)
- goto yyerrorlab;
+ YYERROR;
+
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
yylen = 0;
goto yyerrlab1;
+
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
}
goto yynewstate;
- // Accept.
+
+ /*-------------------------------------.
+ | yyacceptlab -- YYACCEPT comes here. |
+ `-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
- // Abort.
+
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
+
+ /*-----------------------------------------------------.
+ | yyreturn -- parsing is finished, return the result. |
+ `-----------------------------------------------------*/
yyreturn:
if (!yyla.empty ())
yy_destroy_ ("Cleanup: discarding lookahead", yyla);
#endif // AGENT_DEBUG
-#line 14 "agent_parser.yy" // lalr1.cc:1218
+#line 14 "agent_parser.yy"
} } // isc::agent
-#line 2031 "agent_parser.cc" // lalr1.cc:1218
-#line 668 "agent_parser.yy" // lalr1.cc:1219
+#line 2052 "agent_parser.cc"
+
+#line 668 "agent_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#ifndef YY_AGENT_AGENT_PARSER_H_INCLUDED
# define YY_AGENT_AGENT_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "agent_parser.yy" // lalr1.cc:404
+#line 17 "agent_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 59 "agent_parser.h" // lalr1.cc:404
+#line 59 "agent_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# include <string>
# include <vector>
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
// Support move semantics when possible.
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
# define YY_MOVE std::move
# define YY_MOVE_OR_COPY move
# define YY_MOVE_REF(Type) Type&&
# define YY_RVREF(Type) const Type&
# define YY_COPY(Type) const Type&
#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
# include "location.hh"
#include <typeinfo>
#ifndef YYASSERT
# endif /* ! defined YYDEBUG */
#endif /* ! defined AGENT_DEBUG */
-#line 14 "agent_parser.yy" // lalr1.cc:404
+#line 14 "agent_parser.yy"
namespace isc { namespace agent {
-#line 161 "agent_parser.h" // lalr1.cc:404
-
- /// A stack with random access from its top.
- template <typename T, typename S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
- typedef typename S::size_type size_type;
-
- stack (size_type n = 200)
- : seq_ (n)
- {}
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- T&
- operator[] (size_type i)
- {
- return seq_[size () - 1 - i];
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- T&
- operator[] (int i)
- {
- return operator[] (size_type (i));
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- const T&
- operator[] (size_type i) const
- {
- return seq_[size () - 1 - i];
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- const T&
- operator[] (int i) const
- {
- return operator[] (size_type (i));
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- void
- push (YY_MOVE_REF (T) t)
- {
- seq_.push_back (T ());
- operator[](0).move (t);
- }
-
- void
- pop (int n = 1)
- {
- for (; 0 < n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- size_type
- size () const
- {
- return seq_.size ();
- }
+#line 183 "agent_parser.h"
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
- /// Present a slice of the top of a stack.
- template <typename T, typename S = stack<T> >
- class slice
+ /// A Bison parser.
+ class AgentParser
{
public:
- slice (const S& stack, int range)
- : stack_ (stack)
- , range_ (range)
- {}
-
- const T&
- operator[] (int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- int range_;
- };
-
-
-
- /// A char[S] buffer to store and retrieve objects.
+#ifndef AGENT_STYPE
+ /// A buffer to store and retrieve objects.
///
/// Sort of a variant, but does not keep track of the nature
/// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
+ /// via the current parser state.
+ class semantic_type
{
+ public:
/// Type of *this.
- typedef variant<S> self_type;
+ typedef semantic_type self_type;
/// Empty construction.
- variant ()
+ semantic_type () YY_NOEXCEPT
: yybuffer_ ()
, yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (YY_RVREF (T) t)
+ semantic_type (YY_RVREF (T) t)
: yytypeid_ (&typeid (T))
{
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
new (yyas_<T> ()) T (YY_MOVE (t));
}
/// Destruction, allowed only if empty.
- ~variant ()
+ ~semantic_type () YY_NOEXCEPT
{
YYASSERT (!yytypeid_);
}
- /// Instantiate an empty \a T in here.
- template <typename T>
+# if 201103L <= YY_CPLUSPLUS
+ /// Instantiate a \a T in here from \a t.
+ template <typename T, typename... U>
T&
- emplace ()
+ emplace (U&&... u)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T ();
+ return *new (yyas_<T> ()) T (std::forward <U>(u)...);
}
-
-# if defined __cplusplus && 201103L <= __cplusplus
- /// Instantiate a \a T in here from \a t.
- template <typename T, typename U>
+# else
+ /// Instantiate an empty \a T in here.
+ template <typename T>
T&
- emplace (U&& u)
+ emplace ()
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T (std::forward <U>(u));
+ return *new (yyas_<T> ()) T ();
}
-# else
+
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
emplace (const T& t)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
/// Accessor to a built \a T.
template <typename T>
T&
- as ()
+ as () YY_NOEXCEPT
{
YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
/// Const accessor to a built \a T (for %printer).
template <typename T>
const T&
- as () const
+ as () const YY_NOEXCEPT
{
YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
- /// Swap the content with \a other, of same type.
+ /// Swap the content with \a that, of same type.
///
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
/// should not be the variant's responsibility.
/// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
+ /// self_type::move ().
template <typename T>
void
- swap (self_type& other)
+ swap (self_type& that) YY_NOEXCEPT
{
YYASSERT (yytypeid_);
- YYASSERT (*yytypeid_ == *other.yytypeid_);
- std::swap (as<T> (), other.as<T> ());
+ YYASSERT (*yytypeid_ == *that.yytypeid_);
+ std::swap (as<T> (), that.as<T> ());
}
- /// Move the content of \a other to this.
+ /// Move the content of \a that to this.
///
- /// Destroys \a other.
+ /// Destroys \a that.
template <typename T>
void
- move (self_type& other)
+ move (self_type& that)
{
-# if defined __cplusplus && 201103L <= __cplusplus
- emplace<T> (std::move (other.as<T> ()));
+# if 201103L <= YY_CPLUSPLUS
+ emplace<T> (std::move (that.as<T> ()));
# else
emplace<T> ();
- swap<T> (other);
+ swap<T> (that);
# endif
- other.destroy<T> ();
+ that.destroy<T> ();
}
-# if defined __cplusplus && 201103L <= __cplusplus
- /// Move the content of \a other to this.
+# if 201103L <= YY_CPLUSPLUS
+ /// Move the content of \a that to this.
template <typename T>
void
- move (self_type&& other)
+ move (self_type&& that)
{
- emplace<T> (std::move (other.as<T> ()));
- other.destroy<T> ();
+ emplace<T> (std::move (that.as<T> ()));
+ that.destroy<T> ();
}
#endif
- /// Copy the content of \a other to this.
+ /// Copy the content of \a that to this.
template <typename T>
void
- copy (const self_type& other)
+ copy (const self_type& that)
{
- emplace<T> (other.as<T> ());
+ emplace<T> (that.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
self_type& operator= (const self_type&);
- variant (const self_type&);
+ semantic_type (const self_type&);
/// Accessor to raw memory as \a T.
template <typename T>
T*
- yyas_ ()
+ yyas_ () YY_NOEXCEPT
{
void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- yyas_ () const
+ yyas_ () const YY_NOEXCEPT
{
const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;
-
- /// Whether the content is built: if defined, the name of the stored type.
- const std::type_info *yytypeid_;
- };
-
-
- /// A Bison parser.
- class AgentParser
- {
- public:
-#ifndef AGENT_STYPE
/// An auxiliary type to compute the largest semantic type.
union union_type
{
// "constant string"
char dummy5[sizeof (std::string)];
-};
+ };
+
+ /// The size of the largest semantic type.
+ enum { size = sizeof (union_type) };
+
+ /// A buffer to store semantic values.
+ union
+ {
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[size];
+ } yybuffer_;
+
+ /// Whether the content is built: if defined, the name of the stored type.
+ const std::type_info *yytypeid_;
+ };
- /// Symbol semantic values.
- typedef variant<sizeof (union_type)> semantic_type;
#else
typedef AGENT_STYPE semantic_type;
#endif
/// Syntax errors thrown from user actions.
struct syntax_error : std::runtime_error
{
- syntax_error (const location_type& l, const std::string& m);
+ syntax_error (const location_type& l, const std::string& m)
+ : std::runtime_error (m)
+ , location (l)
+ {}
+
+ syntax_error (const syntax_error& s)
+ : std::runtime_error (s.what ())
+ , location (s.location)
+ {}
+
+ ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+
location_type location;
};
typedef Base super_type;
/// Default constructor.
- basic_symbol ();
-
- /// Move or copy constructor.
- basic_symbol (YY_RVREF (basic_symbol) other);
+ basic_symbol ()
+ : value ()
+ , location ()
+ {}
+
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ basic_symbol (basic_symbol&& that);
+#endif
+ /// Copy constructor.
+ basic_symbol (const basic_symbol& that);
/// Constructor for valueless symbols, and symbols from each type.
- basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l);
-
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, location_type&& l)
+ : Base (t)
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const location_type& l)
+ : Base (t)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
/// Destroy the symbol.
- ~basic_symbol ();
+ ~basic_symbol ()
+ {
+ clear ();
+ }
/// Destroy contents, and record that is empty.
- void clear ();
+ void clear ()
+ {
+ // User destructor.
+ symbol_number_type yytype = this->type_get ();
+ basic_symbol<Base>& yysym = *this;
+ (void) yysym;
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+
+ // Type destructor.
+switch (yytype)
+ {
+ case 54: // value
+ case 57: // map_value
+ case 108: // socket_type_value
+ value.template destroy< ElementPtr > ();
+ break;
+
+ case 45: // "boolean"
+ value.template destroy< bool > ();
+ break;
+
+ case 44: // "floating point"
+ value.template destroy< double > ();
+ break;
+
+ case 43: // "integer"
+ value.template destroy< int64_t > ();
+ break;
+
+ case 42: // "constant string"
+ value.template destroy< std::string > ();
+ break;
+
+ default:
+ break;
+ }
+
+ Base::clear ();
+ }
/// Whether empty.
- bool empty () const;
+ bool empty () const YY_NOEXCEPT;
/// Destructive move, \a s is emptied into this.
void move (basic_symbol& s);
location_type location;
private:
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
+ basic_symbol& operator= (const basic_symbol& that);
#endif
};
/// Default constructor.
by_type ();
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ by_type (by_type&& that);
+#endif
+
/// Copy constructor.
- by_type (const by_type& other);
+ by_type (const by_type& that);
/// The symbol type as needed by the constructor.
typedef token_type kind_type;
/// The (internal) type number (corresponding to \a type).
/// \a empty when empty.
- symbol_number_type type_get () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The token.
- token_type token () const;
+ token_type token () const YY_NOEXCEPT;
/// The symbol type.
/// \a empty_symbol when empty.
};
/// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
+ struct symbol_type : basic_symbol<by_type>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_type> super_type;
+
+ /// Empty symbol.
+ symbol_type () {}
+
+ /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, location_type l)
+ : super_type(token_type (tok), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+ }
+#else
+ symbol_type (int tok, const location_type& l)
+ : super_type(token_type (tok), l)
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, bool v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#else
+ symbol_type (int tok, const bool& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, double v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#else
+ symbol_type (int tok, const double& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, int64_t v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#else
+ symbol_type (int tok, const int64_t& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, std::string v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#else
+ symbol_type (int tok, const std::string& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#endif
+ };
/// Build a parser object.
AgentParser (isc::agent::ParserContext& ctx_yyarg);
/// Report a syntax error.
void error (const syntax_error& err);
- // Symbol constructors declarations.
- static
- symbol_type
- make_END (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COMMA (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COLON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LSQUARE_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RSQUARE_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LCURLY_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RCURLY_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NULL_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONTROL_AGENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HTTP_HOST (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HTTP_PORT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_USER_CONTEXT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COMMENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONTROL_SOCKETS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP4_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP6_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_D2_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_UNIX (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LIBRARY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PARAMETERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LOGGING (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LOGGERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUTPUT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DEBUGLEVEL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SEVERITY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLUSH (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAXSIZE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAXVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PATTERN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP4 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCPDDNS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_START_JSON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_START_AGENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_START_SUB_AGENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
-
+ // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_END (location_type l)
+ {
+ return symbol_type (token::TOKEN_END, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_END (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_END, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMA (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COLON (location_type l)
+ {
+ return symbol_type (token::TOKEN_COLON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COLON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COLON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NULL_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NULL_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HTTP_HOST (location_type l)
+ {
+ return symbol_type (token::TOKEN_HTTP_HOST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HTTP_HOST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HTTP_HOST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HTTP_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_HTTP_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HTTP_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HTTP_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER_CONTEXT (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER_CONTEXT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_SOCKETS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKETS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_SOCKETS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_D2_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_D2_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_D2_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_D2_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UNIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_UNIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UNIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UNIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PARAMETERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PARAMETERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DEBUGLEVEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DEBUGLEVEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SEVERITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SEVERITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXSIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXSIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PATTERN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PATTERN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCPDDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCPDDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_START_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_START_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_START_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_START_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_START_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_START_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_START_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_START_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_START_SUB_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_START_SUB_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_START_SUB_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_START_SUB_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STRING (std::string v, location_type l)
+ {
+ return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTEGER (int64_t v, location_type l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLOAT (double v, location_type l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOLEAN (bool v, location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOLEAN (const bool& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ }
+#endif
private:
struct by_state
{
/// Default constructor.
- by_state ();
+ by_state () YY_NOEXCEPT;
/// The symbol type as needed by the constructor.
typedef state_type kind_type;
/// Constructor.
- by_state (kind_type s);
+ by_state (kind_type s) YY_NOEXCEPT;
/// Copy constructor.
- by_state (const by_state& other);
+ by_state (const by_state& that) YY_NOEXCEPT;
/// Record that this symbol is empty.
- void clear ();
+ void clear () YY_NOEXCEPT;
/// Steal the symbol type from \a that.
void move (by_state& that);
/// The (internal) type number (corresponding to \a state).
/// \a empty_symbol when empty.
- symbol_number_type type_get () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
enum { empty_state = -1 };
stack_symbol_type (YY_RVREF (stack_symbol_type) that);
/// Steal the contents from \a sym to build this.
stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
/// Assignment, needed by push_back by some old implementations.
/// Moves the contents of that.
stack_symbol_type& operator= (stack_symbol_type& that);
#endif
};
+ /// A stack with random access from its top.
+ template <typename T, typename S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+ typedef typename S::size_type size_type;
+
+ stack (size_type n = 200)
+ : seq_ (n)
+ {}
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (size_type i)
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (int i)
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (size_type i) const
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (int i) const
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ void
+ push (YY_MOVE_REF (T) t)
+ {
+ seq_.push_back (T ());
+ operator[] (0).move (t);
+ }
+
+ /// Pop elements from the stack.
+ void
+ pop (int n = 1) YY_NOEXCEPT
+ {
+ for (; 0 < n; --n)
+ seq_.pop_back ();
+ }
+
+ /// Pop all elements from the stack.
+ void
+ clear () YY_NOEXCEPT
+ {
+ seq_.clear ();
+ }
+
+ /// Number of elements on the stack.
+ size_type
+ size () const YY_NOEXCEPT
+ {
+ return seq_.size ();
+ }
+
+ /// Iterator on top of the stack (going downwards).
+ const_iterator
+ begin () const YY_NOEXCEPT
+ {
+ return seq_.rbegin ();
+ }
+
+ /// Bottom of the stack.
+ const_iterator
+ end () const YY_NOEXCEPT
+ {
+ return seq_.rend ();
+ }
+
+ /// Present a slice of the top of a stack.
+ class slice
+ {
+ public:
+ slice (const stack& stack, int range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ const T&
+ operator[] (int i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const stack& stack_;
+ int range_;
+ };
+
+ private:
+ stack (const stack&);
+ stack& operator= (const stack&);
+ /// The wrapped container.
+ S seq_;
+ };
+
+
/// Stack type.
typedef stack<stack_symbol_type> stack_type;
isc::agent::ParserContext& ctx;
};
- // Symbol number corresponding to token number t.
inline
AgentParser::token_number_type
AgentParser::yytranslate_ (token_type t)
{
+ // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+ // TOKEN-NUM as returned by yylex.
static
const token_number_type
translate_table[] =
{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
return undef_token_;
}
- inline
- AgentParser::syntax_error::syntax_error (const location_type& l, const std::string& m)
- : std::runtime_error (m)
- , location (l)
- {}
-
// basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol ()
- : value ()
- , location ()
- {}
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (YY_RVREF (basic_symbol) other)
- : Base (YY_MOVE (other))
+ AgentParser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+ : Base (std::move (that))
, value ()
- , location (YY_MOVE (other.location))
+ , location (std::move (that.location))
{
- switch (other.type_get ())
+ switch (this->type_get ())
{
case 54: // value
case 57: // map_value
case 108: // socket_type_value
- value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
+ value.move< ElementPtr > (std::move (that.value));
break;
case 45: // "boolean"
- value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
+ value.move< bool > (std::move (that.value));
break;
case 44: // "floating point"
- value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
+ value.move< double > (std::move (that.value));
break;
case 43: // "integer"
- value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
+ value.move< int64_t > (std::move (that.value));
break;
case 42: // "constant string"
- value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
+ value.move< std::string > (std::move (that.value));
break;
default:
}
}
-
-
- // Implementation of basic_symbol constructor for each type.
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l)
- : Base (t)
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
-
-
- template <typename Base>
- AgentParser::basic_symbol<Base>::~basic_symbol ()
- {
- clear ();
- }
+#endif
template <typename Base>
- void
- AgentParser::basic_symbol<Base>::clear ()
+ AgentParser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+ : Base (that)
+ , value ()
+ , location (that.location)
{
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- basic_symbol<Base>& yysym = *this;
- (void) yysym;
- switch (yytype)
- {
- default:
- break;
- }
-
- // Type destructor.
- switch (yytype)
+ switch (this->type_get ())
{
case 54: // value
case 57: // map_value
case 108: // socket_type_value
- value.template destroy< ElementPtr > ();
+ value.copy< ElementPtr > (YY_MOVE (that.value));
break;
case 45: // "boolean"
- value.template destroy< bool > ();
+ value.copy< bool > (YY_MOVE (that.value));
break;
case 44: // "floating point"
- value.template destroy< double > ();
+ value.copy< double > (YY_MOVE (that.value));
break;
case 43: // "integer"
- value.template destroy< int64_t > ();
+ value.copy< int64_t > (YY_MOVE (that.value));
break;
case 42: // "constant string"
- value.template destroy< std::string > ();
+ value.copy< std::string > (YY_MOVE (that.value));
break;
default:
break;
}
- Base::clear ();
}
+
+
template <typename Base>
bool
- AgentParser::basic_symbol<Base>::empty () const
+ AgentParser::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
return Base::type_get () == empty_symbol;
}
: type (empty_symbol)
{}
+#if 201103L <= YY_CPLUSPLUS
inline
- AgentParser::by_type::by_type (const by_type& other)
- : type (other.type)
+ AgentParser::by_type::by_type (by_type&& that)
+ : type (that.type)
+ {
+ that.clear ();
+ }
+#endif
+
+ inline
+ AgentParser::by_type::by_type (const by_type& that)
+ : type (that.type)
{}
inline
inline
int
- AgentParser::by_type::type_get () const
+ AgentParser::by_type::type_get () const YY_NOEXCEPT
{
return type;
}
inline
AgentParser::token_type
- AgentParser::by_type::token () const
+ AgentParser::by_type::token () const YY_NOEXCEPT
{
// YYTOKNUM[NUM] -- (External) token number corresponding to the
// (internal) symbol number NUM (which must be that of a token). */
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300
};
- return static_cast<token_type> (yytoken_number_[type]);
- }
-
- // Implementation of make_symbol for each symbol type.
- inline
- AgentParser::symbol_type
- AgentParser::make_END (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_END, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_COMMA (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
+ return token_type (yytoken_number_[type]);
}
- inline
- AgentParser::symbol_type
- AgentParser::make_COLON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_LSQUARE_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_RSQUARE_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_LCURLY_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_RCURLY_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_NULL_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_CONTROL_AGENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONTROL_AGENT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_HTTP_HOST (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HTTP_HOST, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_HTTP_PORT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HTTP_PORT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_USER_CONTEXT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_COMMENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_CONTROL_SOCKETS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONTROL_SOCKETS, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_DHCP4_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP4_SERVER, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_DHCP6_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP6_SERVER, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_D2_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_D2_SERVER, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_SOCKET_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_SOCKET_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_UNIX (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_UNIX, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_LIBRARY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_PARAMETERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_LOGGING (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_LOGGERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_OUTPUT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_DEBUGLEVEL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_SEVERITY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_FLUSH (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_MAXSIZE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_MAXVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_PATTERN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PATTERN, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_DHCP4 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_DHCP6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_DHCPDDNS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCPDDNS, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_START_JSON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_START_JSON, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_START_AGENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_START_AGENT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_START_SUB_AGENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_START_SUB_AGENT, YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
- }
-
- inline
- AgentParser::symbol_type
- AgentParser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
- }
-
-
-#line 14 "agent_parser.yy" // lalr1.cc:404
+#line 14 "agent_parser.yy"
} } // isc::agent
-#line 1699 "agent_parser.h" // lalr1.cc:404
+#line 2054 "agent_parser.h"
+
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
# endif
# endif
-#line 14 "agent_parser.yy" // location.cc:339
+#line 14 "agent_parser.yy"
namespace isc { namespace agent {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "agent_parser.yy" // location.cc:339
+#line 14 "agent_parser.yy"
} } // isc::agent
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_AGENT_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-#line 1 "dhcp4_lexer.cc"
+#line 2 "dhcp4_lexer.cc"
-#line 3 "dhcp4_lexer.cc"
+#line 4 "dhcp4_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 parser4__create_buffer
#define yy_delete_buffer parser4__delete_buffer
-#define yy_scan_buffer parser4__scan_buffer
-#define yy_scan_string parser4__scan_string
-#define yy_scan_bytes parser4__scan_bytes
+#define yy_flex_debug parser4__flex_debug
#define yy_init_buffer parser4__init_buffer
#define yy_flush_buffer parser4__flush_buffer
#define yy_load_buffer_state parser4__load_buffer_state
#define yy_switch_to_buffer parser4__switch_to_buffer
-#define yypush_buffer_state parser4_push_buffer_state
-#define yypop_buffer_state parser4_pop_buffer_state
-#define yyensure_buffer_stack parser4_ensure_buffer_stack
-#define yy_flex_debug parser4__flex_debug
#define yyin parser4_in
#define yyleng parser4_leng
#define yylex parser4_lex
#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
/* %endif */
/* %if-c-only */
-#ifdef yy_create_buffer
-#define parser4__create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer parser4__create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define parser4__delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer parser4__delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define parser4__scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer parser4__scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define parser4__scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string parser4__scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define parser4__scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes parser4__scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define parser4__init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer parser4__init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define parser4__flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer parser4__flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define parser4__load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state parser4__load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define parser4__switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer parser4__switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define parser4_push_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state parser4_push_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define parser4_pop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state parser4_pop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define parser4_ensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack parser4_ensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define parser4_lex_ALREADY_DEFINED
-#else
-#define yylex parser4_lex
-#endif
-
-#ifdef yyrestart
-#define parser4_restart_ALREADY_DEFINED
-#else
-#define yyrestart parser4_restart
-#endif
-
-#ifdef yylex_init
-#define parser4_lex_init_ALREADY_DEFINED
-#else
-#define yylex_init parser4_lex_init
-#endif
-
-#ifdef yylex_init_extra
-#define parser4_lex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra parser4_lex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define parser4_lex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy parser4_lex_destroy
-#endif
-
-#ifdef yyget_debug
-#define parser4_get_debug_ALREADY_DEFINED
-#else
-#define yyget_debug parser4_get_debug
-#endif
-
-#ifdef yyset_debug
-#define parser4_set_debug_ALREADY_DEFINED
-#else
-#define yyset_debug parser4_set_debug
-#endif
-
-#ifdef yyget_extra
-#define parser4_get_extra_ALREADY_DEFINED
-#else
-#define yyget_extra parser4_get_extra
-#endif
-
-#ifdef yyset_extra
-#define parser4_set_extra_ALREADY_DEFINED
-#else
-#define yyset_extra parser4_set_extra
-#endif
-
-#ifdef yyget_in
-#define parser4_get_in_ALREADY_DEFINED
-#else
-#define yyget_in parser4_get_in
-#endif
-
-#ifdef yyset_in
-#define parser4_set_in_ALREADY_DEFINED
-#else
-#define yyset_in parser4_set_in
-#endif
-
-#ifdef yyget_out
-#define parser4_get_out_ALREADY_DEFINED
-#else
-#define yyget_out parser4_get_out
-#endif
-
-#ifdef yyset_out
-#define parser4_set_out_ALREADY_DEFINED
-#else
-#define yyset_out parser4_set_out
-#endif
-
-#ifdef yyget_leng
-#define parser4_get_leng_ALREADY_DEFINED
-#else
-#define yyget_leng parser4_get_leng
-#endif
-
-#ifdef yyget_text
-#define parser4_get_text_ALREADY_DEFINED
-#else
-#define yyget_text parser4_get_text
-#endif
-
-#ifdef yyget_lineno
-#define parser4_get_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno parser4_get_lineno
-#endif
-
-#ifdef yyset_lineno
-#define parser4_set_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno parser4_set_lineno
-#endif
-
-#ifdef yywrap
-#define parser4_wrap_ALREADY_DEFINED
-#else
-#define yywrap parser4_wrap
-#endif
-
+
/* %endif */
-#ifdef yyalloc
-#define parser4_alloc_ALREADY_DEFINED
-#else
-#define yyalloc parser4_alloc
-#endif
-
-#ifdef yyrealloc
-#define parser4_realloc_ALREADY_DEFINED
-#else
-#define yyrealloc parser4_realloc
-#endif
-
-#ifdef yyfree
-#define parser4_free_ALREADY_DEFINED
-#else
-#define yyfree parser4_free
-#endif
-
/* %if-c-only */
-#ifdef yytext
-#define parser4_text_ALREADY_DEFINED
-#else
-#define yytext parser4_text
-#endif
-
-#ifdef yyleng
-#define parser4_leng_ALREADY_DEFINED
-#else
-#define yyleng parser4_leng
-#endif
-
-#ifdef yyin
-#define parser4_in_ALREADY_DEFINED
-#else
-#define yyin parser4_in
-#endif
-
-#ifdef yyout
-#define parser4_out_ALREADY_DEFINED
-#else
-#define yyout parser4_out
-#endif
-
-#ifdef yy_flex_debug
-#define parser4__flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug parser4__flex_debug
-#endif
-
-#ifdef yylineno
-#define parser4_lineno_ALREADY_DEFINED
-#else
-#define yylineno parser4_lineno
-#endif
-
/* %endif */
/* First, we deal with platform-specific or compiler-specific issues. */
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;
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
#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 */
* 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 parser4_restart(parser4_in )
+
#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.
#endif
/* %if-not-reentrant */
-extern int yyleng;
+extern yy_size_t parser4_leng;
/* %endif */
/* %if-c-only */
/* %if-not-reentrant */
-extern FILE *yyin, *yyout;
+extern FILE *parser4_in, *parser4_out;
/* %endif */
/* %endif */
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
-
+
#define YY_LESS_LINENO(n)
- #define YY_LINENO_REWIND_TO(ptr)
/* 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 parser4_text. */ \
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 parser4_text again */ \
} \
while ( 0 )
+
#define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_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
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.
*/
* 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 parser4_restart()), so that the user can continue scanning by
+ * just pointing parser4_in at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
/* %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 */
#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.
*/
/* %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 parser4_text 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 parser4_leng;
/* 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 parser4_wrap()'s to do buffer switches
+ * instead of setting up a fresh parser4_in. 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 parser4_restart (FILE *input_file );
+void parser4__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE parser4__create_buffer (FILE *file,int size );
+void parser4__delete_buffer (YY_BUFFER_STATE b );
+void parser4__flush_buffer (YY_BUFFER_STATE b );
+void parser4_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void parser4_pop_buffer_state (void );
-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 )
+static void parser4_ensure_buffer_stack (void );
+static void parser4__load_buffer_state (void );
+static void parser4__init_buffer (YY_BUFFER_STATE b,FILE *file );
-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 );
+#define YY_FLUSH_BUFFER parser4__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE parser4__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE parser4__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE parser4__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 *parser4_alloc (yy_size_t );
+void *parser4_realloc (void *,yy_size_t );
+void parser4_free (void * );
+
+#define yy_new_buffer parser4__create_buffer
-#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
if ( ! YY_CURRENT_BUFFER ){ \
- yyensure_buffer_stack (); \
+ parser4_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ parser4__create_buffer(parser4_in,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 (); \
+ parser4_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ parser4__create_buffer(parser4_in,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] parser4_text/parser4_in/parser4_out/yy_state_type/parser4_lineno etc. def's & init go here */
/* Begin user sect3 */
-#define parser4_wrap() (/*CONSTCOND*/1)
+#define parser4_wrap(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 *parser4_in = (FILE *) 0, *parser4_out = (FILE *) 0;
typedef int yy_state_type;
-extern int yylineno;
-int yylineno = 1;
+extern int parser4_lineno;
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
+int parser4_lineno = 1;
-/* %% [1.5] DFA */
+extern char *parser4_text;
+#define yytext_ptr parser4_text
/* %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 parser4_text.
*/
#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 parser4_text and parser4_leng for yymore() goes here \ */\
+ parser4_leng = (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 parser4_text[] 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 184
#define YY_END_OF_BUFFER 185
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1587] =
+static yyconst flex_int16_t yy_accept[1587] =
{ 0,
177, 177, 0, 0, 0, 0, 0, 0, 0, 0,
185, 183, 10, 11, 183, 1, 177, 174, 177, 177,
0, 80, 0, 0, 119, 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, 2, 1, 1, 1, 1, 1, 1, 1,
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[74] =
+static yyconst flex_int32_t yy_meta[74] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
3, 3, 3, 5, 5, 5, 5, 5, 3, 3,
3, 3, 3
} ;
-static const flex_int16_t yy_base[1599] =
+static yyconst flex_int16_t yy_base[1599] =
{ 0,
0, 72, 21, 31, 43, 51, 54, 60, 91, 99,
1987, 1988, 34, 1983, 145, 0, 207, 1988, 214, 221,
} ;
-static const flex_int16_t yy_def[1599] =
+static yyconst flex_int16_t yy_def[1599] =
{ 0,
1587, 1587, 1588, 1588, 1587, 1587, 1587, 1587, 1587, 1587,
1586, 1586, 1586, 1586, 1586, 1589, 1586, 1586, 1586, 1586,
} ;
-static const flex_int16_t yy_nxt[2062] =
+static yyconst flex_int16_t yy_nxt[2062] =
{ 0,
1586, 13, 14, 13, 1586, 15, 16, 1586, 17, 18,
19, 20, 21, 22, 22, 22, 22, 22, 23, 24,
1586
} ;
-static const flex_int16_t yy_chk[2062] =
+static yyconst flex_int16_t yy_chk[2062] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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 parser4__flex_debug;
+int parser4__flex_debug = 1;
-static const flex_int16_t yy_rule_linenum[184] =
+static yyconst flex_int16_t yy_rule_linenum[184] =
{ 0,
- 147, 149, 151, 156, 157, 162, 163, 164, 176, 179,
- 184, 191, 200, 209, 218, 227, 236, 245, 255, 264,
- 273, 282, 291, 300, 309, 318, 327, 336, 345, 354,
- 363, 375, 384, 393, 402, 411, 422, 433, 444, 455,
- 465, 475, 486, 497, 508, 519, 530, 541, 552, 563,
- 574, 585, 596, 607, 618, 629, 640, 649, 658, 668,
- 677, 687, 701, 717, 726, 735, 744, 753, 774, 795,
- 804, 814, 823, 834, 843, 852, 861, 870, 879, 889,
- 898, 909, 920, 932, 941, 951, 960, 969, 978, 987,
- 996, 1005, 1014, 1023, 1033, 1044, 1056, 1065, 1074, 1084,
-
- 1094, 1104, 1114, 1124, 1134, 1143, 1153, 1162, 1171, 1180,
- 1189, 1199, 1209, 1218, 1228, 1237, 1246, 1255, 1264, 1273,
- 1282, 1291, 1300, 1309, 1318, 1327, 1336, 1345, 1354, 1363,
- 1372, 1381, 1390, 1399, 1408, 1417, 1426, 1435, 1444, 1453,
- 1462, 1471, 1480, 1490, 1500, 1510, 1520, 1530, 1540, 1550,
- 1560, 1570, 1580, 1590, 1599, 1608, 1617, 1626, 1635, 1644,
- 1653, 1664, 1675, 1688, 1701, 1716, 1815, 1820, 1825, 1830,
- 1831, 1832, 1833, 1834, 1835, 1837, 1855, 1868, 1873, 1877,
- 1879, 1881, 1883
+ 146, 148, 150, 155, 156, 161, 162, 163, 175, 178,
+ 183, 190, 199, 208, 217, 226, 235, 244, 254, 263,
+ 272, 281, 290, 299, 308, 317, 326, 335, 344, 353,
+ 362, 374, 383, 392, 401, 410, 421, 432, 443, 454,
+ 464, 474, 485, 496, 507, 518, 529, 540, 551, 562,
+ 573, 584, 595, 606, 617, 628, 639, 648, 657, 667,
+ 676, 686, 700, 716, 725, 734, 743, 752, 773, 794,
+ 803, 813, 822, 833, 842, 851, 860, 869, 878, 888,
+ 897, 908, 919, 931, 940, 950, 959, 968, 977, 986,
+ 995, 1004, 1013, 1022, 1032, 1043, 1055, 1064, 1073, 1083,
+
+ 1093, 1103, 1113, 1123, 1133, 1142, 1152, 1161, 1170, 1179,
+ 1188, 1198, 1208, 1217, 1227, 1236, 1245, 1254, 1263, 1272,
+ 1281, 1290, 1299, 1308, 1317, 1326, 1335, 1344, 1353, 1362,
+ 1371, 1380, 1389, 1398, 1407, 1416, 1425, 1434, 1443, 1452,
+ 1461, 1470, 1479, 1489, 1499, 1509, 1519, 1529, 1539, 1549,
+ 1559, 1569, 1579, 1589, 1598, 1607, 1616, 1625, 1634, 1643,
+ 1652, 1663, 1674, 1687, 1700, 1715, 1814, 1819, 1824, 1829,
+ 1830, 1831, 1832, 1833, 1834, 1836, 1854, 1867, 1872, 1876,
+ 1878, 1880, 1882
} ;
/* The intent behind this definition is that it'll catch
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *parser4_text;
#line 1 "dhcp4_lexer.ll"
/* Copyright (C) 2016-2019 Internet Systems Consortium, Inc. ("ISC")
2.5.31 through 2.5.33): it generates code that does
not conform to C89. See Debian bug 333231
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
-# undef yywrap
-# define yywrap() 1
+# undef parser4_wrap
+# define parser4_wrap() 1
namespace {
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1827 "dhcp4_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 parser4_wrap requires linking with -lfl, which provides the default parser4_wrap
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. */
/* avoid to get static global variables to remain with C++. */
/* in last resort %option reentrant */
/* Enables debug mode. To see the debug messages, one needs to also set
- yy_flex_debug to 1, then the debug messages will be printed on stderr. */
+ parser4__flex_debug to 1, then the debug messages will be printed on stderr. */
/* I have no idea what this option does, except it was specified in the bison
examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
be on the safe side and keep it. */
#define YY_NO_INPUT 1
+
/* These are not token expressions yet, just convenience expressions that
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
#line 94 "dhcp4_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 parser4_leng bytes. parser4_leng specifies the length of the
currently matched token. */
-#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1853 "dhcp4_lexer.cc"
-#line 1854 "dhcp4_lexer.cc"
+#define YY_USER_ACTION driver.loc_.columns(parser4_leng);
+#line 1628 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
/* %if-reentrant */
/* %if-c-only */
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
/* %endif */
/* %if-reentrant */
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
-int yylex_destroy ( void );
+int parser4_lex_destroy (void );
-int yyget_debug ( void );
+int parser4_get_debug (void );
-void yyset_debug ( int debug_flag );
+void parser4_set_debug (int debug_flag );
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE parser4_get_extra (void );
-void yyset_extra ( YY_EXTRA_TYPE user_defined );
+void parser4_set_extra (YY_EXTRA_TYPE user_defined );
-FILE *yyget_in ( void );
+FILE *parser4_get_in (void );
-void yyset_in ( FILE * _in_str );
+void parser4_set_in (FILE * in_str );
-FILE *yyget_out ( void );
+FILE *parser4_get_out (void );
-void yyset_out ( FILE * _out_str );
+void parser4_set_out (FILE * out_str );
- int yyget_leng ( void );
+yy_size_t parser4_get_leng (void );
-char *yyget_text ( void );
+char *parser4_get_text (void );
-int yyget_lineno ( void );
+int parser4_get_lineno (void );
-void yyset_lineno ( int _line_number );
+void parser4_set_lineno (int line_number );
/* %if-bison-bridge */
/* %endif */
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int parser4_wrap (void );
#else
-extern int yywrap ( void );
+extern int parser4_wrap (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 */
/* 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. */
/* 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( parser4_text, parser4_leng, 1, parser4_out )
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
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( parser4_in )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
if ( c == '\n' ) \
buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
+ if ( c == EOF && ferror( parser4_in ) ) \
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, parser4_in))==0 && ferror(parser4_in)) \
{ \
if( errno != EINTR) \
{ \
break; \
} \
errno=0; \
- clearerr(yyin); \
+ clearerr(parser4_in); \
} \
}\
\
/* %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 */
#define YY_DECL_IS_OURS 1
/* %if-c-only Standard (non-C++) definition */
-extern int yylex (void);
+extern int parser4_lex (void);
-#define YY_DECL int yylex (void)
+#define YY_DECL int parser4_lex (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 parser4_text and parser4_leng
* have been set up.
*/
#ifndef YY_USER_ACTION
/* 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 */
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;
- if ( !(yy_init) )
- {
- (yy_init) = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
-
- if ( ! yyin )
-/* %if-c-only */
- yyin = stdin;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! yyout )
-/* %if-c-only */
- yyout = stdout;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! YY_CURRENT_BUFFER ) {
- yyensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
- }
-
- yy_load_buffer_state( );
- }
-
- {
/* %% [7.0] user's declarations go here */
#line 100 "dhcp4_lexer.ll"
-#line 104 "dhcp4_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
- of the generated yylex function. Explanation:
+ of the generated parser4_lex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
- /* Code run each time yylex is called. */
+ /* Code run each time parser4_lex is called. */
driver.loc_.step();
if (start_token_flag) {
}
-#line 2184 "dhcp4_lexer.cc"
+#line 1919 "dhcp4_lexer.cc"
- while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! parser4_in )
+/* %if-c-only */
+ parser4_in = stdin;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! parser4_out )
+/* %if-c-only */
+ parser4_out = stdout;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ parser4_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ parser4__create_buffer(parser4_in,YY_BUF_SIZE );
+ }
+
+ parser4__load_buffer_state( );
+ }
+
+ 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 parser4_text. */
*yy_cp = (yy_hold_char);
/* yy_bp points to the position in yy_ch_buf of the start of
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1587 )
- 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 != 1586 );
YY_DO_BEFORE_ACTION;
-/* %% [11.0] code for yylineno update goes here */
+/* %% [11.0] code for parser4_lineno update goes here */
do_action: /* This label is used only to access EOF actions. */
/* %% [12.0] debug code goes here */
- if ( yy_flex_debug )
+ if ( parser4__flex_debug )
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
else if ( yy_act < 184 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
- (long)yy_rule_linenum[yy_act], yytext );
+ (long)yy_rule_linenum[yy_act], parser4_text );
else if ( yy_act == 184 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
- yytext );
+ parser4_text );
else if ( yy_act == 185 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
case 1:
YY_RULE_SETUP
-#line 147 "dhcp4_lexer.ll"
+#line 146 "dhcp4_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 149 "dhcp4_lexer.ll"
+#line 148 "dhcp4_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 151 "dhcp4_lexer.ll"
+#line 150 "dhcp4_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 156 "dhcp4_lexer.ll"
+#line 155 "dhcp4_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 157 "dhcp4_lexer.ll"
+#line 156 "dhcp4_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 158 "dhcp4_lexer.ll"
+#line 157 "dhcp4_lexer.ll"
{
isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 162 "dhcp4_lexer.ll"
+#line 161 "dhcp4_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 163 "dhcp4_lexer.ll"
+#line 162 "dhcp4_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 164 "dhcp4_lexer.ll"
+#line 163 "dhcp4_lexer.ll"
{
/* Include directive. */
/* Extract the filename. */
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
driver.includeFile(tmp);
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 173 "dhcp4_lexer.ll"
+#line 172 "dhcp4_lexer.ll"
{
isc_throw(Dhcp4ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 176 "dhcp4_lexer.ll"
+#line 175 "dhcp4_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 179 "dhcp4_lexer.ll"
+#line 178 "dhcp4_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 184 "dhcp4_lexer.ll"
+#line 183 "dhcp4_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
- driver.loc_.lines(yyleng);
+ driver.loc_.lines(parser4_leng);
driver.loc_.step();
}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 191 "dhcp4_lexer.ll"
+#line 190 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 200 "dhcp4_lexer.ll"
+#line 199 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 209 "dhcp4_lexer.ll"
+#line 208 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 218 "dhcp4_lexer.ll"
+#line 217 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SANITY_CHECKS:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 227 "dhcp4_lexer.ll"
+#line 226 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 236 "dhcp4_lexer.ll"
+#line 235 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 245 "dhcp4_lexer.ll"
+#line 244 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 255 "dhcp4_lexer.ll"
+#line 254 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 264 "dhcp4_lexer.ll"
+#line 263 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case Parser4Context::OUTBOUND_INTERFACE:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 273 "dhcp4_lexer.ll"
+#line 272 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case Parser4Context::OUTBOUND_INTERFACE:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 282 "dhcp4_lexer.ll"
+#line 281 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 291 "dhcp4_lexer.ll"
+#line 290 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 300 "dhcp4_lexer.ll"
+#line 299 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 309 "dhcp4_lexer.ll"
+#line 308 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 318 "dhcp4_lexer.ll"
+#line 317 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 327 "dhcp4_lexer.ll"
+#line 326 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 336 "dhcp4_lexer.ll"
+#line 335 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG_CONTROL:
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 345 "dhcp4_lexer.ll"
+#line 344 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG_CONTROL:
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 354 "dhcp4_lexer.ll"
+#line 353 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOSTS_DATABASE:
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 363 "dhcp4_lexer.ll"
+#line 362 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 375 "dhcp4_lexer.ll"
+#line 374 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 384 "dhcp4_lexer.ll"
+#line 383 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 393 "dhcp4_lexer.ll"
+#line 392 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 402 "dhcp4_lexer.ll"
+#line 401 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 411 "dhcp4_lexer.ll"
+#line 410 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 422 "dhcp4_lexer.ll"
+#line 421 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 433 "dhcp4_lexer.ll"
+#line 432 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 444 "dhcp4_lexer.ll"
+#line 443 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 455 "dhcp4_lexer.ll"
+#line 454 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 465 "dhcp4_lexer.ll"
+#line 464 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 475 "dhcp4_lexer.ll"
+#line 474 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 486 "dhcp4_lexer.ll"
+#line 485 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 497 "dhcp4_lexer.ll"
+#line 496 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 508 "dhcp4_lexer.ll"
+#line 507 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 519 "dhcp4_lexer.ll"
+#line 518 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 530 "dhcp4_lexer.ll"
+#line 529 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 541 "dhcp4_lexer.ll"
+#line 540 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 552 "dhcp4_lexer.ll"
+#line 551 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 563 "dhcp4_lexer.ll"
+#line 562 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 574 "dhcp4_lexer.ll"
+#line 573 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 585 "dhcp4_lexer.ll"
+#line 584 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 596 "dhcp4_lexer.ll"
+#line 595 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 607 "dhcp4_lexer.ll"
+#line 606 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 618 "dhcp4_lexer.ll"
+#line 617 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 629 "dhcp4_lexer.ll"
+#line 628 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 640 "dhcp4_lexer.ll"
+#line 639 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 649 "dhcp4_lexer.ll"
+#line 648 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 658 "dhcp4_lexer.ll"
+#line 657 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 668 "dhcp4_lexer.ll"
+#line 667 "dhcp4_lexer.ll"
{
switch (driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 677 "dhcp4_lexer.ll"
+#line 676 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 687 "dhcp4_lexer.ll"
+#line 686 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 701 "dhcp4_lexer.ll"
+#line 700 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 717 "dhcp4_lexer.ll"
+#line 716 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 726 "dhcp4_lexer.ll"
+#line 725 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 735 "dhcp4_lexer.ll"
+#line 734 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 744 "dhcp4_lexer.ll"
+#line 743 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::POOLS:
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 753 "dhcp4_lexer.ll"
+#line 752 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 774 "dhcp4_lexer.ll"
+#line 773 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 795 "dhcp4_lexer.ll"
+#line 794 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 804 "dhcp4_lexer.ll"
+#line 803 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 814 "dhcp4_lexer.ll"
+#line 813 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 823 "dhcp4_lexer.ll"
+#line 822 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 834 "dhcp4_lexer.ll"
+#line 833 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 843 "dhcp4_lexer.ll"
+#line 842 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 852 "dhcp4_lexer.ll"
+#line 851 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 861 "dhcp4_lexer.ll"
+#line 860 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 870 "dhcp4_lexer.ll"
+#line 869 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 879 "dhcp4_lexer.ll"
+#line 878 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 889 "dhcp4_lexer.ll"
+#line 888 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 898 "dhcp4_lexer.ll"
+#line 897 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 909 "dhcp4_lexer.ll"
+#line 908 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 920 "dhcp4_lexer.ll"
+#line 919 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 932 "dhcp4_lexer.ll"
+#line 931 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 941 "dhcp4_lexer.ll"
+#line 940 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 951 "dhcp4_lexer.ll"
+#line 950 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 960 "dhcp4_lexer.ll"
+#line 959 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 969 "dhcp4_lexer.ll"
+#line 968 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 978 "dhcp4_lexer.ll"
+#line 977 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 987 "dhcp4_lexer.ll"
+#line 986 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 996 "dhcp4_lexer.ll"
+#line 995 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 1005 "dhcp4_lexer.ll"
+#line 1004 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 1014 "dhcp4_lexer.ll"
+#line 1013 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 1023 "dhcp4_lexer.ll"
+#line 1022 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 1033 "dhcp4_lexer.ll"
+#line 1032 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 1044 "dhcp4_lexer.ll"
+#line 1043 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 1056 "dhcp4_lexer.ll"
+#line 1055 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1065 "dhcp4_lexer.ll"
+#line 1064 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1074 "dhcp4_lexer.ll"
+#line 1073 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 1084 "dhcp4_lexer.ll"
+#line 1083 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 1094 "dhcp4_lexer.ll"
+#line 1093 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 1104 "dhcp4_lexer.ll"
+#line 1103 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 1114 "dhcp4_lexer.ll"
+#line 1113 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 1124 "dhcp4_lexer.ll"
+#line 1123 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 1134 "dhcp4_lexer.ll"
+#line 1133 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATIONS:
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 1143 "dhcp4_lexer.ll"
+#line 1142 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 1153 "dhcp4_lexer.ll"
+#line 1152 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 1162 "dhcp4_lexer.ll"
+#line 1161 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 1171 "dhcp4_lexer.ll"
+#line 1170 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 1180 "dhcp4_lexer.ll"
+#line 1179 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 1189 "dhcp4_lexer.ll"
+#line 1188 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 1199 "dhcp4_lexer.ll"
+#line 1198 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 1209 "dhcp4_lexer.ll"
+#line 1208 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 1218 "dhcp4_lexer.ll"
+#line 1217 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 1228 "dhcp4_lexer.ll"
+#line 1227 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 1237 "dhcp4_lexer.ll"
+#line 1236 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 1246 "dhcp4_lexer.ll"
+#line 1245 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 1255 "dhcp4_lexer.ll"
+#line 1254 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 1264 "dhcp4_lexer.ll"
+#line 1263 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 1273 "dhcp4_lexer.ll"
+#line 1272 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 1282 "dhcp4_lexer.ll"
+#line 1281 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 1291 "dhcp4_lexer.ll"
+#line 1290 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 1300 "dhcp4_lexer.ll"
+#line 1299 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 1309 "dhcp4_lexer.ll"
+#line 1308 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 1318 "dhcp4_lexer.ll"
+#line 1317 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 1327 "dhcp4_lexer.ll"
+#line 1326 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 1336 "dhcp4_lexer.ll"
+#line 1335 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 1345 "dhcp4_lexer.ll"
+#line 1344 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 1354 "dhcp4_lexer.ll"
+#line 1353 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 1363 "dhcp4_lexer.ll"
+#line 1362 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 1372 "dhcp4_lexer.ll"
+#line 1371 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 1381 "dhcp4_lexer.ll"
+#line 1380 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 1390 "dhcp4_lexer.ll"
+#line 1389 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 1399 "dhcp4_lexer.ll"
+#line 1398 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 1408 "dhcp4_lexer.ll"
+#line 1407 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 1417 "dhcp4_lexer.ll"
+#line 1416 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 1426 "dhcp4_lexer.ll"
+#line 1425 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 1435 "dhcp4_lexer.ll"
+#line 1434 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 1444 "dhcp4_lexer.ll"
+#line 1443 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 1453 "dhcp4_lexer.ll"
+#line 1452 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 1462 "dhcp4_lexer.ll"
+#line 1461 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 1471 "dhcp4_lexer.ll"
+#line 1470 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 1480 "dhcp4_lexer.ll"
+#line 1479 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 1490 "dhcp4_lexer.ll"
+#line 1489 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 1500 "dhcp4_lexer.ll"
+#line 1499 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 1510 "dhcp4_lexer.ll"
+#line 1509 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp4Parser::make_TCP(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 1520 "dhcp4_lexer.ll"
+#line 1519 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 1530 "dhcp4_lexer.ll"
+#line 1529 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 149:
YY_RULE_SETUP
-#line 1540 "dhcp4_lexer.ll"
+#line 1539 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 1550 "dhcp4_lexer.ll"
+#line 1549 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 151:
YY_RULE_SETUP
-#line 1560 "dhcp4_lexer.ll"
+#line 1559 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 1570 "dhcp4_lexer.ll"
+#line 1569 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 1580 "dhcp4_lexer.ll"
+#line 1579 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_WHEN_NOT_PRESENT(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser4_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 1590 "dhcp4_lexer.ll"
+#line 1589 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 1599 "dhcp4_lexer.ll"
+#line 1598 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 1608 "dhcp4_lexer.ll"
+#line 1607 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 157:
YY_RULE_SETUP
-#line 1617 "dhcp4_lexer.ll"
+#line 1616 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 1626 "dhcp4_lexer.ll"
+#line 1625 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 1635 "dhcp4_lexer.ll"
+#line 1634 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 160:
YY_RULE_SETUP
-#line 1644 "dhcp4_lexer.ll"
+#line 1643 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 161:
YY_RULE_SETUP
-#line 1653 "dhcp4_lexer.ll"
+#line 1652 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 162:
YY_RULE_SETUP
-#line 1664 "dhcp4_lexer.ll"
+#line 1663 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 163:
YY_RULE_SETUP
-#line 1675 "dhcp4_lexer.ll"
+#line 1674 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 164:
YY_RULE_SETUP
-#line 1688 "dhcp4_lexer.ll"
+#line 1687 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 165:
YY_RULE_SETUP
-#line 1701 "dhcp4_lexer.ll"
+#line 1700 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 166:
YY_RULE_SETUP
-#line 1716 "dhcp4_lexer.ll"
+#line 1715 "dhcp4_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.
for 'foo' we should get foo */
- std::string raw(yytext+1);
+ std::string raw(parser4_text+1);
size_t len = raw.size() - 1;
raw.resize(len);
std::string decoded;
case 167:
/* rule 167 can match eol */
YY_RULE_SETUP
-#line 1815 "dhcp4_lexer.ll"
+#line 1814 "dhcp4_lexer.ll"
{
/* Bad string with a forbidden control character inside */
- driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
+ driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text));
}
YY_BREAK
case 168:
/* rule 168 can match eol */
YY_RULE_SETUP
-#line 1820 "dhcp4_lexer.ll"
+#line 1819 "dhcp4_lexer.ll"
{
/* Bad string with a bad escape inside */
- driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text));
}
YY_BREAK
case 169:
YY_RULE_SETUP
-#line 1825 "dhcp4_lexer.ll"
+#line 1824 "dhcp4_lexer.ll"
{
/* Bad string with an open escape at the end */
- driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text));
}
YY_BREAK
case 170:
YY_RULE_SETUP
-#line 1830 "dhcp4_lexer.ll"
+#line 1829 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 171:
YY_RULE_SETUP
-#line 1831 "dhcp4_lexer.ll"
+#line 1830 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 172:
YY_RULE_SETUP
-#line 1832 "dhcp4_lexer.ll"
+#line 1831 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 173:
YY_RULE_SETUP
-#line 1833 "dhcp4_lexer.ll"
+#line 1832 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 174:
YY_RULE_SETUP
-#line 1834 "dhcp4_lexer.ll"
+#line 1833 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 175:
YY_RULE_SETUP
-#line 1835 "dhcp4_lexer.ll"
+#line 1834 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
YY_BREAK
case 176:
YY_RULE_SETUP
-#line 1837 "dhcp4_lexer.ll"
+#line 1836 "dhcp4_lexer.ll"
{
/* An integer was found. */
- std::string tmp(yytext);
+ std::string tmp(parser4_text);
int64_t integer = 0;
try {
/* In substring we want to use negative values (e.g. -1).
YY_BREAK
case 177:
YY_RULE_SETUP
-#line 1855 "dhcp4_lexer.ll"
+#line 1854 "dhcp4_lexer.ll"
{
/* A floating point was found. */
- std::string tmp(yytext);
+ std::string tmp(parser4_text);
double fp = 0.0;
try {
fp = boost::lexical_cast<double>(tmp);
YY_BREAK
case 178:
YY_RULE_SETUP
-#line 1868 "dhcp4_lexer.ll"
+#line 1867 "dhcp4_lexer.ll"
{
- string tmp(yytext);
+ string tmp(parser4_text);
return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
case 179:
YY_RULE_SETUP
-#line 1873 "dhcp4_lexer.ll"
+#line 1872 "dhcp4_lexer.ll"
{
return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 180:
YY_RULE_SETUP
-#line 1877 "dhcp4_lexer.ll"
+#line 1876 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 181:
YY_RULE_SETUP
-#line 1879 "dhcp4_lexer.ll"
+#line 1878 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 182:
YY_RULE_SETUP
-#line 1881 "dhcp4_lexer.ll"
+#line 1880 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 183:
YY_RULE_SETUP
-#line 1883 "dhcp4_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 1882 "dhcp4_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 1885 "dhcp4_lexer.ll"
+#line 1884 "dhcp4_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
YY_BREAK
case 184:
YY_RULE_SETUP
-#line 1908 "dhcp4_lexer.ll"
+#line 1907 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 4591 "dhcp4_lexer.cc"
+#line 4360 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
{
/* 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 parser4_in at a new source and called
+ * parser4_lex(). 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 = parser4_in;
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
{
(yy_did_buffer_switch_on_eof) = 0;
- if ( yywrap( ) )
+ if ( parser4_wrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
- * yytext, we can now set up
+ * parser4_text, 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
"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 parser4_lex */
/* %ok-for-header */
/* %if-c++-only */
/* %not-for-header */
+
/* %ok-for-header */
/* %endif */
/* %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] )
/* 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++);
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;
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) );
+ parser4_realloc((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(
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
+ parser4_restart(parser4_in );
}
else
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 *) parser4_realloc((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;
/* %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);
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1587 )
- 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;
/* %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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1587 )
- 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 == 1586);
- 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
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( ) )
*/
/* Reset buffer status. */
- yyrestart( yyin );
+ parser4_restart(parser4_in );
/*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
- if ( yywrap( ) )
+ if ( parser4_wrap( ) )
return 0;
if ( ! (yy_did_buffer_switch_on_eof) )
}
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 parser4_text */
(yy_hold_char) = *++(yy_c_buf_p);
-/* %% [19.0] update BOL and yylineno */
+/* %% [19.0] update BOL and parser4_lineno */
return c;
}
* @note This function does not reset the start condition to @c INITIAL .
*/
/* %if-c-only */
- void yyrestart (FILE * input_file )
+ void parser4_restart (FILE * input_file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! YY_CURRENT_BUFFER ){
- yyensure_buffer_stack ();
+ parser4_ensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
+ parser4__create_buffer(parser4_in,YY_BUF_SIZE );
}
- yy_init_buffer( YY_CURRENT_BUFFER, input_file );
- yy_load_buffer_state( );
+ parser4__init_buffer(YY_CURRENT_BUFFER,input_file );
+ parser4__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 parser4__switch_to_buffer (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
/* TODO. We should be able to replace this entire function body
* with
- * yypop_buffer_state();
- * yypush_buffer_state(new_buffer);
+ * parser4_pop_buffer_state();
+ * parser4_push_buffer_state(new_buffer);
*/
- yyensure_buffer_stack ();
+ parser4_ensure_buffer_stack ();
if ( YY_CURRENT_BUFFER == new_buffer )
return;
}
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state( );
+ parser4__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 (parser4_wrap()) processing, but the only time this flag
+ * is looked at is after parser4_wrap() 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 parser4__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 */
+ parser4_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
(yy_hold_char) = *(yy_c_buf_p);
}
* @return the allocated buffer state.
*/
/* %if-c-only */
- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+ YY_BUFFER_STATE parser4__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) parser4_alloc(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 parser4__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 *) parser4_alloc(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 parser4__create_buffer()" );
b->yy_is_our_buffer = 1;
- yy_init_buffer( b, file );
+ parser4__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 parser4__create_buffer()
*
*/
/* %if-c-only */
- void yy_delete_buffer (YY_BUFFER_STATE b )
+ void parser4__delete_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- yyfree( (void *) b->yy_ch_buf );
+ parser4_free((void *) b->yy_ch_buf );
- yyfree( (void *) b );
+ parser4_free((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 parser4_restart() or at EOF.
*/
/* %if-c-only */
- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+ static void parser4__init_buffer (YY_BUFFER_STATE b, FILE * file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
int oerrno = errno;
- yy_flush_buffer( b );
+ parser4__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 parser4__init_buffer was _probably_
+ * called from parser4_restart() or through yy_get_next_buffer.
* In that case, we don't want to reset the lineno or column.
*/
if (b != YY_CURRENT_BUFFER){
*
*/
/* %if-c-only */
- void yy_flush_buffer (YY_BUFFER_STATE b )
+ void parser4__flush_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state( );
+ parser4__load_buffer_state( );
}
/* %if-c-or-c++ */
*
*/
/* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void parser4_push_buffer_state (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
if (new_buffer == NULL)
return;
- yyensure_buffer_stack();
+ parser4_ensure_buffer_stack();
- /* This block is copied from yy_switch_to_buffer. */
+ /* This block is copied from parser4__switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
(yy_buffer_stack_top)++;
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- /* copied from yy_switch_to_buffer. */
- yy_load_buffer_state( );
+ /* copied from parser4__switch_to_buffer. */
+ parser4__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/* %endif */
*
*/
/* %if-c-only */
-void yypop_buffer_state (void)
+void parser4_pop_buffer_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
if (!YY_CURRENT_BUFFER)
return;
- yy_delete_buffer(YY_CURRENT_BUFFER );
+ parser4__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( );
+ parser4__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
}
* Guarantees space for at least one push.
*/
/* %if-c-only */
-static void yyensure_buffer_stack (void)
+static void parser4_ensure_buffer_stack (void)
/* %endif */
/* %if-c++-only */
/* %endif */
* 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**)parser4_alloc
(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 parser4_ensure_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;
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**)parser4_realloc
((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 parser4_ensure_buffer_stack()" );
/* zero only the new slots.*/
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
* @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 parser4__scan_buffer (char * base, yy_size_t size )
{
YY_BUFFER_STATE b;
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) parser4_alloc(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 parser4__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 );
+ parser4__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 parser4_lex() 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.
+ * parser4__scan_bytes() instead.
*/
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE parser4__scan_string (yyconst char * yystr )
{
- return yy_scan_bytes( yystr, (int) strlen(yystr) );
+ return parser4__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 parser4_lex() 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 parser4__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 *) parser4_alloc(n );
if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "out of dynamic memory in parser4__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 = parser4__scan_buffer(buf,n );
if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "bad buffer in parser4__scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
#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 */
#define yyless(n) \
do \
{ \
- /* Undo effects of setting up yytext. */ \
+ /* Undo effects of setting up parser4_text. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
- yytext[yyleng] = (yy_hold_char); \
- (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ parser4_text[parser4_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = parser4_text + yyless_macro_arg; \
(yy_hold_char) = *(yy_c_buf_p); \
*(yy_c_buf_p) = '\0'; \
- yyleng = yyless_macro_arg; \
+ parser4_leng = yyless_macro_arg; \
} \
while ( 0 )
/** Get the current line number.
*
*/
-int yyget_lineno (void)
+int parser4_get_lineno (void)
{
-
- return yylineno;
+
+ return parser4_lineno;
}
/** Get the input stream.
*
*/
-FILE *yyget_in (void)
+FILE *parser4_get_in (void)
{
- return yyin;
+ return parser4_in;
}
/** Get the output stream.
*
*/
-FILE *yyget_out (void)
+FILE *parser4_get_out (void)
{
- return yyout;
+ return parser4_out;
}
/** Get the length of the current token.
*
*/
-int yyget_leng (void)
+yy_size_t parser4_get_leng (void)
{
- return yyleng;
+ return parser4_leng;
}
/** Get the current token.
*
*/
-char *yyget_text (void)
+char *parser4_get_text (void)
{
- return yytext;
+ return parser4_text;
}
/* %if-reentrant */
/* %endif */
/** Set the current line number.
- * @param _line_number line number
+ * @param line_number
*
*/
-void yyset_lineno (int _line_number )
+void parser4_set_lineno (int line_number )
{
- yylineno = _line_number;
+ parser4_lineno = 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 parser4__switch_to_buffer
*/
-void yyset_in (FILE * _in_str )
+void parser4_set_in (FILE * in_str )
{
- yyin = _in_str ;
+ parser4_in = in_str ;
}
-void yyset_out (FILE * _out_str )
+void parser4_set_out (FILE * out_str )
{
- yyout = _out_str ;
+ parser4_out = out_str ;
}
-int yyget_debug (void)
+int parser4_get_debug (void)
{
- return yy_flex_debug;
+ return parser4__flex_debug;
}
-void yyset_debug (int _bdebug )
+void parser4_set_debug (int bdebug )
{
- yy_flex_debug = _bdebug ;
+ parser4__flex_debug = bdebug ;
}
/* %endif */
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 parser4_lex_destroy(), so don't allocate here.
*/
- (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;
+ parser4_in = stdin;
+ parser4_out = stdout;
#else
- yyin = NULL;
- yyout = NULL;
+ parser4_in = (FILE *) 0;
+ parser4_out = (FILE *) 0;
#endif
/* For future reference: Set errno on error, since we are called by
- * yylex_init()
+ * parser4_lex_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)
+/* parser4_lex_destroy is for both reentrant and non-reentrant scanners. */
+int parser4_lex_destroy (void)
{
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
- yy_delete_buffer( YY_CURRENT_BUFFER );
+ parser4__delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
- yypop_buffer_state();
+ parser4_pop_buffer_state();
}
/* Destroy the stack itself. */
- yyfree((yy_buffer_stack) );
+ parser4_free((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. */
+ * parser4_lex() is called, initialization will occur. */
yy_init_globals( );
/* %if-reentrant */
*/
#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 )
;
}
#endif
-void *yyalloc (yy_size_t size )
+void *parser4_alloc (yy_size_t size )
{
- return malloc(size);
+ return (void *) malloc( size );
}
-void *yyrealloc (void * ptr, yy_size_t size )
+void *parser4_realloc (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
* 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 parser4_free (void * ptr )
{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+ free( (char *) ptr ); /* see parser4_realloc() for (char *) cast */
}
/* %if-tables-serialization definitions */
/* %ok-for-header */
-#line 1908 "dhcp4_lexer.ll"
+#line 1907 "dhcp4_lexer.ll"
+
using namespace isc::dhcp;
file_ = "<string>";
sfile_ = 0;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ parser4__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
buffer = parser4__scan_bytes(str.c_str(), str.size());
if (!buffer) {
file_ = filename;
sfile_ = f;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ parser4__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
/* See dhcp4_lexer.cc header for available definitions */
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details. Do not rely on them.
+
+
// Take the name prefix into account.
#define yylex parser4_lex
-// First part of user declarations.
-
-#line 39 "dhcp4_parser.cc" // lalr1.cc:404
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
#include "dhcp4_parser.h"
-// User implementation prologue.
-#line 53 "dhcp4_parser.cc" // lalr1.cc:412
// Unqualified %code blocks.
-#line 34 "dhcp4_parser.yy" // lalr1.cc:413
+#line 34 "dhcp4_parser.yy"
#include <dhcp4/parser_context.h>
-#line 59 "dhcp4_parser.cc" // lalr1.cc:413
+#line 51 "dhcp4_parser.cc"
#ifndef YY_
# endif
#endif
+// Whether we are compiled with exception support.
+#ifndef YY_EXCEPTIONS
+# if defined __GNUC__ && !defined __EXCEPTIONS
+# define YY_EXCEPTIONS 0
+# else
+# define YY_EXCEPTIONS 1
+# endif
+#endif
+
#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
- while (/*CONSTCOND*/ false)
+ while (false)
# endif
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << std::endl; \
+ *yycdebug_ << '\n'; \
} \
} while (false)
#else // !PARSER4_DEBUG
# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
-# define YY_STACK_PRINT() static_cast<void>(0)
+# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
+# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
+# define YY_STACK_PRINT() static_cast<void> (0)
#endif // !PARSER4_DEBUG
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "dhcp4_parser.yy" // lalr1.cc:479
+#line 14 "dhcp4_parser.yy"
namespace isc { namespace dhcp {
-#line 145 "dhcp4_parser.cc" // lalr1.cc:479
+#line 146 "dhcp4_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
{
if (*yystr == '"')
{
- std::string yyr = "";
+ std::string yyr;
char const *yyp = yystr;
for (;;)
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- // Fall through.
+ else
+ goto append;
+
+ append:
default:
yyr += *yyp;
break;
Dhcp4Parser::~Dhcp4Parser ()
{}
+ Dhcp4Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+ {}
/*---------------.
| Symbol types. |
// by_state.
- inline
- Dhcp4Parser::by_state::by_state ()
+ Dhcp4Parser::by_state::by_state () YY_NOEXCEPT
: state (empty_state)
{}
- inline
- Dhcp4Parser::by_state::by_state (const by_state& other)
- : state (other.state)
+ Dhcp4Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+ : state (that.state)
{}
- inline
void
- Dhcp4Parser::by_state::clear ()
+ Dhcp4Parser::by_state::clear () YY_NOEXCEPT
{
state = empty_state;
}
- inline
void
Dhcp4Parser::by_state::move (by_state& that)
{
that.clear ();
}
- inline
- Dhcp4Parser::by_state::by_state (state_type s)
+ Dhcp4Parser::by_state::by_state (state_type s) YY_NOEXCEPT
: state (s)
{}
- inline
Dhcp4Parser::symbol_number_type
- Dhcp4Parser::by_state::type_get () const
+ Dhcp4Parser::by_state::type_get () const YY_NOEXCEPT
{
if (state == empty_state)
return empty_symbol;
return yystos_[state];
}
- inline
Dhcp4Parser::stack_symbol_type::stack_symbol_type ()
{}
+ Dhcp4Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
+ : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
+ {
+ switch (that.type_get ())
+ {
+ case 194: // value
+ case 198: // map_value
+ case 244: // socket_type
+ case 247: // outbound_interface_value
+ case 269: // db_type
+ case 355: // hr_mode
+ case 504: // ncr_protocol_value
+ case 511: // replace_client_name_value
+ value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
- : super_type (s, that.location)
+ case 177: // "boolean"
+ value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
+ break;
+
+ case 176: // "floating point"
+ value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
+ break;
+
+ case 175: // "integer"
+ value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
+ break;
+
+ case 174: // "constant string"
+ value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
+ break;
+
+ default:
+ break;
+ }
+
+#if 201103L <= YY_CPLUSPLUS
+ // that is emptied.
+ that.state = empty_state;
+#endif
+ }
+
+ Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
+ : super_type (s, YY_MOVE (that.location))
{
- switch (that.type_get ())
+ switch (that.type_get ())
{
case 194: // value
case 198: // map_value
case 355: // hr_mode
case 504: // ncr_protocol_value
case 511: // replace_client_name_value
- value.move< ElementPtr > (that.value);
+ value.move< ElementPtr > (YY_MOVE (that.value));
break;
case 177: // "boolean"
- value.move< bool > (that.value);
+ value.move< bool > (YY_MOVE (that.value));
break;
case 176: // "floating point"
- value.move< double > (that.value);
+ value.move< double > (YY_MOVE (that.value));
break;
case 175: // "integer"
- value.move< int64_t > (that.value);
+ value.move< int64_t > (YY_MOVE (that.value));
break;
case 174: // "constant string"
- value.move< std::string > (that.value);
+ value.move< std::string > (YY_MOVE (that.value));
break;
default:
that.type = empty_symbol;
}
- inline
+#if YY_CPLUSPLUS < 201103L
Dhcp4Parser::stack_symbol_type&
- Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
+ Dhcp4Parser::stack_symbol_type::operator= (stack_symbol_type& that)
{
state = that.state;
- switch (that.type_get ())
+ switch (that.type_get ())
{
case 194: // value
case 198: // map_value
case 355: // hr_mode
case 504: // ncr_protocol_value
case 511: // replace_client_name_value
- value.copy< ElementPtr > (that.value);
+ value.move< ElementPtr > (that.value);
break;
case 177: // "boolean"
- value.copy< bool > (that.value);
+ value.move< bool > (that.value);
break;
case 176: // "floating point"
- value.copy< double > (that.value);
+ value.move< double > (that.value);
break;
case 175: // "integer"
- value.copy< int64_t > (that.value);
+ value.move< int64_t > (that.value);
break;
case 174: // "constant string"
- value.copy< std::string > (that.value);
+ value.move< std::string > (that.value);
break;
default:
}
location = that.location;
+ // that is emptied.
+ that.state = empty_state;
return *this;
}
-
+#endif
template <typename Base>
- inline
void
Dhcp4Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
+#endif
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
switch (yytype)
{
- case 174: // "constant string"
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< std::string > (); }
-#line 366 "dhcp4_parser.cc" // lalr1.cc:636
+ case 174: // "constant string"
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < std::string > (); }
+#line 408 "dhcp4_parser.cc"
break;
case 175: // "integer"
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< int64_t > (); }
-#line 373 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < int64_t > (); }
+#line 414 "dhcp4_parser.cc"
break;
case 176: // "floating point"
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< double > (); }
-#line 380 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < double > (); }
+#line 420 "dhcp4_parser.cc"
break;
case 177: // "boolean"
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< bool > (); }
-#line 387 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < bool > (); }
+#line 426 "dhcp4_parser.cc"
break;
case 194: // value
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 394 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 432 "dhcp4_parser.cc"
break;
case 198: // map_value
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 401 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 438 "dhcp4_parser.cc"
break;
case 244: // socket_type
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 408 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 444 "dhcp4_parser.cc"
break;
case 247: // outbound_interface_value
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 415 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 450 "dhcp4_parser.cc"
break;
case 269: // db_type
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 422 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 456 "dhcp4_parser.cc"
break;
case 355: // hr_mode
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 429 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 462 "dhcp4_parser.cc"
break;
case 504: // ncr_protocol_value
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 436 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 468 "dhcp4_parser.cc"
break;
case 511: // replace_client_name_value
-
-#line 256 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 443 "dhcp4_parser.cc" // lalr1.cc:636
+#line 256 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 474 "dhcp4_parser.cc"
break;
-
default:
break;
}
}
#endif
- inline
void
- Dhcp4Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
+ Dhcp4Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
{
- stack_symbol_type t (s, sym);
- yypush_ (m, t);
+ if (m)
+ YY_SYMBOL_PRINT (m, sym);
+ yystack_.push (YY_MOVE (sym));
}
- inline
void
- Dhcp4Parser::yypush_ (const char* m, stack_symbol_type& s)
+ Dhcp4Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
{
- if (m)
- YY_SYMBOL_PRINT (m, s);
- yystack_.push (s);
+#if 201103L <= YY_CPLUSPLUS
+ yypush_ (m, stack_symbol_type (s, std::move (sym)));
+#else
+ stack_symbol_type ss (s, sym);
+ yypush_ (m, ss);
+#endif
}
- inline
void
- Dhcp4Parser::yypop_ (unsigned int n)
+ Dhcp4Parser::yypop_ (int n)
{
yystack_.pop (n);
}
}
#endif // PARSER4_DEBUG
- inline Dhcp4Parser::state_type
+ Dhcp4Parser::state_type
Dhcp4Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
return yydefgoto_[yysym - yyntokens_];
}
- inline bool
+ bool
Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
- inline bool
+ bool
Dhcp4Parser::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
}
+ int
+ Dhcp4Parser::operator() ()
+ {
+ return parse ();
+ }
+
int
Dhcp4Parser::parse ()
{
/// The return value of parse ().
int yyresult;
- // FIXME: This shoud be completely indented. It is not yet to
- // avoid gratuitous conflicts when merging into the master branch.
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
- YYCDEBUG << "Starting parse" << std::endl;
+ YYCDEBUG << "Starting parse\n";
/* Initialize the stack. The initial state will be set in
location values to have been already stored, initialize these
stacks with a primary value. */
yystack_.clear ();
- yypush_ (YY_NULLPTR, 0, yyla);
+ yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
- // A new symbol was pushed on the stack.
+ /*-----------------------------------------------.
+ | yynewstate -- push a new symbol on the stack. |
+ `-----------------------------------------------*/
yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
+ YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
+ YYACCEPT;
goto yybackup;
- // Backup.
- yybackup:
+ /*-----------.
+ | yybackup. |
+ `-----------*/
+ yybackup:
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
if (yy_pact_value_is_default_ (yyn))
if (yyla.empty ())
{
YYCDEBUG << "Reading a token: ";
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
symbol_type yylookahead (yylex (ctx));
yyla.move (yylookahead);
}
+#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
goto yyerrlab1;
}
+#endif // YY_EXCEPTIONS
}
YY_SYMBOL_PRINT ("Next token is", yyla);
--yyerrstatus_;
// Shift the lookahead token.
- yypush_ ("Shifting", yyn, yyla);
+ yypush_ ("Shifting", yyn, YY_MOVE (yyla));
goto yynewstate;
+
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
goto yyerrlab;
goto yyreduce;
+
/*-----------------------------.
- | yyreduce -- Do a reduction. |
+ | yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
- yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
+ yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
- switch (yyr1_[yyn])
+ switch (yyr1_[yyn])
{
case 194: // value
case 198: // map_value
case 355: // hr_mode
case 504: // ncr_protocol_value
case 511: // replace_client_name_value
- yylhs.value.build< ElementPtr > ();
+ yylhs.value.emplace< ElementPtr > ();
break;
case 177: // "boolean"
- yylhs.value.build< bool > ();
+ yylhs.value.emplace< bool > ();
break;
case 176: // "floating point"
- yylhs.value.build< double > ();
+ yylhs.value.emplace< double > ();
break;
case 175: // "integer"
- yylhs.value.build< int64_t > ();
+ yylhs.value.emplace< int64_t > ();
break;
case 174: // "constant string"
- yylhs.value.build< std::string > ();
+ yylhs.value.emplace< std::string > ();
break;
default:
}
- // Compute the default @$.
+ // Default location.
{
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ stack_type::slice range (yystack_, yylen);
+ YYLLOC_DEFAULT (yylhs.location, range, yylen);
+ yyerror_range[1].location = yylhs.location;
}
// Perform the reduction.
YY_REDUCE_PRINT (yyn);
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
switch (yyn)
{
case 2:
-#line 265 "dhcp4_parser.yy" // lalr1.cc:859
+#line 265 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 690 "dhcp4_parser.cc" // lalr1.cc:859
+#line 741 "dhcp4_parser.cc"
break;
case 4:
-#line 266 "dhcp4_parser.yy" // lalr1.cc:859
+#line 266 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 696 "dhcp4_parser.cc" // lalr1.cc:859
+#line 747 "dhcp4_parser.cc"
break;
case 6:
-#line 267 "dhcp4_parser.yy" // lalr1.cc:859
+#line 267 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.DHCP4; }
-#line 702 "dhcp4_parser.cc" // lalr1.cc:859
+#line 753 "dhcp4_parser.cc"
break;
case 8:
-#line 268 "dhcp4_parser.yy" // lalr1.cc:859
+#line 268 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 708 "dhcp4_parser.cc" // lalr1.cc:859
+#line 759 "dhcp4_parser.cc"
break;
case 10:
-#line 269 "dhcp4_parser.yy" // lalr1.cc:859
+#line 269 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.SUBNET4; }
-#line 714 "dhcp4_parser.cc" // lalr1.cc:859
+#line 765 "dhcp4_parser.cc"
break;
case 12:
-#line 270 "dhcp4_parser.yy" // lalr1.cc:859
+#line 270 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.POOLS; }
-#line 720 "dhcp4_parser.cc" // lalr1.cc:859
+#line 771 "dhcp4_parser.cc"
break;
case 14:
-#line 271 "dhcp4_parser.yy" // lalr1.cc:859
+#line 271 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.RESERVATIONS; }
-#line 726 "dhcp4_parser.cc" // lalr1.cc:859
+#line 777 "dhcp4_parser.cc"
break;
case 16:
-#line 272 "dhcp4_parser.yy" // lalr1.cc:859
+#line 272 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.DHCP4; }
-#line 732 "dhcp4_parser.cc" // lalr1.cc:859
+#line 783 "dhcp4_parser.cc"
break;
case 18:
-#line 273 "dhcp4_parser.yy" // lalr1.cc:859
+#line 273 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DEF; }
-#line 738 "dhcp4_parser.cc" // lalr1.cc:859
+#line 789 "dhcp4_parser.cc"
break;
case 20:
-#line 274 "dhcp4_parser.yy" // lalr1.cc:859
+#line 274 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DATA; }
-#line 744 "dhcp4_parser.cc" // lalr1.cc:859
+#line 795 "dhcp4_parser.cc"
break;
case 22:
-#line 275 "dhcp4_parser.yy" // lalr1.cc:859
+#line 275 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 750 "dhcp4_parser.cc" // lalr1.cc:859
+#line 801 "dhcp4_parser.cc"
break;
case 24:
-#line 276 "dhcp4_parser.yy" // lalr1.cc:859
+#line 276 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 756 "dhcp4_parser.cc" // lalr1.cc:859
+#line 807 "dhcp4_parser.cc"
break;
case 26:
-#line 277 "dhcp4_parser.yy" // lalr1.cc:859
+#line 277 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.LOGGING; }
-#line 762 "dhcp4_parser.cc" // lalr1.cc:859
+#line 813 "dhcp4_parser.cc"
break;
case 28:
-#line 278 "dhcp4_parser.yy" // lalr1.cc:859
+#line 278 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 768 "dhcp4_parser.cc" // lalr1.cc:859
+#line 819 "dhcp4_parser.cc"
break;
case 30:
-#line 286 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 774 "dhcp4_parser.cc" // lalr1.cc:859
+#line 286 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 825 "dhcp4_parser.cc"
break;
case 31:
-#line 287 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 780 "dhcp4_parser.cc" // lalr1.cc:859
+#line 287 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 831 "dhcp4_parser.cc"
break;
case 32:
-#line 288 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 786 "dhcp4_parser.cc" // lalr1.cc:859
+#line 288 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 837 "dhcp4_parser.cc"
break;
case 33:
-#line 289 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 792 "dhcp4_parser.cc" // lalr1.cc:859
+#line 289 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 843 "dhcp4_parser.cc"
break;
case 34:
-#line 290 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 798 "dhcp4_parser.cc" // lalr1.cc:859
+#line 290 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 849 "dhcp4_parser.cc"
break;
case 35:
-#line 291 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 804 "dhcp4_parser.cc" // lalr1.cc:859
+#line 291 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 855 "dhcp4_parser.cc"
break;
case 36:
-#line 292 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 810 "dhcp4_parser.cc" // lalr1.cc:859
+#line 292 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 861 "dhcp4_parser.cc"
break;
case 37:
-#line 295 "dhcp4_parser.yy" // lalr1.cc:859
+#line 295 "dhcp4_parser.yy"
{
// Push back the JSON value on the stack
- ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 819 "dhcp4_parser.cc" // lalr1.cc:859
+#line 870 "dhcp4_parser.cc"
break;
case 38:
-#line 300 "dhcp4_parser.yy" // lalr1.cc:859
+#line 300 "dhcp4_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 830 "dhcp4_parser.cc" // lalr1.cc:859
+#line 881 "dhcp4_parser.cc"
break;
case 39:
-#line 305 "dhcp4_parser.yy" // lalr1.cc:859
+#line 305 "dhcp4_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 840 "dhcp4_parser.cc" // lalr1.cc:859
+#line 891 "dhcp4_parser.cc"
break;
case 40:
-#line 311 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 846 "dhcp4_parser.cc" // lalr1.cc:859
+#line 311 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 897 "dhcp4_parser.cc"
break;
case 43:
-#line 318 "dhcp4_parser.yy" // lalr1.cc:859
+#line 318 "dhcp4_parser.yy"
{
// map containing a single entry
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 855 "dhcp4_parser.cc" // lalr1.cc:859
+#line 906 "dhcp4_parser.cc"
break;
case 44:
-#line 322 "dhcp4_parser.yy" // lalr1.cc:859
+#line 322 "dhcp4_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 865 "dhcp4_parser.cc" // lalr1.cc:859
+#line 916 "dhcp4_parser.cc"
break;
case 45:
-#line 329 "dhcp4_parser.yy" // lalr1.cc:859
+#line 329 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 874 "dhcp4_parser.cc" // lalr1.cc:859
+#line 925 "dhcp4_parser.cc"
break;
case 46:
-#line 332 "dhcp4_parser.yy" // lalr1.cc:859
+#line 332 "dhcp4_parser.yy"
{
// list parsing complete. Put any sanity checking here
}
-#line 882 "dhcp4_parser.cc" // lalr1.cc:859
+#line 933 "dhcp4_parser.cc"
break;
case 49:
-#line 340 "dhcp4_parser.yy" // lalr1.cc:859
+#line 340 "dhcp4_parser.yy"
{
// List consisting of a single element.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 891 "dhcp4_parser.cc" // lalr1.cc:859
+#line 942 "dhcp4_parser.cc"
break;
case 50:
-#line 344 "dhcp4_parser.yy" // lalr1.cc:859
+#line 344 "dhcp4_parser.yy"
{
// List ending with , and a value.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 900 "dhcp4_parser.cc" // lalr1.cc:859
+#line 951 "dhcp4_parser.cc"
break;
case 51:
-#line 351 "dhcp4_parser.yy" // lalr1.cc:859
+#line 351 "dhcp4_parser.yy"
{
// List parsing about to start
}
-#line 908 "dhcp4_parser.cc" // lalr1.cc:859
+#line 959 "dhcp4_parser.cc"
break;
case 52:
-#line 353 "dhcp4_parser.yy" // lalr1.cc:859
+#line 353 "dhcp4_parser.yy"
{
// list parsing complete. Put any sanity checking here
//ctx.stack_.pop_back();
}
-#line 917 "dhcp4_parser.cc" // lalr1.cc:859
+#line 968 "dhcp4_parser.cc"
break;
case 55:
-#line 362 "dhcp4_parser.yy" // lalr1.cc:859
+#line 362 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 926 "dhcp4_parser.cc" // lalr1.cc:859
+#line 977 "dhcp4_parser.cc"
break;
case 56:
-#line 366 "dhcp4_parser.yy" // lalr1.cc:859
+#line 366 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 935 "dhcp4_parser.cc" // lalr1.cc:859
+#line 986 "dhcp4_parser.cc"
break;
case 57:
-#line 377 "dhcp4_parser.yy" // lalr1.cc:859
+#line 377 "dhcp4_parser.yy"
{
const std::string& where = ctx.contextName();
- const std::string& keyword = yystack_[1].value.as< std::string > ();
+ const std::string& keyword = yystack_[1].value.as < std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 946 "dhcp4_parser.cc" // lalr1.cc:859
+#line 997 "dhcp4_parser.cc"
break;
case 58:
-#line 387 "dhcp4_parser.yy" // lalr1.cc:859
+#line 387 "dhcp4_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 957 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1008 "dhcp4_parser.cc"
break;
case 59:
-#line 392 "dhcp4_parser.yy" // lalr1.cc:859
+#line 392 "dhcp4_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// Dhcp4 is required
ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 970 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1021 "dhcp4_parser.cc"
break;
case 68:
-#line 416 "dhcp4_parser.yy" // lalr1.cc:859
+#line 416 "dhcp4_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP4);
}
-#line 983 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1034 "dhcp4_parser.cc"
break;
case 69:
-#line 423 "dhcp4_parser.yy" // lalr1.cc:859
+#line 423 "dhcp4_parser.yy"
{
// No global parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 993 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1044 "dhcp4_parser.cc"
break;
case 70:
-#line 431 "dhcp4_parser.yy" // lalr1.cc:859
+#line 431 "dhcp4_parser.yy"
{
// Parse the Dhcp4 map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1054 "dhcp4_parser.cc"
break;
case 71:
-#line 435 "dhcp4_parser.yy" // lalr1.cc:859
+#line 435 "dhcp4_parser.yy"
{
// No global parameter is required
// parsing completed
}
-#line 1012 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1063 "dhcp4_parser.cc"
break;
case 116:
-#line 490 "dhcp4_parser.yy" // lalr1.cc:859
+#line 490 "dhcp4_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("valid-lifetime", prf);
}
-#line 1021 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1072 "dhcp4_parser.cc"
break;
case 117:
-#line 495 "dhcp4_parser.yy" // lalr1.cc:859
+#line 495 "dhcp4_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("min-valid-lifetime", prf);
}
-#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1081 "dhcp4_parser.cc"
break;
case 118:
-#line 500 "dhcp4_parser.yy" // lalr1.cc:859
+#line 500 "dhcp4_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-valid-lifetime", prf);
}
-#line 1039 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1090 "dhcp4_parser.cc"
break;
case 119:
-#line 505 "dhcp4_parser.yy" // lalr1.cc:859
+#line 505 "dhcp4_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("renew-timer", prf);
}
-#line 1048 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1099 "dhcp4_parser.cc"
break;
case 120:
-#line 510 "dhcp4_parser.yy" // lalr1.cc:859
+#line 510 "dhcp4_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rebind-timer", prf);
}
-#line 1057 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1108 "dhcp4_parser.cc"
break;
case 121:
-#line 515 "dhcp4_parser.yy" // lalr1.cc:859
+#line 515 "dhcp4_parser.yy"
{
- ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("calculate-tee-times", ctt);
}
-#line 1066 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1117 "dhcp4_parser.cc"
break;
case 122:
-#line 520 "dhcp4_parser.yy" // lalr1.cc:859
+#line 520 "dhcp4_parser.yy"
{
- ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t1-percent", t1);
}
-#line 1075 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1126 "dhcp4_parser.cc"
break;
case 123:
-#line 525 "dhcp4_parser.yy" // lalr1.cc:859
+#line 525 "dhcp4_parser.yy"
{
- ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t2-percent", t2);
}
-#line 1084 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1135 "dhcp4_parser.cc"
break;
case 124:
-#line 530 "dhcp4_parser.yy" // lalr1.cc:859
+#line 530 "dhcp4_parser.yy"
{
- ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("decline-probation-period", dpp);
}
-#line 1093 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1144 "dhcp4_parser.cc"
break;
case 125:
-#line 535 "dhcp4_parser.yy" // lalr1.cc:859
+#line 535 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1101 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1152 "dhcp4_parser.cc"
break;
case 126:
-#line 537 "dhcp4_parser.yy" // lalr1.cc:859
+#line 537 "dhcp4_parser.yy"
{
- ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-tag", stag);
ctx.leave();
}
-#line 1111 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1162 "dhcp4_parser.cc"
break;
case 127:
-#line 543 "dhcp4_parser.yy" // lalr1.cc:859
+#line 543 "dhcp4_parser.yy"
{
- ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("echo-client-id", echo);
}
-#line 1120 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1171 "dhcp4_parser.cc"
break;
case 128:
-#line 548 "dhcp4_parser.yy" // lalr1.cc:859
+#line 548 "dhcp4_parser.yy"
{
- ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("match-client-id", match);
}
-#line 1129 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1180 "dhcp4_parser.cc"
break;
case 129:
-#line 553 "dhcp4_parser.yy" // lalr1.cc:859
+#line 553 "dhcp4_parser.yy"
{
- ElementPtr prf(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("authoritative", prf);
}
-#line 1138 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1189 "dhcp4_parser.cc"
break;
case 130:
-#line 559 "dhcp4_parser.yy" // lalr1.cc:859
+#line 559 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces-config", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.INTERFACES_CONFIG);
}
-#line 1149 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1200 "dhcp4_parser.cc"
break;
case 131:
-#line 564 "dhcp4_parser.yy" // lalr1.cc:859
+#line 564 "dhcp4_parser.yy"
{
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1159 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1210 "dhcp4_parser.cc"
break;
case 141:
-#line 583 "dhcp4_parser.yy" // lalr1.cc:859
+#line 583 "dhcp4_parser.yy"
{
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1169 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1220 "dhcp4_parser.cc"
break;
case 142:
-#line 587 "dhcp4_parser.yy" // lalr1.cc:859
+#line 587 "dhcp4_parser.yy"
{
// No interfaces config param is required
// parsing completed
}
-#line 1178 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1229 "dhcp4_parser.cc"
break;
case 143:
-#line 592 "dhcp4_parser.yy" // lalr1.cc:859
+#line 592 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1189 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1240 "dhcp4_parser.cc"
break;
case 144:
-#line 597 "dhcp4_parser.yy" // lalr1.cc:859
+#line 597 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1198 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1249 "dhcp4_parser.cc"
break;
case 145:
-#line 602 "dhcp4_parser.yy" // lalr1.cc:859
+#line 602 "dhcp4_parser.yy"
{
ctx.enter(ctx.DHCP_SOCKET_TYPE);
}
-#line 1206 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1257 "dhcp4_parser.cc"
break;
case 146:
-#line 604 "dhcp4_parser.yy" // lalr1.cc:859
+#line 604 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1215 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1266 "dhcp4_parser.cc"
break;
case 147:
-#line 609 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1221 "dhcp4_parser.cc" // lalr1.cc:859
+#line 609 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
+#line 1272 "dhcp4_parser.cc"
break;
case 148:
-#line 610 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1227 "dhcp4_parser.cc" // lalr1.cc:859
+#line 610 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
+#line 1278 "dhcp4_parser.cc"
break;
case 149:
-#line 613 "dhcp4_parser.yy" // lalr1.cc:859
+#line 613 "dhcp4_parser.yy"
{
ctx.enter(ctx.OUTBOUND_INTERFACE);
}
-#line 1235 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1286 "dhcp4_parser.cc"
break;
case 150:
-#line 615 "dhcp4_parser.yy" // lalr1.cc:859
+#line 615 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1244 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1295 "dhcp4_parser.cc"
break;
case 151:
-#line 620 "dhcp4_parser.yy" // lalr1.cc:859
+#line 620 "dhcp4_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
}
-#line 1252 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1303 "dhcp4_parser.cc"
break;
case 152:
-#line 622 "dhcp4_parser.yy" // lalr1.cc:859
+#line 622 "dhcp4_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
}
-#line 1260 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1311 "dhcp4_parser.cc"
break;
case 153:
-#line 626 "dhcp4_parser.yy" // lalr1.cc:859
+#line 626 "dhcp4_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1269 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1320 "dhcp4_parser.cc"
break;
case 154:
-#line 632 "dhcp4_parser.yy" // lalr1.cc:859
+#line 632 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.LEASE_DATABASE);
}
-#line 1280 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1331 "dhcp4_parser.cc"
break;
case 155:
-#line 637 "dhcp4_parser.yy" // lalr1.cc:859
+#line 637 "dhcp4_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1291 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1342 "dhcp4_parser.cc"
break;
case 156:
-#line 644 "dhcp4_parser.yy" // lalr1.cc:859
+#line 644 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sanity-checks", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SANITY_CHECKS);
}
-#line 1302 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1353 "dhcp4_parser.cc"
break;
case 157:
-#line 649 "dhcp4_parser.yy" // lalr1.cc:859
+#line 649 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1362 "dhcp4_parser.cc"
break;
case 161:
-#line 659 "dhcp4_parser.yy" // lalr1.cc:859
+#line 659 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1319 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1370 "dhcp4_parser.cc"
break;
case 162:
-#line 661 "dhcp4_parser.yy" // lalr1.cc:859
+#line 661 "dhcp4_parser.yy"
{
- if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
- (string(yystack_[0].value.as< std::string > ()) == "warn") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
- (string(yystack_[0].value.as< std::string > ()) == "del")) {
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
+ (string(yystack_[0].value.as < std::string > ()) == "warn") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
+ (string(yystack_[0].value.as < std::string > ()) == "del")) {
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-checks", user);
ctx.leave();
} else {
- error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
+ error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 1339 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1390 "dhcp4_parser.cc"
break;
case 163:
-#line 677 "dhcp4_parser.yy" // lalr1.cc:859
+#line 677 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1350 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1401 "dhcp4_parser.cc"
break;
case 164:
-#line 682 "dhcp4_parser.yy" // lalr1.cc:859
+#line 682 "dhcp4_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1361 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1412 "dhcp4_parser.cc"
break;
case 165:
-#line 689 "dhcp4_parser.yy" // lalr1.cc:859
+#line 689 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1372 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1423 "dhcp4_parser.cc"
break;
case 166:
-#line 694 "dhcp4_parser.yy" // lalr1.cc:859
+#line 694 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1381 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1432 "dhcp4_parser.cc"
break;
case 171:
-#line 707 "dhcp4_parser.yy" // lalr1.cc:859
+#line 707 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1391 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1442 "dhcp4_parser.cc"
break;
case 172:
-#line 711 "dhcp4_parser.yy" // lalr1.cc:859
+#line 711 "dhcp4_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1401 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1452 "dhcp4_parser.cc"
break;
case 195:
-#line 743 "dhcp4_parser.yy" // lalr1.cc:859
+#line 743 "dhcp4_parser.yy"
{
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 1409 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1460 "dhcp4_parser.cc"
break;
case 196:
-#line 745 "dhcp4_parser.yy" // lalr1.cc:859
+#line 745 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1418 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1469 "dhcp4_parser.cc"
break;
case 197:
-#line 750 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1424 "dhcp4_parser.cc" // lalr1.cc:859
+#line 750 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1475 "dhcp4_parser.cc"
break;
case 198:
-#line 751 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1430 "dhcp4_parser.cc" // lalr1.cc:859
+#line 751 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1481 "dhcp4_parser.cc"
break;
case 199:
-#line 752 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1436 "dhcp4_parser.cc" // lalr1.cc:859
+#line 752 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1487 "dhcp4_parser.cc"
break;
case 200:
-#line 753 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1442 "dhcp4_parser.cc" // lalr1.cc:859
+#line 753 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1493 "dhcp4_parser.cc"
break;
case 201:
-#line 756 "dhcp4_parser.yy" // lalr1.cc:859
+#line 756 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1450 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1501 "dhcp4_parser.cc"
break;
case 202:
-#line 758 "dhcp4_parser.yy" // lalr1.cc:859
+#line 758 "dhcp4_parser.yy"
{
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 1460 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1511 "dhcp4_parser.cc"
break;
case 203:
-#line 764 "dhcp4_parser.yy" // lalr1.cc:859
+#line 764 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1468 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1519 "dhcp4_parser.cc"
break;
case 204:
-#line 766 "dhcp4_parser.yy" // lalr1.cc:859
+#line 766 "dhcp4_parser.yy"
{
- ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 1478 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1529 "dhcp4_parser.cc"
break;
case 205:
-#line 772 "dhcp4_parser.yy" // lalr1.cc:859
+#line 772 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1486 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1537 "dhcp4_parser.cc"
break;
case 206:
-#line 774 "dhcp4_parser.yy" // lalr1.cc:859
+#line 774 "dhcp4_parser.yy"
{
- ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 1496 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1547 "dhcp4_parser.cc"
break;
case 207:
-#line 780 "dhcp4_parser.yy" // lalr1.cc:859
+#line 780 "dhcp4_parser.yy"
{
- ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 1505 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1556 "dhcp4_parser.cc"
break;
case 208:
-#line 785 "dhcp4_parser.yy" // lalr1.cc:859
+#line 785 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1513 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1564 "dhcp4_parser.cc"
break;
case 209:
-#line 787 "dhcp4_parser.yy" // lalr1.cc:859
+#line 787 "dhcp4_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1523 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1574 "dhcp4_parser.cc"
break;
case 210:
-#line 793 "dhcp4_parser.yy" // lalr1.cc:859
+#line 793 "dhcp4_parser.yy"
{
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 1532 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1583 "dhcp4_parser.cc"
break;
case 211:
-#line 798 "dhcp4_parser.yy" // lalr1.cc:859
+#line 798 "dhcp4_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 1541 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1592 "dhcp4_parser.cc"
break;
case 212:
-#line 803 "dhcp4_parser.yy" // lalr1.cc:859
+#line 803 "dhcp4_parser.yy"
{
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 1550 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1601 "dhcp4_parser.cc"
break;
case 213:
-#line 808 "dhcp4_parser.yy" // lalr1.cc:859
+#line 808 "dhcp4_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 1559 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1610 "dhcp4_parser.cc"
break;
case 214:
-#line 813 "dhcp4_parser.yy" // lalr1.cc:859
+#line 813 "dhcp4_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("request-timeout", n);
}
-#line 1568 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1619 "dhcp4_parser.cc"
break;
case 215:
-#line 818 "dhcp4_parser.yy" // lalr1.cc:859
+#line 818 "dhcp4_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-keepalive", n);
}
-#line 1577 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1628 "dhcp4_parser.cc"
break;
case 216:
-#line 823 "dhcp4_parser.yy" // lalr1.cc:859
+#line 823 "dhcp4_parser.yy"
{
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-nodelay", n);
}
-#line 1586 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1637 "dhcp4_parser.cc"
break;
case 217:
-#line 828 "dhcp4_parser.yy" // lalr1.cc:859
+#line 828 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1594 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1645 "dhcp4_parser.cc"
break;
case 218:
-#line 830 "dhcp4_parser.yy" // lalr1.cc:859
+#line 830 "dhcp4_parser.yy"
{
- ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("contact-points", cp);
ctx.leave();
}
-#line 1604 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1655 "dhcp4_parser.cc"
break;
case 219:
-#line 836 "dhcp4_parser.yy" // lalr1.cc:859
+#line 836 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1612 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1663 "dhcp4_parser.cc"
break;
case 220:
-#line 838 "dhcp4_parser.yy" // lalr1.cc:859
+#line 838 "dhcp4_parser.yy"
{
- ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("keyspace", ks);
ctx.leave();
}
-#line 1622 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1673 "dhcp4_parser.cc"
break;
case 221:
-#line 844 "dhcp4_parser.yy" // lalr1.cc:859
+#line 844 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1630 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1681 "dhcp4_parser.cc"
break;
case 222:
-#line 846 "dhcp4_parser.yy" // lalr1.cc:859
+#line 846 "dhcp4_parser.yy"
{
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("consistency", c);
ctx.leave();
}
-#line 1640 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1691 "dhcp4_parser.cc"
break;
case 223:
-#line 852 "dhcp4_parser.yy" // lalr1.cc:859
+#line 852 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1648 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1699 "dhcp4_parser.cc"
break;
case 224:
-#line 854 "dhcp4_parser.yy" // lalr1.cc:859
+#line 854 "dhcp4_parser.yy"
{
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("serial-consistency", c);
ctx.leave();
}
-#line 1658 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1709 "dhcp4_parser.cc"
break;
case 225:
-#line 860 "dhcp4_parser.yy" // lalr1.cc:859
+#line 860 "dhcp4_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 1667 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1718 "dhcp4_parser.cc"
break;
case 226:
-#line 865 "dhcp4_parser.yy" // lalr1.cc:859
+#line 865 "dhcp4_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 1676 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1727 "dhcp4_parser.cc"
break;
case 227:
-#line 870 "dhcp4_parser.yy" // lalr1.cc:859
+#line 870 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host-reservation-identifiers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
}
-#line 1687 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1738 "dhcp4_parser.cc"
break;
case 228:
-#line 875 "dhcp4_parser.yy" // lalr1.cc:859
+#line 875 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1696 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1747 "dhcp4_parser.cc"
break;
case 236:
-#line 891 "dhcp4_parser.yy" // lalr1.cc:859
+#line 891 "dhcp4_parser.yy"
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1705 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1756 "dhcp4_parser.cc"
break;
case 237:
-#line 896 "dhcp4_parser.yy" // lalr1.cc:859
+#line 896 "dhcp4_parser.yy"
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 1714 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1765 "dhcp4_parser.cc"
break;
case 238:
-#line 901 "dhcp4_parser.yy" // lalr1.cc:859
+#line 901 "dhcp4_parser.yy"
{
ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(circuit);
}
-#line 1723 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1774 "dhcp4_parser.cc"
break;
case 239:
-#line 906 "dhcp4_parser.yy" // lalr1.cc:859
+#line 906 "dhcp4_parser.yy"
{
ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(client);
}
-#line 1732 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1783 "dhcp4_parser.cc"
break;
case 240:
-#line 911 "dhcp4_parser.yy" // lalr1.cc:859
+#line 911 "dhcp4_parser.yy"
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 1741 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1792 "dhcp4_parser.cc"
break;
case 241:
-#line 916 "dhcp4_parser.yy" // lalr1.cc:859
+#line 916 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 1752 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1803 "dhcp4_parser.cc"
break;
case 242:
-#line 921 "dhcp4_parser.yy" // lalr1.cc:859
+#line 921 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1761 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1812 "dhcp4_parser.cc"
break;
case 247:
-#line 934 "dhcp4_parser.yy" // lalr1.cc:859
+#line 934 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1771 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1822 "dhcp4_parser.cc"
break;
case 248:
-#line 938 "dhcp4_parser.yy" // lalr1.cc:859
+#line 938 "dhcp4_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1781 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1832 "dhcp4_parser.cc"
break;
case 249:
-#line 944 "dhcp4_parser.yy" // lalr1.cc:859
+#line 944 "dhcp4_parser.yy"
{
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1791 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1842 "dhcp4_parser.cc"
break;
case 250:
-#line 948 "dhcp4_parser.yy" // lalr1.cc:859
+#line 948 "dhcp4_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1852 "dhcp4_parser.cc"
break;
case 256:
-#line 963 "dhcp4_parser.yy" // lalr1.cc:859
+#line 963 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1809 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1860 "dhcp4_parser.cc"
break;
case 257:
-#line 965 "dhcp4_parser.yy" // lalr1.cc:859
+#line 965 "dhcp4_parser.yy"
{
- ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1819 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1870 "dhcp4_parser.cc"
break;
case 258:
-#line 971 "dhcp4_parser.yy" // lalr1.cc:859
+#line 971 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1827 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1878 "dhcp4_parser.cc"
break;
case 259:
-#line 973 "dhcp4_parser.yy" // lalr1.cc:859
+#line 973 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1836 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1887 "dhcp4_parser.cc"
break;
case 260:
-#line 979 "dhcp4_parser.yy" // lalr1.cc:859
+#line 979 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("expired-leases-processing", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
}
-#line 1847 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1898 "dhcp4_parser.cc"
break;
case 261:
-#line 984 "dhcp4_parser.yy" // lalr1.cc:859
+#line 984 "dhcp4_parser.yy"
{
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1908 "dhcp4_parser.cc"
break;
case 270:
-#line 1002 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1002 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reclaim-timer-wait-time", value);
}
-#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1917 "dhcp4_parser.cc"
break;
case 271:
-#line 1007 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1007 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
}
-#line 1875 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1926 "dhcp4_parser.cc"
break;
case 272:
-#line 1012 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1012 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 1884 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1935 "dhcp4_parser.cc"
break;
case 273:
-#line 1017 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1017 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 1893 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1944 "dhcp4_parser.cc"
break;
case 274:
-#line 1022 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1022 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 1902 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1953 "dhcp4_parser.cc"
break;
case 275:
-#line 1027 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1027 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 1911 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1962 "dhcp4_parser.cc"
break;
case 276:
-#line 1035 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1035 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet4", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET4);
}
-#line 1922 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1973 "dhcp4_parser.cc"
break;
case 277:
-#line 1040 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1040 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1931 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1982 "dhcp4_parser.cc"
break;
case 282:
-#line 1060 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1060 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1941 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1992 "dhcp4_parser.cc"
break;
case 283:
-#line 1064 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1064 "dhcp4_parser.yy"
{
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1967 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2018 "dhcp4_parser.cc"
break;
case 284:
-#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1086 "dhcp4_parser.yy"
{
// Parse the subnet4 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1977 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2028 "dhcp4_parser.cc"
break;
case 285:
-#line 1090 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1090 "dhcp4_parser.yy"
{
// The subnet subnet4 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1987 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2038 "dhcp4_parser.cc"
break;
case 317:
-#line 1133 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1133 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1995 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2046 "dhcp4_parser.cc"
break;
case 318:
-#line 1135 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1135 "dhcp4_parser.yy"
{
- ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 2005 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2056 "dhcp4_parser.cc"
break;
case 319:
-#line 1141 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1141 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2064 "dhcp4_parser.cc"
break;
case 320:
-#line 1143 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1143 "dhcp4_parser.yy"
{
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface", iface);
ctx.leave();
}
-#line 2023 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2074 "dhcp4_parser.cc"
break;
case 321:
-#line 1149 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1149 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2031 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2082 "dhcp4_parser.cc"
break;
case 322:
-#line 1151 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1151 "dhcp4_parser.yy"
{
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface-id", iface);
ctx.leave();
}
-#line 2041 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2092 "dhcp4_parser.cc"
break;
case 323:
-#line 1157 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1157 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2049 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2100 "dhcp4_parser.cc"
break;
case 324:
-#line 1159 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1159 "dhcp4_parser.yy"
{
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-subnet", iface);
ctx.leave();
}
-#line 2059 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2110 "dhcp4_parser.cc"
break;
case 325:
-#line 1165 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1165 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2067 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2118 "dhcp4_parser.cc"
break;
case 326:
-#line 1167 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1167 "dhcp4_parser.yy"
{
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2077 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2128 "dhcp4_parser.cc"
break;
case 327:
-#line 1173 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1173 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2085 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2136 "dhcp4_parser.cc"
break;
case 328:
-#line 1175 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1175 "dhcp4_parser.yy"
{
- ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 2095 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2146 "dhcp4_parser.cc"
break;
case 329:
-#line 1181 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1181 "dhcp4_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("require-client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2106 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2157 "dhcp4_parser.cc"
break;
case 330:
-#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1186 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2115 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2166 "dhcp4_parser.cc"
break;
case 331:
-#line 1191 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1191 "dhcp4_parser.yy"
{
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2123 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2174 "dhcp4_parser.cc"
break;
case 332:
-#line 1193 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1193 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2132 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2183 "dhcp4_parser.cc"
break;
case 333:
-#line 1198 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2138 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1198 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2189 "dhcp4_parser.cc"
break;
case 334:
-#line 1199 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2144 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1199 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2195 "dhcp4_parser.cc"
break;
case 335:
-#line 1200 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2150 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1200 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2201 "dhcp4_parser.cc"
break;
case 336:
-#line 1201 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2156 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1201 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2207 "dhcp4_parser.cc"
break;
case 337:
-#line 1204 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1204 "dhcp4_parser.yy"
{
- ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2165 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2216 "dhcp4_parser.cc"
break;
case 338:
-#line 1211 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1211 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("shared-networks", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SHARED_NETWORK);
}
-#line 2176 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2227 "dhcp4_parser.cc"
break;
case 339:
-#line 1216 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1216 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2185 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2236 "dhcp4_parser.cc"
break;
case 344:
-#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1231 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2195 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2246 "dhcp4_parser.cc"
break;
case 345:
-#line 1235 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1235 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 2203 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2254 "dhcp4_parser.cc"
break;
case 372:
-#line 1273 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1273 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 2214 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2265 "dhcp4_parser.cc"
break;
case 373:
-#line 1278 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1278 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2223 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2274 "dhcp4_parser.cc"
break;
case 374:
-#line 1286 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1286 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2232 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2283 "dhcp4_parser.cc"
break;
case 375:
-#line 1289 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1289 "dhcp4_parser.yy"
{
// parsing completed
}
-#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2291 "dhcp4_parser.cc"
break;
case 380:
-#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1305 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2250 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2301 "dhcp4_parser.cc"
break;
case 381:
-#line 1309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1309 "dhcp4_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2262 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2313 "dhcp4_parser.cc"
break;
case 382:
-#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1320 "dhcp4_parser.yy"
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2272 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2323 "dhcp4_parser.cc"
break;
case 383:
-#line 1324 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1324 "dhcp4_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2284 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2335 "dhcp4_parser.cc"
break;
case 399:
-#line 1356 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1356 "dhcp4_parser.yy"
{
- ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2344 "dhcp4_parser.cc"
break;
case 401:
-#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1363 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2301 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2352 "dhcp4_parser.cc"
break;
case 402:
-#line 1365 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1365 "dhcp4_parser.yy"
{
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2362 "dhcp4_parser.cc"
break;
case 403:
-#line 1371 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1371 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2319 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2370 "dhcp4_parser.cc"
break;
case 404:
-#line 1373 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1373 "dhcp4_parser.yy"
{
- ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 2329 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2380 "dhcp4_parser.cc"
break;
case 405:
-#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1379 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2337 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2388 "dhcp4_parser.cc"
break;
case 406:
-#line 1381 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1381 "dhcp4_parser.yy"
{
- ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 2347 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2398 "dhcp4_parser.cc"
break;
case 408:
-#line 1389 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1389 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2355 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2406 "dhcp4_parser.cc"
break;
case 409:
-#line 1391 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1391 "dhcp4_parser.yy"
{
- ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 2365 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2416 "dhcp4_parser.cc"
break;
case 410:
-#line 1397 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1397 "dhcp4_parser.yy"
{
- ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 2374 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2425 "dhcp4_parser.cc"
break;
case 411:
-#line 1406 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1406 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 2385 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2436 "dhcp4_parser.cc"
break;
case 412:
-#line 1411 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1411 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2394 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2445 "dhcp4_parser.cc"
break;
case 417:
-#line 1430 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1430 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2404 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2455 "dhcp4_parser.cc"
break;
case 418:
-#line 1434 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1434 "dhcp4_parser.yy"
{
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 2413 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2464 "dhcp4_parser.cc"
break;
case 419:
-#line 1442 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1442 "dhcp4_parser.yy"
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2423 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2474 "dhcp4_parser.cc"
break;
case 420:
-#line 1446 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1446 "dhcp4_parser.yy"
{
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 2432 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2483 "dhcp4_parser.cc"
break;
case 435:
-#line 1479 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1479 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2440 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2491 "dhcp4_parser.cc"
break;
case 436:
-#line 1481 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1481 "dhcp4_parser.yy"
{
- ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2450 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2501 "dhcp4_parser.cc"
break;
case 439:
-#line 1491 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1491 "dhcp4_parser.yy"
{
- ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2459 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2510 "dhcp4_parser.cc"
break;
case 440:
-#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1496 "dhcp4_parser.yy"
{
- ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2468 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2519 "dhcp4_parser.cc"
break;
case 441:
-#line 1504 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1504 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 2479 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2530 "dhcp4_parser.cc"
break;
case 442:
-#line 1509 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1509 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2488 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2539 "dhcp4_parser.cc"
break;
case 447:
-#line 1524 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1524 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2498 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2549 "dhcp4_parser.cc"
break;
case 448:
-#line 1528 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1528 "dhcp4_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2508 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2559 "dhcp4_parser.cc"
break;
case 449:
-#line 1534 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1534 "dhcp4_parser.yy"
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2518 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2569 "dhcp4_parser.cc"
break;
case 450:
-#line 1538 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1538 "dhcp4_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2528 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2579 "dhcp4_parser.cc"
break;
case 460:
-#line 1557 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1557 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2536 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2587 "dhcp4_parser.cc"
break;
case 461:
-#line 1559 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1559 "dhcp4_parser.yy"
{
- ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2546 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2597 "dhcp4_parser.cc"
break;
case 462:
-#line 1565 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1565 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2554 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2605 "dhcp4_parser.cc"
break;
case 463:
-#line 1567 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1567 "dhcp4_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
- ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
ConstElementPtr old = parent->get("user-context");
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2581 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2632 "dhcp4_parser.cc"
break;
case 464:
-#line 1590 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1590 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2589 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2640 "dhcp4_parser.cc"
break;
case 465:
-#line 1592 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1592 "dhcp4_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
- ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
user_context->set("comment", comment);
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2618 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2669 "dhcp4_parser.cc"
break;
case 466:
-#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1620 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 2629 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2680 "dhcp4_parser.cc"
break;
case 467:
-#line 1625 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1625 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2638 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2689 "dhcp4_parser.cc"
break;
case 472:
-#line 1638 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1638 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2648 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2699 "dhcp4_parser.cc"
break;
case 473:
-#line 1642 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1642 "dhcp4_parser.yy"
{
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2657 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2708 "dhcp4_parser.cc"
break;
case 474:
-#line 1647 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1647 "dhcp4_parser.yy"
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2667 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2718 "dhcp4_parser.cc"
break;
case 475:
-#line 1651 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1651 "dhcp4_parser.yy"
{
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 2676 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2727 "dhcp4_parser.cc"
break;
case 495:
-#line 1682 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1682 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2684 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2735 "dhcp4_parser.cc"
break;
case 496:
-#line 1684 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1684 "dhcp4_parser.yy"
{
- ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("next-server", next_server);
ctx.leave();
}
-#line 2694 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2745 "dhcp4_parser.cc"
break;
case 497:
-#line 1690 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1690 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2702 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2753 "dhcp4_parser.cc"
break;
case 498:
-#line 1692 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1692 "dhcp4_parser.yy"
{
- ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-hostname", srv);
ctx.leave();
}
-#line 2712 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2763 "dhcp4_parser.cc"
break;
case 499:
-#line 1698 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1698 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2720 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2771 "dhcp4_parser.cc"
break;
case 500:
-#line 1700 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1700 "dhcp4_parser.yy"
{
- ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-file-name", bootfile);
ctx.leave();
}
-#line 2730 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2781 "dhcp4_parser.cc"
break;
case 501:
-#line 1706 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1706 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2738 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2789 "dhcp4_parser.cc"
break;
case 502:
-#line 1708 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1708 "dhcp4_parser.yy"
{
- ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 2748 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2799 "dhcp4_parser.cc"
break;
case 503:
-#line 1714 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1714 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-addresses", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2759 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2810 "dhcp4_parser.cc"
break;
case 504:
-#line 1719 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1719 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2768 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2819 "dhcp4_parser.cc"
break;
case 505:
-#line 1724 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1724 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2776 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2827 "dhcp4_parser.cc"
break;
case 506:
-#line 1726 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1726 "dhcp4_parser.yy"
{
- ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 2786 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2837 "dhcp4_parser.cc"
break;
case 507:
-#line 1732 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1732 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2794 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2845 "dhcp4_parser.cc"
break;
case 508:
-#line 1734 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1734 "dhcp4_parser.yy"
{
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 2804 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2855 "dhcp4_parser.cc"
break;
case 509:
-#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1740 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2812 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2863 "dhcp4_parser.cc"
break;
case 510:
-#line 1742 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1742 "dhcp4_parser.yy"
{
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-id", hw);
ctx.leave();
}
-#line 2822 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2873 "dhcp4_parser.cc"
break;
case 511:
-#line 1748 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1748 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2830 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2881 "dhcp4_parser.cc"
break;
case 512:
-#line 1750 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1750 "dhcp4_parser.yy"
{
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("circuit-id", hw);
ctx.leave();
}
-#line 2840 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2891 "dhcp4_parser.cc"
break;
case 513:
-#line 1756 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1756 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2848 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2899 "dhcp4_parser.cc"
break;
case 514:
-#line 1758 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1758 "dhcp4_parser.yy"
{
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 2858 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2909 "dhcp4_parser.cc"
break;
case 515:
-#line 1764 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1764 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2866 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2917 "dhcp4_parser.cc"
break;
case 516:
-#line 1766 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1766 "dhcp4_parser.yy"
{
- ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 2876 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2927 "dhcp4_parser.cc"
break;
case 517:
-#line 1772 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1772 "dhcp4_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2887 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2938 "dhcp4_parser.cc"
break;
case 518:
-#line 1777 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1777 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2896 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2947 "dhcp4_parser.cc"
break;
case 519:
-#line 1785 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1785 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 2907 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2958 "dhcp4_parser.cc"
break;
case 520:
-#line 1790 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1790 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2916 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2967 "dhcp4_parser.cc"
break;
case 523:
-#line 1802 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1802 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 2927 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2978 "dhcp4_parser.cc"
break;
case 524:
-#line 1807 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1807 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2936 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2987 "dhcp4_parser.cc"
break;
case 527:
-#line 1816 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1816 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2946 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2997 "dhcp4_parser.cc"
break;
case 528:
-#line 1820 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1820 "dhcp4_parser.yy"
{
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2956 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3007 "dhcp4_parser.cc"
break;
case 545:
-#line 1849 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1849 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2964 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3015 "dhcp4_parser.cc"
break;
case 546:
-#line 1851 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1851 "dhcp4_parser.yy"
{
- ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 2974 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3025 "dhcp4_parser.cc"
break;
case 547:
-#line 1857 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1857 "dhcp4_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 2983 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3034 "dhcp4_parser.cc"
break;
case 548:
-#line 1866 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1866 "dhcp4_parser.yy"
{
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 2992 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3043 "dhcp4_parser.cc"
break;
case 549:
-#line 1873 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1873 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 3003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3054 "dhcp4_parser.cc"
break;
case 550:
-#line 1878 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1878 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3012 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3063 "dhcp4_parser.cc"
break;
case 558:
-#line 1894 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1894 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3020 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3071 "dhcp4_parser.cc"
break;
case 559:
-#line 1896 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1896 "dhcp4_parser.yy"
{
- ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 3030 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3081 "dhcp4_parser.cc"
break;
case 560:
-#line 1902 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1902 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3038 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3089 "dhcp4_parser.cc"
break;
case 561:
-#line 1904 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1904 "dhcp4_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 3048 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3099 "dhcp4_parser.cc"
break;
case 562:
-#line 1913 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1913 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3056 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3107 "dhcp4_parser.cc"
break;
case 563:
-#line 1915 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1915 "dhcp4_parser.yy"
{
- ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
ctx.stack_.back()->set("dhcp-queue-control", qc);
// Doing this manually, because dhcp-queue-control
ctx.leave();
}
-#line 3094 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3145 "dhcp4_parser.cc"
break;
case 564:
-#line 1951 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1951 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 3105 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3156 "dhcp4_parser.cc"
break;
case 565:
-#line 1956 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1956 "dhcp4_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3116 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3167 "dhcp4_parser.cc"
break;
case 566:
-#line 1963 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1963 "dhcp4_parser.yy"
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3126 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3177 "dhcp4_parser.cc"
break;
case 567:
-#line 1967 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1967 "dhcp4_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3136 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3187 "dhcp4_parser.cc"
break;
case 588:
-#line 1997 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1997 "dhcp4_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 3145 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3196 "dhcp4_parser.cc"
break;
case 589:
-#line 2002 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2002 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3153 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3204 "dhcp4_parser.cc"
break;
case 590:
-#line 2004 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2004 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 3163 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3214 "dhcp4_parser.cc"
break;
case 591:
-#line 2010 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2010 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3171 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3222 "dhcp4_parser.cc"
break;
case 592:
-#line 2012 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2012 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 3181 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3232 "dhcp4_parser.cc"
break;
case 593:
-#line 2018 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2018 "dhcp4_parser.yy"
{
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 3190 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3241 "dhcp4_parser.cc"
break;
case 594:
-#line 2023 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2023 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3198 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3249 "dhcp4_parser.cc"
break;
case 595:
-#line 2025 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2025 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 3208 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3259 "dhcp4_parser.cc"
break;
case 596:
-#line 2031 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2031 "dhcp4_parser.yy"
{
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 3217 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3268 "dhcp4_parser.cc"
break;
case 597:
-#line 2036 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2036 "dhcp4_parser.yy"
{
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 3226 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3277 "dhcp4_parser.cc"
break;
case 598:
-#line 2041 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2041 "dhcp4_parser.yy"
{
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 3234 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3285 "dhcp4_parser.cc"
break;
case 599:
-#line 2043 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2043 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3243 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3294 "dhcp4_parser.cc"
break;
case 600:
-#line 2049 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2049 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3300 "dhcp4_parser.cc"
break;
case 601:
-#line 2050 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3255 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2050 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3306 "dhcp4_parser.cc"
break;
case 602:
-#line 2053 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2053 "dhcp4_parser.yy"
{
ctx.enter(ctx.NCR_FORMAT);
}
-#line 3263 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3314 "dhcp4_parser.cc"
break;
case 603:
-#line 2055 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2055 "dhcp4_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 3273 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3324 "dhcp4_parser.cc"
break;
case 604:
-#line 2061 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2061 "dhcp4_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 3282 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3333 "dhcp4_parser.cc"
break;
case 605:
-#line 2066 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2066 "dhcp4_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 3291 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3342 "dhcp4_parser.cc"
break;
case 606:
-#line 2071 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2071 "dhcp4_parser.yy"
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 3299 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3350 "dhcp4_parser.cc"
break;
case 607:
-#line 2073 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2073 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3308 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3359 "dhcp4_parser.cc"
break;
case 608:
-#line 2079 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2079 "dhcp4_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3316 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3367 "dhcp4_parser.cc"
break;
case 609:
-#line 2082 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2082 "dhcp4_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 3324 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3375 "dhcp4_parser.cc"
break;
case 610:
-#line 2085 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2085 "dhcp4_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 3332 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3383 "dhcp4_parser.cc"
break;
case 611:
-#line 2088 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2088 "dhcp4_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3340 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3391 "dhcp4_parser.cc"
break;
case 612:
-#line 2091 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2091 "dhcp4_parser.yy"
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 3349 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3400 "dhcp4_parser.cc"
break;
case 613:
-#line 2097 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2097 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3357 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3408 "dhcp4_parser.cc"
break;
case 614:
-#line 2099 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2099 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 3367 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3418 "dhcp4_parser.cc"
break;
case 615:
-#line 2105 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2105 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3375 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3426 "dhcp4_parser.cc"
break;
case 616:
-#line 2107 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2107 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 3385 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3436 "dhcp4_parser.cc"
break;
case 617:
-#line 2113 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2113 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3393 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3444 "dhcp4_parser.cc"
break;
case 618:
-#line 2115 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2115 "dhcp4_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 3403 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3454 "dhcp4_parser.cc"
break;
case 619:
-#line 2124 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2124 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3411 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3462 "dhcp4_parser.cc"
break;
case 620:
-#line 2126 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2126 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3420 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3471 "dhcp4_parser.cc"
break;
case 621:
-#line 2131 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2131 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3428 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3479 "dhcp4_parser.cc"
break;
case 622:
-#line 2133 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2133 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3437 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3488 "dhcp4_parser.cc"
break;
case 623:
-#line 2138 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2138 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3445 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3496 "dhcp4_parser.cc"
break;
case 624:
-#line 2140 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2140 "dhcp4_parser.yy"
{
- ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3454 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3505 "dhcp4_parser.cc"
break;
case 625:
-#line 2145 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2145 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-control", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.CONFIG_CONTROL);
}
-#line 3465 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3516 "dhcp4_parser.cc"
break;
case 626:
-#line 2150 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2150 "dhcp4_parser.yy"
{
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3475 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3526 "dhcp4_parser.cc"
break;
case 627:
-#line 2156 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2156 "dhcp4_parser.yy"
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3485 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3536 "dhcp4_parser.cc"
break;
case 628:
-#line 2160 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2160 "dhcp4_parser.yy"
{
// No config_control params are required
// parsing completed
}
-#line 3494 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3545 "dhcp4_parser.cc"
break;
case 633:
-#line 2175 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2175 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CONFIG_DATABASE);
}
-#line 3505 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3556 "dhcp4_parser.cc"
break;
case 634:
-#line 2180 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2180 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3514 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3565 "dhcp4_parser.cc"
break;
case 635:
-#line 2185 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2185 "dhcp4_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
}
-#line 3523 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3574 "dhcp4_parser.cc"
break;
case 636:
-#line 2195 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2195 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 3534 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3585 "dhcp4_parser.cc"
break;
case 637:
-#line 2200 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2200 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3543 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3594 "dhcp4_parser.cc"
break;
case 638:
-#line 2205 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2205 "dhcp4_parser.yy"
{
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3553 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3604 "dhcp4_parser.cc"
break;
case 639:
-#line 2209 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2209 "dhcp4_parser.yy"
{
// parsing completed
}
-#line 3561 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3612 "dhcp4_parser.cc"
break;
case 643:
-#line 2225 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2225 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 3572 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3623 "dhcp4_parser.cc"
break;
case 644:
-#line 2230 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2230 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3581 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3632 "dhcp4_parser.cc"
break;
case 647:
-#line 2242 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2242 "dhcp4_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3591 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3642 "dhcp4_parser.cc"
break;
case 648:
-#line 2246 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2246 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 3599 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3650 "dhcp4_parser.cc"
break;
case 658:
-#line 2263 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2263 "dhcp4_parser.yy"
{
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 3608 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3659 "dhcp4_parser.cc"
break;
case 659:
-#line 2268 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2268 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3616 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3667 "dhcp4_parser.cc"
break;
case 660:
-#line 2270 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2270 "dhcp4_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3626 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3677 "dhcp4_parser.cc"
break;
case 661:
-#line 2276 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2276 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 3637 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3688 "dhcp4_parser.cc"
break;
case 662:
-#line 2281 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2281 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3646 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3697 "dhcp4_parser.cc"
break;
case 665:
-#line 2290 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2290 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3656 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3707 "dhcp4_parser.cc"
break;
case 666:
-#line 2294 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2294 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 3664 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3715 "dhcp4_parser.cc"
break;
case 674:
-#line 2309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2309 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3672 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3723 "dhcp4_parser.cc"
break;
case 675:
-#line 2311 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2311 "dhcp4_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3682 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3733 "dhcp4_parser.cc"
break;
case 676:
-#line 2317 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2317 "dhcp4_parser.yy"
{
- ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3691 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3742 "dhcp4_parser.cc"
break;
case 677:
-#line 2322 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2322 "dhcp4_parser.yy"
{
- ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3700 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3751 "dhcp4_parser.cc"
break;
case 678:
-#line 2327 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2327 "dhcp4_parser.yy"
{
- ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 3709 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3760 "dhcp4_parser.cc"
break;
case 679:
-#line 2332 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2332 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3717 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3768 "dhcp4_parser.cc"
break;
case 680:
-#line 2334 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2334 "dhcp4_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 3727 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3778 "dhcp4_parser.cc"
break;
-#line 3731 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3782 "dhcp4_parser.cc"
+
default:
break;
}
}
+#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
YYERROR;
}
+#endif // YY_EXCEPTIONS
YY_SYMBOL_PRINT ("-> $$ =", yylhs);
yypop_ (yylen);
yylen = 0;
YY_STACK_PRINT ();
// Shift the result of the reduction.
- yypush_ (YY_NULLPTR, yylhs);
+ yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
}
goto yynewstate;
+
/*--------------------------------------.
| yyerrlab -- here on detecting error. |
`--------------------------------------*/
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
+ /* Pacify compilers when the user code never invokes YYERROR and
+ the label yyerrorlab therefore never appears in user code. */
if (false)
- goto yyerrorlab;
- yyerror_range[1].location = yystack_[yylen - 1].location;
+ YYERROR;
+
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
yylen = 0;
goto yyerrlab1;
+
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
// Shift the error token.
error_token.state = yyn;
- yypush_ ("Shifting", error_token);
+ yypush_ ("Shifting", YY_MOVE (error_token));
}
goto yynewstate;
- // Accept.
+
+ /*-------------------------------------.
+ | yyacceptlab -- YYACCEPT comes here. |
+ `-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
- // Abort.
+
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
+
+ /*-----------------------------------------------------.
+ | yyreturn -- parsing is finished, return the result. |
+ `-----------------------------------------------------*/
yyreturn:
if (!yyla.empty ())
yy_destroy_ ("Cleanup: discarding lookahead", yyla);
return yyresult;
}
+#if YY_EXCEPTIONS
catch (...)
{
- YYCDEBUG << "Exception caught: cleaning lookahead and stack"
- << std::endl;
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
// Do not try to display the values of the reclaimed symbols,
- // as their printer might throw an exception.
+ // as their printers might throw an exception.
if (!yyla.empty ())
yy_destroy_ (YY_NULLPTR, yyla);
}
throw;
}
+#endif // YY_EXCEPTIONS
}
void
Dhcp4Parser::error (const syntax_error& yyexc)
{
- error (yyexc.location, yyexc.what());
+ error (yyexc.location, yyexc.what ());
}
// Generate an error message.
case N: \
yyformat = S; \
break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+ default: // Avoid compiler warnings.
+ YYCASE_ (0, YY_("syntax error"));
+ YYCASE_ (1, YY_("syntax error, unexpected %s"));
+ YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
#undef YYCASE_
}
}
- const short int Dhcp4Parser::yypact_ninf_ = -837;
+ const short Dhcp4Parser::yypact_ninf_ = -837;
const signed char Dhcp4Parser::yytable_ninf_ = -1;
- const short int
+ const short
Dhcp4Parser::yypact_[] =
{
317, -837, -837, -837, -837, -837, -837, -837, -837, -837,
-837
};
- const unsigned short int
+ const unsigned short
Dhcp4Parser::yydefact_[] =
{
0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
680
};
- const short int
+ const short
Dhcp4Parser::yypgoto_[] =
{
-837, -837, -837, -837, -837, -837, -837, -837, -837, -837,
-837, -837, -837, -837, -837
};
- const short int
+ const short
Dhcp4Parser::yydefgoto_[] =
{
-1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1071, 1072, 1073, 1074, 1080
};
- const unsigned short int
+ const unsigned short
Dhcp4Parser::yytable_[] =
{
95, 144, 192, 211, 243, 260, 307, 286, 305, 322,
949
};
- const short int
+ const short
Dhcp4Parser::yycheck_[] =
{
70, 71, 72, 73, 74, 75, 78, 77, 78, 79,
1028
};
- const unsigned short int
+ const unsigned short
Dhcp4Parser::yystos_[] =
{
0, 160, 161, 162, 163, 164, 165, 166, 167, 168,
174
};
- const unsigned short int
+ const unsigned short
Dhcp4Parser::yyr1_[] =
{
0, 178, 180, 179, 181, 179, 182, 179, 183, 179,
};
#if PARSER4_DEBUG
- const unsigned short int
+ const unsigned short
Dhcp4Parser::yyrline_[] =
{
0, 265, 265, 265, 266, 266, 267, 267, 268, 268,
i_end = yystack_.end ();
i != i_end; ++i)
*yycdebug_ << ' ' << i->state;
- *yycdebug_ << std::endl;
+ *yycdebug_ << '\n';
}
// Report on the debug stream that the rule \a yyrule is going to be reduced.
void
Dhcp4Parser::yy_reduce_print_ (int yyrule)
{
- unsigned int yylno = yyrline_[yyrule];
+ unsigned yylno = yyrline_[yyrule];
int yynrhs = yyr2_[yyrule];
// Print the symbols being reduced, and their result.
*yycdebug_ << "Reducing stack by rule " << yyrule - 1
- << " (line " << yylno << "):" << std::endl;
+ << " (line " << yylno << "):\n";
// The symbols being reduced.
for (int yyi = 0; yyi < yynrhs; yyi++)
YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
#endif // PARSER4_DEBUG
-#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
+#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 5051 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 2341 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 5118 "dhcp4_parser.cc"
+
+#line 2341 "dhcp4_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
+
/**
** \file dhcp4_parser.h
** Define the isc::dhcp::parser class.
// C++ LALR(1) parser skeleton written by Akim Demaille.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details. Do not rely on them.
+
#ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
# define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "dhcp4_parser.yy" // lalr1.cc:377
+#line 17 "dhcp4_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 56 "dhcp4_parser.h" // lalr1.cc:377
+#line 60 "dhcp4_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# include <stdexcept>
# include <string>
# include <vector>
-# include "stack.hh"
+
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
+// Support move semantics when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_MOVE std::move
+# define YY_MOVE_OR_COPY move
+# define YY_MOVE_REF(Type) Type&&
+# define YY_RVREF(Type) Type&&
+# define YY_COPY(Type) Type
+#else
+# define YY_MOVE
+# define YY_MOVE_OR_COPY copy
+# define YY_MOVE_REF(Type) Type&
+# define YY_RVREF(Type) const Type&
+# define YY_COPY(Type) const Type&
+#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
# include "location.hh"
#include <typeinfo>
#ifndef YYASSERT
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
-# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
/* Debug traces. */
#ifndef PARSER4_DEBUG
# if defined YYDEBUG
# endif /* ! defined YYDEBUG */
#endif /* ! defined PARSER4_DEBUG */
-#line 14 "dhcp4_parser.yy" // lalr1.cc:377
+#line 14 "dhcp4_parser.yy"
namespace isc { namespace dhcp {
-#line 141 "dhcp4_parser.h" // lalr1.cc:377
+#line 184 "dhcp4_parser.h"
- /// A char[S] buffer to store and retrieve objects.
+
+ /// A Bison parser.
+ class Dhcp4Parser
+ {
+ public:
+#ifndef PARSER4_STYPE
+ /// A buffer to store and retrieve objects.
///
/// Sort of a variant, but does not keep track of the nature
/// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
+ /// via the current parser state.
+ class semantic_type
{
+ public:
/// Type of *this.
- typedef variant<S> self_type;
+ typedef semantic_type self_type;
/// Empty construction.
- variant ()
- : yytypeid_ (YY_NULLPTR)
+ semantic_type () YY_NOEXCEPT
+ : yybuffer_ ()
+ , yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (const T& t)
+ semantic_type (YY_RVREF (T) t)
: yytypeid_ (&typeid (T))
{
- YYASSERT (sizeof (T) <= S);
- new (yyas_<T> ()) T (t);
+ YYASSERT (sizeof (T) <= size);
+ new (yyas_<T> ()) T (YY_MOVE (t));
}
/// Destruction, allowed only if empty.
- ~variant ()
+ ~semantic_type () YY_NOEXCEPT
{
YYASSERT (!yytypeid_);
}
+# if 201103L <= YY_CPLUSPLUS
+ /// Instantiate a \a T in here from \a t.
+ template <typename T, typename... U>
+ T&
+ emplace (U&&... u)
+ {
+ YYASSERT (!yytypeid_);
+ YYASSERT (sizeof (T) <= size);
+ yytypeid_ = & typeid (T);
+ return *new (yyas_<T> ()) T (std::forward <U>(u)...);
+ }
+# else
/// Instantiate an empty \a T in here.
template <typename T>
T&
- build ()
+ emplace ()
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T;
+ return *new (yyas_<T> ()) T ();
}
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
- build (const T& t)
+ emplace (const T& t)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
+# endif
+
+ /// Instantiate an empty \a T in here.
+ /// Obsolete, use emplace.
+ template <typename T>
+ T&
+ build ()
+ {
+ return emplace<T> ();
+ }
+
+ /// Instantiate a \a T in here from \a t.
+ /// Obsolete, use emplace.
+ template <typename T>
+ T&
+ build (const T& t)
+ {
+ return emplace<T> (t);
+ }
/// Accessor to a built \a T.
template <typename T>
T&
- as ()
+ as () YY_NOEXCEPT
{
+ YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
/// Const accessor to a built \a T (for %printer).
template <typename T>
const T&
- as () const
+ as () const YY_NOEXCEPT
{
+ YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
- /// Swap the content with \a other, of same type.
+ /// Swap the content with \a that, of same type.
///
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
- /// should not be the variant's responsability.
+ /// should not be the variant's responsibility.
/// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
+ /// self_type::move ().
template <typename T>
void
- swap (self_type& other)
+ swap (self_type& that) YY_NOEXCEPT
{
YYASSERT (yytypeid_);
- YYASSERT (*yytypeid_ == *other.yytypeid_);
- std::swap (as<T> (), other.as<T> ());
+ YYASSERT (*yytypeid_ == *that.yytypeid_);
+ std::swap (as<T> (), that.as<T> ());
}
- /// Move the content of \a other to this.
+ /// Move the content of \a that to this.
///
- /// Destroys \a other.
+ /// Destroys \a that.
+ template <typename T>
+ void
+ move (self_type& that)
+ {
+# if 201103L <= YY_CPLUSPLUS
+ emplace<T> (std::move (that.as<T> ()));
+# else
+ emplace<T> ();
+ swap<T> (that);
+# endif
+ that.destroy<T> ();
+ }
+
+# if 201103L <= YY_CPLUSPLUS
+ /// Move the content of \a that to this.
template <typename T>
void
- move (self_type& other)
+ move (self_type&& that)
{
- build<T> ();
- swap<T> (other);
- other.destroy<T> ();
+ emplace<T> (std::move (that.as<T> ()));
+ that.destroy<T> ();
}
+#endif
- /// Copy the content of \a other to this.
+ /// Copy the content of \a that to this.
template <typename T>
void
- copy (const self_type& other)
+ copy (const self_type& that)
{
- build<T> (other.as<T> ());
+ emplace<T> (that.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
- self_type& operator=(const self_type&);
- variant (const self_type&);
+ self_type& operator= (const self_type&);
+ semantic_type (const self_type&);
/// Accessor to raw memory as \a T.
template <typename T>
T*
- yyas_ ()
+ yyas_ () YY_NOEXCEPT
{
void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- yyas_ () const
+ yyas_ () const YY_NOEXCEPT
{
const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;
-
- /// Whether the content is built: if defined, the name of the stored type.
- const std::type_info *yytypeid_;
- };
-
-
- /// A Bison parser.
- class Dhcp4Parser
- {
- public:
-#ifndef PARSER4_STYPE
/// An auxiliary type to compute the largest semantic type.
union union_type
{
// hr_mode
// ncr_protocol_value
// replace_client_name_value
- char dummy1[sizeof(ElementPtr)];
+ char dummy1[sizeof (ElementPtr)];
// "boolean"
- char dummy2[sizeof(bool)];
+ char dummy2[sizeof (bool)];
// "floating point"
- char dummy3[sizeof(double)];
+ char dummy3[sizeof (double)];
// "integer"
- char dummy4[sizeof(int64_t)];
+ char dummy4[sizeof (int64_t)];
// "constant string"
- char dummy5[sizeof(std::string)];
-};
+ char dummy5[sizeof (std::string)];
+ };
+
+ /// The size of the largest semantic type.
+ enum { size = sizeof (union_type) };
+
+ /// A buffer to store semantic values.
+ union
+ {
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[size];
+ } yybuffer_;
+
+ /// Whether the content is built: if defined, the name of the stored type.
+ const std::type_info *yytypeid_;
+ };
- /// Symbol semantic values.
- typedef variant<sizeof(union_type)> semantic_type;
#else
typedef PARSER4_STYPE semantic_type;
#endif
/// Syntax errors thrown from user actions.
struct syntax_error : std::runtime_error
{
- syntax_error (const location_type& l, const std::string& m);
+ syntax_error (const location_type& l, const std::string& m)
+ : std::runtime_error (m)
+ , location (l)
+ {}
+
+ syntax_error (const syntax_error& s)
+ : std::runtime_error (s.what ())
+ , location (s.location)
+ {}
+
+ ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+
location_type location;
};
/// A complete symbol.
///
/// Expects its Base type to provide access to the symbol type
- /// via type_get().
+ /// via type_get ().
///
/// Provide access to semantic value and location.
template <typename Base>
typedef Base super_type;
/// Default constructor.
- basic_symbol ();
+ basic_symbol ()
+ : value ()
+ , location ()
+ {}
+
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ basic_symbol (basic_symbol&& that);
+#endif
/// Copy constructor.
- basic_symbol (const basic_symbol& other);
+ basic_symbol (const basic_symbol& that);
/// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, location_type&& l)
+ : Base (t)
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const location_type& l)
+ : Base (t)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
- basic_symbol (typename Base::kind_type t, const location_type& l);
-
- basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
-
- basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
+ /// Destroy the symbol.
+ ~basic_symbol ()
+ {
+ clear ();
+ }
- basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
+ /// Destroy contents, and record that is empty.
+ void clear ()
+ {
+ // User destructor.
+ symbol_number_type yytype = this->type_get ();
+ basic_symbol<Base>& yysym = *this;
+ (void) yysym;
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+
+ // Type destructor.
+switch (yytype)
+ {
+ case 194: // value
+ case 198: // map_value
+ case 244: // socket_type
+ case 247: // outbound_interface_value
+ case 269: // db_type
+ case 355: // hr_mode
+ case 504: // ncr_protocol_value
+ case 511: // replace_client_name_value
+ value.template destroy< ElementPtr > ();
+ break;
- basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
+ case 177: // "boolean"
+ value.template destroy< bool > ();
+ break;
- basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l);
+ case 176: // "floating point"
+ value.template destroy< double > ();
+ break;
+ case 175: // "integer"
+ value.template destroy< int64_t > ();
+ break;
- /// Constructor for symbols with semantic value.
- basic_symbol (typename Base::kind_type t,
- const semantic_type& v,
- const location_type& l);
+ case 174: // "constant string"
+ value.template destroy< std::string > ();
+ break;
- /// Destroy the symbol.
- ~basic_symbol ();
+ default:
+ break;
+ }
- /// Destroy contents, and record that is empty.
- void clear ();
+ Base::clear ();
+ }
/// Whether empty.
- bool empty () const;
+ bool empty () const YY_NOEXCEPT;
/// Destructive move, \a s is emptied into this.
void move (basic_symbol& s);
location_type location;
private:
+#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
+ basic_symbol& operator= (const basic_symbol& that);
+#endif
};
/// Type access provider for token (enum) based symbols.
/// Default constructor.
by_type ();
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ by_type (by_type&& that);
+#endif
+
/// Copy constructor.
- by_type (const by_type& other);
+ by_type (const by_type& that);
/// The symbol type as needed by the constructor.
typedef token_type kind_type;
/// The (internal) type number (corresponding to \a type).
/// \a empty when empty.
- symbol_number_type type_get () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The token.
- token_type token () const;
+ token_type token () const YY_NOEXCEPT;
/// The symbol type.
/// \a empty_symbol when empty.
};
/// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
-
- // Symbol constructors declarations.
- static inline
- symbol_type
- make_END (const location_type& l);
-
- static inline
- symbol_type
- make_COMMA (const location_type& l);
-
- static inline
- symbol_type
- make_COLON (const location_type& l);
-
- static inline
- symbol_type
- make_LSQUARE_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_RSQUARE_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_LCURLY_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_RCURLY_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_NULL_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_DATABASES (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_FETCH_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACES_CONFIG (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACES (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_SOCKET_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_RAW (const location_type& l);
-
- static inline
- symbol_type
- make_UDP (const location_type& l);
-
- static inline
- symbol_type
- make_OUTBOUND_INTERFACE (const location_type& l);
-
- static inline
- symbol_type
- make_SAME_AS_INBOUND (const location_type& l);
-
- static inline
- symbol_type
- make_USE_ROUTING (const location_type& l);
-
- static inline
- symbol_type
- make_RE_DETECT (const location_type& l);
-
- static inline
- symbol_type
- make_SANITY_CHECKS (const location_type& l);
-
- static inline
- symbol_type
- make_LEASE_CHECKS (const location_type& l);
-
- static inline
- symbol_type
- make_ECHO_CLIENT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_MATCH_CLIENT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_AUTHORITATIVE (const location_type& l);
-
- static inline
- symbol_type
- make_NEXT_SERVER (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_HOSTNAME (const location_type& l);
-
- static inline
- symbol_type
- make_BOOT_FILE_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_LEASE_DATABASE (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTS_DATABASE (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTS_DATABASES (const location_type& l);
-
- static inline
- symbol_type
- make_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_MEMFILE (const location_type& l);
-
- static inline
- symbol_type
- make_MYSQL (const location_type& l);
-
- static inline
- symbol_type
- make_POSTGRESQL (const location_type& l);
-
- static inline
- symbol_type
- make_CQL (const location_type& l);
-
- static inline
- symbol_type
- make_USER (const location_type& l);
-
- static inline
- symbol_type
- make_PASSWORD (const location_type& l);
-
- static inline
- symbol_type
- make_HOST (const location_type& l);
-
- static inline
- symbol_type
- make_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_PERSIST (const location_type& l);
-
- static inline
- symbol_type
- make_LFC_INTERVAL (const location_type& l);
-
- static inline
- symbol_type
- make_READONLY (const location_type& l);
-
- static inline
- symbol_type
- make_CONNECT_TIMEOUT (const location_type& l);
-
- static inline
- symbol_type
- make_CONTACT_POINTS (const location_type& l);
-
- static inline
- symbol_type
- make_KEYSPACE (const location_type& l);
-
- static inline
- symbol_type
- make_CONSISTENCY (const location_type& l);
-
- static inline
- symbol_type
- make_SERIAL_CONSISTENCY (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECONNECT_TRIES (const location_type& l);
-
- static inline
- symbol_type
- make_RECONNECT_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_REQUEST_TIMEOUT (const location_type& l);
-
- static inline
- symbol_type
- make_TCP_KEEPALIVE (const location_type& l);
-
- static inline
- symbol_type
- make_TCP_NODELAY (const location_type& l);
-
- static inline
- symbol_type
- make_VALID_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_MIN_VALID_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_VALID_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_RENEW_TIMER (const location_type& l);
-
- static inline
- symbol_type
- make_REBIND_TIMER (const location_type& l);
-
- static inline
- symbol_type
- make_CALCULATE_TEE_TIMES (const location_type& l);
+ struct symbol_type : basic_symbol<by_type>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_type> super_type;
- static inline
- symbol_type
- make_T1_PERCENT (const location_type& l);
+ /// Empty symbol.
+ symbol_type () {}
- static inline
- symbol_type
- make_T2_PERCENT (const location_type& l);
+ /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, location_type l)
+ : super_type(token_type (tok), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#else
+ symbol_type (int tok, const location_type& l)
+ : super_type(token_type (tok), l)
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, bool v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#else
+ symbol_type (int tok, const bool& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, double v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#else
+ symbol_type (int tok, const double& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, int64_t v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#else
+ symbol_type (int tok, const int64_t& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, std::string v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#else
+ symbol_type (int tok, const std::string& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#endif
+ };
- static inline
- symbol_type
- make_DECLINE_PROBATION_PERIOD (const location_type& l);
+ /// Build a parser object.
+ Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
+ virtual ~Dhcp4Parser ();
- static inline
- symbol_type
- make_SERVER_TAG (const location_type& l);
+ /// Parse. An alias for parse ().
+ /// \returns 0 iff parsing succeeded.
+ int operator() ();
- static inline
- symbol_type
- make_SUBNET4 (const location_type& l);
+ /// Parse.
+ /// \returns 0 iff parsing succeeded.
+ virtual int parse ();
- static inline
- symbol_type
- make_SUBNET_4O6_INTERFACE (const location_type& l);
+#if PARSER4_DEBUG
+ /// The current debugging stream.
+ std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging stream.
+ void set_debug_stream (std::ostream &);
- static inline
- symbol_type
- make_SUBNET_4O6_INTERFACE_ID (const location_type& l);
+ /// Type for debugging levels.
+ typedef int debug_level_type;
+ /// The current debugging level.
+ debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging level.
+ void set_debug_level (debug_level_type l);
+#endif
- static inline
- symbol_type
- make_SUBNET_4O6_SUBNET (const location_type& l);
+ /// Report a syntax error.
+ /// \param loc where the syntax error is found.
+ /// \param msg a description of the syntax error.
+ virtual void error (const location_type& loc, const std::string& msg);
- static inline
- symbol_type
- make_OPTION_DEF (const location_type& l);
+ /// Report a syntax error.
+ void error (const syntax_error& err);
- static inline
- symbol_type
- make_OPTION_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_CODE (const location_type& l);
-
- static inline
- symbol_type
- make_SPACE (const location_type& l);
-
- static inline
- symbol_type
- make_CSV_FORMAT (const location_type& l);
-
- static inline
- symbol_type
- make_ALWAYS_SEND (const location_type& l);
-
- static inline
- symbol_type
- make_RECORD_TYPES (const location_type& l);
-
- static inline
- symbol_type
- make_ENCAPSULATE (const location_type& l);
-
- static inline
- symbol_type
- make_ARRAY (const location_type& l);
-
- static inline
- symbol_type
- make_SHARED_NETWORKS (const location_type& l);
-
- static inline
- symbol_type
- make_POOLS (const location_type& l);
-
- static inline
- symbol_type
- make_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_USER_CONTEXT (const location_type& l);
-
- static inline
- symbol_type
- make_COMMENT (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACE (const location_type& l);
-
- static inline
- symbol_type
- make_ID (const location_type& l);
-
- static inline
- symbol_type
- make_RESERVATION_MODE (const location_type& l);
-
- static inline
- symbol_type
- make_DISABLED (const location_type& l);
-
- static inline
- symbol_type
- make_OUT_OF_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_GLOBAL (const location_type& l);
-
- static inline
- symbol_type
- make_ALL (const location_type& l);
-
- static inline
- symbol_type
- make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_CLASSES (const location_type& l);
-
- static inline
- symbol_type
- make_REQUIRE_CLIENT_CLASSES (const location_type& l);
-
- static inline
- symbol_type
- make_TEST (const location_type& l);
-
- static inline
- symbol_type
- make_ONLY_IF_REQUIRED (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_CLASS (const location_type& l);
-
- static inline
- symbol_type
- make_RESERVATIONS (const location_type& l);
-
- static inline
- symbol_type
- make_DUID (const location_type& l);
-
- static inline
- symbol_type
- make_HW_ADDRESS (const location_type& l);
-
- static inline
- symbol_type
- make_CIRCUIT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME (const location_type& l);
-
- static inline
- symbol_type
- make_FLEX_ID (const location_type& l);
-
- static inline
- symbol_type
- make_RELAY (const location_type& l);
-
- static inline
- symbol_type
- make_IP_ADDRESS (const location_type& l);
-
- static inline
- symbol_type
- make_IP_ADDRESSES (const location_type& l);
-
- static inline
- symbol_type
- make_HOOKS_LIBRARIES (const location_type& l);
-
- static inline
- symbol_type
- make_LIBRARY (const location_type& l);
-
- static inline
- symbol_type
- make_PARAMETERS (const location_type& l);
-
- static inline
- symbol_type
- make_EXPIRED_LEASES_PROCESSING (const location_type& l);
-
- static inline
- symbol_type
- make_RECLAIM_TIMER_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_HOLD_RECLAIMED_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECLAIM_LEASES (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECLAIM_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_UNWARNED_RECLAIM_CYCLES (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP4O6_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_CONTROL_SOCKET (const location_type& l);
-
- static inline
- symbol_type
- make_SOCKET_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_SOCKET_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_QUEUE_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_DDNS (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_UPDATES (const location_type& l);
-
- static inline
- symbol_type
- make_QUALIFYING_SUFFIX (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_IP (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_SENDER_IP (const location_type& l);
-
- static inline
- symbol_type
- make_SENDER_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_QUEUE_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_NCR_PROTOCOL (const location_type& l);
-
- static inline
- symbol_type
- make_NCR_FORMAT (const location_type& l);
-
- static inline
- symbol_type
- make_OVERRIDE_NO_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_OVERRIDE_CLIENT_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_REPLACE_CLIENT_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_GENERATED_PREFIX (const location_type& l);
-
- static inline
- symbol_type
- make_TCP (const location_type& l);
-
- static inline
- symbol_type
- make_JSON (const location_type& l);
-
- static inline
- symbol_type
- make_WHEN_PRESENT (const location_type& l);
-
- static inline
- symbol_type
- make_NEVER (const location_type& l);
-
- static inline
- symbol_type
- make_ALWAYS (const location_type& l);
-
- static inline
- symbol_type
- make_WHEN_NOT_PRESENT (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME_CHAR_SET (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l);
-
- static inline
- symbol_type
- make_LOGGING (const location_type& l);
-
- static inline
- symbol_type
- make_LOGGERS (const location_type& l);
-
- static inline
- symbol_type
- make_OUTPUT_OPTIONS (const location_type& l);
-
- static inline
- symbol_type
- make_OUTPUT (const location_type& l);
-
- static inline
- symbol_type
- make_DEBUGLEVEL (const location_type& l);
-
- static inline
- symbol_type
- make_SEVERITY (const location_type& l);
-
- static inline
- symbol_type
- make_FLUSH (const location_type& l);
-
- static inline
- symbol_type
- make_MAXSIZE (const location_type& l);
-
- static inline
- symbol_type
- make_MAXVER (const location_type& l);
-
- static inline
- symbol_type
- make_PATTERN (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP6 (const location_type& l);
-
- static inline
- symbol_type
- make_DHCPDDNS (const location_type& l);
-
- static inline
- symbol_type
- make_CONTROL_AGENT (const location_type& l);
-
- static inline
- symbol_type
- make_TOPLEVEL_JSON (const location_type& l);
-
- static inline
- symbol_type
- make_TOPLEVEL_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_INTERFACES4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_SUBNET4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_POOL4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_RESERVATION (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DEFS (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DEF (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_HOOKS_LIBRARY (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_DHCP_DDNS (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_LOGGING (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_CONFIG_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_STRING (const std::string& v, const location_type& l);
-
- static inline
- symbol_type
- make_INTEGER (const int64_t& v, const location_type& l);
-
- static inline
- symbol_type
- make_FLOAT (const double& v, const location_type& l);
-
- static inline
- symbol_type
- make_BOOLEAN (const bool& v, const location_type& l);
-
-
- /// Build a parser object.
- Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
- virtual ~Dhcp4Parser ();
-
- /// Parse.
- /// \returns 0 iff parsing succeeded.
- virtual int parse ();
-
-#if PARSER4_DEBUG
- /// The current debugging stream.
- std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging stream.
- void set_debug_stream (std::ostream &);
-
- /// Type for debugging levels.
- typedef int debug_level_type;
- /// The current debugging level.
- debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging level.
- void set_debug_level (debug_level_type l);
+ // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_END (location_type l)
+ {
+ return symbol_type (token::TOKEN_END, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_END (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_END, l);
+ }
#endif
-
- /// Report a syntax error.
- /// \param loc where the syntax error is found.
- /// \param msg a description of the syntax error.
- virtual void error (const location_type& loc, const std::string& msg);
-
- /// Report a syntax error.
- void error (const syntax_error& err);
-
- private:
- /// This class is not copyable.
- Dhcp4Parser (const Dhcp4Parser&);
- Dhcp4Parser& operator= (const Dhcp4Parser&);
-
- /// State numbers.
- typedef int state_type;
-
- /// Generate an error message.
- /// \param yystate the state where the error occurred.
- /// \param yyla the lookahead token.
- virtual std::string yysyntax_error_ (state_type yystate,
- const symbol_type& yyla) const;
-
- /// Compute post-reduction state.
- /// \param yystate the current state
- /// \param yysym the nonterminal to push on the stack
- state_type yy_lr_goto_state_ (state_type yystate, int yysym);
-
- /// Whether the given \c yypact_ value indicates a defaulted state.
- /// \param yyvalue the value to check
- static bool yy_pact_value_is_default_ (int yyvalue);
-
- /// Whether the given \c yytable_ value indicates a syntax error.
- /// \param yyvalue the value to check
- static bool yy_table_value_is_error_ (int yyvalue);
-
- static const short int yypact_ninf_;
- static const signed char yytable_ninf_;
-
- /// Convert a scanner token number \a t to a symbol number.
- static token_number_type yytranslate_ (token_type t);
-
- // Tables.
- // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- // STATE-NUM.
- static const short int yypact_[];
-
- // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
- // Performed when YYTABLE does not specify something else to do. Zero
- // means the default is an error.
- static const unsigned short int yydefact_[];
-
- // YYPGOTO[NTERM-NUM].
- static const short int yypgoto_[];
-
- // YYDEFGOTO[NTERM-NUM].
- static const short int yydefgoto_[];
-
- // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
- // positive, shift that token. If negative, reduce the rule whose
- // number is the opposite. If YYTABLE_NINF, syntax error.
- static const unsigned short int yytable_[];
-
- static const short int yycheck_[];
-
- // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- // symbol of state STATE-NUM.
- static const unsigned short int yystos_[];
-
- // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
- static const unsigned short int yyr1_[];
-
- // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
- static const unsigned char yyr2_[];
-
-
- /// Convert the symbol name \a n to a form suitable for a diagnostic.
- static std::string yytnamerr_ (const char *n);
-
-
- /// For a symbol, its name in clear.
- static const char* const yytname_[];
-#if PARSER4_DEBUG
- // YYRLINE[YYN] -- Source line where rule number YYN was defined.
- static const unsigned short int yyrline_[];
- /// Report on the debug stream that the rule \a r is going to be reduced.
- virtual void yy_reduce_print_ (int r);
- /// Print the state stack on the debug stream.
- virtual void yystack_print_ ();
-
- // Debugging.
- int yydebug_;
- std::ostream* yycdebug_;
-
- /// \brief Display a symbol type, value and location.
- /// \param yyo The output stream.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMA (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COLON (location_type l)
+ {
+ return symbol_type (token::TOKEN_COLON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COLON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COLON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NULL_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NULL_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RAW (location_type l)
+ {
+ return symbol_type (token::TOKEN_RAW, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RAW (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RAW, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UDP (location_type l)
+ {
+ return symbol_type (token::TOKEN_UDP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UDP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UDP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTBOUND_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTBOUND_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SAME_AS_INBOUND (location_type l)
+ {
+ return symbol_type (token::TOKEN_SAME_AS_INBOUND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SAME_AS_INBOUND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USE_ROUTING (location_type l)
+ {
+ return symbol_type (token::TOKEN_USE_ROUTING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USE_ROUTING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USE_ROUTING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RE_DETECT (location_type l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RE_DETECT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SANITY_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SANITY_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ECHO_CLIENT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ECHO_CLIENT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ECHO_CLIENT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MATCH_CLIENT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_MATCH_CLIENT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MATCH_CLIENT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_AUTHORITATIVE (location_type l)
+ {
+ return symbol_type (token::TOKEN_AUTHORITATIVE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_AUTHORITATIVE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_AUTHORITATIVE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NEXT_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_NEXT_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NEXT_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NEXT_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_HOSTNAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_HOSTNAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_HOSTNAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOT_FILE_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOT_FILE_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOT_FILE_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MEMFILE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MEMFILE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MYSQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MYSQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POSTGRESQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POSTGRESQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PASSWORD (location_type l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PASSWORD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PERSIST (location_type l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PERSIST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LFC_INTERVAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LFC_INTERVAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_READONLY (location_type l)
+ {
+ return symbol_type (token::TOKEN_READONLY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_READONLY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_READONLY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTACT_POINTS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTACT_POINTS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_KEYSPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_KEYSPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_NODELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_NODELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RENEW_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RENEW_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REBIND_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REBIND_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T1_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T1_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T2_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T2_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (location_type l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_TAG (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_TAG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET_4O6_SUBNET (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET_4O6_SUBNET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_CODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CSV_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CSV_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS_SEND (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS_SEND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECORD_TYPES (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECORD_TYPES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENCAPSULATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENCAPSULATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ARRAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ARRAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SHARED_NETWORKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SHARED_NETWORKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOLS (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOLS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOLS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOLS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER_CONTEXT (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER_CONTEXT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATION_MODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATION_MODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DISABLED (location_type l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DISABLED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUT_OF_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUT_OF_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GLOBAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GLOBAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALL (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TEST (location_type l)
+ {
+ return symbol_type (token::TOKEN_TEST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TEST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TEST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (location_type l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DUID (location_type l)
+ {
+ return symbol_type (token::TOKEN_DUID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DUID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DUID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HW_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HW_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CIRCUIT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_CIRCUIT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CIRCUIT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CIRCUIT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLEX_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLEX_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_RELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PARAMETERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PARAMETERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (location_type l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4O6_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4O6_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_SOCKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_SOCKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_UPDATES (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_UPDATES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_PROTOCOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_PROTOCOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GENERATED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GENERATED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NEVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_NEVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NEVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NEVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DEBUGLEVEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DEBUGLEVEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SEVERITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SEVERITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXSIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXSIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PATTERN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PATTERN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCPDDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCPDDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_INTERFACES4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_INTERFACES4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_SUBNET4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_SUBNET4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_POOL4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_POOL4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_RESERVATION (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_RESERVATION (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STRING (std::string v, location_type l)
+ {
+ return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTEGER (int64_t v, location_type l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLOAT (double v, location_type l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOLEAN (bool v, location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOLEAN (const bool& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ }
#endif
- /// \brief Reclaim the memory associated to a symbol.
- /// \param yymsg Why this token is reclaimed.
- /// If null, print nothing.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
-
- private:
- /// Type access provider for state based symbols.
- struct by_state
- {
- /// Default constructor.
- by_state ();
-
- /// The symbol type as needed by the constructor.
- typedef state_type kind_type;
-
- /// Constructor.
- by_state (kind_type s);
-
- /// Copy constructor.
- by_state (const by_state& other);
-
- /// Record that this symbol is empty.
- void clear ();
-
- /// Steal the symbol type from \a that.
- void move (by_state& that);
-
- /// The (internal) type number (corresponding to \a state).
- /// \a empty_symbol when empty.
- symbol_number_type type_get () const;
-
- /// The state number used to denote an empty symbol.
- enum { empty_state = -1 };
-
- /// The state.
- /// \a empty when empty.
- state_type state;
- };
-
- /// "Internal" symbol: element of the stack.
- struct stack_symbol_type : basic_symbol<by_state>
- {
- /// Superclass.
- typedef basic_symbol<by_state> super_type;
- /// Construct an empty symbol.
- stack_symbol_type ();
- /// Steal the contents from \a sym to build this.
- stack_symbol_type (state_type s, symbol_type& sym);
- /// Assignment, needed by push_back.
- stack_symbol_type& operator= (const stack_symbol_type& that);
- };
-
- /// Stack type.
- typedef stack<stack_symbol_type> stack_type;
-
- /// The stack.
- stack_type yystack_;
-
- /// Push a new state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the symbol
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, stack_symbol_type& s);
-
- /// Push a new look ahead token on the state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the state
- /// \param sym the symbol (for its value and location).
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, state_type s, symbol_type& sym);
-
- /// Pop \a n symbols the three stacks.
- void yypop_ (unsigned int n = 1);
-
- /// Constants.
- enum
- {
- yyeof_ = 0,
- yylast_ = 1050, ///< Last index in yytable_.
- yynnts_ = 385, ///< Number of nonterminal symbols.
- yyfinal_ = 30, ///< Termination state number.
- yyterror_ = 1,
- yyerrcode_ = 256,
- yyntokens_ = 178 ///< Number of tokens.
- };
-
-
- // User arguments.
- isc::dhcp::Parser4Context& ctx;
- };
-
- // Symbol number corresponding to token number t.
- inline
- Dhcp4Parser::token_number_type
- Dhcp4Parser::yytranslate_ (token_type t)
- {
- static
- const token_number_type
- translate_table[] =
- {
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177
- };
- const unsigned int user_token_number_max_ = 432;
- const token_number_type undef_token_ = 2;
-
- if (static_cast<int>(t) <= yyeof_)
- return yyeof_;
- else if (static_cast<unsigned int> (t) <= user_token_number_max_)
- return translate_table[t];
- else
- return undef_token_;
- }
-
- inline
- Dhcp4Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
- : std::runtime_error (m)
- , location (l)
- {}
-
- // basic_symbol.
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::basic_symbol ()
- : value ()
- {}
-
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
- : Base (other)
- , value ()
- , location (other.location)
- {
- switch (other.type_get ())
- {
- case 194: // value
- case 198: // map_value
- case 244: // socket_type
- case 247: // outbound_interface_value
- case 269: // db_type
- case 355: // hr_mode
- case 504: // ncr_protocol_value
- case 511: // replace_client_name_value
- value.copy< ElementPtr > (other.value);
- break;
-
- case 177: // "boolean"
- value.copy< bool > (other.value);
- break;
-
- case 176: // "floating point"
- value.copy< double > (other.value);
- break;
-
- case 175: // "integer"
- value.copy< int64_t > (other.value);
- break;
-
- case 174: // "constant string"
- value.copy< std::string > (other.value);
- break;
-
- default:
- break;
- }
-
- }
-
-
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
- : Base (t)
- , value ()
- , location (l)
- {
- (void) v;
- switch (this->type_get ())
- {
- case 194: // value
- case 198: // map_value
- case 244: // socket_type
- case 247: // outbound_interface_value
- case 269: // db_type
- case 355: // hr_mode
- case 504: // ncr_protocol_value
- case 511: // replace_client_name_value
- value.copy< ElementPtr > (v);
- break;
-
- case 177: // "boolean"
- value.copy< bool > (v);
- break;
-
- case 176: // "floating point"
- value.copy< double > (v);
- break;
-
- case 175: // "integer"
- value.copy< int64_t > (v);
- break;
-
- case 174: // "constant string"
- value.copy< std::string > (v);
- break;
-
- default:
- break;
- }
-}
-
-
- // Implementation of basic_symbol constructor for each type.
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
- : Base (t)
- , value ()
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
-
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::~basic_symbol ()
- {
- clear ();
- }
-
- template <typename Base>
- inline
- void
- Dhcp4Parser::basic_symbol<Base>::clear ()
- {
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- basic_symbol<Base>& yysym = *this;
- (void) yysym;
- switch (yytype)
- {
- default:
- break;
- }
-
- // Type destructor.
- switch (yytype)
- {
- case 194: // value
- case 198: // map_value
- case 244: // socket_type
- case 247: // outbound_interface_value
- case 269: // db_type
- case 355: // hr_mode
- case 504: // ncr_protocol_value
- case 511: // replace_client_name_value
- value.template destroy< ElementPtr > ();
- break;
-
- case 177: // "boolean"
- value.template destroy< bool > ();
- break;
-
- case 176: // "floating point"
- value.template destroy< double > ();
- break;
-
- case 175: // "integer"
- value.template destroy< int64_t > ();
- break;
-
- case 174: // "constant string"
- value.template destroy< std::string > ();
- break;
-
- default:
- break;
- }
-
- Base::clear ();
- }
-
- template <typename Base>
- inline
- bool
- Dhcp4Parser::basic_symbol<Base>::empty () const
- {
- return Base::type_get () == empty_symbol;
- }
-
- template <typename Base>
- inline
- void
- Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
- {
- super_type::move(s);
- switch (this->type_get ())
- {
- case 194: // value
- case 198: // map_value
- case 244: // socket_type
- case 247: // outbound_interface_value
- case 269: // db_type
- case 355: // hr_mode
- case 504: // ncr_protocol_value
- case 511: // replace_client_name_value
- value.move< ElementPtr > (s.value);
- break;
-
- case 177: // "boolean"
- value.move< bool > (s.value);
- break;
-
- case 176: // "floating point"
- value.move< double > (s.value);
- break;
-
- case 175: // "integer"
- value.move< int64_t > (s.value);
- break;
-
- case 174: // "constant string"
- value.move< std::string > (s.value);
- break;
-
- default:
- break;
- }
-
- location = s.location;
- }
-
- // by_type.
- inline
- Dhcp4Parser::by_type::by_type ()
- : type (empty_symbol)
- {}
-
- inline
- Dhcp4Parser::by_type::by_type (const by_type& other)
- : type (other.type)
- {}
-
- inline
- Dhcp4Parser::by_type::by_type (token_type t)
- : type (yytranslate_ (t))
- {}
-
- inline
- void
- Dhcp4Parser::by_type::clear ()
- {
- type = empty_symbol;
- }
-
- inline
- void
- Dhcp4Parser::by_type::move (by_type& that)
- {
- type = that.type;
- that.clear ();
- }
-
- inline
- int
- Dhcp4Parser::by_type::type_get () const
- {
- return type;
- }
-
- inline
- Dhcp4Parser::token_type
- Dhcp4Parser::by_type::token () const
- {
- // YYTOKNUM[NUM] -- (External) token number corresponding to the
- // (internal) symbol number NUM (which must be that of a token). */
- static
- const unsigned short int
- yytoken_number_[] =
- {
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432
- };
- return static_cast<token_type> (yytoken_number_[type]);
- }
- // Implementation of make_symbol for each symbol type.
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_END (const location_type& l)
- {
- return symbol_type (token::TOKEN_END, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COMMA (const location_type& l)
- {
- return symbol_type (token::TOKEN_COMMA, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COLON (const location_type& l)
- {
- return symbol_type (token::TOKEN_COLON, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LSQUARE_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RSQUARE_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LCURLY_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RCURLY_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NULL_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_NULL_TYPE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP4, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_DATABASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACES_CONFIG (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACES (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_SOCKET_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RAW (const location_type& l)
- {
- return symbol_type (token::TOKEN_RAW, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_UDP (const location_type& l)
- {
- return symbol_type (token::TOKEN_UDP, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTBOUND_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SAME_AS_INBOUND (const location_type& l)
- {
- return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USE_ROUTING (const location_type& l)
- {
- return symbol_type (token::TOKEN_USE_ROUTING, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RE_DETECT (const location_type& l)
- {
- return symbol_type (token::TOKEN_RE_DETECT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SANITY_CHECKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SANITY_CHECKS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LEASE_CHECKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_LEASE_CHECKS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MATCH_CLIENT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_AUTHORITATIVE (const location_type& l)
- {
- return symbol_type (token::TOKEN_AUTHORITATIVE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NEXT_SERVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_NEXT_SERVER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_HOSTNAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_BOOT_FILE_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LEASE_DATABASE (const location_type& l)
- {
- return symbol_type (token::TOKEN_LEASE_DATABASE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTS_DATABASE (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTS_DATABASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_TYPE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MEMFILE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MEMFILE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MYSQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_MYSQL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POSTGRESQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_POSTGRESQL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_CQL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USER (const location_type& l)
- {
- return symbol_type (token::TOKEN_USER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PASSWORD (const location_type& l)
- {
- return symbol_type (token::TOKEN_PASSWORD, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOST (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOST, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_PORT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PERSIST (const location_type& l)
- {
- return symbol_type (token::TOKEN_PERSIST, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LFC_INTERVAL (const location_type& l)
- {
- return symbol_type (token::TOKEN_LFC_INTERVAL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_READONLY (const location_type& l)
- {
- return symbol_type (token::TOKEN_READONLY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONNECT_TIMEOUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTACT_POINTS (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTACT_POINTS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_KEYSPACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_KEYSPACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONSISTENCY (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONSISTENCY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERIAL_CONSISTENCY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECONNECT_TRIES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REQUEST_TIMEOUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP_NODELAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP_NODELAY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_VALID_LIFETIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MIN_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RENEW_TIMER (const location_type& l)
- {
- return symbol_type (token::TOKEN_RENEW_TIMER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REBIND_TIMER (const location_type& l)
- {
- return symbol_type (token::TOKEN_REBIND_TIMER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CALCULATE_TEE_TIMES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_T1_PERCENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_T1_PERCENT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_T2_PERCENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_T2_PERCENT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
- {
- return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_TAG (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_TAG, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET4, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_SUBNET (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OPTION_DEF (const location_type& l)
- {
- return symbol_type (token::TOKEN_OPTION_DEF, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OPTION_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_OPTION_DATA, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_NAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_DATA, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CODE (const location_type& l)
- {
- return symbol_type (token::TOKEN_CODE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SPACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SPACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CSV_FORMAT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CSV_FORMAT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALWAYS_SEND (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALWAYS_SEND, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECORD_TYPES (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECORD_TYPES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENCAPSULATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENCAPSULATE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ARRAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_ARRAY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SHARED_NETWORKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POOLS (const location_type& l)
- {
- return symbol_type (token::TOKEN_POOLS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_POOL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USER_CONTEXT (const location_type& l)
- {
- return symbol_type (token::TOKEN_USER_CONTEXT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COMMENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_COMMENT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RESERVATION_MODE (const location_type& l)
- {
- return symbol_type (token::TOKEN_RESERVATION_MODE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DISABLED (const location_type& l)
- {
- return symbol_type (token::TOKEN_DISABLED, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUT_OF_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUT_OF_POOL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_GLOBAL (const location_type& l)
- {
- return symbol_type (token::TOKEN_GLOBAL, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALL (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALL, l);
- }
+ private:
+ /// This class is not copyable.
+ Dhcp4Parser (const Dhcp4Parser&);
+ Dhcp4Parser& operator= (const Dhcp4Parser&);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
- }
+ /// State numbers.
+ typedef int state_type;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_CLASSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
- }
+ /// Generate an error message.
+ /// \param yystate the state where the error occurred.
+ /// \param yyla the lookahead token.
+ virtual std::string yysyntax_error_ (state_type yystate,
+ const symbol_type& yyla) const;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
- }
+ /// Compute post-reduction state.
+ /// \param yystate the current state
+ /// \param yysym the nonterminal to push on the stack
+ state_type yy_lr_goto_state_ (state_type yystate, int yysym);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TEST (const location_type& l)
- {
- return symbol_type (token::TOKEN_TEST, l);
- }
+ /// Whether the given \c yypact_ value indicates a defaulted state.
+ /// \param yyvalue the value to check
+ static bool yy_pact_value_is_default_ (int yyvalue);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ONLY_IF_REQUIRED (const location_type& l)
- {
- return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
- }
+ /// Whether the given \c yytable_ value indicates a syntax error.
+ /// \param yyvalue the value to check
+ static bool yy_table_value_is_error_ (int yyvalue);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_CLASS (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASS, l);
- }
+ static const short yypact_ninf_;
+ static const signed char yytable_ninf_;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RESERVATIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_RESERVATIONS, l);
- }
+ /// Convert a scanner token number \a t to a symbol number.
+ static token_number_type yytranslate_ (token_type t);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DUID (const location_type& l)
- {
- return symbol_type (token::TOKEN_DUID, l);
- }
+ // Tables.
+ // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ // STATE-NUM.
+ static const short yypact_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HW_ADDRESS (const location_type& l)
- {
- return symbol_type (token::TOKEN_HW_ADDRESS, l);
- }
+ // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ // Performed when YYTABLE does not specify something else to do. Zero
+ // means the default is an error.
+ static const unsigned short yydefact_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CIRCUIT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_CIRCUIT_ID, l);
- }
+ // YYPGOTO[NTERM-NUM].
+ static const short yypgoto_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_ID, l);
- }
+ // YYDEFGOTO[NTERM-NUM].
+ static const short yydefgoto_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTNAME, l);
- }
+ // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ // positive, shift that token. If negative, reduce the rule whose
+ // number is the opposite. If YYTABLE_NINF, syntax error.
+ static const unsigned short yytable_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLEX_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLEX_ID, l);
- }
+ static const short yycheck_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RELAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_RELAY, l);
- }
+ // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ // symbol of state STATE-NUM.
+ static const unsigned short yystos_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_IP_ADDRESS (const location_type& l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESS, l);
- }
+ // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+ static const unsigned short yyr1_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_IP_ADDRESSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESSES, l);
- }
+ // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+ static const unsigned char yyr2_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOOKS_LIBRARIES (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LIBRARY (const location_type& l)
- {
- return symbol_type (token::TOKEN_LIBRARY, l);
- }
+ /// Convert the symbol name \a n to a form suitable for a diagnostic.
+ static std::string yytnamerr_ (const char *n);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PARAMETERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_PARAMETERS, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l)
- {
- return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
- }
+ /// For a symbol, its name in clear.
+ static const char* const yytname_[];
+#if PARSER4_DEBUG
+ // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+ static const unsigned short yyrline_[];
+ /// Report on the debug stream that the rule \a r is going to be reduced.
+ virtual void yy_reduce_print_ (int r);
+ /// Print the state stack on the debug stream.
+ virtual void yystack_print_ ();
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
- }
+ /// Debugging level.
+ int yydebug_;
+ /// Debug stream.
+ std::ostream* yycdebug_;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
- }
+ /// \brief Display a symbol type, value and location.
+ /// \param yyo The output stream.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#endif
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOLD_RECLAIMED_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
- }
+ /// \brief Reclaim the memory associated to a symbol.
+ /// \param yymsg Why this token is reclaimed.
+ /// If null, print nothing.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECLAIM_LEASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
- }
+ private:
+ /// Type access provider for state based symbols.
+ struct by_state
+ {
+ /// Default constructor.
+ by_state () YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECLAIM_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
- }
+ /// The symbol type as needed by the constructor.
+ typedef state_type kind_type;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
- {
- return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
- }
+ /// Constructor.
+ by_state (kind_type s) YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP4O6_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
- }
+ /// Copy constructor.
+ by_state (const by_state& that) YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTROL_SOCKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
- }
+ /// Record that this symbol is empty.
+ void clear () YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SOCKET_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SOCKET_TYPE, l);
- }
+ /// Steal the symbol type from \a that.
+ void move (by_state& that);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SOCKET_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_SOCKET_NAME, l);
- }
+ /// The (internal) type number (corresponding to \a state).
+ /// \a empty_symbol when empty.
+ symbol_number_type type_get () const YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
- }
+ /// The state number used to denote an empty symbol.
+ enum { empty_state = -1 };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_DDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_DDNS, l);
- }
+ /// The state.
+ /// \a empty when empty.
+ state_type state;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENABLE_UPDATES (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
- }
+ /// "Internal" symbol: element of the stack.
+ struct stack_symbol_type : basic_symbol<by_state>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_state> super_type;
+ /// Construct an empty symbol.
+ stack_symbol_type ();
+ /// Move or copy construction.
+ stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+ /// Steal the contents from \a sym to build this.
+ stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if YY_CPLUSPLUS < 201103L
+ /// Assignment, needed by push_back by some old implementations.
+ /// Moves the contents of that.
+ stack_symbol_type& operator= (stack_symbol_type& that);
+#endif
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_QUALIFYING_SUFFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
- }
+ /// A stack with random access from its top.
+ template <typename T, typename S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+ typedef typename S::size_type size_type;
+
+ stack (size_type n = 200)
+ : seq_ (n)
+ {}
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (size_type i)
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (int i)
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (size_type i) const
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (int i) const
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ void
+ push (YY_MOVE_REF (T) t)
+ {
+ seq_.push_back (T ());
+ operator[] (0).move (t);
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_IP (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_IP, l);
- }
+ /// Pop elements from the stack.
+ void
+ pop (int n = 1) YY_NOEXCEPT
+ {
+ for (; 0 < n; --n)
+ seq_.pop_back ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_PORT, l);
- }
+ /// Pop all elements from the stack.
+ void
+ clear () YY_NOEXCEPT
+ {
+ seq_.clear ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SENDER_IP (const location_type& l)
- {
- return symbol_type (token::TOKEN_SENDER_IP, l);
- }
+ /// Number of elements on the stack.
+ size_type
+ size () const YY_NOEXCEPT
+ {
+ return seq_.size ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SENDER_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_SENDER_PORT, l);
- }
+ /// Iterator on top of the stack (going downwards).
+ const_iterator
+ begin () const YY_NOEXCEPT
+ {
+ return seq_.rbegin ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_QUEUE_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
- }
+ /// Bottom of the stack.
+ const_iterator
+ end () const YY_NOEXCEPT
+ {
+ return seq_.rend ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NCR_PROTOCOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
- }
+ /// Present a slice of the top of a stack.
+ class slice
+ {
+ public:
+ slice (const stack& stack, int range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ const T&
+ operator[] (int i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const stack& stack_;
+ int range_;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NCR_FORMAT (const location_type& l)
- {
- return symbol_type (token::TOKEN_NCR_FORMAT, l);
- }
+ private:
+ stack (const stack&);
+ stack& operator= (const stack&);
+ /// The wrapped container.
+ S seq_;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
- }
+ /// Stack type.
+ typedef stack<stack_symbol_type> stack_type;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
- }
+ /// The stack.
+ stack_type yystack_;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_GENERATED_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
- }
+ /// Push a new state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param sym the symbol
+ /// \warning the contents of \a s.value is stolen.
+ void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP, l);
- }
+ /// Push a new look ahead token on the state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param s the state
+ /// \param sym the symbol (for its value and location).
+ /// \warning the contents of \a sym.value is stolen.
+ void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_JSON (const location_type& l)
- {
- return symbol_type (token::TOKEN_JSON, l);
- }
+ /// Pop \a n symbols from the stack.
+ void yypop_ (int n = 1);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_WHEN_PRESENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_WHEN_PRESENT, l);
- }
+ /// Constants.
+ enum
+ {
+ yyeof_ = 0,
+ yylast_ = 1050, ///< Last index in yytable_.
+ yynnts_ = 385, ///< Number of nonterminal symbols.
+ yyfinal_ = 30, ///< Termination state number.
+ yyterror_ = 1,
+ yyerrcode_ = 256,
+ yyntokens_ = 178 ///< Number of tokens.
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NEVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_NEVER, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALWAYS (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALWAYS, l);
- }
+ // User arguments.
+ isc::dhcp::Parser4Context& ctx;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_WHEN_NOT_PRESENT (const location_type& l)
+ inline
+ Dhcp4Parser::token_number_type
+ Dhcp4Parser::yytranslate_ (token_type t)
{
- return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
- }
+ // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+ // TOKEN-NUM as returned by yylex.
+ static
+ const token_number_type
+ translate_table[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177
+ };
+ const unsigned user_token_number_max_ = 432;
+ const token_number_type undef_token_ = 2;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+ if (static_cast<int> (t) <= yyeof_)
+ return yyeof_;
+ else if (static_cast<unsigned> (t) <= user_token_number_max_)
+ return translate_table[t];
+ else
+ return undef_token_;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+ // basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
+ template <typename Base>
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+ : Base (std::move (that))
+ , value ()
+ , location (std::move (that.location))
{
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
- }
+ switch (this->type_get ())
+ {
+ case 194: // value
+ case 198: // map_value
+ case 244: // socket_type
+ case 247: // outbound_interface_value
+ case 269: // db_type
+ case 355: // hr_mode
+ case 504: // ncr_protocol_value
+ case 511: // replace_client_name_value
+ value.move< ElementPtr > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LOGGING (const location_type& l)
- {
- return symbol_type (token::TOKEN_LOGGING, l);
- }
+ case 177: // "boolean"
+ value.move< bool > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LOGGERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_LOGGERS, l);
- }
+ case 176: // "floating point"
+ value.move< double > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTPUT_OPTIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
- }
+ case 175: // "integer"
+ value.move< int64_t > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTPUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTPUT, l);
- }
+ case 174: // "constant string"
+ value.move< std::string > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DEBUGLEVEL (const location_type& l)
- {
- return symbol_type (token::TOKEN_DEBUGLEVEL, l);
- }
+ default:
+ break;
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SEVERITY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SEVERITY, l);
}
+#endif
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLUSH (const location_type& l)
+ template <typename Base>
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+ : Base (that)
+ , value ()
+ , location (that.location)
{
- return symbol_type (token::TOKEN_FLUSH, l);
- }
+ switch (this->type_get ())
+ {
+ case 194: // value
+ case 198: // map_value
+ case 244: // socket_type
+ case 247: // outbound_interface_value
+ case 269: // db_type
+ case 355: // hr_mode
+ case 504: // ncr_protocol_value
+ case 511: // replace_client_name_value
+ value.copy< ElementPtr > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAXSIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAXSIZE, l);
- }
+ case 177: // "boolean"
+ value.copy< bool > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAXVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAXVER, l);
- }
+ case 176: // "floating point"
+ value.copy< double > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PATTERN (const location_type& l)
- {
- return symbol_type (token::TOKEN_PATTERN, l);
- }
+ case 175: // "integer"
+ value.copy< int64_t > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP6, l);
- }
+ case 174: // "constant string"
+ value.copy< std::string > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCPDDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCPDDNS, l);
- }
+ default:
+ break;
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTROL_AGENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTROL_AGENT, l);
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TOPLEVEL_JSON (const location_type& l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TOPLEVEL_DHCP4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_DHCP4 (const location_type& l)
+ template <typename Base>
+ bool
+ Dhcp4Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_SUB_DHCP4, l);
+ return Base::type_get () == empty_symbol;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_INTERFACES4 (const location_type& l)
+ template <typename Base>
+ void
+ Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
{
- return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
- }
+ super_type::move (s);
+ switch (this->type_get ())
+ {
+ case 194: // value
+ case 198: // map_value
+ case 244: // socket_type
+ case 247: // outbound_interface_value
+ case 269: // db_type
+ case 355: // hr_mode
+ case 504: // ncr_protocol_value
+ case 511: // replace_client_name_value
+ value.move< ElementPtr > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_SUBNET4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_SUBNET4, l);
- }
+ case 177: // "boolean"
+ value.move< bool > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_POOL4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_POOL4, l);
- }
+ case 176: // "floating point"
+ value.move< double > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_RESERVATION (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_RESERVATION, l);
- }
+ case 175: // "integer"
+ value.move< int64_t > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DEFS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
- }
+ case 174: // "constant string"
+ value.move< std::string > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DEF (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
- }
+ default:
+ break;
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+ location = YY_MOVE (s.location);
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
- }
+ // by_type.
+ inline
+ Dhcp4Parser::by_type::by_type ()
+ : type (empty_symbol)
+ {}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_DHCP_DDNS (const location_type& l)
+#if 201103L <= YY_CPLUSPLUS
+ inline
+ Dhcp4Parser::by_type::by_type (by_type&& that)
+ : type (that.type)
{
- return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
+ that.clear ();
}
+#endif
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_LOGGING (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_LOGGING, l);
- }
+ inline
+ Dhcp4Parser::by_type::by_type (const by_type& that)
+ : type (that.type)
+ {}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
- }
+ inline
+ Dhcp4Parser::by_type::by_type (token_type t)
+ : type (yytranslate_ (t))
+ {}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_STRING (const std::string& v, const location_type& l)
+ inline
+ void
+ Dhcp4Parser::by_type::clear ()
{
- return symbol_type (token::TOKEN_STRING, v, l);
+ type = empty_symbol;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTEGER (const int64_t& v, const location_type& l)
+ inline
+ void
+ Dhcp4Parser::by_type::move (by_type& that)
{
- return symbol_type (token::TOKEN_INTEGER, v, l);
+ type = that.type;
+ that.clear ();
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLOAT (const double& v, const location_type& l)
+ inline
+ int
+ Dhcp4Parser::by_type::type_get () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_FLOAT, v, l);
+ return type;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_BOOLEAN (const bool& v, const location_type& l)
+ inline
+ Dhcp4Parser::token_type
+ Dhcp4Parser::by_type::token () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ // YYTOKNUM[NUM] -- (External) token number corresponding to the
+ // (internal) symbol number NUM (which must be that of a token). */
+ static
+ const unsigned short
+ yytoken_number_[] =
+ {
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432
+ };
+ return token_type (yytoken_number_[type]);
}
-
-#line 14 "dhcp4_parser.yy" // lalr1.cc:377
+#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 3010 "dhcp4_parser.h" // lalr1.cc:377
+#line 4218 "dhcp4_parser.h"
+
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#ifndef YY_PARSER4_LOCATION_HH_INCLUDED
# define YY_PARSER4_LOCATION_HH_INCLUDED
-# include "position.hh"
+# include <algorithm> // std::max
+# include <iostream>
+# include <string>
-#line 14 "dhcp4_parser.yy" // location.cc:296
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
+#line 14 "dhcp4_parser.yy"
namespace isc { namespace dhcp {
-#line 46 "location.hh" // location.cc:296
- /// Abstract a location.
+#line 60 "location.hh"
+
+ /// A point in a source file.
+ class position
+ {
+ public:
+ /// Construct a position.
+ explicit position (std::string* f = YY_NULLPTR,
+ unsigned l = 1u,
+ unsigned c = 1u)
+ : filename (f)
+ , line (l)
+ , column (c)
+ {}
+
+
+ /// Initialization.
+ void initialize (std::string* fn = YY_NULLPTR,
+ unsigned l = 1u,
+ unsigned c = 1u)
+ {
+ filename = fn;
+ line = l;
+ column = c;
+ }
+
+ /** \name Line and Column related manipulators
+ ** \{ */
+ /// (line related) Advance to the COUNT next lines.
+ void lines (int count = 1)
+ {
+ if (count)
+ {
+ column = 1u;
+ line = add_ (line, count, 1);
+ }
+ }
+
+ /// (column related) Advance to the COUNT next columns.
+ void columns (int count = 1)
+ {
+ column = add_ (column, count, 1);
+ }
+ /** \} */
+
+ /// File name to which this position refers.
+ std::string* filename;
+ /// Current line number.
+ unsigned line;
+ /// Current column number.
+ unsigned column;
+
+ private:
+ /// Compute max (min, lhs+rhs).
+ static unsigned add_ (unsigned lhs, int rhs, int min)
+ {
+ return static_cast<unsigned> (std::max (min,
+ static_cast<int> (lhs) + rhs));
+ }
+ };
+
+ /// Add \a width columns, in place.
+ inline position&
+ operator+= (position& res, int width)
+ {
+ res.columns (width);
+ return res;
+ }
+
+ /// Add \a width columns.
+ inline position
+ operator+ (position res, int width)
+ {
+ return res += width;
+ }
+
+ /// Subtract \a width columns, in place.
+ inline position&
+ operator-= (position& res, int width)
+ {
+ return res += -width;
+ }
+
+ /// Subtract \a width columns.
+ inline position
+ operator- (position res, int width)
+ {
+ return res -= width;
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator== (const position& pos1, const position& pos2)
+ {
+ return (pos1.line == pos2.line
+ && pos1.column == pos2.column
+ && (pos1.filename == pos2.filename
+ || (pos1.filename && pos2.filename
+ && *pos1.filename == *pos2.filename)));
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator!= (const position& pos1, const position& pos2)
+ {
+ return !(pos1 == pos2);
+ }
+
+ /** \brief Intercept output stream redirection.
+ ** \param ostr the destination output stream
+ ** \param pos a reference to the position to redirect
+ */
+ template <typename YYChar>
+ std::basic_ostream<YYChar>&
+ operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
+ {
+ if (pos.filename)
+ ostr << *pos.filename << ':';
+ return ostr << pos.line << '.' << pos.column;
+ }
+
+ /// Two points in a source file.
class location
{
public:
location (const position& b, const position& e)
: begin (b)
, end (e)
- {
- }
+ {}
/// Construct a 0-width location in \a p.
explicit location (const position& p = position ())
: begin (p)
, end (p)
- {
- }
+ {}
/// Construct a 0-width location in \a f, \a l, \a c.
explicit location (std::string* f,
- unsigned int l = 1u,
- unsigned int c = 1u)
+ unsigned l = 1u,
+ unsigned c = 1u)
: begin (f, l, c)
, end (f, l, c)
- {
- }
+ {}
/// Initialization.
void initialize (std::string* f = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
+ unsigned l = 1u,
+ unsigned c = 1u)
{
begin.initialize (f, l, c);
end = begin;
** Avoid duplicate information.
*/
template <typename YYChar>
- inline std::basic_ostream<YYChar>&
+ std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
{
- unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+ unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
ostr << loc.begin;
if (loc.end.filename
&& (!loc.begin.filename
return ostr;
}
-#line 14 "dhcp4_parser.yy" // location.cc:296
+#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 192 "location.hh" // location.cc:296
+#line 323 "location.hh"
+
#endif // !YY_PARSER4_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.4.1.
-// Positions for Bison parsers in C++
+// Starting with Bison 3.2, this file is useless: the structure it
+// used to define is now defined in "location.hh".
+//
+// To get rid of this file:
+// 1. add 'require "3.2"' (or newer) to your grammar file
+// 2. remove references to this file from your build system
+// 3. if you used to include it, include "location.hh" instead.
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file position.hh
- ** Define the isc::dhcp::position class.
- */
-
-#ifndef YY_PARSER4_POSITION_HH_INCLUDED
-# define YY_PARSER4_POSITION_HH_INCLUDED
-
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
-
-#line 14 "dhcp4_parser.yy" // location.cc:296
-namespace isc { namespace dhcp {
-#line 56 "position.hh" // location.cc:296
- /// Abstract a position.
- class position
- {
- public:
- /// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
- : filename (f)
- , line (l)
- , column (c)
- {
- }
-
-
- /// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
- {
- filename = fn;
- line = l;
- column = c;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- /// (line related) Advance to the COUNT next lines.
- void lines (int count = 1)
- {
- if (count)
- {
- column = 1u;
- line = add_ (line, count, 1);
- }
- }
-
- /// (column related) Advance to the COUNT next columns.
- void columns (int count = 1)
- {
- column = add_ (column, count, 1);
- }
- /** \} */
-
- /// File name to which this position refers.
- std::string* filename;
- /// Current line number.
- unsigned int line;
- /// Current column number.
- unsigned int column;
-
- private:
- /// Compute max(min, lhs+rhs) (provided min <= lhs).
- static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
- {
- return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
- ? rhs + lhs
- : min);
- }
- };
-
- /// Add \a width columns, in place.
- inline position&
- operator+= (position& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add \a width columns.
- inline position
- operator+ (position res, int width)
- {
- return res += width;
- }
-
- /// Subtract \a width columns, in place.
- inline position&
- operator-= (position& res, int width)
- {
- return res += -width;
- }
-
- /// Subtract \a width columns.
- inline position
- operator- (position res, int width)
- {
- return res -= width;
- }
-
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param pos a reference to the position to redirect
- */
- template <typename YYChar>
- inline std::basic_ostream<YYChar>&
- operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
- {
- if (pos.filename)
- ostr << *pos.filename << ':';
- return ostr << pos.line << '.' << pos.column;
- }
-
-#line 14 "dhcp4_parser.yy" // location.cc:296
-} } // isc::dhcp
-#line 180 "position.hh" // location.cc:296
-#endif // !YY_PARSER4_POSITION_HH_INCLUDED
+#include "location.hh"
-// A Bison parser, made by GNU Bison 3.0.4.
-
-// Stack handling for Bison parsers in C++
-
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file stack.hh
- ** Define the isc::dhcp::stack class.
- */
-
-#ifndef YY_PARSER4_STACK_HH_INCLUDED
-# define YY_PARSER4_STACK_HH_INCLUDED
-
-# include <vector>
-
-#line 14 "dhcp4_parser.yy" // stack.hh:132
-namespace isc { namespace dhcp {
-#line 46 "stack.hh" // stack.hh:132
- template <class T, class S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
-
- stack ()
- : seq_ ()
- {
- seq_.reserve (200);
- }
-
- stack (unsigned int n)
- : seq_ (n)
- {}
-
- inline
- T&
- operator[] (unsigned int i)
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- inline
- const T&
- operator[] (unsigned int i) const
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- inline
- void
- push (T& t)
- {
- seq_.push_back (T());
- operator[](0).move (t);
- }
-
- inline
- void
- pop (unsigned int n = 1)
- {
- for (; n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- inline
- typename S::size_type
- size () const
- {
- return seq_.size ();
- }
-
- inline
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
-
- inline
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
-
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
-
- /// Present a slice of the top of a stack.
- template <class T, class S = stack<T> >
- class slice
- {
- public:
- slice (const S& stack, unsigned int range)
- : stack_ (stack)
- , range_ (range)
- {}
-
- inline
- const T&
- operator [] (unsigned int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- unsigned int range_;
- };
-
-#line 14 "dhcp4_parser.yy" // stack.hh:132
-} } // isc::dhcp
-#line 156 "stack.hh" // stack.hh:132
-
-#endif // !YY_PARSER4_STACK_HH_INCLUDED
+// A Bison parser, made by GNU Bison 3.4.1.
+
+// Starting with Bison 3.2, this file is useless: the structure it
+// used to define is now defined with the parser itself.
+//
+// To get rid of this file:
+// 1. add 'require "3.2"' (or newer) to your grammar file
+// 2. remove references to this file from your build system.
/* A lexical scanner generated by flex */
/* %not-for-header */
+
/* %if-c-only */
/* %if-not-reentrant */
#define yy_create_buffer parser6__create_buffer
#define yy_delete_buffer parser6__delete_buffer
-#define yy_scan_buffer parser6__scan_buffer
-#define yy_scan_string parser6__scan_string
-#define yy_scan_bytes parser6__scan_bytes
+#define yy_flex_debug parser6__flex_debug
#define yy_init_buffer parser6__init_buffer
#define yy_flush_buffer parser6__flush_buffer
#define yy_load_buffer_state parser6__load_buffer_state
#define yy_switch_to_buffer parser6__switch_to_buffer
-#define yypush_buffer_state parser6_push_buffer_state
-#define yypop_buffer_state parser6_pop_buffer_state
-#define yyensure_buffer_stack parser6_ensure_buffer_stack
-#define yy_flex_debug parser6__flex_debug
#define yyin parser6_in
#define yyleng parser6_leng
#define yylex parser6_lex
#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
/* %endif */
/* %if-c-only */
-#ifdef yy_create_buffer
-#define parser6__create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer parser6__create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define parser6__delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer parser6__delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define parser6__scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer parser6__scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define parser6__scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string parser6__scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define parser6__scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes parser6__scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define parser6__init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer parser6__init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define parser6__flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer parser6__flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define parser6__load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state parser6__load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define parser6__switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer parser6__switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define parser6_push_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state parser6_push_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define parser6_pop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state parser6_pop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define parser6_ensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack parser6_ensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define parser6_lex_ALREADY_DEFINED
-#else
-#define yylex parser6_lex
-#endif
-
-#ifdef yyrestart
-#define parser6_restart_ALREADY_DEFINED
-#else
-#define yyrestart parser6_restart
-#endif
-
-#ifdef yylex_init
-#define parser6_lex_init_ALREADY_DEFINED
-#else
-#define yylex_init parser6_lex_init
-#endif
-
-#ifdef yylex_init_extra
-#define parser6_lex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra parser6_lex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define parser6_lex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy parser6_lex_destroy
-#endif
-
-#ifdef yyget_debug
-#define parser6_get_debug_ALREADY_DEFINED
-#else
-#define yyget_debug parser6_get_debug
-#endif
-
-#ifdef yyset_debug
-#define parser6_set_debug_ALREADY_DEFINED
-#else
-#define yyset_debug parser6_set_debug
-#endif
-
-#ifdef yyget_extra
-#define parser6_get_extra_ALREADY_DEFINED
-#else
-#define yyget_extra parser6_get_extra
-#endif
-
-#ifdef yyset_extra
-#define parser6_set_extra_ALREADY_DEFINED
-#else
-#define yyset_extra parser6_set_extra
-#endif
-
-#ifdef yyget_in
-#define parser6_get_in_ALREADY_DEFINED
-#else
-#define yyget_in parser6_get_in
-#endif
-
-#ifdef yyset_in
-#define parser6_set_in_ALREADY_DEFINED
-#else
-#define yyset_in parser6_set_in
-#endif
-
-#ifdef yyget_out
-#define parser6_get_out_ALREADY_DEFINED
-#else
-#define yyget_out parser6_get_out
-#endif
-
-#ifdef yyset_out
-#define parser6_set_out_ALREADY_DEFINED
-#else
-#define yyset_out parser6_set_out
-#endif
-
-#ifdef yyget_leng
-#define parser6_get_leng_ALREADY_DEFINED
-#else
-#define yyget_leng parser6_get_leng
-#endif
-
-#ifdef yyget_text
-#define parser6_get_text_ALREADY_DEFINED
-#else
-#define yyget_text parser6_get_text
-#endif
-
-#ifdef yyget_lineno
-#define parser6_get_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno parser6_get_lineno
-#endif
-
-#ifdef yyset_lineno
-#define parser6_set_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno parser6_set_lineno
-#endif
-
-#ifdef yywrap
-#define parser6_wrap_ALREADY_DEFINED
-#else
-#define yywrap parser6_wrap
-#endif
-
+
/* %endif */
-#ifdef yyalloc
-#define parser6_alloc_ALREADY_DEFINED
-#else
-#define yyalloc parser6_alloc
-#endif
-
-#ifdef yyrealloc
-#define parser6_realloc_ALREADY_DEFINED
-#else
-#define yyrealloc parser6_realloc
-#endif
-
-#ifdef yyfree
-#define parser6_free_ALREADY_DEFINED
-#else
-#define yyfree parser6_free
-#endif
-
/* %if-c-only */
-#ifdef yytext
-#define parser6_text_ALREADY_DEFINED
-#else
-#define yytext parser6_text
-#endif
-
-#ifdef yyleng
-#define parser6_leng_ALREADY_DEFINED
-#else
-#define yyleng parser6_leng
-#endif
-
-#ifdef yyin
-#define parser6_in_ALREADY_DEFINED
-#else
-#define yyin parser6_in
-#endif
-
-#ifdef yyout
-#define parser6_out_ALREADY_DEFINED
-#else
-#define yyout parser6_out
-#endif
-
-#ifdef yy_flex_debug
-#define parser6__flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug parser6__flex_debug
-#endif
-
-#ifdef yylineno
-#define parser6_lineno_ALREADY_DEFINED
-#else
-#define yylineno parser6_lineno
-#endif
-
/* %endif */
/* First, we deal with platform-specific or compiler-specific issues. */
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;
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
#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 */
* 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 parser6_restart(parser6_in )
+
#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.
#endif
/* %if-not-reentrant */
-extern int yyleng;
+extern yy_size_t parser6_leng;
/* %endif */
/* %if-c-only */
/* %if-not-reentrant */
-extern FILE *yyin, *yyout;
+extern FILE *parser6_in, *parser6_out;
/* %endif */
/* %endif */
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
-
+
#define YY_LESS_LINENO(n)
- #define YY_LINENO_REWIND_TO(ptr)
/* 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 parser6_text. */ \
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 parser6_text again */ \
} \
while ( 0 )
+
#define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_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
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.
*/
* 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 parser6_restart()), so that the user can continue scanning by
+ * just pointing parser6_in at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
/* %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 */
#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.
*/
/* %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 parser6_text 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 parser6_leng;
/* 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 parser6_wrap()'s to do buffer switches
+ * instead of setting up a fresh parser6_in. 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 parser6_restart (FILE *input_file );
+void parser6__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE parser6__create_buffer (FILE *file,int size );
+void parser6__delete_buffer (YY_BUFFER_STATE b );
+void parser6__flush_buffer (YY_BUFFER_STATE b );
+void parser6_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void parser6_pop_buffer_state (void );
-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 )
+static void parser6_ensure_buffer_stack (void );
+static void parser6__load_buffer_state (void );
+static void parser6__init_buffer (YY_BUFFER_STATE b,FILE *file );
-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 );
+#define YY_FLUSH_BUFFER parser6__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE parser6__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE parser6__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE parser6__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 *parser6_alloc (yy_size_t );
+void *parser6_realloc (void *,yy_size_t );
+void parser6_free (void * );
+
+#define yy_new_buffer parser6__create_buffer
-#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
if ( ! YY_CURRENT_BUFFER ){ \
- yyensure_buffer_stack (); \
+ parser6_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ parser6__create_buffer(parser6_in,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 (); \
+ parser6_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ parser6__create_buffer(parser6_in,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] parser6_text/parser6_in/parser6_out/yy_state_type/parser6_lineno etc. def's & init go here */
/* Begin user sect3 */
-#define parser6_wrap() (/*CONSTCOND*/1)
+#define parser6_wrap(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 *parser6_in = (FILE *) 0, *parser6_out = (FILE *) 0;
typedef int yy_state_type;
-extern int yylineno;
-int yylineno = 1;
+extern int parser6_lineno;
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
+int parser6_lineno = 1;
-/* %% [1.5] DFA */
+extern char *parser6_text;
+#define yytext_ptr parser6_text
/* %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 parser6_text.
*/
#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 parser6_text and parser6_leng for yymore() goes here \ */\
+ parser6_leng = (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 parser6_text[] 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 191
#define YY_END_OF_BUFFER 192
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1621] =
+static yyconst flex_int16_t yy_accept[1621] =
{ 0,
184, 184, 0, 0, 0, 0, 0, 0, 0, 0,
192, 190, 10, 11, 190, 1, 184, 181, 184, 184,
0, 0, 0, 0, 0, 113, 0, 0, 159, 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, 2, 1, 1, 1, 1, 1, 1, 1,
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[74] =
+static yyconst flex_int32_t yy_meta[74] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
3, 3, 3, 5, 5, 5, 5, 5, 3, 3,
3, 3, 3
} ;
-static const flex_int16_t yy_base[1633] =
+static yyconst flex_int16_t yy_base[1633] =
{ 0,
0, 72, 21, 31, 43, 51, 54, 60, 91, 99,
2022, 2023, 34, 2018, 145, 0, 207, 2023, 214, 221,
1499, 1512
} ;
-static const flex_int16_t yy_def[1633] =
+static yyconst flex_int16_t yy_def[1633] =
{ 0,
1621, 1621, 1622, 1622, 1621, 1621, 1621, 1621, 1621, 1621,
1620, 1620, 1620, 1620, 1620, 1623, 1620, 1620, 1620, 1620,
1620, 1620
} ;
-static const flex_int16_t yy_nxt[2097] =
+static yyconst flex_int16_t yy_nxt[2097] =
{ 0,
1620, 13, 14, 13, 1620, 15, 16, 1620, 17, 18,
19, 20, 21, 22, 22, 22, 22, 22, 23, 24,
} ;
-static const flex_int16_t yy_chk[2097] =
+static yyconst flex_int16_t yy_chk[2097] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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 parser6__flex_debug;
+int parser6__flex_debug = 1;
-static const flex_int16_t yy_rule_linenum[191] =
+static yyconst flex_int16_t yy_rule_linenum[191] =
{ 0,
- 149, 151, 153, 158, 159, 164, 165, 166, 178, 181,
- 186, 193, 202, 211, 220, 229, 238, 247, 256, 265,
- 274, 283, 292, 301, 310, 320, 330, 340, 350, 360,
- 370, 380, 389, 399, 409, 419, 429, 438, 447, 456,
- 465, 474, 483, 492, 501, 510, 519, 528, 537, 546,
- 555, 568, 577, 586, 595, 604, 615, 626, 637, 648,
- 660, 671, 682, 693, 704, 715, 726, 737, 748, 759,
- 770, 781, 792, 803, 814, 825, 836, 847, 858, 869,
- 878, 887, 897, 906, 915, 930, 946, 955, 964, 973,
- 982, 991, 1000, 1009, 1018, 1027, 1036, 1058, 1080, 1089,
-
- 1099, 1109, 1118, 1128, 1139, 1148, 1157, 1166, 1175, 1184,
- 1194, 1203, 1212, 1221, 1232, 1243, 1254, 1263, 1273, 1282,
- 1291, 1300, 1309, 1318, 1327, 1336, 1345, 1355, 1367, 1380,
- 1389, 1398, 1408, 1418, 1427, 1438, 1448, 1457, 1467, 1477,
- 1486, 1495, 1504, 1513, 1523, 1532, 1542, 1551, 1560, 1569,
- 1578, 1587, 1596, 1605, 1614, 1623, 1632, 1641, 1650, 1659,
- 1668, 1677, 1686, 1695, 1704, 1713, 1722, 1731, 1740, 1749,
- 1758, 1767, 1777, 1876, 1881, 1886, 1891, 1892, 1893, 1894,
- 1895, 1896, 1898, 1916, 1929, 1934, 1938, 1940, 1942, 1944
+ 148, 150, 152, 157, 158, 163, 164, 165, 177, 180,
+ 185, 192, 201, 210, 219, 228, 237, 246, 255, 264,
+ 273, 282, 291, 300, 309, 319, 329, 339, 349, 359,
+ 369, 379, 388, 398, 408, 418, 428, 437, 446, 455,
+ 464, 473, 482, 491, 500, 509, 518, 527, 536, 545,
+ 554, 567, 576, 585, 594, 603, 614, 625, 636, 647,
+ 659, 670, 681, 692, 703, 714, 725, 736, 747, 758,
+ 769, 780, 791, 802, 813, 824, 835, 846, 857, 868,
+ 877, 886, 896, 905, 914, 929, 945, 954, 963, 972,
+ 981, 990, 999, 1008, 1017, 1026, 1035, 1057, 1079, 1088,
+
+ 1098, 1108, 1117, 1127, 1138, 1147, 1156, 1165, 1174, 1183,
+ 1193, 1202, 1211, 1220, 1231, 1242, 1253, 1262, 1272, 1281,
+ 1290, 1299, 1308, 1317, 1326, 1335, 1344, 1354, 1366, 1379,
+ 1388, 1397, 1407, 1417, 1426, 1437, 1447, 1456, 1466, 1476,
+ 1485, 1494, 1503, 1512, 1522, 1531, 1541, 1550, 1559, 1568,
+ 1577, 1586, 1595, 1604, 1613, 1622, 1631, 1640, 1649, 1658,
+ 1667, 1676, 1685, 1694, 1703, 1712, 1721, 1730, 1739, 1748,
+ 1757, 1766, 1776, 1875, 1880, 1885, 1890, 1891, 1892, 1893,
+ 1894, 1895, 1897, 1915, 1928, 1933, 1937, 1939, 1941, 1943
} ;
/* The intent behind this definition is that it'll catch
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *parser6_text;
#line 1 "dhcp6_lexer.ll"
/* Copyright (C) 2016-2019 Internet Systems Consortium, Inc. ("ISC")
2.5.31 through 2.5.33): it generates code that does
not conform to C89. See Debian bug 333231
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
-# undef yywrap
-# define yywrap() 1
+# undef parser6_wrap
+# define parser6_wrap() 1
namespace {
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1848 "dhcp6_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 parser6_wrap requires linking with -lfl, which provides the default parser6_wrap
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. */
/* avoid to get static global variables to remain with C++. */
/* in last resort %option reentrant */
/* Enables debug mode. To see the debug messages, one needs to also set
- yy_flex_debug to 1, then the debug messages will be printed on stderr. */
+ parser6__flex_debug to 1, then the debug messages will be printed on stderr. */
/* I have no idea what this option does, except it was specified in the bison
examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
be on the safe side and keep it. */
#define YY_NO_INPUT 1
+
/* These are not token expressions yet, just convenience expressions that
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
#line 94 "dhcp6_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 parser6_leng bytes. parser6_leng specifies the length of the
currently matched token. */
-#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1874 "dhcp6_lexer.cc"
-#line 1875 "dhcp6_lexer.cc"
+#define YY_USER_ACTION driver.loc_.columns(parser6_leng);
+#line 1648 "dhcp6_lexer.cc"
#define INITIAL 0
#define COMMENT 1
/* %if-reentrant */
/* %if-c-only */
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
/* %endif */
/* %if-reentrant */
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
-int yylex_destroy ( void );
+int parser6_lex_destroy (void );
-int yyget_debug ( void );
+int parser6_get_debug (void );
-void yyset_debug ( int debug_flag );
+void parser6_set_debug (int debug_flag );
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE parser6_get_extra (void );
-void yyset_extra ( YY_EXTRA_TYPE user_defined );
+void parser6_set_extra (YY_EXTRA_TYPE user_defined );
-FILE *yyget_in ( void );
+FILE *parser6_get_in (void );
-void yyset_in ( FILE * _in_str );
+void parser6_set_in (FILE * in_str );
-FILE *yyget_out ( void );
+FILE *parser6_get_out (void );
-void yyset_out ( FILE * _out_str );
+void parser6_set_out (FILE * out_str );
- int yyget_leng ( void );
+yy_size_t parser6_get_leng (void );
-char *yyget_text ( void );
+char *parser6_get_text (void );
-int yyget_lineno ( void );
+int parser6_get_lineno (void );
-void yyset_lineno ( int _line_number );
+void parser6_set_lineno (int line_number );
/* %if-bison-bridge */
/* %endif */
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int parser6_wrap (void );
#else
-extern int yywrap ( void );
+extern int parser6_wrap (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 */
/* 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. */
/* 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( parser6_text, parser6_leng, 1, parser6_out )
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
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( parser6_in )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
if ( c == '\n' ) \
buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
+ if ( c == EOF && ferror( parser6_in ) ) \
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, parser6_in))==0 && ferror(parser6_in)) \
{ \
if( errno != EINTR) \
{ \
break; \
} \
errno=0; \
- clearerr(yyin); \
+ clearerr(parser6_in); \
} \
}\
\
/* %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 */
#define YY_DECL_IS_OURS 1
/* %if-c-only Standard (non-C++) definition */
-extern int yylex (void);
+extern int parser6_lex (void);
-#define YY_DECL int yylex (void)
+#define YY_DECL int parser6_lex (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 parser6_text and parser6_leng
* have been set up.
*/
#ifndef YY_USER_ACTION
/* 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 */
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;
- if ( !(yy_init) )
- {
- (yy_init) = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
-
- if ( ! yyin )
-/* %if-c-only */
- yyin = stdin;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! yyout )
-/* %if-c-only */
- yyout = stdout;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! YY_CURRENT_BUFFER ) {
- yyensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
- }
-
- yy_load_buffer_state( );
- }
-
- {
/* %% [7.0] user's declarations go here */
#line 100 "dhcp6_lexer.ll"
-#line 104 "dhcp6_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
- of the generated yylex function. Explanation:
+ of the generated parser6_lex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
- /* Code run each time yylex is called. */
+ /* Code run each time parser6_lex is called. */
driver.loc_.step();
if (start_token_flag) {
}
-#line 2207 "dhcp6_lexer.cc"
+#line 1941 "dhcp6_lexer.cc"
- while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! parser6_in )
+/* %if-c-only */
+ parser6_in = stdin;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! parser6_out )
+/* %if-c-only */
+ parser6_out = stdout;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ parser6_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ parser6__create_buffer(parser6_in,YY_BUF_SIZE );
+ }
+
+ parser6__load_buffer_state( );
+ }
+
+ 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 parser6_text. */
*yy_cp = (yy_hold_char);
/* yy_bp points to the position in yy_ch_buf of the start of
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1621 )
- 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 != 1620 );
YY_DO_BEFORE_ACTION;
-/* %% [11.0] code for yylineno update goes here */
+/* %% [11.0] code for parser6_lineno update goes here */
do_action: /* This label is used only to access EOF actions. */
/* %% [12.0] debug code goes here */
- if ( yy_flex_debug )
+ if ( parser6__flex_debug )
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
else if ( yy_act < 191 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
- (long)yy_rule_linenum[yy_act], yytext );
+ (long)yy_rule_linenum[yy_act], parser6_text );
else if ( yy_act == 191 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
- yytext );
+ parser6_text );
else if ( yy_act == 192 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
case 1:
YY_RULE_SETUP
-#line 149 "dhcp6_lexer.ll"
+#line 148 "dhcp6_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 151 "dhcp6_lexer.ll"
+#line 150 "dhcp6_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 153 "dhcp6_lexer.ll"
+#line 152 "dhcp6_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 158 "dhcp6_lexer.ll"
+#line 157 "dhcp6_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 159 "dhcp6_lexer.ll"
+#line 158 "dhcp6_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 160 "dhcp6_lexer.ll"
+#line 159 "dhcp6_lexer.ll"
{
isc_throw(Dhcp6ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 164 "dhcp6_lexer.ll"
+#line 163 "dhcp6_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 165 "dhcp6_lexer.ll"
+#line 164 "dhcp6_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 166 "dhcp6_lexer.ll"
+#line 165 "dhcp6_lexer.ll"
{
/* Include directive. */
/* Extract the filename. */
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
driver.includeFile(tmp);
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 175 "dhcp6_lexer.ll"
+#line 174 "dhcp6_lexer.ll"
{
isc_throw(Dhcp6ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 178 "dhcp6_lexer.ll"
+#line 177 "dhcp6_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 181 "dhcp6_lexer.ll"
+#line 180 "dhcp6_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 186 "dhcp6_lexer.ll"
+#line 185 "dhcp6_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
- driver.loc_.lines(yyleng);
+ driver.loc_.lines(parser6_leng);
driver.loc_.step();
}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 193 "dhcp6_lexer.ll"
+#line 192 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 202 "dhcp6_lexer.ll"
+#line 201 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 211 "dhcp6_lexer.ll"
+#line 210 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 220 "dhcp6_lexer.ll"
+#line 219 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 229 "dhcp6_lexer.ll"
+#line 228 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 238 "dhcp6_lexer.ll"
+#line 237 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 247 "dhcp6_lexer.ll"
+#line 246 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 256 "dhcp6_lexer.ll"
+#line 255 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 265 "dhcp6_lexer.ll"
+#line 264 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 274 "dhcp6_lexer.ll"
+#line 273 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 283 "dhcp6_lexer.ll"
+#line 282 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 292 "dhcp6_lexer.ll"
+#line 291 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 301 "dhcp6_lexer.ll"
+#line 300 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 310 "dhcp6_lexer.ll"
+#line 309 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 320 "dhcp6_lexer.ll"
+#line 319 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 330 "dhcp6_lexer.ll"
+#line 329 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp6Parser::make_UDP(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 340 "dhcp6_lexer.ll"
+#line 339 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp6Parser::make_TCP(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 350 "dhcp6_lexer.ll"
+#line 349 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_FORMAT) {
return isc::dhcp::Dhcp6Parser::make_JSON(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 360 "dhcp6_lexer.ll"
+#line 359 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp6Parser::make_WHEN_PRESENT(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 370 "dhcp6_lexer.ll"
+#line 369 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp6Parser::make_WHEN_PRESENT(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 380 "dhcp6_lexer.ll"
+#line 379 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 389 "dhcp6_lexer.ll"
+#line 388 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 399 "dhcp6_lexer.ll"
+#line 398 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 409 "dhcp6_lexer.ll"
+#line 408 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp6Parser::make_ALWAYS(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 419 "dhcp6_lexer.ll"
+#line 418 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp6Parser::make_WHEN_NOT_PRESENT(driver.loc_);
}
- std::string tmp(yytext+1);
+ std::string tmp(parser6_text+1);
tmp.resize(tmp.size() - 1);
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 429 "dhcp6_lexer.ll"
+#line 428 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 438 "dhcp6_lexer.ll"
+#line 437 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 447 "dhcp6_lexer.ll"
+#line 446 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 456 "dhcp6_lexer.ll"
+#line 455 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 465 "dhcp6_lexer.ll"
+#line 464 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 474 "dhcp6_lexer.ll"
+#line 473 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 483 "dhcp6_lexer.ll"
+#line 482 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SANITY_CHECKS:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 492 "dhcp6_lexer.ll"
+#line 491 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 501 "dhcp6_lexer.ll"
+#line 500 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 510 "dhcp6_lexer.ll"
+#line 509 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 519 "dhcp6_lexer.ll"
+#line 518 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 528 "dhcp6_lexer.ll"
+#line 527 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG_CONTROL:
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 537 "dhcp6_lexer.ll"
+#line 536 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG_CONTROL:
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 546 "dhcp6_lexer.ll"
+#line 545 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOSTS_DATABASE:
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 555 "dhcp6_lexer.ll"
+#line 554 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 568 "dhcp6_lexer.ll"
+#line 567 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 577 "dhcp6_lexer.ll"
+#line 576 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 586 "dhcp6_lexer.ll"
+#line 585 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 595 "dhcp6_lexer.ll"
+#line 594 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 604 "dhcp6_lexer.ll"
+#line 603 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 615 "dhcp6_lexer.ll"
+#line 614 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 626 "dhcp6_lexer.ll"
+#line 625 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 637 "dhcp6_lexer.ll"
+#line 636 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 648 "dhcp6_lexer.ll"
+#line 647 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 660 "dhcp6_lexer.ll"
+#line 659 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 671 "dhcp6_lexer.ll"
+#line 670 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 682 "dhcp6_lexer.ll"
+#line 681 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 693 "dhcp6_lexer.ll"
+#line 692 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 704 "dhcp6_lexer.ll"
+#line 703 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 715 "dhcp6_lexer.ll"
+#line 714 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 726 "dhcp6_lexer.ll"
+#line 725 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 737 "dhcp6_lexer.ll"
+#line 736 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 748 "dhcp6_lexer.ll"
+#line 747 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 759 "dhcp6_lexer.ll"
+#line 758 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 770 "dhcp6_lexer.ll"
+#line 769 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 781 "dhcp6_lexer.ll"
+#line 780 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 792 "dhcp6_lexer.ll"
+#line 791 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 803 "dhcp6_lexer.ll"
+#line 802 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 814 "dhcp6_lexer.ll"
+#line 813 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 825 "dhcp6_lexer.ll"
+#line 824 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 836 "dhcp6_lexer.ll"
+#line 835 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 847 "dhcp6_lexer.ll"
+#line 846 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 858 "dhcp6_lexer.ll"
+#line 857 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 869 "dhcp6_lexer.ll"
+#line 868 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 878 "dhcp6_lexer.ll"
+#line 877 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 887 "dhcp6_lexer.ll"
+#line 886 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 897 "dhcp6_lexer.ll"
+#line 896 "dhcp6_lexer.ll"
{
switch (driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 906 "dhcp6_lexer.ll"
+#line 905 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 915 "dhcp6_lexer.ll"
+#line 914 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 930 "dhcp6_lexer.ll"
+#line 929 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 946 "dhcp6_lexer.ll"
+#line 945 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 955 "dhcp6_lexer.ll"
+#line 954 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 964 "dhcp6_lexer.ll"
+#line 963 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 973 "dhcp6_lexer.ll"
+#line 972 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 982 "dhcp6_lexer.ll"
+#line 981 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 991 "dhcp6_lexer.ll"
+#line 990 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 1000 "dhcp6_lexer.ll"
+#line 999 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 1009 "dhcp6_lexer.ll"
+#line 1008 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 1018 "dhcp6_lexer.ll"
+#line 1017 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 1027 "dhcp6_lexer.ll"
+#line 1026 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::POOLS:
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 1036 "dhcp6_lexer.ll"
+#line 1035 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1058 "dhcp6_lexer.ll"
+#line 1057 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1080 "dhcp6_lexer.ll"
+#line 1079 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 1089 "dhcp6_lexer.ll"
+#line 1088 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 1099 "dhcp6_lexer.ll"
+#line 1098 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 1109 "dhcp6_lexer.ll"
+#line 1108 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 1118 "dhcp6_lexer.ll"
+#line 1117 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 1128 "dhcp6_lexer.ll"
+#line 1127 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 1139 "dhcp6_lexer.ll"
+#line 1138 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 1148 "dhcp6_lexer.ll"
+#line 1147 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 1157 "dhcp6_lexer.ll"
+#line 1156 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 1166 "dhcp6_lexer.ll"
+#line 1165 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 1175 "dhcp6_lexer.ll"
+#line 1174 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 1184 "dhcp6_lexer.ll"
+#line 1183 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 1194 "dhcp6_lexer.ll"
+#line 1193 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 1203 "dhcp6_lexer.ll"
+#line 1202 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 1212 "dhcp6_lexer.ll"
+#line 1211 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 1221 "dhcp6_lexer.ll"
+#line 1220 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 1232 "dhcp6_lexer.ll"
+#line 1231 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 1243 "dhcp6_lexer.ll"
+#line 1242 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 1254 "dhcp6_lexer.ll"
+#line 1253 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 1263 "dhcp6_lexer.ll"
+#line 1262 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 1273 "dhcp6_lexer.ll"
+#line 1272 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 1282 "dhcp6_lexer.ll"
+#line 1281 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 1291 "dhcp6_lexer.ll"
+#line 1290 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 1300 "dhcp6_lexer.ll"
+#line 1299 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 1309 "dhcp6_lexer.ll"
+#line 1308 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 1318 "dhcp6_lexer.ll"
+#line 1317 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 1327 "dhcp6_lexer.ll"
+#line 1326 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 1336 "dhcp6_lexer.ll"
+#line 1335 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 1345 "dhcp6_lexer.ll"
+#line 1344 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 1355 "dhcp6_lexer.ll"
+#line 1354 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 1367 "dhcp6_lexer.ll"
+#line 1366 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 1380 "dhcp6_lexer.ll"
+#line 1379 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CLIENT_CLASSES:
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 1389 "dhcp6_lexer.ll"
+#line 1388 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CLIENT_CLASSES:
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 1398 "dhcp6_lexer.ll"
+#line 1397 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 1408 "dhcp6_lexer.ll"
+#line 1407 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 1418 "dhcp6_lexer.ll"
+#line 1417 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 1427 "dhcp6_lexer.ll"
+#line 1426 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::MAC_SOURCES:
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 1438 "dhcp6_lexer.ll"
+#line 1437 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 1448 "dhcp6_lexer.ll"
+#line 1447 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 1457 "dhcp6_lexer.ll"
+#line 1456 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 1467 "dhcp6_lexer.ll"
+#line 1466 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 1477 "dhcp6_lexer.ll"
+#line 1476 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 1486 "dhcp6_lexer.ll"
+#line 1485 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 1495 "dhcp6_lexer.ll"
+#line 1494 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 1504 "dhcp6_lexer.ll"
+#line 1503 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 1513 "dhcp6_lexer.ll"
+#line 1512 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 1523 "dhcp6_lexer.ll"
+#line 1522 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RELAY:
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1531 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 1542 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 1551 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
YY_BREAK
case 149:
YY_RULE_SETUP
-#line 1560 "dhcp6_lexer.ll"
+#line 1559 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 1569 "dhcp6_lexer.ll"
+#line 1568 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DUID_TYPE:
YY_BREAK
case 151:
YY_RULE_SETUP
-#line 1578 "dhcp6_lexer.ll"
+#line 1577 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DUID_TYPE:
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 1587 "dhcp6_lexer.ll"
+#line 1586 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DUID_TYPE:
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 1596 "dhcp6_lexer.ll"
+#line 1595 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 1605 "dhcp6_lexer.ll"
+#line 1604 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 1614 "dhcp6_lexer.ll"
+#line 1613 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 1623 "dhcp6_lexer.ll"
+#line 1622 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 157:
YY_RULE_SETUP
-#line 1632 "dhcp6_lexer.ll"
+#line 1631 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 1641 "dhcp6_lexer.ll"
+#line 1640 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 1650 "dhcp6_lexer.ll"
+#line 1649 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 160:
YY_RULE_SETUP
-#line 1659 "dhcp6_lexer.ll"
+#line 1658 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 161:
YY_RULE_SETUP
-#line 1668 "dhcp6_lexer.ll"
+#line 1667 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 162:
YY_RULE_SETUP
-#line 1677 "dhcp6_lexer.ll"
+#line 1676 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 163:
YY_RULE_SETUP
-#line 1686 "dhcp6_lexer.ll"
+#line 1685 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 164:
YY_RULE_SETUP
-#line 1695 "dhcp6_lexer.ll"
+#line 1694 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 165:
YY_RULE_SETUP
-#line 1704 "dhcp6_lexer.ll"
+#line 1703 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 166:
YY_RULE_SETUP
-#line 1713 "dhcp6_lexer.ll"
+#line 1712 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONTROL_SOCKET:
YY_BREAK
case 167:
YY_RULE_SETUP
-#line 1722 "dhcp6_lexer.ll"
+#line 1721 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONTROL_SOCKET:
YY_BREAK
case 168:
YY_RULE_SETUP
-#line 1731 "dhcp6_lexer.ll"
+#line 1730 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 169:
YY_RULE_SETUP
-#line 1740 "dhcp6_lexer.ll"
+#line 1739 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 170:
YY_RULE_SETUP
-#line 1749 "dhcp6_lexer.ll"
+#line 1748 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 171:
YY_RULE_SETUP
-#line 1758 "dhcp6_lexer.ll"
+#line 1757 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 172:
YY_RULE_SETUP
-#line 1767 "dhcp6_lexer.ll"
+#line 1766 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 173:
YY_RULE_SETUP
-#line 1777 "dhcp6_lexer.ll"
+#line 1776 "dhcp6_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.
for 'foo' we should get foo */
- std::string raw(yytext+1);
+ std::string raw(parser6_text+1);
size_t len = raw.size() - 1;
raw.resize(len);
std::string decoded;
case 174:
/* rule 174 can match eol */
YY_RULE_SETUP
-#line 1876 "dhcp6_lexer.ll"
+#line 1875 "dhcp6_lexer.ll"
{
/* Bad string with a forbidden control character inside */
- driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
+ driver.error(driver.loc_, "Invalid control in " + std::string(parser6_text));
}
YY_BREAK
case 175:
/* rule 175 can match eol */
YY_RULE_SETUP
-#line 1881 "dhcp6_lexer.ll"
+#line 1880 "dhcp6_lexer.ll"
{
/* Bad string with a bad escape inside */
- driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Bad escape in " + std::string(parser6_text));
}
YY_BREAK
case 176:
YY_RULE_SETUP
-#line 1886 "dhcp6_lexer.ll"
+#line 1885 "dhcp6_lexer.ll"
{
/* Bad string with an open escape at the end */
- driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Overflow escape in " + std::string(parser6_text));
}
YY_BREAK
case 177:
YY_RULE_SETUP
-#line 1891 "dhcp6_lexer.ll"
+#line 1890 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 178:
YY_RULE_SETUP
-#line 1892 "dhcp6_lexer.ll"
+#line 1891 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 179:
YY_RULE_SETUP
-#line 1893 "dhcp6_lexer.ll"
+#line 1892 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 180:
YY_RULE_SETUP
-#line 1894 "dhcp6_lexer.ll"
+#line 1893 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 181:
YY_RULE_SETUP
-#line 1895 "dhcp6_lexer.ll"
+#line 1894 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 182:
YY_RULE_SETUP
-#line 1896 "dhcp6_lexer.ll"
+#line 1895 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
YY_BREAK
case 183:
YY_RULE_SETUP
-#line 1898 "dhcp6_lexer.ll"
+#line 1897 "dhcp6_lexer.ll"
{
/* An integer was found. */
- std::string tmp(yytext);
+ std::string tmp(parser6_text);
int64_t integer = 0;
try {
/* In substring we want to use negative values (e.g. -1).
YY_BREAK
case 184:
YY_RULE_SETUP
-#line 1916 "dhcp6_lexer.ll"
+#line 1915 "dhcp6_lexer.ll"
{
/* A floating point was found. */
- std::string tmp(yytext);
+ std::string tmp(parser6_text);
double fp = 0.0;
try {
fp = boost::lexical_cast<double>(tmp);
YY_BREAK
case 185:
YY_RULE_SETUP
-#line 1929 "dhcp6_lexer.ll"
+#line 1928 "dhcp6_lexer.ll"
{
- string tmp(yytext);
+ string tmp(parser6_text);
return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
case 186:
YY_RULE_SETUP
-#line 1934 "dhcp6_lexer.ll"
+#line 1933 "dhcp6_lexer.ll"
{
return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 187:
YY_RULE_SETUP
-#line 1938 "dhcp6_lexer.ll"
+#line 1937 "dhcp6_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 188:
YY_RULE_SETUP
-#line 1940 "dhcp6_lexer.ll"
+#line 1939 "dhcp6_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 189:
YY_RULE_SETUP
-#line 1942 "dhcp6_lexer.ll"
+#line 1941 "dhcp6_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 190:
YY_RULE_SETUP
-#line 1944 "dhcp6_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 1943 "dhcp6_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(parser6_text));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 1946 "dhcp6_lexer.ll"
+#line 1945 "dhcp6_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
YY_BREAK
case 191:
YY_RULE_SETUP
-#line 1969 "dhcp6_lexer.ll"
+#line 1968 "dhcp6_lexer.ll"
ECHO;
YY_BREAK
-#line 4696 "dhcp6_lexer.cc"
+#line 4464 "dhcp6_lexer.cc"
case YY_END_OF_BUFFER:
{
{
/* 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 parser6_in at a new source and called
+ * parser6_lex(). 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 = parser6_in;
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
{
(yy_did_buffer_switch_on_eof) = 0;
- if ( yywrap( ) )
+ if ( parser6_wrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
- * yytext, we can now set up
+ * parser6_text, 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
"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 parser6_lex */
/* %ok-for-header */
/* %if-c++-only */
/* %not-for-header */
+
/* %ok-for-header */
/* %endif */
/* %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] )
/* 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++);
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;
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) );
+ parser6_realloc((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(
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
+ parser6_restart(parser6_in );
}
else
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 *) parser6_realloc((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;
/* %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);
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1621 )
- 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;
/* %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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1621 )
- 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 == 1620);
- 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
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( ) )
*/
/* Reset buffer status. */
- yyrestart( yyin );
+ parser6_restart(parser6_in );
/*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
- if ( yywrap( ) )
+ if ( parser6_wrap( ) )
return 0;
if ( ! (yy_did_buffer_switch_on_eof) )
}
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 parser6_text */
(yy_hold_char) = *++(yy_c_buf_p);
-/* %% [19.0] update BOL and yylineno */
+/* %% [19.0] update BOL and parser6_lineno */
return c;
}
* @note This function does not reset the start condition to @c INITIAL .
*/
/* %if-c-only */
- void yyrestart (FILE * input_file )
+ void parser6_restart (FILE * input_file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! YY_CURRENT_BUFFER ){
- yyensure_buffer_stack ();
+ parser6_ensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
+ parser6__create_buffer(parser6_in,YY_BUF_SIZE );
}
- yy_init_buffer( YY_CURRENT_BUFFER, input_file );
- yy_load_buffer_state( );
+ parser6__init_buffer(YY_CURRENT_BUFFER,input_file );
+ parser6__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 parser6__switch_to_buffer (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
/* TODO. We should be able to replace this entire function body
* with
- * yypop_buffer_state();
- * yypush_buffer_state(new_buffer);
+ * parser6_pop_buffer_state();
+ * parser6_push_buffer_state(new_buffer);
*/
- yyensure_buffer_stack ();
+ parser6_ensure_buffer_stack ();
if ( YY_CURRENT_BUFFER == new_buffer )
return;
}
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state( );
+ parser6__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 (parser6_wrap()) processing, but the only time this flag
+ * is looked at is after parser6_wrap() 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 parser6__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 */
+ parser6_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
(yy_hold_char) = *(yy_c_buf_p);
}
* @return the allocated buffer state.
*/
/* %if-c-only */
- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+ YY_BUFFER_STATE parser6__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) parser6_alloc(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 parser6__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 *) parser6_alloc(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 parser6__create_buffer()" );
b->yy_is_our_buffer = 1;
- yy_init_buffer( b, file );
+ parser6__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 parser6__create_buffer()
*
*/
/* %if-c-only */
- void yy_delete_buffer (YY_BUFFER_STATE b )
+ void parser6__delete_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- yyfree( (void *) b->yy_ch_buf );
+ parser6_free((void *) b->yy_ch_buf );
- yyfree( (void *) b );
+ parser6_free((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 parser6_restart() or at EOF.
*/
/* %if-c-only */
- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+ static void parser6__init_buffer (YY_BUFFER_STATE b, FILE * file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
int oerrno = errno;
- yy_flush_buffer( b );
+ parser6__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 parser6__init_buffer was _probably_
+ * called from parser6_restart() or through yy_get_next_buffer.
* In that case, we don't want to reset the lineno or column.
*/
if (b != YY_CURRENT_BUFFER){
*
*/
/* %if-c-only */
- void yy_flush_buffer (YY_BUFFER_STATE b )
+ void parser6__flush_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state( );
+ parser6__load_buffer_state( );
}
/* %if-c-or-c++ */
*
*/
/* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void parser6_push_buffer_state (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
if (new_buffer == NULL)
return;
- yyensure_buffer_stack();
+ parser6_ensure_buffer_stack();
- /* This block is copied from yy_switch_to_buffer. */
+ /* This block is copied from parser6__switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
(yy_buffer_stack_top)++;
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- /* copied from yy_switch_to_buffer. */
- yy_load_buffer_state( );
+ /* copied from parser6__switch_to_buffer. */
+ parser6__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/* %endif */
*
*/
/* %if-c-only */
-void yypop_buffer_state (void)
+void parser6_pop_buffer_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
if (!YY_CURRENT_BUFFER)
return;
- yy_delete_buffer(YY_CURRENT_BUFFER );
+ parser6__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( );
+ parser6__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
}
* Guarantees space for at least one push.
*/
/* %if-c-only */
-static void yyensure_buffer_stack (void)
+static void parser6_ensure_buffer_stack (void)
/* %endif */
/* %if-c++-only */
/* %endif */
* 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**)parser6_alloc
(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 parser6_ensure_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;
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**)parser6_realloc
((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 parser6_ensure_buffer_stack()" );
/* zero only the new slots.*/
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
* @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 parser6__scan_buffer (char * base, yy_size_t size )
{
YY_BUFFER_STATE b;
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) parser6_alloc(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 parser6__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 );
+ parser6__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 parser6_lex() 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.
+ * parser6__scan_bytes() instead.
*/
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE parser6__scan_string (yyconst char * yystr )
{
- return yy_scan_bytes( yystr, (int) strlen(yystr) );
+ return parser6__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 parser6_lex() 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 parser6__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 *) parser6_alloc(n );
if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "out of dynamic memory in parser6__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 = parser6__scan_buffer(buf,n );
if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "bad buffer in parser6__scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
#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 */
#define yyless(n) \
do \
{ \
- /* Undo effects of setting up yytext. */ \
+ /* Undo effects of setting up parser6_text. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
- yytext[yyleng] = (yy_hold_char); \
- (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ parser6_text[parser6_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = parser6_text + yyless_macro_arg; \
(yy_hold_char) = *(yy_c_buf_p); \
*(yy_c_buf_p) = '\0'; \
- yyleng = yyless_macro_arg; \
+ parser6_leng = yyless_macro_arg; \
} \
while ( 0 )
/** Get the current line number.
*
*/
-int yyget_lineno (void)
+int parser6_get_lineno (void)
{
-
- return yylineno;
+
+ return parser6_lineno;
}
/** Get the input stream.
*
*/
-FILE *yyget_in (void)
+FILE *parser6_get_in (void)
{
- return yyin;
+ return parser6_in;
}
/** Get the output stream.
*
*/
-FILE *yyget_out (void)
+FILE *parser6_get_out (void)
{
- return yyout;
+ return parser6_out;
}
/** Get the length of the current token.
*
*/
-int yyget_leng (void)
+yy_size_t parser6_get_leng (void)
{
- return yyleng;
+ return parser6_leng;
}
/** Get the current token.
*
*/
-char *yyget_text (void)
+char *parser6_get_text (void)
{
- return yytext;
+ return parser6_text;
}
/* %if-reentrant */
/* %endif */
/** Set the current line number.
- * @param _line_number line number
+ * @param line_number
*
*/
-void yyset_lineno (int _line_number )
+void parser6_set_lineno (int line_number )
{
- yylineno = _line_number;
+ parser6_lineno = 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 parser6__switch_to_buffer
*/
-void yyset_in (FILE * _in_str )
+void parser6_set_in (FILE * in_str )
{
- yyin = _in_str ;
+ parser6_in = in_str ;
}
-void yyset_out (FILE * _out_str )
+void parser6_set_out (FILE * out_str )
{
- yyout = _out_str ;
+ parser6_out = out_str ;
}
-int yyget_debug (void)
+int parser6_get_debug (void)
{
- return yy_flex_debug;
+ return parser6__flex_debug;
}
-void yyset_debug (int _bdebug )
+void parser6_set_debug (int bdebug )
{
- yy_flex_debug = _bdebug ;
+ parser6__flex_debug = bdebug ;
}
/* %endif */
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 parser6_lex_destroy(), so don't allocate here.
*/
- (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;
+ parser6_in = stdin;
+ parser6_out = stdout;
#else
- yyin = NULL;
- yyout = NULL;
+ parser6_in = (FILE *) 0;
+ parser6_out = (FILE *) 0;
#endif
/* For future reference: Set errno on error, since we are called by
- * yylex_init()
+ * parser6_lex_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)
+/* parser6_lex_destroy is for both reentrant and non-reentrant scanners. */
+int parser6_lex_destroy (void)
{
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
- yy_delete_buffer( YY_CURRENT_BUFFER );
+ parser6__delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
- yypop_buffer_state();
+ parser6_pop_buffer_state();
}
/* Destroy the stack itself. */
- yyfree((yy_buffer_stack) );
+ parser6_free((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. */
+ * parser6_lex() is called, initialization will occur. */
yy_init_globals( );
/* %if-reentrant */
*/
#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 )
;
}
#endif
-void *yyalloc (yy_size_t size )
+void *parser6_alloc (yy_size_t size )
{
- return malloc(size);
+ return (void *) malloc( size );
}
-void *yyrealloc (void * ptr, yy_size_t size )
+void *parser6_realloc (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
* 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 parser6_free (void * ptr )
{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+ free( (char *) ptr ); /* see parser6_realloc() for (char *) cast */
}
/* %if-tables-serialization definitions */
/* %ok-for-header */
-#line 1969 "dhcp6_lexer.ll"
+#line 1968 "dhcp6_lexer.ll"
+
using namespace isc::dhcp;
file_ = "<string>";
sfile_ = 0;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ parser6__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
buffer = parser6__scan_bytes(str.c_str(), str.size());
if (!buffer) {
file_ = filename;
sfile_ = f;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ parser6__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
/* See dhcp6_lexer.cc header for available definitions */
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// Unqualified %code blocks.
-#line 34 "dhcp6_parser.yy" // lalr1.cc:438
+#line 34 "dhcp6_parser.yy"
#include <dhcp6/parser_context.h>
-#line 51 "dhcp6_parser.cc" // lalr1.cc:438
+#line 51 "dhcp6_parser.cc"
#ifndef YY_
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
- while (/*CONSTCOND*/ false)
+ while (false)
# endif
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "dhcp6_parser.yy" // lalr1.cc:513
+#line 14 "dhcp6_parser.yy"
namespace isc { namespace dhcp {
-#line 146 "dhcp6_parser.cc" // lalr1.cc:513
+#line 146 "dhcp6_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
{
if (*yystr == '"')
{
- std::string yyr = "";
+ std::string yyr;
char const *yyp = yystr;
for (;;)
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- // Fall through.
+ else
+ goto append;
+
+ append:
default:
yyr += *yyp;
break;
Dhcp6Parser::~Dhcp6Parser ()
{}
+ Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+ {}
/*---------------.
| Symbol types. |
// by_state.
- Dhcp6Parser::by_state::by_state ()
+ Dhcp6Parser::by_state::by_state () YY_NOEXCEPT
: state (empty_state)
{}
- Dhcp6Parser::by_state::by_state (const by_state& other)
- : state (other.state)
+ Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+ : state (that.state)
{}
void
- Dhcp6Parser::by_state::clear ()
+ Dhcp6Parser::by_state::clear () YY_NOEXCEPT
{
state = empty_state;
}
that.clear ();
}
- Dhcp6Parser::by_state::by_state (state_type s)
+ Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT
: state (s)
{}
Dhcp6Parser::symbol_number_type
- Dhcp6Parser::by_state::type_get () const
+ Dhcp6Parser::by_state::type_get () const YY_NOEXCEPT
{
if (state == empty_state)
return empty_symbol;
break;
}
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
// that is emptied.
that.state = empty_state;
#endif
that.type = empty_symbol;
}
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
Dhcp6Parser::stack_symbol_type&
Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
+#endif
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
switch (yytype)
{
- case 182: // "constant string"
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< std::string > (); }
-#line 398 "dhcp6_parser.cc" // lalr1.cc:672
+ case 182: // "constant string"
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < std::string > (); }
+#line 405 "dhcp6_parser.cc"
break;
case 183: // "integer"
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< int64_t > (); }
-#line 405 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < int64_t > (); }
+#line 411 "dhcp6_parser.cc"
break;
case 184: // "floating point"
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< double > (); }
-#line 412 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < double > (); }
+#line 417 "dhcp6_parser.cc"
break;
case 185: // "boolean"
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< bool > (); }
-#line 419 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < bool > (); }
+#line 423 "dhcp6_parser.cc"
break;
case 203: // value
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 426 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 429 "dhcp6_parser.cc"
break;
case 207: // map_value
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 433 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 435 "dhcp6_parser.cc"
break;
case 268: // db_type
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 440 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 441 "dhcp6_parser.cc"
break;
case 361: // hr_mode
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 447 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 447 "dhcp6_parser.cc"
break;
case 497: // duid_type
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 454 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 453 "dhcp6_parser.cc"
break;
case 532: // ncr_protocol_value
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 461 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 459 "dhcp6_parser.cc"
break;
case 539: // replace_client_name_value
-
-#line 261 "dhcp6_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 468 "dhcp6_parser.cc" // lalr1.cc:672
+#line 261 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 465 "dhcp6_parser.cc"
break;
-
default:
break;
}
void
Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
{
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
yypush_ (m, stack_symbol_type (s, std::move (sym)));
#else
stack_symbol_type ss (s, sym);
yystack_.clear ();
yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
- // A new symbol was pushed on the stack.
+ /*-----------------------------------------------.
+ | yynewstate -- push a new symbol on the stack. |
+ `-----------------------------------------------*/
yynewstate:
YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
+ YYACCEPT;
goto yybackup;
- // Backup.
+
+ /*-----------.
+ | yybackup. |
+ `-----------*/
yybackup:
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
goto yyerrlab1;
}
yypush_ ("Shifting", yyn, YY_MOVE (yyla));
goto yynewstate;
+
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
goto yyerrlab;
goto yyreduce;
+
/*-----------------------------.
- | yyreduce -- Do a reduction. |
+ | yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
// Default location.
{
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ stack_type::slice range (yystack_, yylen);
+ YYLLOC_DEFAULT (yylhs.location, range, yylen);
yyerror_range[1].location = yylhs.location;
}
switch (yyn)
{
case 2:
-#line 270 "dhcp6_parser.yy" // lalr1.cc:907
+#line 270 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 727 "dhcp6_parser.cc" // lalr1.cc:907
+#line 731 "dhcp6_parser.cc"
break;
case 4:
-#line 271 "dhcp6_parser.yy" // lalr1.cc:907
+#line 271 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 733 "dhcp6_parser.cc" // lalr1.cc:907
+#line 737 "dhcp6_parser.cc"
break;
case 6:
-#line 272 "dhcp6_parser.yy" // lalr1.cc:907
+#line 272 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.DHCP6; }
-#line 739 "dhcp6_parser.cc" // lalr1.cc:907
+#line 743 "dhcp6_parser.cc"
break;
case 8:
-#line 273 "dhcp6_parser.yy" // lalr1.cc:907
+#line 273 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 745 "dhcp6_parser.cc" // lalr1.cc:907
+#line 749 "dhcp6_parser.cc"
break;
case 10:
-#line 274 "dhcp6_parser.yy" // lalr1.cc:907
+#line 274 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.SUBNET6; }
-#line 751 "dhcp6_parser.cc" // lalr1.cc:907
+#line 755 "dhcp6_parser.cc"
break;
case 12:
-#line 275 "dhcp6_parser.yy" // lalr1.cc:907
+#line 275 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.POOLS; }
-#line 757 "dhcp6_parser.cc" // lalr1.cc:907
+#line 761 "dhcp6_parser.cc"
break;
case 14:
-#line 276 "dhcp6_parser.yy" // lalr1.cc:907
+#line 276 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.PD_POOLS; }
-#line 763 "dhcp6_parser.cc" // lalr1.cc:907
+#line 767 "dhcp6_parser.cc"
break;
case 16:
-#line 277 "dhcp6_parser.yy" // lalr1.cc:907
+#line 277 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.RESERVATIONS; }
-#line 769 "dhcp6_parser.cc" // lalr1.cc:907
+#line 773 "dhcp6_parser.cc"
break;
case 18:
-#line 278 "dhcp6_parser.yy" // lalr1.cc:907
+#line 278 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.DHCP6; }
-#line 775 "dhcp6_parser.cc" // lalr1.cc:907
+#line 779 "dhcp6_parser.cc"
break;
case 20:
-#line 279 "dhcp6_parser.yy" // lalr1.cc:907
+#line 279 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DEF; }
-#line 781 "dhcp6_parser.cc" // lalr1.cc:907
+#line 785 "dhcp6_parser.cc"
break;
case 22:
-#line 280 "dhcp6_parser.yy" // lalr1.cc:907
+#line 280 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DATA; }
-#line 787 "dhcp6_parser.cc" // lalr1.cc:907
+#line 791 "dhcp6_parser.cc"
break;
case 24:
-#line 281 "dhcp6_parser.yy" // lalr1.cc:907
+#line 281 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 793 "dhcp6_parser.cc" // lalr1.cc:907
+#line 797 "dhcp6_parser.cc"
break;
case 26:
-#line 282 "dhcp6_parser.yy" // lalr1.cc:907
+#line 282 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 799 "dhcp6_parser.cc" // lalr1.cc:907
+#line 803 "dhcp6_parser.cc"
break;
case 28:
-#line 283 "dhcp6_parser.yy" // lalr1.cc:907
+#line 283 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.LOGGING; }
-#line 805 "dhcp6_parser.cc" // lalr1.cc:907
+#line 809 "dhcp6_parser.cc"
break;
case 30:
-#line 284 "dhcp6_parser.yy" // lalr1.cc:907
+#line 284 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 811 "dhcp6_parser.cc" // lalr1.cc:907
+#line 815 "dhcp6_parser.cc"
break;
case 32:
-#line 292 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 817 "dhcp6_parser.cc" // lalr1.cc:907
+#line 292 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 821 "dhcp6_parser.cc"
break;
case 33:
-#line 293 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 823 "dhcp6_parser.cc" // lalr1.cc:907
+#line 293 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 827 "dhcp6_parser.cc"
break;
case 34:
-#line 294 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 829 "dhcp6_parser.cc" // lalr1.cc:907
+#line 294 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 833 "dhcp6_parser.cc"
break;
case 35:
-#line 295 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 835 "dhcp6_parser.cc" // lalr1.cc:907
+#line 295 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 839 "dhcp6_parser.cc"
break;
case 36:
-#line 296 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 841 "dhcp6_parser.cc" // lalr1.cc:907
+#line 296 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 845 "dhcp6_parser.cc"
break;
case 37:
-#line 297 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 847 "dhcp6_parser.cc" // lalr1.cc:907
+#line 297 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 851 "dhcp6_parser.cc"
break;
case 38:
-#line 298 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 853 "dhcp6_parser.cc" // lalr1.cc:907
+#line 298 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 857 "dhcp6_parser.cc"
break;
case 39:
-#line 301 "dhcp6_parser.yy" // lalr1.cc:907
+#line 301 "dhcp6_parser.yy"
{
// Push back the JSON value on the stack
- ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 862 "dhcp6_parser.cc" // lalr1.cc:907
+#line 866 "dhcp6_parser.cc"
break;
case 40:
-#line 306 "dhcp6_parser.yy" // lalr1.cc:907
+#line 306 "dhcp6_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 873 "dhcp6_parser.cc" // lalr1.cc:907
+#line 877 "dhcp6_parser.cc"
break;
case 41:
-#line 311 "dhcp6_parser.yy" // lalr1.cc:907
+#line 311 "dhcp6_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 883 "dhcp6_parser.cc" // lalr1.cc:907
+#line 887 "dhcp6_parser.cc"
break;
case 42:
-#line 317 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 889 "dhcp6_parser.cc" // lalr1.cc:907
+#line 317 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 893 "dhcp6_parser.cc"
break;
case 45:
-#line 324 "dhcp6_parser.yy" // lalr1.cc:907
+#line 324 "dhcp6_parser.yy"
{
// map containing a single entry
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 898 "dhcp6_parser.cc" // lalr1.cc:907
+#line 902 "dhcp6_parser.cc"
break;
case 46:
-#line 328 "dhcp6_parser.yy" // lalr1.cc:907
+#line 328 "dhcp6_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 908 "dhcp6_parser.cc" // lalr1.cc:907
+#line 912 "dhcp6_parser.cc"
break;
case 47:
-#line 335 "dhcp6_parser.yy" // lalr1.cc:907
+#line 335 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 917 "dhcp6_parser.cc" // lalr1.cc:907
+#line 921 "dhcp6_parser.cc"
break;
case 48:
-#line 338 "dhcp6_parser.yy" // lalr1.cc:907
+#line 338 "dhcp6_parser.yy"
{
// list parsing complete. Put any sanity checking here
}
-#line 925 "dhcp6_parser.cc" // lalr1.cc:907
+#line 929 "dhcp6_parser.cc"
break;
case 51:
-#line 346 "dhcp6_parser.yy" // lalr1.cc:907
+#line 346 "dhcp6_parser.yy"
{
// List consisting of a single element.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 934 "dhcp6_parser.cc" // lalr1.cc:907
+#line 938 "dhcp6_parser.cc"
break;
case 52:
-#line 350 "dhcp6_parser.yy" // lalr1.cc:907
+#line 350 "dhcp6_parser.yy"
{
// List ending with , and a value.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 943 "dhcp6_parser.cc" // lalr1.cc:907
+#line 947 "dhcp6_parser.cc"
break;
case 53:
-#line 357 "dhcp6_parser.yy" // lalr1.cc:907
+#line 357 "dhcp6_parser.yy"
{
// List parsing about to start
}
-#line 951 "dhcp6_parser.cc" // lalr1.cc:907
+#line 955 "dhcp6_parser.cc"
break;
case 54:
-#line 359 "dhcp6_parser.yy" // lalr1.cc:907
+#line 359 "dhcp6_parser.yy"
{
// list parsing complete. Put any sanity checking here
//ctx.stack_.pop_back();
}
-#line 960 "dhcp6_parser.cc" // lalr1.cc:907
+#line 964 "dhcp6_parser.cc"
break;
case 57:
-#line 368 "dhcp6_parser.yy" // lalr1.cc:907
+#line 368 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 969 "dhcp6_parser.cc" // lalr1.cc:907
+#line 973 "dhcp6_parser.cc"
break;
case 58:
-#line 372 "dhcp6_parser.yy" // lalr1.cc:907
+#line 372 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 978 "dhcp6_parser.cc" // lalr1.cc:907
+#line 982 "dhcp6_parser.cc"
break;
case 59:
-#line 383 "dhcp6_parser.yy" // lalr1.cc:907
+#line 383 "dhcp6_parser.yy"
{
const std::string& where = ctx.contextName();
- const std::string& keyword = yystack_[1].value.as< std::string > ();
+ const std::string& keyword = yystack_[1].value.as < std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 989 "dhcp6_parser.cc" // lalr1.cc:907
+#line 993 "dhcp6_parser.cc"
break;
case 60:
-#line 393 "dhcp6_parser.yy" // lalr1.cc:907
+#line 393 "dhcp6_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1000 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1004 "dhcp6_parser.cc"
break;
case 61:
-#line 398 "dhcp6_parser.yy" // lalr1.cc:907
+#line 398 "dhcp6_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// Dhcp6 is required
ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 1013 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1017 "dhcp6_parser.cc"
break;
case 70:
-#line 421 "dhcp6_parser.yy" // lalr1.cc:907
+#line 421 "dhcp6_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP6);
}
-#line 1026 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1030 "dhcp6_parser.cc"
break;
case 71:
-#line 428 "dhcp6_parser.yy" // lalr1.cc:907
+#line 428 "dhcp6_parser.yy"
{
// No global parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1036 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1040 "dhcp6_parser.cc"
break;
case 72:
-#line 436 "dhcp6_parser.yy" // lalr1.cc:907
+#line 436 "dhcp6_parser.yy"
{
// Parse the Dhcp6 map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1046 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1050 "dhcp6_parser.cc"
break;
case 73:
-#line 440 "dhcp6_parser.yy" // lalr1.cc:907
+#line 440 "dhcp6_parser.yy"
{
// No global parameter is required
// parsing completed
}
-#line 1055 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1059 "dhcp6_parser.cc"
break;
case 119:
-#line 496 "dhcp6_parser.yy" // lalr1.cc:907
+#line 496 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1063 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1067 "dhcp6_parser.cc"
break;
case 120:
-#line 498 "dhcp6_parser.yy" // lalr1.cc:907
+#line 498 "dhcp6_parser.yy"
{
- ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data-directory", datadir);
ctx.leave();
}
-#line 1073 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1077 "dhcp6_parser.cc"
break;
case 121:
-#line 504 "dhcp6_parser.yy" // lalr1.cc:907
+#line 504 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("preferred-lifetime", prf);
}
-#line 1082 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1086 "dhcp6_parser.cc"
break;
case 122:
-#line 509 "dhcp6_parser.yy" // lalr1.cc:907
+#line 509 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("min-preferred-lifetime", prf);
}
-#line 1091 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1095 "dhcp6_parser.cc"
break;
case 123:
-#line 514 "dhcp6_parser.yy" // lalr1.cc:907
+#line 514 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-preferred-lifetime", prf);
}
-#line 1100 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1104 "dhcp6_parser.cc"
break;
case 124:
-#line 519 "dhcp6_parser.yy" // lalr1.cc:907
+#line 519 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("valid-lifetime", prf);
}
-#line 1109 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1113 "dhcp6_parser.cc"
break;
case 125:
-#line 524 "dhcp6_parser.yy" // lalr1.cc:907
+#line 524 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("min-valid-lifetime", prf);
}
-#line 1118 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1122 "dhcp6_parser.cc"
break;
case 126:
-#line 529 "dhcp6_parser.yy" // lalr1.cc:907
+#line 529 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-valid-lifetime", prf);
}
-#line 1127 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1131 "dhcp6_parser.cc"
break;
case 127:
-#line 534 "dhcp6_parser.yy" // lalr1.cc:907
+#line 534 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("renew-timer", prf);
}
-#line 1136 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1140 "dhcp6_parser.cc"
break;
case 128:
-#line 539 "dhcp6_parser.yy" // lalr1.cc:907
+#line 539 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rebind-timer", prf);
}
-#line 1145 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1149 "dhcp6_parser.cc"
break;
case 129:
-#line 544 "dhcp6_parser.yy" // lalr1.cc:907
+#line 544 "dhcp6_parser.yy"
{
- ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("calculate-tee-times", ctt);
}
-#line 1154 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1158 "dhcp6_parser.cc"
break;
case 130:
-#line 549 "dhcp6_parser.yy" // lalr1.cc:907
+#line 549 "dhcp6_parser.yy"
{
- ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t1-percent", t1);
}
-#line 1163 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1167 "dhcp6_parser.cc"
break;
case 131:
-#line 554 "dhcp6_parser.yy" // lalr1.cc:907
+#line 554 "dhcp6_parser.yy"
{
- ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t2-percent", t2);
}
-#line 1172 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1176 "dhcp6_parser.cc"
break;
case 132:
-#line 559 "dhcp6_parser.yy" // lalr1.cc:907
+#line 559 "dhcp6_parser.yy"
{
- ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("decline-probation-period", dpp);
}
-#line 1181 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1185 "dhcp6_parser.cc"
break;
case 133:
-#line 564 "dhcp6_parser.yy" // lalr1.cc:907
+#line 564 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1189 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1193 "dhcp6_parser.cc"
break;
case 134:
-#line 566 "dhcp6_parser.yy" // lalr1.cc:907
+#line 566 "dhcp6_parser.yy"
{
- ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-tag", stag);
ctx.leave();
}
-#line 1199 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1203 "dhcp6_parser.cc"
break;
case 135:
-#line 572 "dhcp6_parser.yy" // lalr1.cc:907
+#line 572 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces-config", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.INTERFACES_CONFIG);
}
-#line 1210 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1214 "dhcp6_parser.cc"
break;
case 136:
-#line 577 "dhcp6_parser.yy" // lalr1.cc:907
+#line 577 "dhcp6_parser.yy"
{
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1220 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1224 "dhcp6_parser.cc"
break;
case 137:
-#line 583 "dhcp6_parser.yy" // lalr1.cc:907
+#line 583 "dhcp6_parser.yy"
{
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1230 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1234 "dhcp6_parser.cc"
break;
case 138:
-#line 587 "dhcp6_parser.yy" // lalr1.cc:907
+#line 587 "dhcp6_parser.yy"
{
// No interfaces config param is required
// parsing completed
}
-#line 1239 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1243 "dhcp6_parser.cc"
break;
case 146:
-#line 603 "dhcp6_parser.yy" // lalr1.cc:907
+#line 603 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1250 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1254 "dhcp6_parser.cc"
break;
case 147:
-#line 608 "dhcp6_parser.yy" // lalr1.cc:907
+#line 608 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1259 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1263 "dhcp6_parser.cc"
break;
case 148:
-#line 613 "dhcp6_parser.yy" // lalr1.cc:907
+#line 613 "dhcp6_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1268 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1272 "dhcp6_parser.cc"
break;
case 149:
-#line 619 "dhcp6_parser.yy" // lalr1.cc:907
+#line 619 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.LEASE_DATABASE);
}
-#line 1279 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1283 "dhcp6_parser.cc"
break;
case 150:
-#line 624 "dhcp6_parser.yy" // lalr1.cc:907
+#line 624 "dhcp6_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1290 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1294 "dhcp6_parser.cc"
break;
case 151:
-#line 631 "dhcp6_parser.yy" // lalr1.cc:907
+#line 631 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1301 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1305 "dhcp6_parser.cc"
break;
case 152:
-#line 636 "dhcp6_parser.yy" // lalr1.cc:907
+#line 636 "dhcp6_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1312 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1316 "dhcp6_parser.cc"
break;
case 153:
-#line 643 "dhcp6_parser.yy" // lalr1.cc:907
+#line 643 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1323 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1327 "dhcp6_parser.cc"
break;
case 154:
-#line 648 "dhcp6_parser.yy" // lalr1.cc:907
+#line 648 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1332 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1336 "dhcp6_parser.cc"
break;
case 159:
-#line 661 "dhcp6_parser.yy" // lalr1.cc:907
+#line 661 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1342 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1346 "dhcp6_parser.cc"
break;
case 160:
-#line 665 "dhcp6_parser.yy" // lalr1.cc:907
+#line 665 "dhcp6_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1352 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1356 "dhcp6_parser.cc"
break;
case 183:
-#line 697 "dhcp6_parser.yy" // lalr1.cc:907
+#line 697 "dhcp6_parser.yy"
{
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 1360 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1364 "dhcp6_parser.cc"
break;
case 184:
-#line 699 "dhcp6_parser.yy" // lalr1.cc:907
+#line 699 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1369 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1373 "dhcp6_parser.cc"
break;
case 185:
-#line 704 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1375 "dhcp6_parser.cc" // lalr1.cc:907
+#line 704 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1379 "dhcp6_parser.cc"
break;
case 186:
-#line 705 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1381 "dhcp6_parser.cc" // lalr1.cc:907
+#line 705 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1385 "dhcp6_parser.cc"
break;
case 187:
-#line 706 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1387 "dhcp6_parser.cc" // lalr1.cc:907
+#line 706 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1391 "dhcp6_parser.cc"
break;
case 188:
-#line 707 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1393 "dhcp6_parser.cc" // lalr1.cc:907
+#line 707 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1397 "dhcp6_parser.cc"
break;
case 189:
-#line 710 "dhcp6_parser.yy" // lalr1.cc:907
+#line 710 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1401 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1405 "dhcp6_parser.cc"
break;
case 190:
-#line 712 "dhcp6_parser.yy" // lalr1.cc:907
+#line 712 "dhcp6_parser.yy"
{
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 1411 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1415 "dhcp6_parser.cc"
break;
case 191:
-#line 718 "dhcp6_parser.yy" // lalr1.cc:907
+#line 718 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1419 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1423 "dhcp6_parser.cc"
break;
case 192:
-#line 720 "dhcp6_parser.yy" // lalr1.cc:907
+#line 720 "dhcp6_parser.yy"
{
- ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 1429 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1433 "dhcp6_parser.cc"
break;
case 193:
-#line 726 "dhcp6_parser.yy" // lalr1.cc:907
+#line 726 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1437 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1441 "dhcp6_parser.cc"
break;
case 194:
-#line 728 "dhcp6_parser.yy" // lalr1.cc:907
+#line 728 "dhcp6_parser.yy"
{
- ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 1447 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1451 "dhcp6_parser.cc"
break;
case 195:
-#line 734 "dhcp6_parser.yy" // lalr1.cc:907
+#line 734 "dhcp6_parser.yy"
{
- ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 1456 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1460 "dhcp6_parser.cc"
break;
case 196:
-#line 739 "dhcp6_parser.yy" // lalr1.cc:907
+#line 739 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1464 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1468 "dhcp6_parser.cc"
break;
case 197:
-#line 741 "dhcp6_parser.yy" // lalr1.cc:907
+#line 741 "dhcp6_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1474 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1478 "dhcp6_parser.cc"
break;
case 198:
-#line 747 "dhcp6_parser.yy" // lalr1.cc:907
+#line 747 "dhcp6_parser.yy"
{
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 1483 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1487 "dhcp6_parser.cc"
break;
case 199:
-#line 752 "dhcp6_parser.yy" // lalr1.cc:907
+#line 752 "dhcp6_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 1492 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1496 "dhcp6_parser.cc"
break;
case 200:
-#line 757 "dhcp6_parser.yy" // lalr1.cc:907
+#line 757 "dhcp6_parser.yy"
{
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 1501 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1505 "dhcp6_parser.cc"
break;
case 201:
-#line 762 "dhcp6_parser.yy" // lalr1.cc:907
+#line 762 "dhcp6_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 1510 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1514 "dhcp6_parser.cc"
break;
case 202:
-#line 767 "dhcp6_parser.yy" // lalr1.cc:907
+#line 767 "dhcp6_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 1519 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1523 "dhcp6_parser.cc"
break;
case 203:
-#line 772 "dhcp6_parser.yy" // lalr1.cc:907
+#line 772 "dhcp6_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("request-timeout", n);
}
-#line 1528 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1532 "dhcp6_parser.cc"
break;
case 204:
-#line 777 "dhcp6_parser.yy" // lalr1.cc:907
+#line 777 "dhcp6_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-keepalive", n);
}
-#line 1537 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1541 "dhcp6_parser.cc"
break;
case 205:
-#line 782 "dhcp6_parser.yy" // lalr1.cc:907
+#line 782 "dhcp6_parser.yy"
{
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-nodelay", n);
}
-#line 1546 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1550 "dhcp6_parser.cc"
break;
case 206:
-#line 787 "dhcp6_parser.yy" // lalr1.cc:907
+#line 787 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1554 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1558 "dhcp6_parser.cc"
break;
case 207:
-#line 789 "dhcp6_parser.yy" // lalr1.cc:907
+#line 789 "dhcp6_parser.yy"
{
- ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("contact-points", cp);
ctx.leave();
}
-#line 1564 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1568 "dhcp6_parser.cc"
break;
case 208:
-#line 795 "dhcp6_parser.yy" // lalr1.cc:907
+#line 795 "dhcp6_parser.yy"
{
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 1573 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1577 "dhcp6_parser.cc"
break;
case 209:
-#line 800 "dhcp6_parser.yy" // lalr1.cc:907
+#line 800 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1581 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1585 "dhcp6_parser.cc"
break;
case 210:
-#line 802 "dhcp6_parser.yy" // lalr1.cc:907
+#line 802 "dhcp6_parser.yy"
{
- ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("keyspace", ks);
ctx.leave();
}
-#line 1591 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1595 "dhcp6_parser.cc"
break;
case 211:
-#line 808 "dhcp6_parser.yy" // lalr1.cc:907
+#line 808 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1599 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1603 "dhcp6_parser.cc"
break;
case 212:
-#line 810 "dhcp6_parser.yy" // lalr1.cc:907
+#line 810 "dhcp6_parser.yy"
{
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("consistency", c);
ctx.leave();
}
-#line 1609 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1613 "dhcp6_parser.cc"
break;
case 213:
-#line 816 "dhcp6_parser.yy" // lalr1.cc:907
+#line 816 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1617 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1621 "dhcp6_parser.cc"
break;
case 214:
-#line 818 "dhcp6_parser.yy" // lalr1.cc:907
+#line 818 "dhcp6_parser.yy"
{
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("serial-consistency", c);
ctx.leave();
}
-#line 1627 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1631 "dhcp6_parser.cc"
break;
case 215:
-#line 824 "dhcp6_parser.yy" // lalr1.cc:907
+#line 824 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sanity-checks", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SANITY_CHECKS);
}
-#line 1638 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1642 "dhcp6_parser.cc"
break;
case 216:
-#line 829 "dhcp6_parser.yy" // lalr1.cc:907
+#line 829 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1647 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1651 "dhcp6_parser.cc"
break;
case 220:
-#line 839 "dhcp6_parser.yy" // lalr1.cc:907
+#line 839 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1655 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1659 "dhcp6_parser.cc"
break;
case 221:
-#line 841 "dhcp6_parser.yy" // lalr1.cc:907
+#line 841 "dhcp6_parser.yy"
{
- if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
- (string(yystack_[0].value.as< std::string > ()) == "warn") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
- (string(yystack_[0].value.as< std::string > ()) == "del")) {
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
+ (string(yystack_[0].value.as < std::string > ()) == "warn") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
+ (string(yystack_[0].value.as < std::string > ()) == "del")) {
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-checks", user);
ctx.leave();
} else {
- error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
+ error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 1675 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1679 "dhcp6_parser.cc"
break;
case 222:
-#line 857 "dhcp6_parser.yy" // lalr1.cc:907
+#line 857 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("mac-sources", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.MAC_SOURCES);
}
-#line 1686 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1690 "dhcp6_parser.cc"
break;
case 223:
-#line 862 "dhcp6_parser.yy" // lalr1.cc:907
+#line 862 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1695 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1699 "dhcp6_parser.cc"
break;
case 228:
-#line 875 "dhcp6_parser.yy" // lalr1.cc:907
+#line 875 "dhcp6_parser.yy"
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1704 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1708 "dhcp6_parser.cc"
break;
case 229:
-#line 880 "dhcp6_parser.yy" // lalr1.cc:907
+#line 880 "dhcp6_parser.yy"
{
- ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1713 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1717 "dhcp6_parser.cc"
break;
case 230:
-#line 885 "dhcp6_parser.yy" // lalr1.cc:907
+#line 885 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host-reservation-identifiers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
}
-#line 1724 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1728 "dhcp6_parser.cc"
break;
case 231:
-#line 890 "dhcp6_parser.yy" // lalr1.cc:907
+#line 890 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1733 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1737 "dhcp6_parser.cc"
break;
case 237:
-#line 904 "dhcp6_parser.yy" // lalr1.cc:907
+#line 904 "dhcp6_parser.yy"
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 1742 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1746 "dhcp6_parser.cc"
break;
case 238:
-#line 909 "dhcp6_parser.yy" // lalr1.cc:907
+#line 909 "dhcp6_parser.yy"
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 1751 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1755 "dhcp6_parser.cc"
break;
case 239:
-#line 916 "dhcp6_parser.yy" // lalr1.cc:907
+#line 916 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay-supplied-options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1762 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1766 "dhcp6_parser.cc"
break;
case 240:
-#line 921 "dhcp6_parser.yy" // lalr1.cc:907
+#line 921 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1771 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1775 "dhcp6_parser.cc"
break;
case 241:
-#line 926 "dhcp6_parser.yy" // lalr1.cc:907
+#line 926 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 1782 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1786 "dhcp6_parser.cc"
break;
case 242:
-#line 931 "dhcp6_parser.yy" // lalr1.cc:907
+#line 931 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1791 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1795 "dhcp6_parser.cc"
break;
case 247:
-#line 944 "dhcp6_parser.yy" // lalr1.cc:907
+#line 944 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1801 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1805 "dhcp6_parser.cc"
break;
case 248:
-#line 948 "dhcp6_parser.yy" // lalr1.cc:907
+#line 948 "dhcp6_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1811 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1815 "dhcp6_parser.cc"
break;
case 249:
-#line 954 "dhcp6_parser.yy" // lalr1.cc:907
+#line 954 "dhcp6_parser.yy"
{
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1821 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1825 "dhcp6_parser.cc"
break;
case 250:
-#line 958 "dhcp6_parser.yy" // lalr1.cc:907
+#line 958 "dhcp6_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1831 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1835 "dhcp6_parser.cc"
break;
case 256:
-#line 973 "dhcp6_parser.yy" // lalr1.cc:907
+#line 973 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1839 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1843 "dhcp6_parser.cc"
break;
case 257:
-#line 975 "dhcp6_parser.yy" // lalr1.cc:907
+#line 975 "dhcp6_parser.yy"
{
- ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1849 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1853 "dhcp6_parser.cc"
break;
case 258:
-#line 981 "dhcp6_parser.yy" // lalr1.cc:907
+#line 981 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1857 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1861 "dhcp6_parser.cc"
break;
case 259:
-#line 983 "dhcp6_parser.yy" // lalr1.cc:907
+#line 983 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1866 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1870 "dhcp6_parser.cc"
break;
case 260:
-#line 989 "dhcp6_parser.yy" // lalr1.cc:907
+#line 989 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("expired-leases-processing", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
}
-#line 1877 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1881 "dhcp6_parser.cc"
break;
case 261:
-#line 994 "dhcp6_parser.yy" // lalr1.cc:907
+#line 994 "dhcp6_parser.yy"
{
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1887 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1891 "dhcp6_parser.cc"
break;
case 270:
-#line 1012 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1012 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reclaim-timer-wait-time", value);
}
-#line 1896 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1900 "dhcp6_parser.cc"
break;
case 271:
-#line 1017 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1017 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
}
-#line 1905 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1909 "dhcp6_parser.cc"
break;
case 272:
-#line 1022 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1022 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 1914 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1918 "dhcp6_parser.cc"
break;
case 273:
-#line 1027 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1027 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 1923 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1927 "dhcp6_parser.cc"
break;
case 274:
-#line 1032 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1032 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 1932 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1936 "dhcp6_parser.cc"
break;
case 275:
-#line 1037 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1037 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 1941 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1945 "dhcp6_parser.cc"
break;
case 276:
-#line 1045 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1045 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet6", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET6);
}
-#line 1952 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1956 "dhcp6_parser.cc"
break;
case 277:
-#line 1050 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1050 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1961 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1965 "dhcp6_parser.cc"
break;
case 282:
-#line 1070 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1070 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1971 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1975 "dhcp6_parser.cc"
break;
case 283:
-#line 1074 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1074 "dhcp6_parser.yy"
{
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1997 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2001 "dhcp6_parser.cc"
break;
case 284:
-#line 1096 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1096 "dhcp6_parser.yy"
{
// Parse the subnet6 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2007 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2011 "dhcp6_parser.cc"
break;
case 285:
-#line 1100 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1100 "dhcp6_parser.yy"
{
// The subnet subnet6 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2017 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2021 "dhcp6_parser.cc"
break;
case 315:
-#line 1141 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1141 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2025 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2029 "dhcp6_parser.cc"
break;
case 316:
-#line 1143 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1143 "dhcp6_parser.yy"
{
- ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 2035 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2039 "dhcp6_parser.cc"
break;
case 317:
-#line 1149 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1149 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2043 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2047 "dhcp6_parser.cc"
break;
case 318:
-#line 1151 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1151 "dhcp6_parser.yy"
{
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2053 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2057 "dhcp6_parser.cc"
break;
case 319:
-#line 1157 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1157 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2061 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2065 "dhcp6_parser.cc"
break;
case 320:
-#line 1159 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1159 "dhcp6_parser.yy"
{
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface-id", iface);
ctx.leave();
}
-#line 2071 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2075 "dhcp6_parser.cc"
break;
case 321:
-#line 1165 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1165 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2079 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2083 "dhcp6_parser.cc"
break;
case 322:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1167 "dhcp6_parser.yy"
{
- ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 2089 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2093 "dhcp6_parser.cc"
break;
case 323:
-#line 1173 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1173 "dhcp6_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("require-client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2100 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2104 "dhcp6_parser.cc"
break;
case 324:
-#line 1178 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1178 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2109 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2113 "dhcp6_parser.cc"
break;
case 325:
-#line 1183 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1183 "dhcp6_parser.yy"
{
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2117 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2121 "dhcp6_parser.cc"
break;
case 326:
-#line 1185 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1185 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2126 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2130 "dhcp6_parser.cc"
break;
case 327:
-#line 1190 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2132 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1190 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2136 "dhcp6_parser.cc"
break;
case 328:
-#line 1191 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2138 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1191 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2142 "dhcp6_parser.cc"
break;
case 329:
-#line 1192 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2144 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1192 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2148 "dhcp6_parser.cc"
break;
case 330:
-#line 1193 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2150 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1193 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2154 "dhcp6_parser.cc"
break;
case 331:
-#line 1196 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1196 "dhcp6_parser.yy"
{
- ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2159 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2163 "dhcp6_parser.cc"
break;
case 332:
-#line 1201 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1201 "dhcp6_parser.yy"
{
- ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rapid-commit", rc);
}
-#line 2168 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2172 "dhcp6_parser.cc"
break;
case 333:
-#line 1209 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1209 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("shared-networks", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SHARED_NETWORK);
}
-#line 2179 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2183 "dhcp6_parser.cc"
break;
case 334:
-#line 1214 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1214 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2188 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2192 "dhcp6_parser.cc"
break;
case 339:
-#line 1229 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1229 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2198 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2202 "dhcp6_parser.cc"
break;
case 340:
-#line 1233 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1233 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 2206 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2210 "dhcp6_parser.cc"
break;
case 367:
-#line 1271 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1271 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 2217 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2221 "dhcp6_parser.cc"
break;
case 368:
-#line 1276 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1276 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2226 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2230 "dhcp6_parser.cc"
break;
case 369:
-#line 1284 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1284 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2235 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2239 "dhcp6_parser.cc"
break;
case 370:
-#line 1287 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1287 "dhcp6_parser.yy"
{
// parsing completed
}
-#line 2243 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2247 "dhcp6_parser.cc"
break;
case 375:
-#line 1303 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1303 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2253 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2257 "dhcp6_parser.cc"
break;
case 376:
-#line 1307 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1307 "dhcp6_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2265 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2269 "dhcp6_parser.cc"
break;
case 377:
-#line 1318 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1318 "dhcp6_parser.yy"
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2275 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2279 "dhcp6_parser.cc"
break;
case 378:
-#line 1322 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1322 "dhcp6_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2287 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2291 "dhcp6_parser.cc"
break;
case 394:
-#line 1354 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1354 "dhcp6_parser.yy"
{
- ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 2296 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2300 "dhcp6_parser.cc"
break;
case 396:
-#line 1361 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1361 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2304 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2308 "dhcp6_parser.cc"
break;
case 397:
-#line 1363 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1363 "dhcp6_parser.yy"
{
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 2314 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2318 "dhcp6_parser.cc"
break;
case 398:
-#line 1369 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1369 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2322 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2326 "dhcp6_parser.cc"
break;
case 399:
-#line 1371 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1371 "dhcp6_parser.yy"
{
- ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 2332 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2336 "dhcp6_parser.cc"
break;
case 400:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1377 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2340 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2344 "dhcp6_parser.cc"
break;
case 401:
-#line 1379 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1379 "dhcp6_parser.yy"
{
- ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 2350 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2354 "dhcp6_parser.cc"
break;
case 403:
-#line 1387 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1387 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2358 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2362 "dhcp6_parser.cc"
break;
case 404:
-#line 1389 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1389 "dhcp6_parser.yy"
{
- ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 2368 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2372 "dhcp6_parser.cc"
break;
case 405:
-#line 1395 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1395 "dhcp6_parser.yy"
{
- ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 2377 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2381 "dhcp6_parser.cc"
break;
case 406:
-#line 1404 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1404 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 2388 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2392 "dhcp6_parser.cc"
break;
case 407:
-#line 1409 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1409 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2397 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2401 "dhcp6_parser.cc"
break;
case 412:
-#line 1428 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1428 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2407 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2411 "dhcp6_parser.cc"
break;
case 413:
-#line 1432 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1432 "dhcp6_parser.yy"
{
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 2416 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2420 "dhcp6_parser.cc"
break;
case 414:
-#line 1440 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1440 "dhcp6_parser.yy"
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2426 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2430 "dhcp6_parser.cc"
break;
case 415:
-#line 1444 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1444 "dhcp6_parser.yy"
{
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 2435 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2439 "dhcp6_parser.cc"
break;
case 430:
-#line 1477 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1477 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2443 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2447 "dhcp6_parser.cc"
break;
case 431:
-#line 1479 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1479 "dhcp6_parser.yy"
{
- ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2453 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2457 "dhcp6_parser.cc"
break;
case 434:
-#line 1489 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1489 "dhcp6_parser.yy"
{
- ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2462 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2466 "dhcp6_parser.cc"
break;
case 435:
-#line 1494 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1494 "dhcp6_parser.yy"
{
- ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2471 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2475 "dhcp6_parser.cc"
break;
case 436:
-#line 1502 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1502 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 2482 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2486 "dhcp6_parser.cc"
break;
case 437:
-#line 1507 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1507 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2491 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2495 "dhcp6_parser.cc"
break;
case 442:
-#line 1522 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1522 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2501 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2505 "dhcp6_parser.cc"
break;
case 443:
-#line 1526 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1526 "dhcp6_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2511 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2515 "dhcp6_parser.cc"
break;
case 444:
-#line 1532 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1532 "dhcp6_parser.yy"
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2521 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2525 "dhcp6_parser.cc"
break;
case 445:
-#line 1536 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1536 "dhcp6_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 2530 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2534 "dhcp6_parser.cc"
break;
case 455:
-#line 1554 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1554 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2538 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2542 "dhcp6_parser.cc"
break;
case 456:
-#line 1556 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1556 "dhcp6_parser.yy"
{
- ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2548 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2552 "dhcp6_parser.cc"
break;
case 457:
-#line 1562 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1562 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2556 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2560 "dhcp6_parser.cc"
break;
case 458:
-#line 1564 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1564 "dhcp6_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
- ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
ConstElementPtr old = parent->get("user-context");
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2583 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2587 "dhcp6_parser.cc"
break;
case 459:
-#line 1587 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1587 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2591 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2595 "dhcp6_parser.cc"
break;
case 460:
-#line 1589 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1589 "dhcp6_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
- ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
user_context->set("comment", comment);
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2620 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2624 "dhcp6_parser.cc"
break;
case 461:
-#line 1617 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1617 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pd-pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.PD_POOLS);
}
-#line 2631 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2635 "dhcp6_parser.cc"
break;
case 462:
-#line 1622 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1622 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2640 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2644 "dhcp6_parser.cc"
break;
case 467:
-#line 1637 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1637 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2650 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2654 "dhcp6_parser.cc"
break;
case 468:
-#line 1641 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1641 "dhcp6_parser.yy"
{
// The prefix, prefix len and delegated len parameters are required.
ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2662 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2666 "dhcp6_parser.cc"
break;
case 469:
-#line 1649 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1649 "dhcp6_parser.yy"
{
// Parse the pd-pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2672 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2676 "dhcp6_parser.cc"
break;
case 470:
-#line 1653 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1653 "dhcp6_parser.yy"
{
// The prefix, prefix len and delegated len parameters are required.
ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2684 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2688 "dhcp6_parser.cc"
break;
case 484:
-#line 1678 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1678 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2692 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2696 "dhcp6_parser.cc"
break;
case 485:
-#line 1680 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1680 "dhcp6_parser.yy"
{
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix", prf);
ctx.leave();
}
-#line 2702 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2706 "dhcp6_parser.cc"
break;
case 486:
-#line 1686 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1686 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix-len", prf);
}
-#line 2711 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2715 "dhcp6_parser.cc"
break;
case 487:
-#line 1691 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1691 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2719 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2723 "dhcp6_parser.cc"
break;
case 488:
-#line 1693 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1693 "dhcp6_parser.yy"
{
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix", prf);
ctx.leave();
}
-#line 2729 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2733 "dhcp6_parser.cc"
break;
case 489:
-#line 1699 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1699 "dhcp6_parser.yy"
{
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix-len", prf);
}
-#line 2738 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2742 "dhcp6_parser.cc"
break;
case 490:
-#line 1704 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1704 "dhcp6_parser.yy"
{
- ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("delegated-len", deleg);
}
-#line 2747 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2751 "dhcp6_parser.cc"
break;
case 491:
-#line 1712 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1712 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 2758 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2762 "dhcp6_parser.cc"
break;
case 492:
-#line 1717 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1717 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2767 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2771 "dhcp6_parser.cc"
break;
case 497:
-#line 1730 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1730 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2777 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2781 "dhcp6_parser.cc"
break;
case 498:
-#line 1734 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1734 "dhcp6_parser.yy"
{
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2786 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2790 "dhcp6_parser.cc"
break;
case 499:
-#line 1739 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1739 "dhcp6_parser.yy"
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2796 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2800 "dhcp6_parser.cc"
break;
case 500:
-#line 1743 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1743 "dhcp6_parser.yy"
{
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 2805 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2809 "dhcp6_parser.cc"
break;
case 516:
-#line 1770 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1770 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-addresses", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2816 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2820 "dhcp6_parser.cc"
break;
case 517:
-#line 1775 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1775 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2825 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2829 "dhcp6_parser.cc"
break;
case 518:
-#line 1780 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1780 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefixes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2836 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2840 "dhcp6_parser.cc"
break;
case 519:
-#line 1785 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1785 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2845 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2849 "dhcp6_parser.cc"
break;
case 520:
-#line 1790 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1790 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2853 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2857 "dhcp6_parser.cc"
break;
case 521:
-#line 1792 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1792 "dhcp6_parser.yy"
{
- ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 2863 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2867 "dhcp6_parser.cc"
break;
case 522:
-#line 1798 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1798 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2871 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2875 "dhcp6_parser.cc"
break;
case 523:
-#line 1800 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1800 "dhcp6_parser.yy"
{
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 2881 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2885 "dhcp6_parser.cc"
break;
case 524:
-#line 1806 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1806 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2889 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2893 "dhcp6_parser.cc"
break;
case 525:
-#line 1808 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1808 "dhcp6_parser.yy"
{
- ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 2899 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2903 "dhcp6_parser.cc"
break;
case 526:
-#line 1814 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1814 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2907 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2911 "dhcp6_parser.cc"
break;
case 527:
-#line 1816 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1816 "dhcp6_parser.yy"
{
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 2917 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2921 "dhcp6_parser.cc"
break;
case 528:
-#line 1822 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1822 "dhcp6_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2928 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2932 "dhcp6_parser.cc"
break;
case 529:
-#line 1827 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1827 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2937 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2941 "dhcp6_parser.cc"
break;
case 530:
-#line 1835 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1835 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 2948 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2952 "dhcp6_parser.cc"
break;
case 531:
-#line 1840 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1840 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2957 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2961 "dhcp6_parser.cc"
break;
case 534:
-#line 1849 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1849 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2965 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2969 "dhcp6_parser.cc"
break;
case 535:
-#line 1851 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1851 "dhcp6_parser.yy"
{
- ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 2975 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2979 "dhcp6_parser.cc"
break;
case 536:
-#line 1860 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1860 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 2986 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2990 "dhcp6_parser.cc"
break;
case 537:
-#line 1865 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1865 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2995 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2999 "dhcp6_parser.cc"
break;
case 540:
-#line 1874 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1874 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3005 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3009 "dhcp6_parser.cc"
break;
case 541:
-#line 1878 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1878 "dhcp6_parser.yy"
{
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3015 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3019 "dhcp6_parser.cc"
break;
case 554:
-#line 1903 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1903 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3023 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3027 "dhcp6_parser.cc"
break;
case 555:
-#line 1905 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1905 "dhcp6_parser.yy"
{
- ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 3033 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3037 "dhcp6_parser.cc"
break;
case 556:
-#line 1911 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1911 "dhcp6_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 3042 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3046 "dhcp6_parser.cc"
break;
case 557:
-#line 1919 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1919 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-id", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER_ID);
}
-#line 3053 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3057 "dhcp6_parser.cc"
break;
case 558:
-#line 1924 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1924 "dhcp6_parser.yy"
{
// The type parameter is required.
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3064 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3068 "dhcp6_parser.cc"
break;
case 570:
-#line 1946 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1946 "dhcp6_parser.yy"
{
ctx.enter(ctx.DUID_TYPE);
}
-#line 3072 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3076 "dhcp6_parser.cc"
break;
case 571:
-#line 1948 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1948 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3081 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3085 "dhcp6_parser.cc"
break;
case 572:
-#line 1953 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3087 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1953 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 3091 "dhcp6_parser.cc"
break;
case 573:
-#line 1954 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3093 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1954 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 3097 "dhcp6_parser.cc"
break;
case 574:
-#line 1955 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3099 "dhcp6_parser.cc" // lalr1.cc:907
+#line 1955 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 3103 "dhcp6_parser.cc"
break;
case 575:
-#line 1958 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1958 "dhcp6_parser.yy"
{
- ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("htype", htype);
}
-#line 3108 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3112 "dhcp6_parser.cc"
break;
case 576:
-#line 1963 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1963 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3116 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3120 "dhcp6_parser.cc"
break;
case 577:
-#line 1965 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1965 "dhcp6_parser.yy"
{
- ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("identifier", id);
ctx.leave();
}
-#line 3126 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3130 "dhcp6_parser.cc"
break;
case 578:
-#line 1971 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1971 "dhcp6_parser.yy"
{
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("time", time);
}
-#line 3135 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3139 "dhcp6_parser.cc"
break;
case 579:
-#line 1976 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1976 "dhcp6_parser.yy"
{
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enterprise-id", time);
}
-#line 3144 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3148 "dhcp6_parser.cc"
break;
case 580:
-#line 1983 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1983 "dhcp6_parser.yy"
{
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 3153 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3157 "dhcp6_parser.cc"
break;
case 581:
-#line 1990 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1990 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 3164 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3168 "dhcp6_parser.cc"
break;
case 582:
-#line 1995 "dhcp6_parser.yy" // lalr1.cc:907
+#line 1995 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3173 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3177 "dhcp6_parser.cc"
break;
case 590:
-#line 2011 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2011 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3181 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3185 "dhcp6_parser.cc"
break;
case 591:
-#line 2013 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2013 "dhcp6_parser.yy"
{
- ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 3191 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3195 "dhcp6_parser.cc"
break;
case 592:
-#line 2019 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2019 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3199 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3203 "dhcp6_parser.cc"
break;
case 593:
-#line 2021 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2021 "dhcp6_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 3209 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3213 "dhcp6_parser.cc"
break;
case 594:
-#line 2029 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2029 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3217 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3221 "dhcp6_parser.cc"
break;
case 595:
-#line 2031 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2031 "dhcp6_parser.yy"
{
- ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
ctx.stack_.back()->set("dhcp-queue-control", qc);
// Doing this manually, because dhcp-queue-control
ctx.leave();
}
-#line 3257 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3261 "dhcp6_parser.cc"
break;
case 596:
-#line 2069 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2069 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 3268 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3272 "dhcp6_parser.cc"
break;
case 597:
-#line 2074 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2074 "dhcp6_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3279 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3283 "dhcp6_parser.cc"
break;
case 598:
-#line 2081 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2081 "dhcp6_parser.yy"
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3289 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3293 "dhcp6_parser.cc"
break;
case 599:
-#line 2085 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2085 "dhcp6_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3299 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3303 "dhcp6_parser.cc"
break;
case 620:
-#line 2115 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2115 "dhcp6_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 3308 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3312 "dhcp6_parser.cc"
break;
case 621:
-#line 2120 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2120 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3316 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3320 "dhcp6_parser.cc"
break;
case 622:
-#line 2122 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2122 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 3326 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3330 "dhcp6_parser.cc"
break;
case 623:
-#line 2128 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2128 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3334 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3338 "dhcp6_parser.cc"
break;
case 624:
-#line 2130 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2130 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 3344 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3348 "dhcp6_parser.cc"
break;
case 625:
-#line 2136 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2136 "dhcp6_parser.yy"
{
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 3353 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3357 "dhcp6_parser.cc"
break;
case 626:
-#line 2141 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2141 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3361 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3365 "dhcp6_parser.cc"
break;
case 627:
-#line 2143 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2143 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 3371 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3375 "dhcp6_parser.cc"
break;
case 628:
-#line 2149 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2149 "dhcp6_parser.yy"
{
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 3380 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3384 "dhcp6_parser.cc"
break;
case 629:
-#line 2154 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2154 "dhcp6_parser.yy"
{
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 3389 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3393 "dhcp6_parser.cc"
break;
case 630:
-#line 2159 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2159 "dhcp6_parser.yy"
{
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 3397 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3401 "dhcp6_parser.cc"
break;
case 631:
-#line 2161 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2161 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3406 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3410 "dhcp6_parser.cc"
break;
case 632:
-#line 2167 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3412 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2167 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3416 "dhcp6_parser.cc"
break;
case 633:
-#line 2168 "dhcp6_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3418 "dhcp6_parser.cc" // lalr1.cc:907
+#line 2168 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3422 "dhcp6_parser.cc"
break;
case 634:
-#line 2171 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2171 "dhcp6_parser.yy"
{
ctx.enter(ctx.NCR_FORMAT);
}
-#line 3426 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3430 "dhcp6_parser.cc"
break;
case 635:
-#line 2173 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2173 "dhcp6_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 3436 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3440 "dhcp6_parser.cc"
break;
case 636:
-#line 2179 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2179 "dhcp6_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 3445 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3449 "dhcp6_parser.cc"
break;
case 637:
-#line 2184 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2184 "dhcp6_parser.yy"
{
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 3454 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3458 "dhcp6_parser.cc"
break;
case 638:
-#line 2189 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2189 "dhcp6_parser.yy"
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 3462 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3466 "dhcp6_parser.cc"
break;
case 639:
-#line 2191 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2191 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3471 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3475 "dhcp6_parser.cc"
break;
case 640:
-#line 2197 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2197 "dhcp6_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3479 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3483 "dhcp6_parser.cc"
break;
case 641:
-#line 2200 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2200 "dhcp6_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 3487 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3491 "dhcp6_parser.cc"
break;
case 642:
-#line 2203 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2203 "dhcp6_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 3495 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3499 "dhcp6_parser.cc"
break;
case 643:
-#line 2206 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2206 "dhcp6_parser.yy"
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3503 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3507 "dhcp6_parser.cc"
break;
case 644:
-#line 2209 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2209 "dhcp6_parser.yy"
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 3512 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3516 "dhcp6_parser.cc"
break;
case 645:
-#line 2215 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2215 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3520 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3524 "dhcp6_parser.cc"
break;
case 646:
-#line 2217 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2217 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 3530 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3534 "dhcp6_parser.cc"
break;
case 647:
-#line 2223 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2223 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3538 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3542 "dhcp6_parser.cc"
break;
case 648:
-#line 2225 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2225 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 3548 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3552 "dhcp6_parser.cc"
break;
case 649:
-#line 2231 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2231 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3556 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3560 "dhcp6_parser.cc"
break;
case 650:
-#line 2233 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2233 "dhcp6_parser.yy"
{
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 3566 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3570 "dhcp6_parser.cc"
break;
case 651:
-#line 2241 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2241 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3574 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3578 "dhcp6_parser.cc"
break;
case 652:
-#line 2243 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2243 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3583 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3587 "dhcp6_parser.cc"
break;
case 653:
-#line 2248 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2248 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3591 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3595 "dhcp6_parser.cc"
break;
case 654:
-#line 2250 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2250 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3600 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3604 "dhcp6_parser.cc"
break;
case 655:
-#line 2255 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2255 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3608 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3612 "dhcp6_parser.cc"
break;
case 656:
-#line 2257 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2257 "dhcp6_parser.yy"
{
- ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3617 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3621 "dhcp6_parser.cc"
break;
case 657:
-#line 2264 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2264 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-control", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.CONFIG_CONTROL);
}
-#line 3628 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3632 "dhcp6_parser.cc"
break;
case 658:
-#line 2269 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2269 "dhcp6_parser.yy"
{
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3638 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3642 "dhcp6_parser.cc"
break;
case 659:
-#line 2275 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2275 "dhcp6_parser.yy"
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3648 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3652 "dhcp6_parser.cc"
break;
case 660:
-#line 2279 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2279 "dhcp6_parser.yy"
{
// No config_control params are required
// parsing completed
}
-#line 3657 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3661 "dhcp6_parser.cc"
break;
case 665:
-#line 2294 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2294 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CONFIG_DATABASE);
}
-#line 3668 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3672 "dhcp6_parser.cc"
break;
case 666:
-#line 2299 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2299 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3677 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3681 "dhcp6_parser.cc"
break;
case 667:
-#line 2304 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2304 "dhcp6_parser.yy"
{
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
}
-#line 3686 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3690 "dhcp6_parser.cc"
break;
case 668:
-#line 2314 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2314 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 3697 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3701 "dhcp6_parser.cc"
break;
case 669:
-#line 2319 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2319 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3706 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3710 "dhcp6_parser.cc"
break;
case 670:
-#line 2324 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2324 "dhcp6_parser.yy"
{
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3716 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3720 "dhcp6_parser.cc"
break;
case 671:
-#line 2328 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2328 "dhcp6_parser.yy"
{
// parsing completed
}
-#line 3724 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3728 "dhcp6_parser.cc"
break;
case 675:
-#line 2344 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2344 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 3735 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3739 "dhcp6_parser.cc"
break;
case 676:
-#line 2349 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2349 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3744 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3748 "dhcp6_parser.cc"
break;
case 679:
-#line 2361 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2361 "dhcp6_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3754 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3758 "dhcp6_parser.cc"
break;
case 680:
-#line 2365 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2365 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 3762 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3766 "dhcp6_parser.cc"
break;
case 690:
-#line 2382 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2382 "dhcp6_parser.yy"
{
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 3771 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3775 "dhcp6_parser.cc"
break;
case 691:
-#line 2387 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2387 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3779 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3783 "dhcp6_parser.cc"
break;
case 692:
-#line 2389 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2389 "dhcp6_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3789 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3793 "dhcp6_parser.cc"
break;
case 693:
-#line 2395 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2395 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 3800 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3804 "dhcp6_parser.cc"
break;
case 694:
-#line 2400 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2400 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3809 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3813 "dhcp6_parser.cc"
break;
case 697:
-#line 2409 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2409 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3819 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3823 "dhcp6_parser.cc"
break;
case 698:
-#line 2413 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2413 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 3827 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3831 "dhcp6_parser.cc"
break;
case 706:
-#line 2428 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2428 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3835 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3839 "dhcp6_parser.cc"
break;
case 707:
-#line 2430 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2430 "dhcp6_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3845 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3849 "dhcp6_parser.cc"
break;
case 708:
-#line 2436 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2436 "dhcp6_parser.yy"
{
- ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3854 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3858 "dhcp6_parser.cc"
break;
case 709:
-#line 2441 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2441 "dhcp6_parser.yy"
{
- ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3863 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3867 "dhcp6_parser.cc"
break;
case 710:
-#line 2446 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2446 "dhcp6_parser.yy"
{
- ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 3872 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3876 "dhcp6_parser.cc"
break;
case 711:
-#line 2451 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2451 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3880 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3884 "dhcp6_parser.cc"
break;
case 712:
-#line 2453 "dhcp6_parser.yy" // lalr1.cc:907
+#line 2453 "dhcp6_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 3890 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3894 "dhcp6_parser.cc"
break;
-#line 3894 "dhcp6_parser.cc" // lalr1.cc:907
+#line 3898 "dhcp6_parser.cc"
+
default:
break;
}
#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
YYERROR;
}
}
goto yynewstate;
+
/*--------------------------------------.
| yyerrlab -- here on detecting error. |
`--------------------------------------*/
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
+ /* Pacify compilers when the user code never invokes YYERROR and
+ the label yyerrorlab therefore never appears in user code. */
if (false)
- goto yyerrorlab;
+ YYERROR;
+
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
yylen = 0;
goto yyerrlab1;
+
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
}
goto yynewstate;
- // Accept.
+
+ /*-------------------------------------.
+ | yyacceptlab -- YYACCEPT comes here. |
+ `-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
- // Abort.
+
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
+
+ /*-----------------------------------------------------.
+ | yyreturn -- parsing is finished, return the result. |
+ `-----------------------------------------------------*/
yyreturn:
if (!yyla.empty ())
yy_destroy_ ("Cleanup: discarding lookahead", yyla);
#endif // PARSER6_DEBUG
-#line 14 "dhcp6_parser.yy" // lalr1.cc:1218
+#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 5265 "dhcp6_parser.cc" // lalr1.cc:1218
-#line 2459 "dhcp6_parser.yy" // lalr1.cc:1219
+#line 5282 "dhcp6_parser.cc"
+
+#line 2459 "dhcp6_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
# define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "dhcp6_parser.yy" // lalr1.cc:404
+#line 17 "dhcp6_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 60 "dhcp6_parser.h" // lalr1.cc:404
+#line 60 "dhcp6_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# include <string>
# include <vector>
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
// Support move semantics when possible.
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
# define YY_MOVE std::move
# define YY_MOVE_OR_COPY move
# define YY_MOVE_REF(Type) Type&&
# define YY_RVREF(Type) const Type&
# define YY_COPY(Type) const Type&
#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
# include "location.hh"
#include <typeinfo>
#ifndef YYASSERT
# endif /* ! defined YYDEBUG */
#endif /* ! defined PARSER6_DEBUG */
-#line 14 "dhcp6_parser.yy" // lalr1.cc:404
+#line 14 "dhcp6_parser.yy"
namespace isc { namespace dhcp {
-#line 162 "dhcp6_parser.h" // lalr1.cc:404
-
- /// A stack with random access from its top.
- template <typename T, typename S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
- typedef typename S::size_type size_type;
-
- stack (size_type n = 200)
- : seq_ (n)
- {}
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- T&
- operator[] (size_type i)
- {
- return seq_[size () - 1 - i];
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- T&
- operator[] (int i)
- {
- return operator[] (size_type (i));
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- const T&
- operator[] (size_type i) const
- {
- return seq_[size () - 1 - i];
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- const T&
- operator[] (int i) const
- {
- return operator[] (size_type (i));
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- void
- push (YY_MOVE_REF (T) t)
- {
- seq_.push_back (T ());
- operator[](0).move (t);
- }
-
- void
- pop (int n = 1)
- {
- for (; 0 < n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- size_type
- size () const
- {
- return seq_.size ();
- }
+#line 184 "dhcp6_parser.h"
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
- /// Present a slice of the top of a stack.
- template <typename T, typename S = stack<T> >
- class slice
+ /// A Bison parser.
+ class Dhcp6Parser
{
public:
- slice (const S& stack, int range)
- : stack_ (stack)
- , range_ (range)
- {}
-
- const T&
- operator[] (int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- int range_;
- };
-
-
-
- /// A char[S] buffer to store and retrieve objects.
+#ifndef PARSER6_STYPE
+ /// A buffer to store and retrieve objects.
///
/// Sort of a variant, but does not keep track of the nature
/// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
+ /// via the current parser state.
+ class semantic_type
{
+ public:
/// Type of *this.
- typedef variant<S> self_type;
+ typedef semantic_type self_type;
/// Empty construction.
- variant ()
+ semantic_type () YY_NOEXCEPT
: yybuffer_ ()
, yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (YY_RVREF (T) t)
+ semantic_type (YY_RVREF (T) t)
: yytypeid_ (&typeid (T))
{
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
new (yyas_<T> ()) T (YY_MOVE (t));
}
/// Destruction, allowed only if empty.
- ~variant ()
+ ~semantic_type () YY_NOEXCEPT
{
YYASSERT (!yytypeid_);
}
- /// Instantiate an empty \a T in here.
- template <typename T>
+# if 201103L <= YY_CPLUSPLUS
+ /// Instantiate a \a T in here from \a t.
+ template <typename T, typename... U>
T&
- emplace ()
+ emplace (U&&... u)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T ();
+ return *new (yyas_<T> ()) T (std::forward <U>(u)...);
}
-
-# if defined __cplusplus && 201103L <= __cplusplus
- /// Instantiate a \a T in here from \a t.
- template <typename T, typename U>
+# else
+ /// Instantiate an empty \a T in here.
+ template <typename T>
T&
- emplace (U&& u)
+ emplace ()
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T (std::forward <U>(u));
+ return *new (yyas_<T> ()) T ();
}
-# else
+
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
emplace (const T& t)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
/// Accessor to a built \a T.
template <typename T>
T&
- as ()
+ as () YY_NOEXCEPT
{
YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
/// Const accessor to a built \a T (for %printer).
template <typename T>
const T&
- as () const
+ as () const YY_NOEXCEPT
{
YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
- /// Swap the content with \a other, of same type.
+ /// Swap the content with \a that, of same type.
///
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
/// should not be the variant's responsibility.
/// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
+ /// self_type::move ().
template <typename T>
void
- swap (self_type& other)
+ swap (self_type& that) YY_NOEXCEPT
{
YYASSERT (yytypeid_);
- YYASSERT (*yytypeid_ == *other.yytypeid_);
- std::swap (as<T> (), other.as<T> ());
+ YYASSERT (*yytypeid_ == *that.yytypeid_);
+ std::swap (as<T> (), that.as<T> ());
}
- /// Move the content of \a other to this.
+ /// Move the content of \a that to this.
///
- /// Destroys \a other.
+ /// Destroys \a that.
template <typename T>
void
- move (self_type& other)
+ move (self_type& that)
{
-# if defined __cplusplus && 201103L <= __cplusplus
- emplace<T> (std::move (other.as<T> ()));
+# if 201103L <= YY_CPLUSPLUS
+ emplace<T> (std::move (that.as<T> ()));
# else
emplace<T> ();
- swap<T> (other);
+ swap<T> (that);
# endif
- other.destroy<T> ();
+ that.destroy<T> ();
}
-# if defined __cplusplus && 201103L <= __cplusplus
- /// Move the content of \a other to this.
+# if 201103L <= YY_CPLUSPLUS
+ /// Move the content of \a that to this.
template <typename T>
void
- move (self_type&& other)
+ move (self_type&& that)
{
- emplace<T> (std::move (other.as<T> ()));
- other.destroy<T> ();
+ emplace<T> (std::move (that.as<T> ()));
+ that.destroy<T> ();
}
#endif
- /// Copy the content of \a other to this.
+ /// Copy the content of \a that to this.
template <typename T>
void
- copy (const self_type& other)
+ copy (const self_type& that)
{
- emplace<T> (other.as<T> ());
+ emplace<T> (that.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
self_type& operator= (const self_type&);
- variant (const self_type&);
+ semantic_type (const self_type&);
/// Accessor to raw memory as \a T.
template <typename T>
T*
- yyas_ ()
+ yyas_ () YY_NOEXCEPT
{
void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- yyas_ () const
+ yyas_ () const YY_NOEXCEPT
{
const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;
-
- /// Whether the content is built: if defined, the name of the stored type.
- const std::type_info *yytypeid_;
- };
-
-
- /// A Bison parser.
- class Dhcp6Parser
- {
- public:
-#ifndef PARSER6_STYPE
/// An auxiliary type to compute the largest semantic type.
union union_type
{
// "constant string"
char dummy5[sizeof (std::string)];
-};
+ };
+
+ /// The size of the largest semantic type.
+ enum { size = sizeof (union_type) };
+
+ /// A buffer to store semantic values.
+ union
+ {
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[size];
+ } yybuffer_;
+
+ /// Whether the content is built: if defined, the name of the stored type.
+ const std::type_info *yytypeid_;
+ };
- /// Symbol semantic values.
- typedef variant<sizeof (union_type)> semantic_type;
#else
typedef PARSER6_STYPE semantic_type;
#endif
/// Syntax errors thrown from user actions.
struct syntax_error : std::runtime_error
{
- syntax_error (const location_type& l, const std::string& m);
+ syntax_error (const location_type& l, const std::string& m)
+ : std::runtime_error (m)
+ , location (l)
+ {}
+
+ syntax_error (const syntax_error& s)
+ : std::runtime_error (s.what ())
+ , location (s.location)
+ {}
+
+ ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+
location_type location;
};
typedef Base super_type;
/// Default constructor.
- basic_symbol ();
-
- /// Move or copy constructor.
- basic_symbol (YY_RVREF (basic_symbol) other);
+ basic_symbol ()
+ : value ()
+ , location ()
+ {}
+
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ basic_symbol (basic_symbol&& that);
+#endif
+ /// Copy constructor.
+ basic_symbol (const basic_symbol& that);
/// Constructor for valueless symbols, and symbols from each type.
- basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l);
-
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, location_type&& l)
+ : Base (t)
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const location_type& l)
+ : Base (t)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
/// Destroy the symbol.
- ~basic_symbol ();
+ ~basic_symbol ()
+ {
+ clear ();
+ }
/// Destroy contents, and record that is empty.
- void clear ();
+ void clear ()
+ {
+ // User destructor.
+ symbol_number_type yytype = this->type_get ();
+ basic_symbol<Base>& yysym = *this;
+ (void) yysym;
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+
+ // Type destructor.
+switch (yytype)
+ {
+ case 203: // value
+ case 207: // map_value
+ case 268: // db_type
+ case 361: // hr_mode
+ case 497: // duid_type
+ case 532: // ncr_protocol_value
+ case 539: // replace_client_name_value
+ value.template destroy< ElementPtr > ();
+ break;
+
+ case 185: // "boolean"
+ value.template destroy< bool > ();
+ break;
+
+ case 184: // "floating point"
+ value.template destroy< double > ();
+ break;
+
+ case 183: // "integer"
+ value.template destroy< int64_t > ();
+ break;
+
+ case 182: // "constant string"
+ value.template destroy< std::string > ();
+ break;
+
+ default:
+ break;
+ }
+
+ Base::clear ();
+ }
/// Whether empty.
- bool empty () const;
+ bool empty () const YY_NOEXCEPT;
/// Destructive move, \a s is emptied into this.
void move (basic_symbol& s);
location_type location;
private:
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
+ basic_symbol& operator= (const basic_symbol& that);
#endif
};
/// Default constructor.
by_type ();
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ by_type (by_type&& that);
+#endif
+
/// Copy constructor.
- by_type (const by_type& other);
+ by_type (const by_type& that);
/// The symbol type as needed by the constructor.
typedef token_type kind_type;
/// The (internal) type number (corresponding to \a type).
/// \a empty when empty.
- symbol_number_type type_get () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The token.
- token_type token () const;
+ token_type token () const YY_NOEXCEPT;
/// The symbol type.
/// \a empty_symbol when empty.
};
/// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
+ struct symbol_type : basic_symbol<by_type>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_type> super_type;
+
+ /// Empty symbol.
+ symbol_type () {}
+
+ /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, location_type l)
+ : super_type(token_type (tok), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#else
+ symbol_type (int tok, const location_type& l)
+ : super_type(token_type (tok), l)
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, bool v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#else
+ symbol_type (int tok, const bool& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, double v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#else
+ symbol_type (int tok, const double& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, int64_t v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#else
+ symbol_type (int tok, const int64_t& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, std::string v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#else
+ symbol_type (int tok, const std::string& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#endif
+ };
/// Build a parser object.
Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
/// Report a syntax error.
void error (const syntax_error& err);
- // Symbol constructors declarations.
- static
- symbol_type
- make_END (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COMMA (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COLON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LSQUARE_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RSQUARE_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LCURLY_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RCURLY_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NULL_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DATA_DIRECTORY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONFIG_CONTROL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONFIG_DATABASES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONFIG_FETCH_WAIT_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTERFACES_CONFIG (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTERFACES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RE_DETECT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LEASE_DATABASE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOSTS_DATABASE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOSTS_DATABASES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MEMFILE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MYSQL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_POSTGRESQL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CQL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_USER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PASSWORD (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOST (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PORT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PERSIST (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LFC_INTERVAL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_READONLY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONNECT_TIMEOUT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONTACT_POINTS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_KEYSPACE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONSISTENCY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SERIAL_CONSISTENCY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_REQUEST_TIMEOUT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TCP_KEEPALIVE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TCP_NODELAY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PREFERRED_LIFETIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MIN_PREFERRED_LIFETIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAX_PREFERRED_LIFETIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_VALID_LIFETIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MIN_VALID_LIFETIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAX_VALID_LIFETIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RENEW_TIMER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_REBIND_TIMER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CALCULATE_TEE_TIMES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_T1_PERCENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_T2_PERCENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SERVER_TAG (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUBNET6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OPTION_DEF (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OPTION_DATA (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DATA (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CODE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SPACE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CSV_FORMAT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ALWAYS_SEND (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RECORD_TYPES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ENCAPSULATE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ARRAY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_POOLS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_POOL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PD_POOLS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PREFIX (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PREFIX_LEN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_EXCLUDED_PREFIX (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DELEGATED_LEN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_USER_CONTEXT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COMMENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUBNET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTERFACE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTERFACE_ID (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ID (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RAPID_COMMIT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RESERVATION_MODE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DISABLED (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUT_OF_POOL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_GLOBAL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ALL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SHARED_NETWORKS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAC_SOURCES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SANITY_CHECKS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LEASE_CHECKS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CLIENT_CLASSES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TEST (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ONLY_IF_REQUIRED (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CLIENT_CLASS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RESERVATIONS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_IP_ADDRESSES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PREFIXES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DUID (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HW_ADDRESS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOSTNAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLEX_ID (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RELAY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_IP_ADDRESS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LIBRARY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PARAMETERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAX_RECLAIM_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SERVER_ID (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LLT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_EN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_IDENTIFIER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HTYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TIME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ENTERPRISE_ID (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP4O6_PORT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONTROL_SOCKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP_DDNS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ENABLE_UPDATES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_QUALIFYING_SUFFIX (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SERVER_IP (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SERVER_PORT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SENDER_IP (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SENDER_PORT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAX_QUEUE_SIZE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NCR_PROTOCOL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NCR_FORMAT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_GENERATED_PREFIX (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_UDP (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TCP (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_JSON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_WHEN_PRESENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NEVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_ALWAYS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_WHEN_NOT_PRESENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LOGGING (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LOGGERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUTPUT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DEBUGLEVEL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SEVERITY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLUSH (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAXSIZE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAXVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PATTERN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP4 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCPDDNS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONTROL_AGENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TOPLEVEL_JSON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_DHCP6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_INTERFACES6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_SUBNET6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_POOL6 (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_PD_POOL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_RESERVATION (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_OPTION_DEFS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_OPTION_DEF (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_OPTION_DATA (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_DHCP_DDNS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_LOGGING (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
-
-
-
- private:
- /// This class is not copyable.
- Dhcp6Parser (const Dhcp6Parser&);
- Dhcp6Parser& operator= (const Dhcp6Parser&);
-
- /// State numbers.
- typedef int state_type;
-
- /// Generate an error message.
- /// \param yystate the state where the error occurred.
- /// \param yyla the lookahead token.
- virtual std::string yysyntax_error_ (state_type yystate,
- const symbol_type& yyla) const;
-
- /// Compute post-reduction state.
- /// \param yystate the current state
- /// \param yysym the nonterminal to push on the stack
- state_type yy_lr_goto_state_ (state_type yystate, int yysym);
-
- /// Whether the given \c yypact_ value indicates a defaulted state.
- /// \param yyvalue the value to check
- static bool yy_pact_value_is_default_ (int yyvalue);
-
- /// Whether the given \c yytable_ value indicates a syntax error.
- /// \param yyvalue the value to check
- static bool yy_table_value_is_error_ (int yyvalue);
-
- static const short yypact_ninf_;
- static const signed char yytable_ninf_;
-
- /// Convert a scanner token number \a t to a symbol number.
- static token_number_type yytranslate_ (token_type t);
-
- // Tables.
- // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- // STATE-NUM.
- static const short yypact_[];
-
- // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
- // Performed when YYTABLE does not specify something else to do. Zero
- // means the default is an error.
- static const unsigned short yydefact_[];
-
- // YYPGOTO[NTERM-NUM].
- static const short yypgoto_[];
-
- // YYDEFGOTO[NTERM-NUM].
- static const short yydefgoto_[];
-
- // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
- // positive, shift that token. If negative, reduce the rule whose
- // number is the opposite. If YYTABLE_NINF, syntax error.
- static const unsigned short yytable_[];
-
- static const short yycheck_[];
-
- // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- // symbol of state STATE-NUM.
- static const unsigned short yystos_[];
-
- // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
- static const unsigned short yyr1_[];
-
- // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
- static const unsigned char yyr2_[];
-
-
- /// Convert the symbol name \a n to a form suitable for a diagnostic.
- static std::string yytnamerr_ (const char *n);
-
-
- /// For a symbol, its name in clear.
- static const char* const yytname_[];
-#if PARSER6_DEBUG
- // YYRLINE[YYN] -- Source line where rule number YYN was defined.
- static const unsigned short yyrline_[];
- /// Report on the debug stream that the rule \a r is going to be reduced.
- virtual void yy_reduce_print_ (int r);
- /// Print the state stack on the debug stream.
- virtual void yystack_print_ ();
-
- /// Debugging level.
- int yydebug_;
- /// Debug stream.
- std::ostream* yycdebug_;
-
- /// \brief Display a symbol type, value and location.
- /// \param yyo The output stream.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
-#endif
-
- /// \brief Reclaim the memory associated to a symbol.
- /// \param yymsg Why this token is reclaimed.
- /// If null, print nothing.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
-
- private:
- /// Type access provider for state based symbols.
- struct by_state
- {
- /// Default constructor.
- by_state ();
-
- /// The symbol type as needed by the constructor.
- typedef state_type kind_type;
-
- /// Constructor.
- by_state (kind_type s);
-
- /// Copy constructor.
- by_state (const by_state& other);
-
- /// Record that this symbol is empty.
- void clear ();
-
- /// Steal the symbol type from \a that.
- void move (by_state& that);
-
- /// The (internal) type number (corresponding to \a state).
- /// \a empty_symbol when empty.
- symbol_number_type type_get () const;
-
- /// The state number used to denote an empty symbol.
- enum { empty_state = -1 };
-
- /// The state.
- /// \a empty when empty.
- state_type state;
- };
-
- /// "Internal" symbol: element of the stack.
- struct stack_symbol_type : basic_symbol<by_state>
- {
- /// Superclass.
- typedef basic_symbol<by_state> super_type;
- /// Construct an empty symbol.
- stack_symbol_type ();
- /// Move or copy construction.
- stack_symbol_type (YY_RVREF (stack_symbol_type) that);
- /// Steal the contents from \a sym to build this.
- stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
-#if !defined __cplusplus || __cplusplus < 201103L
- /// Assignment, needed by push_back by some old implementations.
- /// Moves the contents of that.
- stack_symbol_type& operator= (stack_symbol_type& that);
-#endif
- };
-
- /// Stack type.
- typedef stack<stack_symbol_type> stack_type;
-
- /// The stack.
- stack_type yystack_;
-
- /// Push a new state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param sym the symbol
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
-
- /// Push a new look ahead token on the state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the state
- /// \param sym the symbol (for its value and location).
- /// \warning the contents of \a sym.value is stolen.
- void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
-
- /// Pop \a n symbols from the stack.
- void yypop_ (int n = 1);
-
- /// Constants.
- enum
- {
- yyeof_ = 0,
- yylast_ = 1103, ///< Last index in yytable_.
- yynnts_ = 405, ///< Number of nonterminal symbols.
- yyfinal_ = 32, ///< Termination state number.
- yyterror_ = 1,
- yyerrcode_ = 256,
- yyntokens_ = 186 ///< Number of tokens.
- };
-
-
- // User arguments.
- isc::dhcp::Parser6Context& ctx;
- };
-
- // Symbol number corresponding to token number t.
- inline
- Dhcp6Parser::token_number_type
- Dhcp6Parser::yytranslate_ (token_type t)
- {
- static
- const token_number_type
- translate_table[] =
- {
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185
- };
- const unsigned user_token_number_max_ = 440;
- const token_number_type undef_token_ = 2;
-
- if (static_cast<int> (t) <= yyeof_)
- return yyeof_;
- else if (static_cast<unsigned> (t) <= user_token_number_max_)
- return translate_table[t];
- else
- return undef_token_;
- }
-
- inline
- Dhcp6Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
- : std::runtime_error (m)
- , location (l)
- {}
-
- // basic_symbol.
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol ()
- : value ()
- , location ()
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (YY_RVREF (basic_symbol) other)
- : Base (YY_MOVE (other))
- , value ()
- , location (YY_MOVE (other.location))
- {
- switch (other.type_get ())
- {
- case 203: // value
- case 207: // map_value
- case 268: // db_type
- case 361: // hr_mode
- case 497: // duid_type
- case 532: // ncr_protocol_value
- case 539: // replace_client_name_value
- value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
- break;
-
- case 185: // "boolean"
- value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
- break;
-
- case 184: // "floating point"
- value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
- break;
-
- case 183: // "integer"
- value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
- break;
-
- case 182: // "constant string"
- value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
- break;
-
- default:
- break;
- }
-
- }
-
-
- // Implementation of basic_symbol constructor for each type.
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l)
- : Base (t)
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
-
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::~basic_symbol ()
- {
- clear ();
- }
-
- template <typename Base>
- void
- Dhcp6Parser::basic_symbol<Base>::clear ()
- {
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- basic_symbol<Base>& yysym = *this;
- (void) yysym;
- switch (yytype)
- {
- default:
- break;
- }
-
- // Type destructor.
- switch (yytype)
- {
- case 203: // value
- case 207: // map_value
- case 268: // db_type
- case 361: // hr_mode
- case 497: // duid_type
- case 532: // ncr_protocol_value
- case 539: // replace_client_name_value
- value.template destroy< ElementPtr > ();
- break;
-
- case 185: // "boolean"
- value.template destroy< bool > ();
- break;
-
- case 184: // "floating point"
- value.template destroy< double > ();
- break;
-
- case 183: // "integer"
- value.template destroy< int64_t > ();
- break;
-
- case 182: // "constant string"
- value.template destroy< std::string > ();
- break;
-
- default:
- break;
- }
-
- Base::clear ();
- }
-
- template <typename Base>
- bool
- Dhcp6Parser::basic_symbol<Base>::empty () const
- {
- return Base::type_get () == empty_symbol;
- }
-
- template <typename Base>
- void
- Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
- {
- super_type::move (s);
- switch (this->type_get ())
- {
- case 203: // value
- case 207: // map_value
- case 268: // db_type
- case 361: // hr_mode
- case 497: // duid_type
- case 532: // ncr_protocol_value
- case 539: // replace_client_name_value
- value.move< ElementPtr > (YY_MOVE (s.value));
- break;
-
- case 185: // "boolean"
- value.move< bool > (YY_MOVE (s.value));
- break;
-
- case 184: // "floating point"
- value.move< double > (YY_MOVE (s.value));
- break;
-
- case 183: // "integer"
- value.move< int64_t > (YY_MOVE (s.value));
- break;
-
- case 182: // "constant string"
- value.move< std::string > (YY_MOVE (s.value));
- break;
-
- default:
- break;
- }
-
- location = YY_MOVE (s.location);
- }
-
- // by_type.
- inline
- Dhcp6Parser::by_type::by_type ()
- : type (empty_symbol)
- {}
-
- inline
- Dhcp6Parser::by_type::by_type (const by_type& other)
- : type (other.type)
- {}
-
- inline
- Dhcp6Parser::by_type::by_type (token_type t)
- : type (yytranslate_ (t))
- {}
-
- inline
- void
- Dhcp6Parser::by_type::clear ()
- {
- type = empty_symbol;
- }
-
- inline
- void
- Dhcp6Parser::by_type::move (by_type& that)
- {
- type = that.type;
- that.clear ();
- }
-
- inline
- int
- Dhcp6Parser::by_type::type_get () const
- {
- return type;
- }
-
- inline
- Dhcp6Parser::token_type
- Dhcp6Parser::by_type::token () const
- {
- // YYTOKNUM[NUM] -- (External) token number corresponding to the
- // (internal) symbol number NUM (which must be that of a token). */
- static
- const unsigned short
- yytoken_number_[] =
- {
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440
- };
- return static_cast<token_type> (yytoken_number_[type]);
- }
-
- // Implementation of make_symbol for each symbol type.
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_END (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_END, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_COMMA (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_COLON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LSQUARE_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RSQUARE_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LCURLY_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RCURLY_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NULL_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DATA_DIRECTORY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DATA_DIRECTORY, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONFIG_CONTROL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONFIG_CONTROL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONFIG_DATABASES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONFIG_DATABASES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACES_CONFIG (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_INTERFACES_CONFIG, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_INTERFACES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RE_DETECT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RE_DETECT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LEASE_DATABASE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LEASE_DATABASE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTS_DATABASE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTS_DATABASES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TYPE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MEMFILE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MEMFILE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MYSQL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MYSQL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_POSTGRESQL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_POSTGRESQL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CQL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CQL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_USER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_USER, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PASSWORD (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PASSWORD, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOST (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOST, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PORT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PORT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PERSIST (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PERSIST, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LFC_INTERVAL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LFC_INTERVAL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_READONLY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_READONLY, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONNECT_TIMEOUT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONNECT_TIMEOUT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONTACT_POINTS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONTACT_POINTS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_KEYSPACE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_KEYSPACE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONSISTENCY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONSISTENCY, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERIAL_CONSISTENCY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REQUEST_TIMEOUT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_REQUEST_TIMEOUT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TCP_KEEPALIVE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TCP_KEEPALIVE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TCP_NODELAY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TCP_NODELAY, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFERRED_LIFETIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PREFERRED_LIFETIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MIN_PREFERRED_LIFETIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_PREFERRED_LIFETIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_VALID_LIFETIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_VALID_LIFETIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MIN_VALID_LIFETIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_VALID_LIFETIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RENEW_TIMER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RENEW_TIMER, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REBIND_TIMER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_REBIND_TIMER, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CALCULATE_TEE_TIMES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_T1_PERCENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_T1_PERCENT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_T2_PERCENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_T2_PERCENT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_TAG (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SERVER_TAG, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUBNET6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUBNET6, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OPTION_DEF (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OPTION_DEF, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OPTION_DATA (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OPTION_DATA, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DATA (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DATA, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CODE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CODE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SPACE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SPACE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CSV_FORMAT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CSV_FORMAT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ALWAYS_SEND (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ALWAYS_SEND, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RECORD_TYPES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RECORD_TYPES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENCAPSULATE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ENCAPSULATE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ARRAY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ARRAY, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_POOLS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_POOLS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_POOL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_POOL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PD_POOLS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PD_POOLS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFIX (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PREFIX, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFIX_LEN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PREFIX_LEN, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EXCLUDED_PREFIX (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_EXCLUDED_PREFIX, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DELEGATED_LEN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DELEGATED_LEN, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_USER_CONTEXT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_COMMENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUBNET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUBNET, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_INTERFACE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACE_ID (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_INTERFACE_ID, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ID (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ID, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RAPID_COMMIT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RAPID_COMMIT, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RESERVATION_MODE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RESERVATION_MODE, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DISABLED (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DISABLED, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OUT_OF_POOL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OUT_OF_POOL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_GLOBAL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_GLOBAL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ALL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ALL, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SHARED_NETWORKS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SHARED_NETWORKS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAC_SOURCES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAC_SOURCES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SANITY_CHECKS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SANITY_CHECKS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LEASE_CHECKS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LEASE_CHECKS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CLIENT_CLASSES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASSES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TEST (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TEST, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ONLY_IF_REQUIRED (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CLIENT_CLASS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RESERVATIONS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RESERVATIONS, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_IP_ADDRESSES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESSES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFIXES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PREFIXES, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DUID (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DUID, YY_MOVE (l));
- }
-
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HW_ADDRESS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HW_ADDRESS, YY_MOVE (l));
- }
+ // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_END (location_type l)
+ {
+ return symbol_type (token::TOKEN_END, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_END (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_END, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMA (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COLON (location_type l)
+ {
+ return symbol_type (token::TOKEN_COLON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COLON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COLON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NULL_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NULL_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DATA_DIRECTORY (location_type l)
+ {
+ return symbol_type (token::TOKEN_DATA_DIRECTORY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DATA_DIRECTORY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DATA_DIRECTORY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RE_DETECT (location_type l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RE_DETECT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MEMFILE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MEMFILE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MYSQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MYSQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POSTGRESQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POSTGRESQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PASSWORD (location_type l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PASSWORD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PERSIST (location_type l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PERSIST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LFC_INTERVAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LFC_INTERVAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_READONLY (location_type l)
+ {
+ return symbol_type (token::TOKEN_READONLY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_READONLY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_READONLY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTACT_POINTS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTACT_POINTS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_KEYSPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_KEYSPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_NODELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_NODELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFERRED_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFERRED_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFERRED_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MIN_PREFERRED_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MIN_PREFERRED_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_PREFERRED_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_PREFERRED_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RENEW_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RENEW_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REBIND_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REBIND_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T1_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T1_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T2_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T2_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (location_type l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_TAG (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_TAG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_CODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CSV_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CSV_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS_SEND (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS_SEND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECORD_TYPES (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECORD_TYPES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENCAPSULATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENCAPSULATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ARRAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ARRAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOLS (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOLS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOLS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOLS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PD_POOLS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PD_POOLS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PD_POOLS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PD_POOLS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFIX_LEN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFIX_LEN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFIX_LEN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFIX_LEN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX_LEN (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX_LEN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DELEGATED_LEN (location_type l)
+ {
+ return symbol_type (token::TOKEN_DELEGATED_LEN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DELEGATED_LEN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DELEGATED_LEN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER_CONTEXT (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER_CONTEXT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACE_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACE_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RAPID_COMMIT (location_type l)
+ {
+ return symbol_type (token::TOKEN_RAPID_COMMIT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RAPID_COMMIT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RAPID_COMMIT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATION_MODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATION_MODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DISABLED (location_type l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DISABLED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUT_OF_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUT_OF_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GLOBAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GLOBAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALL (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SHARED_NETWORKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SHARED_NETWORKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAC_SOURCES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAC_SOURCES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAC_SOURCES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAC_SOURCES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RELAY_SUPPLIED_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RELAY_SUPPLIED_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SANITY_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SANITY_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TEST (location_type l)
+ {
+ return symbol_type (token::TOKEN_TEST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TEST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TEST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (location_type l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFIXES (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFIXES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFIXES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFIXES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DUID (location_type l)
+ {
+ return symbol_type (token::TOKEN_DUID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DUID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DUID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HW_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HW_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLEX_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLEX_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_RELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PARAMETERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PARAMETERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (location_type l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LLT (location_type l)
+ {
+ return symbol_type (token::TOKEN_LLT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LLT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LLT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EN (location_type l)
+ {
+ return symbol_type (token::TOKEN_EN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LL (location_type l)
+ {
+ return symbol_type (token::TOKEN_LL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IDENTIFIER (location_type l)
+ {
+ return symbol_type (token::TOKEN_IDENTIFIER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IDENTIFIER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IDENTIFIER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HTYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_HTYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HTYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HTYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENTERPRISE_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENTERPRISE_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENTERPRISE_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENTERPRISE_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4O6_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4O6_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_SOCKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_SOCKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_UPDATES (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_UPDATES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_PROTOCOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_PROTOCOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GENERATED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GENERATED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UDP (location_type l)
+ {
+ return symbol_type (token::TOKEN_UDP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UDP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UDP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NEVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_NEVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NEVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NEVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DEBUGLEVEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DEBUGLEVEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SEVERITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SEVERITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXSIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXSIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PATTERN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PATTERN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCPDDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCPDDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_INTERFACES6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_INTERFACES6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_SUBNET6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_SUBNET6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_POOL6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_POOL6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_PD_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_PD_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_PD_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_PD_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_RESERVATION (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_RESERVATION (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STRING (std::string v, location_type l)
+ {
+ return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTEGER (int64_t v, location_type l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLOAT (double v, location_type l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOLEAN (bool v, location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOLEAN (const bool& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ }
+#endif
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTNAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOSTNAME, YY_MOVE (l));
- }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLEX_ID (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLEX_ID, YY_MOVE (l));
- }
+ private:
+ /// This class is not copyable.
+ Dhcp6Parser (const Dhcp6Parser&);
+ Dhcp6Parser& operator= (const Dhcp6Parser&);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RELAY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RELAY, YY_MOVE (l));
- }
+ /// State numbers.
+ typedef int state_type;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_IP_ADDRESS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESS, YY_MOVE (l));
- }
+ /// Generate an error message.
+ /// \param yystate the state where the error occurred.
+ /// \param yyla the lookahead token.
+ virtual std::string yysyntax_error_ (state_type yystate,
+ const symbol_type& yyla) const;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l));
- }
+ /// Compute post-reduction state.
+ /// \param yystate the current state
+ /// \param yysym the nonterminal to push on the stack
+ state_type yy_lr_goto_state_ (state_type yystate, int yysym);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LIBRARY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l));
- }
+ /// Whether the given \c yypact_ value indicates a defaulted state.
+ /// \param yyvalue the value to check
+ static bool yy_pact_value_is_default_ (int yyvalue);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PARAMETERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l));
- }
+ /// Whether the given \c yytable_ value indicates a syntax error.
+ /// \param yyvalue the value to check
+ static bool yy_table_value_is_error_ (int yyvalue);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, YY_MOVE (l));
- }
+ static const short yypact_ninf_;
+ static const signed char yytable_ninf_;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, YY_MOVE (l));
- }
+ /// Convert a scanner token number \a t to a symbol number.
+ static token_number_type yytranslate_ (token_type t);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, YY_MOVE (l));
- }
+ // Tables.
+ // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ // STATE-NUM.
+ static const short yypact_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, YY_MOVE (l));
- }
+ // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ // Performed when YYTABLE does not specify something else to do. Zero
+ // means the default is an error.
+ static const unsigned short yydefact_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, YY_MOVE (l));
- }
+ // YYPGOTO[NTERM-NUM].
+ static const short yypgoto_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_RECLAIM_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, YY_MOVE (l));
- }
+ // YYDEFGOTO[NTERM-NUM].
+ static const short yydefgoto_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, YY_MOVE (l));
- }
+ // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ // positive, shift that token. If negative, reduce the rule whose
+ // number is the opposite. If YYTABLE_NINF, syntax error.
+ static const unsigned short yytable_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_ID (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SERVER_ID, YY_MOVE (l));
- }
+ static const short yycheck_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LLT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LLT, YY_MOVE (l));
- }
+ // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ // symbol of state STATE-NUM.
+ static const unsigned short yystos_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_EN, YY_MOVE (l));
- }
+ // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+ static const unsigned short yyr1_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LL, YY_MOVE (l));
- }
+ // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+ static const unsigned char yyr2_[];
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_IDENTIFIER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_IDENTIFIER, YY_MOVE (l));
- }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HTYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HTYPE, YY_MOVE (l));
- }
+ /// Convert the symbol name \a n to a form suitable for a diagnostic.
+ static std::string yytnamerr_ (const char *n);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TIME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TIME, YY_MOVE (l));
- }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENTERPRISE_ID (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ENTERPRISE_ID, YY_MOVE (l));
- }
+ /// For a symbol, its name in clear.
+ static const char* const yytname_[];
+#if PARSER6_DEBUG
+ // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+ static const unsigned short yyrline_[];
+ /// Report on the debug stream that the rule \a r is going to be reduced.
+ virtual void yy_reduce_print_ (int r);
+ /// Print the state stack on the debug stream.
+ virtual void yystack_print_ ();
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP4O6_PORT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP4O6_PORT, YY_MOVE (l));
- }
+ /// Debugging level.
+ int yydebug_;
+ /// Debug stream.
+ std::ostream* yycdebug_;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONTROL_SOCKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONTROL_SOCKET, YY_MOVE (l));
- }
+ /// \brief Display a symbol type, value and location.
+ /// \param yyo The output stream.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#endif
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SOCKET_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l));
- }
+ /// \brief Reclaim the memory associated to a symbol.
+ /// \param yymsg Why this token is reclaimed.
+ /// If null, print nothing.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SOCKET_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l));
- }
+ private:
+ /// Type access provider for state based symbols.
+ struct by_state
+ {
+ /// Default constructor.
+ by_state () YY_NOEXCEPT;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, YY_MOVE (l));
- }
+ /// The symbol type as needed by the constructor.
+ typedef state_type kind_type;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP_DDNS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP_DDNS, YY_MOVE (l));
- }
+ /// Constructor.
+ by_state (kind_type s) YY_NOEXCEPT;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENABLE_UPDATES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ENABLE_UPDATES, YY_MOVE (l));
- }
+ /// Copy constructor.
+ by_state (const by_state& that) YY_NOEXCEPT;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_QUALIFYING_SUFFIX (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, YY_MOVE (l));
- }
+ /// Record that this symbol is empty.
+ void clear () YY_NOEXCEPT;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_IP (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SERVER_IP, YY_MOVE (l));
- }
+ /// Steal the symbol type from \a that.
+ void move (by_state& that);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_PORT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SERVER_PORT, YY_MOVE (l));
- }
+ /// The (internal) type number (corresponding to \a state).
+ /// \a empty_symbol when empty.
+ symbol_number_type type_get () const YY_NOEXCEPT;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SENDER_IP (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SENDER_IP, YY_MOVE (l));
- }
+ /// The state number used to denote an empty symbol.
+ enum { empty_state = -1 };
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SENDER_PORT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SENDER_PORT, YY_MOVE (l));
- }
+ /// The state.
+ /// \a empty when empty.
+ state_type state;
+ };
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_QUEUE_SIZE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, YY_MOVE (l));
- }
+ /// "Internal" symbol: element of the stack.
+ struct stack_symbol_type : basic_symbol<by_state>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_state> super_type;
+ /// Construct an empty symbol.
+ stack_symbol_type ();
+ /// Move or copy construction.
+ stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+ /// Steal the contents from \a sym to build this.
+ stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if YY_CPLUSPLUS < 201103L
+ /// Assignment, needed by push_back by some old implementations.
+ /// Moves the contents of that.
+ stack_symbol_type& operator= (stack_symbol_type& that);
+#endif
+ };
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NCR_PROTOCOL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NCR_PROTOCOL, YY_MOVE (l));
- }
+ /// A stack with random access from its top.
+ template <typename T, typename S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+ typedef typename S::size_type size_type;
+
+ stack (size_type n = 200)
+ : seq_ (n)
+ {}
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (size_type i)
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (int i)
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (size_type i) const
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (int i) const
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ void
+ push (YY_MOVE_REF (T) t)
+ {
+ seq_.push_back (T ());
+ operator[] (0).move (t);
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NCR_FORMAT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NCR_FORMAT, YY_MOVE (l));
- }
+ /// Pop elements from the stack.
+ void
+ pop (int n = 1) YY_NOEXCEPT
+ {
+ for (; 0 < n; --n)
+ seq_.pop_back ();
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, YY_MOVE (l));
- }
+ /// Pop all elements from the stack.
+ void
+ clear () YY_NOEXCEPT
+ {
+ seq_.clear ();
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, YY_MOVE (l));
- }
+ /// Number of elements on the stack.
+ size_type
+ size () const YY_NOEXCEPT
+ {
+ return seq_.size ();
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, YY_MOVE (l));
- }
+ /// Iterator on top of the stack (going downwards).
+ const_iterator
+ begin () const YY_NOEXCEPT
+ {
+ return seq_.rbegin ();
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_GENERATED_PREFIX (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_GENERATED_PREFIX, YY_MOVE (l));
- }
+ /// Bottom of the stack.
+ const_iterator
+ end () const YY_NOEXCEPT
+ {
+ return seq_.rend ();
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_UDP (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_UDP, YY_MOVE (l));
- }
+ /// Present a slice of the top of a stack.
+ class slice
+ {
+ public:
+ slice (const stack& stack, int range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ const T&
+ operator[] (int i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const stack& stack_;
+ int range_;
+ };
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TCP (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TCP, YY_MOVE (l));
- }
+ private:
+ stack (const stack&);
+ stack& operator= (const stack&);
+ /// The wrapped container.
+ S seq_;
+ };
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_JSON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_JSON, YY_MOVE (l));
- }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_WHEN_PRESENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_WHEN_PRESENT, YY_MOVE (l));
- }
+ /// Stack type.
+ typedef stack<stack_symbol_type> stack_type;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NEVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NEVER, YY_MOVE (l));
- }
+ /// The stack.
+ stack_type yystack_;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ALWAYS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_ALWAYS, YY_MOVE (l));
- }
+ /// Push a new state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param sym the symbol
+ /// \warning the contents of \a s.value is stolen.
+ void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_WHEN_NOT_PRESENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, YY_MOVE (l));
- }
+ /// Push a new look ahead token on the state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param s the state
+ /// \param sym the symbol (for its value and location).
+ /// \warning the contents of \a sym.value is stolen.
+ void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, YY_MOVE (l));
- }
+ /// Pop \a n symbols from the stack.
+ void yypop_ (int n = 1);
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, YY_MOVE (l));
- }
+ /// Constants.
+ enum
+ {
+ yyeof_ = 0,
+ yylast_ = 1103, ///< Last index in yytable_.
+ yynnts_ = 405, ///< Number of nonterminal symbols.
+ yyfinal_ = 32, ///< Termination state number.
+ yyterror_ = 1,
+ yyerrcode_ = 256,
+ yyntokens_ = 186 ///< Number of tokens.
+ };
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LOGGING (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l));
- }
+
+ // User arguments.
+ isc::dhcp::Parser6Context& ctx;
+ };
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LOGGERS (YY_COPY (location_type) l)
+ Dhcp6Parser::token_number_type
+ Dhcp6Parser::yytranslate_ (token_type t)
{
- return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l));
- }
+ // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+ // TOKEN-NUM as returned by yylex.
+ static
+ const token_number_type
+ translate_table[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185
+ };
+ const unsigned user_token_number_max_ = 440;
+ const token_number_type undef_token_ = 2;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l));
+ if (static_cast<int> (t) <= yyeof_)
+ return yyeof_;
+ else if (static_cast<unsigned> (t) <= user_token_number_max_)
+ return translate_table[t];
+ else
+ return undef_token_;
}
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OUTPUT (YY_COPY (location_type) l)
+ // basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
+ template <typename Base>
+ Dhcp6Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+ : Base (std::move (that))
+ , value ()
+ , location (std::move (that.location))
{
- return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
- }
+ switch (this->type_get ())
+ {
+ case 203: // value
+ case 207: // map_value
+ case 268: // db_type
+ case 361: // hr_mode
+ case 497: // duid_type
+ case 532: // ncr_protocol_value
+ case 539: // replace_client_name_value
+ value.move< ElementPtr > (std::move (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DEBUGLEVEL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l));
- }
+ case 185: // "boolean"
+ value.move< bool > (std::move (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SEVERITY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l));
- }
+ case 184: // "floating point"
+ value.move< double > (std::move (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLUSH (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
- }
+ case 183: // "integer"
+ value.move< int64_t > (std::move (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAXSIZE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l));
- }
+ case 182: // "constant string"
+ value.move< std::string > (std::move (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAXVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
- }
+ default:
+ break;
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PATTERN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PATTERN, YY_MOVE (l));
}
+#endif
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP4 (YY_COPY (location_type) l)
+ template <typename Base>
+ Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+ : Base (that)
+ , value ()
+ , location (that.location)
{
- return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l));
- }
+ switch (this->type_get ())
+ {
+ case 203: // value
+ case 207: // map_value
+ case 268: // db_type
+ case 361: // hr_mode
+ case 497: // duid_type
+ case 532: // ncr_protocol_value
+ case 539: // replace_client_name_value
+ value.copy< ElementPtr > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCPDDNS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCPDDNS, YY_MOVE (l));
- }
+ case 185: // "boolean"
+ value.copy< bool > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONTROL_AGENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONTROL_AGENT, YY_MOVE (l));
- }
+ case 184: // "floating point"
+ value.copy< double > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TOPLEVEL_JSON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_JSON, YY_MOVE (l));
- }
+ case 183: // "integer"
+ value.copy< int64_t > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, YY_MOVE (l));
- }
+ case 182: // "constant string"
+ value.copy< std::string > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_DHCP6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_DHCP6, YY_MOVE (l));
- }
+ default:
+ break;
+ }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_INTERFACES6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_INTERFACES6, YY_MOVE (l));
}
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_SUBNET6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_SUBNET6, YY_MOVE (l));
- }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_POOL6 (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_POOL6, YY_MOVE (l));
- }
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_PD_POOL (YY_COPY (location_type) l)
+ template <typename Base>
+ bool
+ Dhcp6Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_SUB_PD_POOL, YY_MOVE (l));
+ return Base::type_get () == empty_symbol;
}
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_RESERVATION (YY_COPY (location_type) l)
+ template <typename Base>
+ void
+ Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
{
- return symbol_type (token::TOKEN_SUB_RESERVATION, YY_MOVE (l));
- }
+ super_type::move (s);
+ switch (this->type_get ())
+ {
+ case 203: // value
+ case 207: // map_value
+ case 268: // db_type
+ case 361: // hr_mode
+ case 497: // duid_type
+ case 532: // ncr_protocol_value
+ case 539: // replace_client_name_value
+ value.move< ElementPtr > (YY_MOVE (s.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_OPTION_DEFS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEFS, YY_MOVE (l));
- }
+ case 185: // "boolean"
+ value.move< bool > (YY_MOVE (s.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_OPTION_DEF (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEF, YY_MOVE (l));
- }
+ case 184: // "floating point"
+ value.move< double > (YY_MOVE (s.value));
+ break;
- inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_OPTION_DATA (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DATA, YY_MOVE (l));
+ case 183: // "integer"
+ value.move< int64_t > (YY_MOVE (s.value));
+ break;
+
+ case 182: // "constant string"
+ value.move< std::string > (YY_MOVE (s.value));
+ break;
+
+ default:
+ break;
+ }
+
+ location = YY_MOVE (s.location);
}
+ // by_type.
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, YY_MOVE (l));
- }
+ Dhcp6Parser::by_type::by_type ()
+ : type (empty_symbol)
+ {}
+#if 201103L <= YY_CPLUSPLUS
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_DHCP_DDNS (YY_COPY (location_type) l)
+ Dhcp6Parser::by_type::by_type (by_type&& that)
+ : type (that.type)
{
- return symbol_type (token::TOKEN_SUB_DHCP_DDNS, YY_MOVE (l));
+ that.clear ();
}
+#endif
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_LOGGING (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_LOGGING, YY_MOVE (l));
- }
+ Dhcp6Parser::by_type::by_type (const by_type& that)
+ : type (that.type)
+ {}
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, YY_MOVE (l));
- }
+ Dhcp6Parser::by_type::by_type (token_type t)
+ : type (yytranslate_ (t))
+ {}
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l)
+ void
+ Dhcp6Parser::by_type::clear ()
{
- return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
+ type = empty_symbol;
}
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l)
+ void
+ Dhcp6Parser::by_type::move (by_type& that)
{
- return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
+ type = that.type;
+ that.clear ();
}
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l)
+ int
+ Dhcp6Parser::by_type::type_get () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
+ return type;
}
inline
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l)
+ Dhcp6Parser::token_type
+ Dhcp6Parser::by_type::token () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
+ // YYTOKNUM[NUM] -- (External) token number corresponding to the
+ // (internal) symbol number NUM (which must be that of a token). */
+ static
+ const unsigned short
+ yytoken_number_[] =
+ {
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440
+ };
+ return token_type (yytoken_number_[type]);
}
-
-#line 14 "dhcp6_parser.yy" // lalr1.cc:404
+#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 3424 "dhcp6_parser.h" // lalr1.cc:404
+#line 4343 "dhcp6_parser.h"
+
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
# endif
# endif
-#line 14 "dhcp6_parser.yy" // location.cc:339
+#line 14 "dhcp6_parser.yy"
namespace isc { namespace dhcp {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "dhcp6_parser.yy" // location.cc:339
+#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_PARSER6_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
# endif
# endif
-#line 14 "netconf_parser.yy" // location.cc:339
+#line 14 "netconf_parser.yy"
namespace isc { namespace netconf {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "netconf_parser.yy" // location.cc:339
+#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_NETCONF_LOCATION_HH_INCLUDED
/* A lexical scanner generated by flex */
/* %not-for-header */
+
/* %if-c-only */
/* %if-not-reentrant */
#define yy_create_buffer netconf__create_buffer
#define yy_delete_buffer netconf__delete_buffer
-#define yy_scan_buffer netconf__scan_buffer
-#define yy_scan_string netconf__scan_string
-#define yy_scan_bytes netconf__scan_bytes
+#define yy_flex_debug netconf__flex_debug
#define yy_init_buffer netconf__init_buffer
#define yy_flush_buffer netconf__flush_buffer
#define yy_load_buffer_state netconf__load_buffer_state
#define yy_switch_to_buffer netconf__switch_to_buffer
-#define yypush_buffer_state netconf_push_buffer_state
-#define yypop_buffer_state netconf_pop_buffer_state
-#define yyensure_buffer_stack netconf_ensure_buffer_stack
-#define yy_flex_debug netconf__flex_debug
#define yyin netconf_in
#define yyleng netconf_leng
#define yylex netconf_lex
#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
/* %endif */
/* %if-c-only */
-#ifdef yy_create_buffer
-#define netconf__create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer netconf__create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define netconf__delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer netconf__delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define netconf__scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer netconf__scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define netconf__scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string netconf__scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define netconf__scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes netconf__scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define netconf__init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer netconf__init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define netconf__flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer netconf__flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define netconf__load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state netconf__load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define netconf__switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer netconf__switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define netconf_push_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state netconf_push_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define netconf_pop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state netconf_pop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define netconf_ensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack netconf_ensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define netconf_lex_ALREADY_DEFINED
-#else
-#define yylex netconf_lex
-#endif
-
-#ifdef yyrestart
-#define netconf_restart_ALREADY_DEFINED
-#else
-#define yyrestart netconf_restart
-#endif
-
-#ifdef yylex_init
-#define netconf_lex_init_ALREADY_DEFINED
-#else
-#define yylex_init netconf_lex_init
-#endif
-
-#ifdef yylex_init_extra
-#define netconf_lex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra netconf_lex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define netconf_lex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy netconf_lex_destroy
-#endif
-
-#ifdef yyget_debug
-#define netconf_get_debug_ALREADY_DEFINED
-#else
-#define yyget_debug netconf_get_debug
-#endif
-
-#ifdef yyset_debug
-#define netconf_set_debug_ALREADY_DEFINED
-#else
-#define yyset_debug netconf_set_debug
-#endif
-
-#ifdef yyget_extra
-#define netconf_get_extra_ALREADY_DEFINED
-#else
-#define yyget_extra netconf_get_extra
-#endif
-
-#ifdef yyset_extra
-#define netconf_set_extra_ALREADY_DEFINED
-#else
-#define yyset_extra netconf_set_extra
-#endif
-
-#ifdef yyget_in
-#define netconf_get_in_ALREADY_DEFINED
-#else
-#define yyget_in netconf_get_in
-#endif
-
-#ifdef yyset_in
-#define netconf_set_in_ALREADY_DEFINED
-#else
-#define yyset_in netconf_set_in
-#endif
-
-#ifdef yyget_out
-#define netconf_get_out_ALREADY_DEFINED
-#else
-#define yyget_out netconf_get_out
-#endif
-
-#ifdef yyset_out
-#define netconf_set_out_ALREADY_DEFINED
-#else
-#define yyset_out netconf_set_out
-#endif
-
-#ifdef yyget_leng
-#define netconf_get_leng_ALREADY_DEFINED
-#else
-#define yyget_leng netconf_get_leng
-#endif
-
-#ifdef yyget_text
-#define netconf_get_text_ALREADY_DEFINED
-#else
-#define yyget_text netconf_get_text
-#endif
-
-#ifdef yyget_lineno
-#define netconf_get_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno netconf_get_lineno
-#endif
-
-#ifdef yyset_lineno
-#define netconf_set_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno netconf_set_lineno
-#endif
-
-#ifdef yywrap
-#define netconf_wrap_ALREADY_DEFINED
-#else
-#define yywrap netconf_wrap
-#endif
-
+
/* %endif */
-#ifdef yyalloc
-#define netconf_alloc_ALREADY_DEFINED
-#else
-#define yyalloc netconf_alloc
-#endif
-
-#ifdef yyrealloc
-#define netconf_realloc_ALREADY_DEFINED
-#else
-#define yyrealloc netconf_realloc
-#endif
-
-#ifdef yyfree
-#define netconf_free_ALREADY_DEFINED
-#else
-#define yyfree netconf_free
-#endif
-
/* %if-c-only */
-#ifdef yytext
-#define netconf_text_ALREADY_DEFINED
-#else
-#define yytext netconf_text
-#endif
-
-#ifdef yyleng
-#define netconf_leng_ALREADY_DEFINED
-#else
-#define yyleng netconf_leng
-#endif
-
-#ifdef yyin
-#define netconf_in_ALREADY_DEFINED
-#else
-#define yyin netconf_in
-#endif
-
-#ifdef yyout
-#define netconf_out_ALREADY_DEFINED
-#else
-#define yyout netconf_out
-#endif
-
-#ifdef yy_flex_debug
-#define netconf__flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug netconf__flex_debug
-#endif
-
-#ifdef yylineno
-#define netconf_lineno_ALREADY_DEFINED
-#else
-#define yylineno netconf_lineno
-#endif
-
/* %endif */
/* First, we deal with platform-specific or compiler-specific issues. */
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;
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
#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 */
* 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 netconf_restart(netconf_in )
+
#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.
#endif
/* %if-not-reentrant */
-extern int yyleng;
+extern yy_size_t netconf_leng;
/* %endif */
/* %if-c-only */
/* %if-not-reentrant */
-extern FILE *yyin, *yyout;
+extern FILE *netconf_in, *netconf_out;
/* %endif */
/* %endif */
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
-
+
#define YY_LESS_LINENO(n)
- #define YY_LINENO_REWIND_TO(ptr)
/* 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 netconf_text. */ \
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 netconf_text again */ \
} \
while ( 0 )
+
#define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_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
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.
*/
* 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 netconf_restart()), so that the user can continue scanning by
+ * just pointing netconf_in at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
/* %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 */
#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.
*/
/* %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 netconf_text 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 netconf_leng;
/* 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 netconf_wrap()'s to do buffer switches
+ * instead of setting up a fresh netconf_in. 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 netconf_restart (FILE *input_file );
+void netconf__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE netconf__create_buffer (FILE *file,int size );
+void netconf__delete_buffer (YY_BUFFER_STATE b );
+void netconf__flush_buffer (YY_BUFFER_STATE b );
+void netconf_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void netconf_pop_buffer_state (void );
-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 )
+static void netconf_ensure_buffer_stack (void );
+static void netconf__load_buffer_state (void );
+static void netconf__init_buffer (YY_BUFFER_STATE b,FILE *file );
-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 );
+#define YY_FLUSH_BUFFER netconf__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE netconf__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE netconf__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE netconf__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 *netconf_alloc (yy_size_t );
+void *netconf_realloc (void *,yy_size_t );
+void netconf_free (void * );
+
+#define yy_new_buffer netconf__create_buffer
-#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
if ( ! YY_CURRENT_BUFFER ){ \
- yyensure_buffer_stack (); \
+ netconf_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ netconf__create_buffer(netconf_in,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 (); \
+ netconf_ensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ netconf__create_buffer(netconf_in,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] netconf_text/netconf_in/netconf_out/yy_state_type/netconf_lineno etc. def's & init go here */
/* Begin user sect3 */
-#define netconf_wrap() (/*CONSTCOND*/1)
+#define netconf_wrap(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 *netconf_in = (FILE *) 0, *netconf_out = (FILE *) 0;
typedef int yy_state_type;
-extern int yylineno;
-int yylineno = 1;
+extern int netconf_lineno;
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
+int netconf_lineno = 1;
-/* %% [1.5] DFA */
+extern char *netconf_text;
+#define yytext_ptr netconf_text
/* %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 netconf_text.
*/
#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 netconf_text and netconf_leng for yymore() goes here \ */\
+ netconf_leng = (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 netconf_text[] 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 63
#define YY_END_OF_BUFFER 64
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[373] =
+static yyconst flex_int16_t yy_accept[373] =
{ 0,
56, 56, 0, 0, 0, 0, 0, 0, 0, 0,
64, 62, 10, 11, 62, 1, 56, 53, 56, 56,
16, 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, 2, 1, 1, 1, 1, 1, 1, 1,
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[61] =
+static yyconst flex_int32_t yy_meta[61] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
3, 3, 5, 6, 6, 6, 6, 3, 3, 3,
5, 3, 5, 5, 3, 3, 3, 3, 3, 3
} ;
-static const flex_int16_t yy_base[386] =
+static yyconst flex_int16_t yy_base[386] =
{ 0,
0, 0, 59, 62, 65, 0, 63, 67, 47, 64,
291, 2525, 84, 286, 125, 0, 105, 2525, 120, 125,
2509, 2511, 2513, 2515, 2517
} ;
-static const flex_int16_t yy_def[386] =
+static yyconst flex_int16_t yy_def[386] =
{ 0,
372, 1, 373, 373, 1, 5, 5, 5, 5, 5,
372, 372, 372, 372, 374, 375, 372, 372, 372, 372,
372, 372, 372, 372, 372
} ;
-static const flex_int16_t yy_nxt[2586] =
+static yyconst flex_int16_t yy_nxt[2586] =
{ 0,
12, 13, 14, 13, 12, 15, 16, 12, 17, 18,
19, 20, 21, 22, 22, 22, 22, 23, 24, 12,
372, 372, 372, 372, 372
} ;
-static const flex_int16_t yy_chk[2586] =
+static yyconst flex_int16_t yy_chk[2586] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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 netconf__flex_debug;
+int netconf__flex_debug = 1;
-static const flex_int16_t yy_rule_linenum[63] =
+static yyconst flex_int16_t yy_rule_linenum[63] =
{ 0,
- 133, 135, 137, 142, 143, 148, 149, 150, 162, 165,
- 170, 177, 186, 198, 210, 220, 230, 240, 249, 258,
- 267, 276, 285, 294, 303, 312, 321, 330, 339, 348,
- 357, 366, 375, 384, 393, 403, 412, 421, 430, 439,
- 448, 457, 466, 475, 484, 583, 588, 593, 598, 599,
- 600, 601, 602, 603, 605, 623, 636, 641, 645, 647,
- 649, 651
+ 132, 134, 136, 141, 142, 147, 148, 149, 161, 164,
+ 169, 176, 185, 197, 209, 219, 229, 239, 248, 257,
+ 266, 275, 284, 293, 302, 311, 320, 329, 338, 347,
+ 356, 365, 374, 383, 392, 402, 411, 420, 429, 438,
+ 447, 456, 465, 474, 483, 582, 587, 592, 597, 598,
+ 599, 600, 601, 602, 604, 622, 635, 640, 644, 646,
+ 648, 650
} ;
/* The intent behind this definition is that it'll catch
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *netconf_text;
#line 1 "netconf_lexer.ll"
/* Copyright (C) 2018-2019 Internet Systems Consortium, Inc. ("ISC")
2.5.31 through 2.5.33): it generates code that does
not conform to C89. See Debian bug 333231
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
-# undef yywrap
-# define yywrap() 1
+# undef netconf_wrap
+# define netconf_wrap() 1
namespace {
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::netconf::ParserContext::fatal(msg)
-#line 1528 "netconf_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 netconf_wrap requires linking with -lfl, which provides the default netconf_wrap
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. */
/* avoid to get static global variables to remain with C++. */
/* in last resort %option reentrant */
/* Enables debug mode. To see the debug messages, one needs to also set
- yy_flex_debug to 1, then the debug messages will be printed on stderr. */
+ netconf__flex_debug to 1, then the debug messages will be printed on stderr. */
/* I have no idea what this option does, except it was specified in the bison
examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
be on the safe side and keep it. */
#define YY_NO_INPUT 1
+
/* These are not token expressions yet, just convenience expressions that
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
#line 96 "netconf_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 netconf_leng bytes. netconf_leng specifies the length of the
currently matched token. */
-#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1554 "netconf_lexer.cc"
-#line 1555 "netconf_lexer.cc"
+#define YY_USER_ACTION driver.loc_.columns(netconf_leng);
+#line 1328 "netconf_lexer.cc"
#define INITIAL 0
#define COMMENT 1
/* %if-reentrant */
/* %if-c-only */
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
/* %endif */
/* %if-reentrant */
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
-int yylex_destroy ( void );
+int netconf_lex_destroy (void );
-int yyget_debug ( void );
+int netconf_get_debug (void );
-void yyset_debug ( int debug_flag );
+void netconf_set_debug (int debug_flag );
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE netconf_get_extra (void );
-void yyset_extra ( YY_EXTRA_TYPE user_defined );
+void netconf_set_extra (YY_EXTRA_TYPE user_defined );
-FILE *yyget_in ( void );
+FILE *netconf_get_in (void );
-void yyset_in ( FILE * _in_str );
+void netconf_set_in (FILE * in_str );
-FILE *yyget_out ( void );
+FILE *netconf_get_out (void );
-void yyset_out ( FILE * _out_str );
+void netconf_set_out (FILE * out_str );
- int yyget_leng ( void );
+yy_size_t netconf_get_leng (void );
-char *yyget_text ( void );
+char *netconf_get_text (void );
-int yyget_lineno ( void );
+int netconf_get_lineno (void );
-void yyset_lineno ( int _line_number );
+void netconf_set_lineno (int line_number );
/* %if-bison-bridge */
/* %endif */
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int netconf_wrap (void );
#else
-extern int yywrap ( void );
+extern int netconf_wrap (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 */
/* 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. */
/* 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( netconf_text, netconf_leng, 1, netconf_out )
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
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( netconf_in )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
if ( c == '\n' ) \
buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
+ if ( c == EOF && ferror( netconf_in ) ) \
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, netconf_in))==0 && ferror(netconf_in)) \
{ \
if( errno != EINTR) \
{ \
break; \
} \
errno=0; \
- clearerr(yyin); \
+ clearerr(netconf_in); \
} \
}\
\
/* %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 */
#define YY_DECL_IS_OURS 1
/* %if-c-only Standard (non-C++) definition */
-extern int yylex (void);
+extern int netconf_lex (void);
-#define YY_DECL int yylex (void)
+#define YY_DECL int netconf_lex (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 netconf_text and netconf_leng
* have been set up.
*/
#ifndef YY_USER_ACTION
/* 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 */
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;
- if ( !(yy_init) )
- {
- (yy_init) = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
-
- if ( ! yyin )
-/* %if-c-only */
- yyin = stdin;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! yyout )
-/* %if-c-only */
- yyout = stdout;
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-
- if ( ! YY_CURRENT_BUFFER ) {
- yyensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
- }
-
- yy_load_buffer_state( );
- }
-
- {
/* %% [7.0] user's declarations go here */
#line 102 "netconf_lexer.ll"
-#line 106 "netconf_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
- of the generated yylex function. Explanation:
+ of the generated netconf_lex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
- /* Code run each time yylex is called. */
+ /* Code run each time netconf_lex is called. */
driver.loc_.step();
/* We currently have 3 points of entries defined:
}
-#line 1869 "netconf_lexer.cc"
+#line 1603 "netconf_lexer.cc"
- while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! netconf_in )
+/* %if-c-only */
+ netconf_in = stdin;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! netconf_out )
+/* %if-c-only */
+ netconf_out = stdout;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ netconf_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ netconf__create_buffer(netconf_in,YY_BUF_SIZE );
+ }
+
+ netconf__load_buffer_state( );
+ }
+
+ 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 netconf_text. */
*yy_cp = (yy_hold_char);
/* yy_bp points to the position in yy_ch_buf of the start of
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 373 )
- 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 != 372 );
YY_DO_BEFORE_ACTION;
-/* %% [11.0] code for yylineno update goes here */
+/* %% [11.0] code for netconf_lineno update goes here */
do_action: /* This label is used only to access EOF actions. */
/* %% [12.0] debug code goes here */
- if ( yy_flex_debug )
+ if ( netconf__flex_debug )
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
else if ( yy_act < 63 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
- (long)yy_rule_linenum[yy_act], yytext );
+ (long)yy_rule_linenum[yy_act], netconf_text );
else if ( yy_act == 63 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
- yytext );
+ netconf_text );
else if ( yy_act == 64 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
case 1:
YY_RULE_SETUP
-#line 133 "netconf_lexer.ll"
+#line 132 "netconf_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 135 "netconf_lexer.ll"
+#line 134 "netconf_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 137 "netconf_lexer.ll"
+#line 136 "netconf_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 142 "netconf_lexer.ll"
+#line 141 "netconf_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 143 "netconf_lexer.ll"
+#line 142 "netconf_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 144 "netconf_lexer.ll"
+#line 143 "netconf_lexer.ll"
{
isc_throw(ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 148 "netconf_lexer.ll"
+#line 147 "netconf_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 149 "netconf_lexer.ll"
+#line 148 "netconf_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 150 "netconf_lexer.ll"
+#line 149 "netconf_lexer.ll"
{
/* Include directive. */
/* Extract the filename. */
- std::string tmp(yytext+1);
+ std::string tmp(netconf_text+1);
tmp.resize(tmp.size() - 1);
driver.includeFile(tmp);
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 159 "netconf_lexer.ll"
+#line 158 "netconf_lexer.ll"
{
isc_throw(ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 162 "netconf_lexer.ll"
+#line 161 "netconf_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 165 "netconf_lexer.ll"
+#line 164 "netconf_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 170 "netconf_lexer.ll"
+#line 169 "netconf_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
- driver.loc_.lines(yyleng);
+ driver.loc_.lines(netconf_leng);
driver.loc_.step();
}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 177 "netconf_lexer.ll"
+#line 176 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 186 "netconf_lexer.ll"
+#line 185 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 198 "netconf_lexer.ll"
+#line 197 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 210 "netconf_lexer.ll"
+#line 209 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 220 "netconf_lexer.ll"
+#line 219 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 230 "netconf_lexer.ll"
+#line 229 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 240 "netconf_lexer.ll"
+#line 239 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 249 "netconf_lexer.ll"
+#line 248 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::MANAGED_SERVERS:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 258 "netconf_lexer.ll"
+#line 257 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::MANAGED_SERVERS:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 267 "netconf_lexer.ll"
+#line 266 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::MANAGED_SERVERS:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 276 "netconf_lexer.ll"
+#line 275 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::MANAGED_SERVERS:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 285 "netconf_lexer.ll"
+#line 284 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SERVER:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 294 "netconf_lexer.ll"
+#line 293 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SERVER:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 303 "netconf_lexer.ll"
+#line 302 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SOCKET_TYPE:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 312 "netconf_lexer.ll"
+#line 311 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SOCKET_TYPE:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 321 "netconf_lexer.ll"
+#line 320 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SOCKET_TYPE:
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 330 "netconf_lexer.ll"
+#line 329 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKET:
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 339 "netconf_lexer.ll"
+#line 338 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKET:
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 348 "netconf_lexer.ll"
+#line 347 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKET:
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 357 "netconf_lexer.ll"
+#line 356 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 366 "netconf_lexer.ll"
+#line 365 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::HOOKS_LIBRARIES:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 375 "netconf_lexer.ll"
+#line 374 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::HOOKS_LIBRARIES:
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 384 "netconf_lexer.ll"
+#line 383 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 393 "netconf_lexer.ll"
+#line 392 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::NETCONF:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 403 "netconf_lexer.ll"
+#line 402 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 412 "netconf_lexer.ll"
+#line 411 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 421 "netconf_lexer.ll"
+#line 420 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 430 "netconf_lexer.ll"
+#line 429 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 439 "netconf_lexer.ll"
+#line 438 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 448 "netconf_lexer.ll"
+#line 447 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 457 "netconf_lexer.ll"
+#line 456 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 466 "netconf_lexer.ll"
+#line 465 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 475 "netconf_lexer.ll"
+#line 474 "netconf_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 484 "netconf_lexer.ll"
+#line 483 "netconf_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.
for 'foo' we should get foo */
- std::string raw(yytext+1);
+ std::string raw(netconf_text+1);
size_t len = raw.size() - 1;
raw.resize(len);
std::string decoded;
case 46:
/* rule 46 can match eol */
YY_RULE_SETUP
-#line 583 "netconf_lexer.ll"
+#line 582 "netconf_lexer.ll"
{
/* Bad string with a forbidden control character inside */
- driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
+ driver.error(driver.loc_, "Invalid control in " + std::string(netconf_text));
}
YY_BREAK
case 47:
/* rule 47 can match eol */
YY_RULE_SETUP
-#line 588 "netconf_lexer.ll"
+#line 587 "netconf_lexer.ll"
{
/* Bad string with a bad escape inside */
- driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Bad escape in " + std::string(netconf_text));
}
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 593 "netconf_lexer.ll"
+#line 592 "netconf_lexer.ll"
{
/* Bad string with an open escape at the end */
- driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+ driver.error(driver.loc_, "Overflow escape in " + std::string(netconf_text));
}
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 598 "netconf_lexer.ll"
+#line 597 "netconf_lexer.ll"
{ return NetconfParser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 599 "netconf_lexer.ll"
+#line 598 "netconf_lexer.ll"
{ return NetconfParser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 600 "netconf_lexer.ll"
+#line 599 "netconf_lexer.ll"
{ return NetconfParser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 601 "netconf_lexer.ll"
+#line 600 "netconf_lexer.ll"
{ return NetconfParser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 602 "netconf_lexer.ll"
+#line 601 "netconf_lexer.ll"
{ return NetconfParser::make_COMMA(driver.loc_); }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 603 "netconf_lexer.ll"
+#line 602 "netconf_lexer.ll"
{ return NetconfParser::make_COLON(driver.loc_); }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 605 "netconf_lexer.ll"
+#line 604 "netconf_lexer.ll"
{
/* An integer was found. */
- std::string tmp(yytext);
+ std::string tmp(netconf_text);
int64_t integer = 0;
try {
/* In substring we want to use negative values (e.g. -1).
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 623 "netconf_lexer.ll"
+#line 622 "netconf_lexer.ll"
{
/* A floating point was found. */
- std::string tmp(yytext);
+ std::string tmp(netconf_text);
double fp = 0.0;
try {
fp = boost::lexical_cast<double>(tmp);
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 636 "netconf_lexer.ll"
+#line 635 "netconf_lexer.ll"
{
- string tmp(yytext);
+ string tmp(netconf_text);
return NetconfParser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 641 "netconf_lexer.ll"
+#line 640 "netconf_lexer.ll"
{
return NetconfParser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 645 "netconf_lexer.ll"
+#line 644 "netconf_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 647 "netconf_lexer.ll"
+#line 646 "netconf_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 649 "netconf_lexer.ll"
+#line 648 "netconf_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 651 "netconf_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 650 "netconf_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(netconf_text));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 653 "netconf_lexer.ll"
+#line 652 "netconf_lexer.ll"
{
if (driver.states_.empty()) {
return NetconfParser::make_END(driver.loc_);
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 676 "netconf_lexer.ll"
+#line 675 "netconf_lexer.ll"
ECHO;
YY_BREAK
-#line 2699 "netconf_lexer.cc"
+#line 2467 "netconf_lexer.cc"
case YY_END_OF_BUFFER:
{
{
/* 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 netconf_in at a new source and called
+ * netconf_lex(). 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 = netconf_in;
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
{
(yy_did_buffer_switch_on_eof) = 0;
- if ( yywrap( ) )
+ if ( netconf_wrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
- * yytext, we can now set up
+ * netconf_text, 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
"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 netconf_lex */
/* %ok-for-header */
/* %if-c++-only */
/* %not-for-header */
+
/* %ok-for-header */
/* %endif */
/* %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] )
/* 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++);
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;
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) );
+ netconf_realloc((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(
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
+ netconf_restart(netconf_in );
}
else
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 *) netconf_realloc((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;
/* %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);
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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 373 )
- 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;
/* %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;
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 373 )
- 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 == 372);
- 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
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( ) )
*/
/* Reset buffer status. */
- yyrestart( yyin );
+ netconf_restart(netconf_in );
/*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
- if ( yywrap( ) )
+ if ( netconf_wrap( ) )
return 0;
if ( ! (yy_did_buffer_switch_on_eof) )
}
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 netconf_text */
(yy_hold_char) = *++(yy_c_buf_p);
-/* %% [19.0] update BOL and yylineno */
+/* %% [19.0] update BOL and netconf_lineno */
return c;
}
* @note This function does not reset the start condition to @c INITIAL .
*/
/* %if-c-only */
- void yyrestart (FILE * input_file )
+ void netconf_restart (FILE * input_file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! YY_CURRENT_BUFFER ){
- yyensure_buffer_stack ();
+ netconf_ensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer( yyin, YY_BUF_SIZE );
+ netconf__create_buffer(netconf_in,YY_BUF_SIZE );
}
- yy_init_buffer( YY_CURRENT_BUFFER, input_file );
- yy_load_buffer_state( );
+ netconf__init_buffer(YY_CURRENT_BUFFER,input_file );
+ netconf__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 netconf__switch_to_buffer (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
/* TODO. We should be able to replace this entire function body
* with
- * yypop_buffer_state();
- * yypush_buffer_state(new_buffer);
+ * netconf_pop_buffer_state();
+ * netconf_push_buffer_state(new_buffer);
*/
- yyensure_buffer_stack ();
+ netconf_ensure_buffer_stack ();
if ( YY_CURRENT_BUFFER == new_buffer )
return;
}
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state( );
+ netconf__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 (netconf_wrap()) processing, but the only time this flag
+ * is looked at is after netconf_wrap() 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 netconf__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 */
+ netconf_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
(yy_hold_char) = *(yy_c_buf_p);
}
* @return the allocated buffer state.
*/
/* %if-c-only */
- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+ YY_BUFFER_STATE netconf__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) netconf_alloc(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 netconf__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 *) netconf_alloc(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 netconf__create_buffer()" );
b->yy_is_our_buffer = 1;
- yy_init_buffer( b, file );
+ netconf__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 netconf__create_buffer()
*
*/
/* %if-c-only */
- void yy_delete_buffer (YY_BUFFER_STATE b )
+ void netconf__delete_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- yyfree( (void *) b->yy_ch_buf );
+ netconf_free((void *) b->yy_ch_buf );
- yyfree( (void *) b );
+ netconf_free((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 netconf_restart() or at EOF.
*/
/* %if-c-only */
- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+ static void netconf__init_buffer (YY_BUFFER_STATE b, FILE * file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
int oerrno = errno;
- yy_flush_buffer( b );
+ netconf__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 netconf__init_buffer was _probably_
+ * called from netconf_restart() or through yy_get_next_buffer.
* In that case, we don't want to reset the lineno or column.
*/
if (b != YY_CURRENT_BUFFER){
*
*/
/* %if-c-only */
- void yy_flush_buffer (YY_BUFFER_STATE b )
+ void netconf__flush_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state( );
+ netconf__load_buffer_state( );
}
/* %if-c-or-c++ */
*
*/
/* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void netconf_push_buffer_state (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
if (new_buffer == NULL)
return;
- yyensure_buffer_stack();
+ netconf_ensure_buffer_stack();
- /* This block is copied from yy_switch_to_buffer. */
+ /* This block is copied from netconf__switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
(yy_buffer_stack_top)++;
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- /* copied from yy_switch_to_buffer. */
- yy_load_buffer_state( );
+ /* copied from netconf__switch_to_buffer. */
+ netconf__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/* %endif */
*
*/
/* %if-c-only */
-void yypop_buffer_state (void)
+void netconf_pop_buffer_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
if (!YY_CURRENT_BUFFER)
return;
- yy_delete_buffer(YY_CURRENT_BUFFER );
+ netconf__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( );
+ netconf__load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
}
* Guarantees space for at least one push.
*/
/* %if-c-only */
-static void yyensure_buffer_stack (void)
+static void netconf_ensure_buffer_stack (void)
/* %endif */
/* %if-c++-only */
/* %endif */
* 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**)netconf_alloc
(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 netconf_ensure_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;
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**)netconf_realloc
((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 netconf_ensure_buffer_stack()" );
/* zero only the new slots.*/
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
* @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 netconf__scan_buffer (char * base, yy_size_t size )
{
YY_BUFFER_STATE b;
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) netconf_alloc(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 netconf__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 );
+ netconf__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 netconf_lex() 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.
+ * netconf__scan_bytes() instead.
*/
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE netconf__scan_string (yyconst char * yystr )
{
- return yy_scan_bytes( yystr, (int) strlen(yystr) );
+ return netconf__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 netconf_lex() 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 netconf__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 *) netconf_alloc(n );
if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "out of dynamic memory in netconf__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 = netconf__scan_buffer(buf,n );
if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "bad buffer in netconf__scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
#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 */
#define yyless(n) \
do \
{ \
- /* Undo effects of setting up yytext. */ \
+ /* Undo effects of setting up netconf_text. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
- yytext[yyleng] = (yy_hold_char); \
- (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ netconf_text[netconf_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = netconf_text + yyless_macro_arg; \
(yy_hold_char) = *(yy_c_buf_p); \
*(yy_c_buf_p) = '\0'; \
- yyleng = yyless_macro_arg; \
+ netconf_leng = yyless_macro_arg; \
} \
while ( 0 )
/** Get the current line number.
*
*/
-int yyget_lineno (void)
+int netconf_get_lineno (void)
{
-
- return yylineno;
+
+ return netconf_lineno;
}
/** Get the input stream.
*
*/
-FILE *yyget_in (void)
+FILE *netconf_get_in (void)
{
- return yyin;
+ return netconf_in;
}
/** Get the output stream.
*
*/
-FILE *yyget_out (void)
+FILE *netconf_get_out (void)
{
- return yyout;
+ return netconf_out;
}
/** Get the length of the current token.
*
*/
-int yyget_leng (void)
+yy_size_t netconf_get_leng (void)
{
- return yyleng;
+ return netconf_leng;
}
/** Get the current token.
*
*/
-char *yyget_text (void)
+char *netconf_get_text (void)
{
- return yytext;
+ return netconf_text;
}
/* %if-reentrant */
/* %endif */
/** Set the current line number.
- * @param _line_number line number
+ * @param line_number
*
*/
-void yyset_lineno (int _line_number )
+void netconf_set_lineno (int line_number )
{
- yylineno = _line_number;
+ netconf_lineno = 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 netconf__switch_to_buffer
*/
-void yyset_in (FILE * _in_str )
+void netconf_set_in (FILE * in_str )
{
- yyin = _in_str ;
+ netconf_in = in_str ;
}
-void yyset_out (FILE * _out_str )
+void netconf_set_out (FILE * out_str )
{
- yyout = _out_str ;
+ netconf_out = out_str ;
}
-int yyget_debug (void)
+int netconf_get_debug (void)
{
- return yy_flex_debug;
+ return netconf__flex_debug;
}
-void yyset_debug (int _bdebug )
+void netconf_set_debug (int bdebug )
{
- yy_flex_debug = _bdebug ;
+ netconf__flex_debug = bdebug ;
}
/* %endif */
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 netconf_lex_destroy(), so don't allocate here.
*/
- (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;
+ netconf_in = stdin;
+ netconf_out = stdout;
#else
- yyin = NULL;
- yyout = NULL;
+ netconf_in = (FILE *) 0;
+ netconf_out = (FILE *) 0;
#endif
/* For future reference: Set errno on error, since we are called by
- * yylex_init()
+ * netconf_lex_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)
+/* netconf_lex_destroy is for both reentrant and non-reentrant scanners. */
+int netconf_lex_destroy (void)
{
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
- yy_delete_buffer( YY_CURRENT_BUFFER );
+ netconf__delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
- yypop_buffer_state();
+ netconf_pop_buffer_state();
}
/* Destroy the stack itself. */
- yyfree((yy_buffer_stack) );
+ netconf_free((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. */
+ * netconf_lex() is called, initialization will occur. */
yy_init_globals( );
/* %if-reentrant */
*/
#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 )
;
}
#endif
-void *yyalloc (yy_size_t size )
+void *netconf_alloc (yy_size_t size )
{
- return malloc(size);
+ return (void *) malloc( size );
}
-void *yyrealloc (void * ptr, yy_size_t size )
+void *netconf_realloc (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
* 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 netconf_free (void * ptr )
{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+ free( (char *) ptr ); /* see netconf_realloc() for (char *) cast */
}
/* %if-tables-serialization definitions */
/* %ok-for-header */
-#line 676 "netconf_lexer.ll"
+#line 675 "netconf_lexer.ll"
+
using namespace isc::dhcp;
file_ = "<string>";
sfile_ = 0;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ netconf__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
buffer = netconf__scan_bytes(str.c_str(), str.size());
if (!buffer) {
file_ = filename;
sfile_ = f;
loc_.initialize(&file_);
- yy_flex_debug = trace_scanning_;
+ netconf__flex_debug = trace_scanning_;
YY_BUFFER_STATE buffer;
/* See netconf_lexer.cc header for available definitions */
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// Unqualified %code blocks.
-#line 33 "netconf_parser.yy" // lalr1.cc:438
+#line 33 "netconf_parser.yy"
#include <netconf/parser_context.h>
-#line 51 "netconf_parser.cc" // lalr1.cc:438
+#line 51 "netconf_parser.cc"
#ifndef YY_
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
- while (/*CONSTCOND*/ false)
+ while (false)
# endif
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "netconf_parser.yy" // lalr1.cc:513
+#line 14 "netconf_parser.yy"
namespace isc { namespace netconf {
-#line 146 "netconf_parser.cc" // lalr1.cc:513
+#line 146 "netconf_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
{
if (*yystr == '"')
{
- std::string yyr = "";
+ std::string yyr;
char const *yyp = yystr;
for (;;)
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- // Fall through.
+ else
+ goto append;
+
+ append:
default:
yyr += *yyp;
break;
NetconfParser::~NetconfParser ()
{}
+ NetconfParser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+ {}
/*---------------.
| Symbol types. |
// by_state.
- NetconfParser::by_state::by_state ()
+ NetconfParser::by_state::by_state () YY_NOEXCEPT
: state (empty_state)
{}
- NetconfParser::by_state::by_state (const by_state& other)
- : state (other.state)
+ NetconfParser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+ : state (that.state)
{}
void
- NetconfParser::by_state::clear ()
+ NetconfParser::by_state::clear () YY_NOEXCEPT
{
state = empty_state;
}
that.clear ();
}
- NetconfParser::by_state::by_state (state_type s)
+ NetconfParser::by_state::by_state (state_type s) YY_NOEXCEPT
: state (s)
{}
NetconfParser::symbol_number_type
- NetconfParser::by_state::type_get () const
+ NetconfParser::by_state::type_get () const YY_NOEXCEPT
{
if (state == empty_state)
return empty_symbol;
break;
}
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
// that is emptied.
that.state = empty_state;
#endif
that.type = empty_symbol;
}
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
NetconfParser::stack_symbol_type&
NetconfParser::stack_symbol_type::operator= (stack_symbol_type& that)
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
+#endif
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
switch (yytype)
{
- case 46: // "constant string"
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< std::string > (); }
-#line 386 "netconf_parser.cc" // lalr1.cc:672
+ case 46: // "constant string"
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < std::string > (); }
+#line 393 "netconf_parser.cc"
break;
case 47: // "integer"
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< int64_t > (); }
-#line 393 "netconf_parser.cc" // lalr1.cc:672
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < int64_t > (); }
+#line 399 "netconf_parser.cc"
break;
case 48: // "floating point"
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< double > (); }
-#line 400 "netconf_parser.cc" // lalr1.cc:672
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < double > (); }
+#line 405 "netconf_parser.cc"
break;
case 49: // "boolean"
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< bool > (); }
-#line 407 "netconf_parser.cc" // lalr1.cc:672
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < bool > (); }
+#line 411 "netconf_parser.cc"
break;
case 58: // value
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 414 "netconf_parser.cc" // lalr1.cc:672
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 417 "netconf_parser.cc"
break;
case 61: // map_value
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 421 "netconf_parser.cc" // lalr1.cc:672
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 423 "netconf_parser.cc"
break;
case 120: // socket_type_value
-
-#line 108 "netconf_parser.yy" // lalr1.cc:672
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 428 "netconf_parser.cc" // lalr1.cc:672
+#line 108 "netconf_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 429 "netconf_parser.cc"
break;
-
default:
break;
}
void
NetconfParser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
{
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
yypush_ (m, stack_symbol_type (s, std::move (sym)));
#else
stack_symbol_type ss (s, sym);
yystack_.clear ();
yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
- // A new symbol was pushed on the stack.
+ /*-----------------------------------------------.
+ | yynewstate -- push a new symbol on the stack. |
+ `-----------------------------------------------*/
yynewstate:
YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
+ YYACCEPT;
goto yybackup;
- // Backup.
+
+ /*-----------.
+ | yybackup. |
+ `-----------*/
yybackup:
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
goto yyerrlab1;
}
yypush_ ("Shifting", yyn, YY_MOVE (yyla));
goto yynewstate;
+
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
goto yyerrlab;
goto yyreduce;
+
/*-----------------------------.
- | yyreduce -- Do a reduction. |
+ | yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
// Default location.
{
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ stack_type::slice range (yystack_, yylen);
+ YYLLOC_DEFAULT (yylhs.location, range, yylen);
yyerror_range[1].location = yylhs.location;
}
switch (yyn)
{
case 2:
-#line 119 "netconf_parser.yy" // lalr1.cc:907
+#line 119 "netconf_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORDS; }
-#line 683 "netconf_parser.cc" // lalr1.cc:907
+#line 691 "netconf_parser.cc"
break;
case 4:
-#line 120 "netconf_parser.yy" // lalr1.cc:907
+#line 120 "netconf_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 689 "netconf_parser.cc" // lalr1.cc:907
+#line 697 "netconf_parser.cc"
break;
case 6:
-#line 121 "netconf_parser.yy" // lalr1.cc:907
+#line 121 "netconf_parser.yy"
{ ctx.ctx_ = ctx.NETCONF; }
-#line 695 "netconf_parser.cc" // lalr1.cc:907
+#line 703 "netconf_parser.cc"
break;
case 8:
-#line 129 "netconf_parser.yy" // lalr1.cc:907
+#line 129 "netconf_parser.yy"
{
// Parse the Netconf map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 705 "netconf_parser.cc" // lalr1.cc:907
+#line 713 "netconf_parser.cc"
break;
case 9:
-#line 133 "netconf_parser.yy" // lalr1.cc:907
+#line 133 "netconf_parser.yy"
{
// parsing completed
}
-#line 713 "netconf_parser.cc" // lalr1.cc:907
+#line 721 "netconf_parser.cc"
break;
case 10:
-#line 140 "netconf_parser.yy" // lalr1.cc:907
+#line 140 "netconf_parser.yy"
{
// Push back the JSON value on the stack
- ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 722 "netconf_parser.cc" // lalr1.cc:907
+#line 730 "netconf_parser.cc"
break;
case 11:
-#line 146 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 728 "netconf_parser.cc" // lalr1.cc:907
+#line 146 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 736 "netconf_parser.cc"
break;
case 12:
-#line 147 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 734 "netconf_parser.cc" // lalr1.cc:907
+#line 147 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 742 "netconf_parser.cc"
break;
case 13:
-#line 148 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 740 "netconf_parser.cc" // lalr1.cc:907
+#line 148 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 748 "netconf_parser.cc"
break;
case 14:
-#line 149 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 746 "netconf_parser.cc" // lalr1.cc:907
+#line 149 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 754 "netconf_parser.cc"
break;
case 15:
-#line 150 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 752 "netconf_parser.cc" // lalr1.cc:907
+#line 150 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 760 "netconf_parser.cc"
break;
case 16:
-#line 151 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 758 "netconf_parser.cc" // lalr1.cc:907
+#line 151 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 766 "netconf_parser.cc"
break;
case 17:
-#line 152 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 764 "netconf_parser.cc" // lalr1.cc:907
+#line 152 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 772 "netconf_parser.cc"
break;
case 18:
-#line 156 "netconf_parser.yy" // lalr1.cc:907
+#line 156 "netconf_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 775 "netconf_parser.cc" // lalr1.cc:907
+#line 783 "netconf_parser.cc"
break;
case 19:
-#line 161 "netconf_parser.yy" // lalr1.cc:907
+#line 161 "netconf_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 785 "netconf_parser.cc" // lalr1.cc:907
+#line 793 "netconf_parser.cc"
break;
case 20:
-#line 167 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 791 "netconf_parser.cc" // lalr1.cc:907
+#line 167 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 799 "netconf_parser.cc"
break;
case 23:
-#line 181 "netconf_parser.yy" // lalr1.cc:907
+#line 181 "netconf_parser.yy"
{
// map containing a single entry
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 800 "netconf_parser.cc" // lalr1.cc:907
+#line 808 "netconf_parser.cc"
break;
case 24:
-#line 185 "netconf_parser.yy" // lalr1.cc:907
+#line 185 "netconf_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 810 "netconf_parser.cc" // lalr1.cc:907
+#line 818 "netconf_parser.cc"
break;
case 25:
-#line 192 "netconf_parser.yy" // lalr1.cc:907
+#line 192 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 819 "netconf_parser.cc" // lalr1.cc:907
+#line 827 "netconf_parser.cc"
break;
case 26:
-#line 195 "netconf_parser.yy" // lalr1.cc:907
+#line 195 "netconf_parser.yy"
{
}
-#line 826 "netconf_parser.cc" // lalr1.cc:907
+#line 834 "netconf_parser.cc"
break;
case 29:
-#line 202 "netconf_parser.yy" // lalr1.cc:907
+#line 202 "netconf_parser.yy"
{
// List consisting of a single element.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 835 "netconf_parser.cc" // lalr1.cc:907
+#line 843 "netconf_parser.cc"
break;
case 30:
-#line 206 "netconf_parser.yy" // lalr1.cc:907
+#line 206 "netconf_parser.yy"
{
// List ending with , and a value.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 844 "netconf_parser.cc" // lalr1.cc:907
+#line 852 "netconf_parser.cc"
break;
case 31:
-#line 219 "netconf_parser.yy" // lalr1.cc:907
+#line 219 "netconf_parser.yy"
{
const std::string& where = ctx.contextName();
- const std::string& keyword = yystack_[1].value.as< std::string > ();
+ const std::string& keyword = yystack_[1].value.as < std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 855 "netconf_parser.cc" // lalr1.cc:907
+#line 863 "netconf_parser.cc"
break;
case 32:
-#line 227 "netconf_parser.yy" // lalr1.cc:907
+#line 227 "netconf_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 866 "netconf_parser.cc" // lalr1.cc:907
+#line 874 "netconf_parser.cc"
break;
case 33:
-#line 232 "netconf_parser.yy" // lalr1.cc:907
+#line 232 "netconf_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 876 "netconf_parser.cc" // lalr1.cc:907
+#line 884 "netconf_parser.cc"
break;
case 38:
-#line 249 "netconf_parser.yy" // lalr1.cc:907
+#line 249 "netconf_parser.yy"
{
// Let's create a MapElement that will represent it, add it to the
ctx.stack_.push_back(m);
ctx.enter(ctx.NETCONF);
}
-#line 892 "netconf_parser.cc" // lalr1.cc:907
+#line 900 "netconf_parser.cc"
break;
case 39:
-#line 259 "netconf_parser.yy" // lalr1.cc:907
+#line 259 "netconf_parser.yy"
{
// Ok, we're done with parsing Netconf. Let's take the map
// off the stack.
ctx.stack_.pop_back();
ctx.leave();
}
-#line 903 "netconf_parser.cc" // lalr1.cc:907
+#line 911 "netconf_parser.cc"
break;
case 53:
-#line 287 "netconf_parser.yy" // lalr1.cc:907
+#line 287 "netconf_parser.yy"
{
- ElementPtr flag(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-update", flag);
}
-#line 912 "netconf_parser.cc" // lalr1.cc:907
+#line 920 "netconf_parser.cc"
break;
case 54:
-#line 292 "netconf_parser.yy" // lalr1.cc:907
+#line 292 "netconf_parser.yy"
{
- ElementPtr flag(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subscribe-changes", flag);
}
-#line 921 "netconf_parser.cc" // lalr1.cc:907
+#line 929 "netconf_parser.cc"
break;
case 55:
-#line 297 "netconf_parser.yy" // lalr1.cc:907
+#line 297 "netconf_parser.yy"
{
- ElementPtr flag(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("validate-changes", flag);
}
-#line 930 "netconf_parser.cc" // lalr1.cc:907
+#line 938 "netconf_parser.cc"
break;
case 56:
-#line 302 "netconf_parser.yy" // lalr1.cc:907
+#line 302 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 938 "netconf_parser.cc" // lalr1.cc:907
+#line 946 "netconf_parser.cc"
break;
case 57:
-#line 304 "netconf_parser.yy" // lalr1.cc:907
+#line 304 "netconf_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
- ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
ConstElementPtr old = parent->get("user-context");
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 965 "netconf_parser.cc" // lalr1.cc:907
+#line 973 "netconf_parser.cc"
break;
case 58:
-#line 327 "netconf_parser.yy" // lalr1.cc:907
+#line 327 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 973 "netconf_parser.cc" // lalr1.cc:907
+#line 981 "netconf_parser.cc"
break;
case 59:
-#line 329 "netconf_parser.yy" // lalr1.cc:907
+#line 329 "netconf_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
- ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
user_context->set("comment", comment);
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 1002 "netconf_parser.cc" // lalr1.cc:907
+#line 1010 "netconf_parser.cc"
break;
case 60:
-#line 355 "netconf_parser.yy" // lalr1.cc:907
+#line 355 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 1013 "netconf_parser.cc" // lalr1.cc:907
+#line 1021 "netconf_parser.cc"
break;
case 61:
-#line 360 "netconf_parser.yy" // lalr1.cc:907
+#line 360 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1022 "netconf_parser.cc" // lalr1.cc:907
+#line 1030 "netconf_parser.cc"
break;
case 66:
-#line 373 "netconf_parser.yy" // lalr1.cc:907
+#line 373 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1032 "netconf_parser.cc" // lalr1.cc:907
+#line 1040 "netconf_parser.cc"
break;
case 67:
-#line 377 "netconf_parser.yy" // lalr1.cc:907
+#line 377 "netconf_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1040 "netconf_parser.cc" // lalr1.cc:907
+#line 1048 "netconf_parser.cc"
break;
case 73:
-#line 390 "netconf_parser.yy" // lalr1.cc:907
+#line 390 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1048 "netconf_parser.cc" // lalr1.cc:907
+#line 1056 "netconf_parser.cc"
break;
case 74:
-#line 392 "netconf_parser.yy" // lalr1.cc:907
+#line 392 "netconf_parser.yy"
{
- ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1058 "netconf_parser.cc" // lalr1.cc:907
+#line 1066 "netconf_parser.cc"
break;
case 75:
-#line 398 "netconf_parser.yy" // lalr1.cc:907
+#line 398 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1066 "netconf_parser.cc" // lalr1.cc:907
+#line 1074 "netconf_parser.cc"
break;
case 76:
-#line 400 "netconf_parser.yy" // lalr1.cc:907
+#line 400 "netconf_parser.yy"
{
- ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1075 "netconf_parser.cc" // lalr1.cc:907
+#line 1083 "netconf_parser.cc"
break;
case 77:
-#line 408 "netconf_parser.yy" // lalr1.cc:907
+#line 408 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
ctx.stack_.back()->set("managed-servers", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.MANAGED_SERVERS);
}
-#line 1086 "netconf_parser.cc" // lalr1.cc:907
+#line 1094 "netconf_parser.cc"
break;
case 78:
-#line 413 "netconf_parser.yy" // lalr1.cc:907
+#line 413 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1095 "netconf_parser.cc" // lalr1.cc:907
+#line 1103 "netconf_parser.cc"
break;
case 88:
-#line 437 "netconf_parser.yy" // lalr1.cc:907
+#line 437 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1106 "netconf_parser.cc" // lalr1.cc:907
+#line 1114 "netconf_parser.cc"
break;
case 89:
-#line 442 "netconf_parser.yy" // lalr1.cc:907
+#line 442 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1115 "netconf_parser.cc" // lalr1.cc:907
+#line 1123 "netconf_parser.cc"
break;
case 90:
-#line 448 "netconf_parser.yy" // lalr1.cc:907
+#line 448 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp6", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1126 "netconf_parser.cc" // lalr1.cc:907
+#line 1134 "netconf_parser.cc"
break;
case 91:
-#line 453 "netconf_parser.yy" // lalr1.cc:907
+#line 453 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1135 "netconf_parser.cc" // lalr1.cc:907
+#line 1143 "netconf_parser.cc"
break;
case 92:
-#line 459 "netconf_parser.yy" // lalr1.cc:907
+#line 459 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("d2", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1146 "netconf_parser.cc" // lalr1.cc:907
+#line 1154 "netconf_parser.cc"
break;
case 93:
-#line 464 "netconf_parser.yy" // lalr1.cc:907
+#line 464 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1155 "netconf_parser.cc" // lalr1.cc:907
+#line 1163 "netconf_parser.cc"
break;
case 94:
-#line 470 "netconf_parser.yy" // lalr1.cc:907
+#line 470 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ca", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1166 "netconf_parser.cc" // lalr1.cc:907
+#line 1174 "netconf_parser.cc"
break;
case 95:
-#line 475 "netconf_parser.yy" // lalr1.cc:907
+#line 475 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1175 "netconf_parser.cc" // lalr1.cc:907
+#line 1183 "netconf_parser.cc"
break;
case 106:
-#line 497 "netconf_parser.yy" // lalr1.cc:907
+#line 497 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1183 "netconf_parser.cc" // lalr1.cc:907
+#line 1191 "netconf_parser.cc"
break;
case 107:
-#line 499 "netconf_parser.yy" // lalr1.cc:907
+#line 499 "netconf_parser.yy"
{
- ElementPtr model(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr model(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("model", model);
ctx.leave();
}
-#line 1193 "netconf_parser.cc" // lalr1.cc:907
+#line 1201 "netconf_parser.cc"
break;
case 108:
-#line 506 "netconf_parser.yy" // lalr1.cc:907
+#line 506 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 1204 "netconf_parser.cc" // lalr1.cc:907
+#line 1212 "netconf_parser.cc"
break;
case 109:
-#line 511 "netconf_parser.yy" // lalr1.cc:907
+#line 511 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1213 "netconf_parser.cc" // lalr1.cc:907
+#line 1221 "netconf_parser.cc"
break;
case 118:
-#line 529 "netconf_parser.yy" // lalr1.cc:907
+#line 529 "netconf_parser.yy"
{
ctx.enter(ctx.SOCKET_TYPE);
}
-#line 1221 "netconf_parser.cc" // lalr1.cc:907
+#line 1229 "netconf_parser.cc"
break;
case 119:
-#line 531 "netconf_parser.yy" // lalr1.cc:907
+#line 531 "netconf_parser.yy"
{
- ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1230 "netconf_parser.cc" // lalr1.cc:907
+#line 1238 "netconf_parser.cc"
break;
case 120:
-#line 537 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1236 "netconf_parser.cc" // lalr1.cc:907
+#line 537 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
+#line 1244 "netconf_parser.cc"
break;
case 121:
-#line 538 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
-#line 1242 "netconf_parser.cc" // lalr1.cc:907
+#line 538 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
+#line 1250 "netconf_parser.cc"
break;
case 122:
-#line 539 "netconf_parser.yy" // lalr1.cc:907
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); }
-#line 1248 "netconf_parser.cc" // lalr1.cc:907
+#line 539 "netconf_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); }
+#line 1256 "netconf_parser.cc"
break;
case 123:
-#line 542 "netconf_parser.yy" // lalr1.cc:907
+#line 542 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1256 "netconf_parser.cc" // lalr1.cc:907
+#line 1264 "netconf_parser.cc"
break;
case 124:
-#line 544 "netconf_parser.yy" // lalr1.cc:907
+#line 544 "netconf_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 1266 "netconf_parser.cc" // lalr1.cc:907
+#line 1274 "netconf_parser.cc"
break;
case 125:
-#line 551 "netconf_parser.yy" // lalr1.cc:907
+#line 551 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1274 "netconf_parser.cc" // lalr1.cc:907
+#line 1282 "netconf_parser.cc"
break;
case 126:
-#line 553 "netconf_parser.yy" // lalr1.cc:907
+#line 553 "netconf_parser.yy"
{
- ElementPtr url(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr url(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-url", url);
ctx.leave();
}
-#line 1284 "netconf_parser.cc" // lalr1.cc:907
+#line 1292 "netconf_parser.cc"
break;
case 127:
-#line 566 "netconf_parser.yy" // lalr1.cc:907
+#line 566 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 1295 "netconf_parser.cc" // lalr1.cc:907
+#line 1303 "netconf_parser.cc"
break;
case 128:
-#line 571 "netconf_parser.yy" // lalr1.cc:907
+#line 571 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1304 "netconf_parser.cc" // lalr1.cc:907
+#line 1312 "netconf_parser.cc"
break;
case 132:
-#line 588 "netconf_parser.yy" // lalr1.cc:907
+#line 588 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 1315 "netconf_parser.cc" // lalr1.cc:907
+#line 1323 "netconf_parser.cc"
break;
case 133:
-#line 593 "netconf_parser.yy" // lalr1.cc:907
+#line 593 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1324 "netconf_parser.cc" // lalr1.cc:907
+#line 1332 "netconf_parser.cc"
break;
case 136:
-#line 605 "netconf_parser.yy" // lalr1.cc:907
+#line 605 "netconf_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 1334 "netconf_parser.cc" // lalr1.cc:907
+#line 1342 "netconf_parser.cc"
break;
case 137:
-#line 609 "netconf_parser.yy" // lalr1.cc:907
+#line 609 "netconf_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1342 "netconf_parser.cc" // lalr1.cc:907
+#line 1350 "netconf_parser.cc"
break;
case 147:
-#line 626 "netconf_parser.yy" // lalr1.cc:907
+#line 626 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1350 "netconf_parser.cc" // lalr1.cc:907
+#line 1358 "netconf_parser.cc"
break;
case 148:
-#line 628 "netconf_parser.yy" // lalr1.cc:907
+#line 628 "netconf_parser.yy"
{
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1360 "netconf_parser.cc" // lalr1.cc:907
+#line 1368 "netconf_parser.cc"
break;
case 149:
-#line 634 "netconf_parser.yy" // lalr1.cc:907
+#line 634 "netconf_parser.yy"
{
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 1369 "netconf_parser.cc" // lalr1.cc:907
+#line 1377 "netconf_parser.cc"
break;
case 150:
-#line 639 "netconf_parser.yy" // lalr1.cc:907
+#line 639 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1377 "netconf_parser.cc" // lalr1.cc:907
+#line 1385 "netconf_parser.cc"
break;
case 151:
-#line 641 "netconf_parser.yy" // lalr1.cc:907
+#line 641 "netconf_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 1387 "netconf_parser.cc" // lalr1.cc:907
+#line 1395 "netconf_parser.cc"
break;
case 152:
-#line 647 "netconf_parser.yy" // lalr1.cc:907
+#line 647 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 1398 "netconf_parser.cc" // lalr1.cc:907
+#line 1406 "netconf_parser.cc"
break;
case 153:
-#line 652 "netconf_parser.yy" // lalr1.cc:907
+#line 652 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1407 "netconf_parser.cc" // lalr1.cc:907
+#line 1415 "netconf_parser.cc"
break;
case 156:
-#line 661 "netconf_parser.yy" // lalr1.cc:907
+#line 661 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1417 "netconf_parser.cc" // lalr1.cc:907
+#line 1425 "netconf_parser.cc"
break;
case 157:
-#line 665 "netconf_parser.yy" // lalr1.cc:907
+#line 665 "netconf_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1425 "netconf_parser.cc" // lalr1.cc:907
+#line 1433 "netconf_parser.cc"
break;
case 165:
-#line 680 "netconf_parser.yy" // lalr1.cc:907
+#line 680 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1433 "netconf_parser.cc" // lalr1.cc:907
+#line 1441 "netconf_parser.cc"
break;
case 166:
-#line 682 "netconf_parser.yy" // lalr1.cc:907
+#line 682 "netconf_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 1443 "netconf_parser.cc" // lalr1.cc:907
+#line 1451 "netconf_parser.cc"
break;
case 167:
-#line 688 "netconf_parser.yy" // lalr1.cc:907
+#line 688 "netconf_parser.yy"
{
- ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 1452 "netconf_parser.cc" // lalr1.cc:907
+#line 1460 "netconf_parser.cc"
break;
case 168:
-#line 693 "netconf_parser.yy" // lalr1.cc:907
+#line 693 "netconf_parser.yy"
{
- ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 1461 "netconf_parser.cc" // lalr1.cc:907
+#line 1469 "netconf_parser.cc"
break;
case 169:
-#line 698 "netconf_parser.yy" // lalr1.cc:907
+#line 698 "netconf_parser.yy"
{
- ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 1470 "netconf_parser.cc" // lalr1.cc:907
+#line 1478 "netconf_parser.cc"
break;
case 170:
-#line 703 "netconf_parser.yy" // lalr1.cc:907
+#line 703 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1478 "netconf_parser.cc" // lalr1.cc:907
+#line 1486 "netconf_parser.cc"
break;
case 171:
-#line 705 "netconf_parser.yy" // lalr1.cc:907
+#line 705 "netconf_parser.yy"
{
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 1488 "netconf_parser.cc" // lalr1.cc:907
+#line 1496 "netconf_parser.cc"
break;
-#line 1492 "netconf_parser.cc" // lalr1.cc:907
+#line 1500 "netconf_parser.cc"
+
default:
break;
}
#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
YYERROR;
}
}
goto yynewstate;
+
/*--------------------------------------.
| yyerrlab -- here on detecting error. |
`--------------------------------------*/
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
+ /* Pacify compilers when the user code never invokes YYERROR and
+ the label yyerrorlab therefore never appears in user code. */
if (false)
- goto yyerrorlab;
+ YYERROR;
+
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
yylen = 0;
goto yyerrlab1;
+
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
}
goto yynewstate;
- // Accept.
+
+ /*-------------------------------------.
+ | yyacceptlab -- YYACCEPT comes here. |
+ `-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
- // Abort.
+
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
+
+ /*-----------------------------------------------------.
+ | yyreturn -- parsing is finished, return the result. |
+ `-----------------------------------------------------*/
yyreturn:
if (!yyla.empty ())
yy_destroy_ ("Cleanup: discarding lookahead", yyla);
#endif // NETCONF_DEBUG
-#line 14 "netconf_parser.yy" // lalr1.cc:1218
+#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 2091 "netconf_parser.cc" // lalr1.cc:1218
-#line 711 "netconf_parser.yy" // lalr1.cc:1219
+#line 2112 "netconf_parser.cc"
+
+#line 711 "netconf_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#ifndef YY_NETCONF_NETCONF_PARSER_H_INCLUDED
# define YY_NETCONF_NETCONF_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "netconf_parser.yy" // lalr1.cc:404
+#line 17 "netconf_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 59 "netconf_parser.h" // lalr1.cc:404
+#line 59 "netconf_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# include <string>
# include <vector>
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
// Support move semantics when possible.
-#if defined __cplusplus && 201103L <= __cplusplus
+#if 201103L <= YY_CPLUSPLUS
# define YY_MOVE std::move
# define YY_MOVE_OR_COPY move
# define YY_MOVE_REF(Type) Type&&
# define YY_RVREF(Type) const Type&
# define YY_COPY(Type) const Type&
#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
# include "location.hh"
#include <typeinfo>
#ifndef YYASSERT
# endif /* ! defined YYDEBUG */
#endif /* ! defined NETCONF_DEBUG */
-#line 14 "netconf_parser.yy" // lalr1.cc:404
+#line 14 "netconf_parser.yy"
namespace isc { namespace netconf {
-#line 161 "netconf_parser.h" // lalr1.cc:404
-
- /// A stack with random access from its top.
- template <typename T, typename S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
- typedef typename S::size_type size_type;
-
- stack (size_type n = 200)
- : seq_ (n)
- {}
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- T&
- operator[] (size_type i)
- {
- return seq_[size () - 1 - i];
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- T&
- operator[] (int i)
- {
- return operator[] (size_type (i));
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- const T&
- operator[] (size_type i) const
- {
- return seq_[size () - 1 - i];
- }
-
- /// Random access.
- ///
- /// Index 0 returns the topmost element.
- const T&
- operator[] (int i) const
- {
- return operator[] (size_type (i));
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- void
- push (YY_MOVE_REF (T) t)
- {
- seq_.push_back (T ());
- operator[](0).move (t);
- }
-
- void
- pop (int n = 1)
- {
- for (; 0 < n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- size_type
- size () const
- {
- return seq_.size ();
- }
+#line 183 "netconf_parser.h"
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
- /// Present a slice of the top of a stack.
- template <typename T, typename S = stack<T> >
- class slice
+ /// A Bison parser.
+ class NetconfParser
{
public:
- slice (const S& stack, int range)
- : stack_ (stack)
- , range_ (range)
- {}
-
- const T&
- operator[] (int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- int range_;
- };
-
-
-
- /// A char[S] buffer to store and retrieve objects.
+#ifndef NETCONF_STYPE
+ /// A buffer to store and retrieve objects.
///
/// Sort of a variant, but does not keep track of the nature
/// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
+ /// via the current parser state.
+ class semantic_type
{
+ public:
/// Type of *this.
- typedef variant<S> self_type;
+ typedef semantic_type self_type;
/// Empty construction.
- variant ()
+ semantic_type () YY_NOEXCEPT
: yybuffer_ ()
, yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (YY_RVREF (T) t)
+ semantic_type (YY_RVREF (T) t)
: yytypeid_ (&typeid (T))
{
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
new (yyas_<T> ()) T (YY_MOVE (t));
}
/// Destruction, allowed only if empty.
- ~variant ()
+ ~semantic_type () YY_NOEXCEPT
{
YYASSERT (!yytypeid_);
}
- /// Instantiate an empty \a T in here.
- template <typename T>
+# if 201103L <= YY_CPLUSPLUS
+ /// Instantiate a \a T in here from \a t.
+ template <typename T, typename... U>
T&
- emplace ()
+ emplace (U&&... u)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T ();
+ return *new (yyas_<T> ()) T (std::forward <U>(u)...);
}
-
-# if defined __cplusplus && 201103L <= __cplusplus
- /// Instantiate a \a T in here from \a t.
- template <typename T, typename U>
+# else
+ /// Instantiate an empty \a T in here.
+ template <typename T>
T&
- emplace (U&& u)
+ emplace ()
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T (std::forward <U>(u));
+ return *new (yyas_<T> ()) T ();
}
-# else
+
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
emplace (const T& t)
{
YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
/// Accessor to a built \a T.
template <typename T>
T&
- as ()
+ as () YY_NOEXCEPT
{
YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
/// Const accessor to a built \a T (for %printer).
template <typename T>
const T&
- as () const
+ as () const YY_NOEXCEPT
{
YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YYASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
- /// Swap the content with \a other, of same type.
+ /// Swap the content with \a that, of same type.
///
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
/// should not be the variant's responsibility.
/// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
+ /// self_type::move ().
template <typename T>
void
- swap (self_type& other)
+ swap (self_type& that) YY_NOEXCEPT
{
YYASSERT (yytypeid_);
- YYASSERT (*yytypeid_ == *other.yytypeid_);
- std::swap (as<T> (), other.as<T> ());
+ YYASSERT (*yytypeid_ == *that.yytypeid_);
+ std::swap (as<T> (), that.as<T> ());
}
- /// Move the content of \a other to this.
+ /// Move the content of \a that to this.
///
- /// Destroys \a other.
+ /// Destroys \a that.
template <typename T>
void
- move (self_type& other)
+ move (self_type& that)
{
-# if defined __cplusplus && 201103L <= __cplusplus
- emplace<T> (std::move (other.as<T> ()));
+# if 201103L <= YY_CPLUSPLUS
+ emplace<T> (std::move (that.as<T> ()));
# else
emplace<T> ();
- swap<T> (other);
+ swap<T> (that);
# endif
- other.destroy<T> ();
+ that.destroy<T> ();
}
-# if defined __cplusplus && 201103L <= __cplusplus
- /// Move the content of \a other to this.
+# if 201103L <= YY_CPLUSPLUS
+ /// Move the content of \a that to this.
template <typename T>
void
- move (self_type&& other)
+ move (self_type&& that)
{
- emplace<T> (std::move (other.as<T> ()));
- other.destroy<T> ();
+ emplace<T> (std::move (that.as<T> ()));
+ that.destroy<T> ();
}
#endif
- /// Copy the content of \a other to this.
+ /// Copy the content of \a that to this.
template <typename T>
void
- copy (const self_type& other)
+ copy (const self_type& that)
{
- emplace<T> (other.as<T> ());
+ emplace<T> (that.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
self_type& operator= (const self_type&);
- variant (const self_type&);
+ semantic_type (const self_type&);
/// Accessor to raw memory as \a T.
template <typename T>
T*
- yyas_ ()
+ yyas_ () YY_NOEXCEPT
{
void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- yyas_ () const
+ yyas_ () const YY_NOEXCEPT
{
const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;
-
- /// Whether the content is built: if defined, the name of the stored type.
- const std::type_info *yytypeid_;
- };
-
-
- /// A Bison parser.
- class NetconfParser
- {
- public:
-#ifndef NETCONF_STYPE
/// An auxiliary type to compute the largest semantic type.
union union_type
{
// "constant string"
char dummy5[sizeof (std::string)];
-};
+ };
+
+ /// The size of the largest semantic type.
+ enum { size = sizeof (union_type) };
+
+ /// A buffer to store semantic values.
+ union
+ {
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[size];
+ } yybuffer_;
+
+ /// Whether the content is built: if defined, the name of the stored type.
+ const std::type_info *yytypeid_;
+ };
- /// Symbol semantic values.
- typedef variant<sizeof (union_type)> semantic_type;
#else
typedef NETCONF_STYPE semantic_type;
#endif
/// Syntax errors thrown from user actions.
struct syntax_error : std::runtime_error
{
- syntax_error (const location_type& l, const std::string& m);
+ syntax_error (const location_type& l, const std::string& m)
+ : std::runtime_error (m)
+ , location (l)
+ {}
+
+ syntax_error (const syntax_error& s)
+ : std::runtime_error (s.what ())
+ , location (s.location)
+ {}
+
+ ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+
location_type location;
};
typedef Base super_type;
/// Default constructor.
- basic_symbol ();
-
- /// Move or copy constructor.
- basic_symbol (YY_RVREF (basic_symbol) other);
+ basic_symbol ()
+ : value ()
+ , location ()
+ {}
+
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ basic_symbol (basic_symbol&& that);
+#endif
+ /// Copy constructor.
+ basic_symbol (const basic_symbol& that);
/// Constructor for valueless symbols, and symbols from each type.
- basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l);
- basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l);
-
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, location_type&& l)
+ : Base (t)
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const location_type& l)
+ : Base (t)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
/// Destroy the symbol.
- ~basic_symbol ();
+ ~basic_symbol ()
+ {
+ clear ();
+ }
/// Destroy contents, and record that is empty.
- void clear ();
+ void clear ()
+ {
+ // User destructor.
+ symbol_number_type yytype = this->type_get ();
+ basic_symbol<Base>& yysym = *this;
+ (void) yysym;
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+
+ // Type destructor.
+switch (yytype)
+ {
+ case 58: // value
+ case 61: // map_value
+ case 120: // socket_type_value
+ value.template destroy< ElementPtr > ();
+ break;
+
+ case 49: // "boolean"
+ value.template destroy< bool > ();
+ break;
+
+ case 48: // "floating point"
+ value.template destroy< double > ();
+ break;
+
+ case 47: // "integer"
+ value.template destroy< int64_t > ();
+ break;
+
+ case 46: // "constant string"
+ value.template destroy< std::string > ();
+ break;
+
+ default:
+ break;
+ }
+
+ Base::clear ();
+ }
/// Whether empty.
- bool empty () const;
+ bool empty () const YY_NOEXCEPT;
/// Destructive move, \a s is emptied into this.
void move (basic_symbol& s);
location_type location;
private:
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
+ basic_symbol& operator= (const basic_symbol& that);
#endif
};
/// Default constructor.
by_type ();
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ by_type (by_type&& that);
+#endif
+
/// Copy constructor.
- by_type (const by_type& other);
+ by_type (const by_type& that);
/// The symbol type as needed by the constructor.
typedef token_type kind_type;
/// The (internal) type number (corresponding to \a type).
/// \a empty when empty.
- symbol_number_type type_get () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The token.
- token_type token () const;
+ token_type token () const YY_NOEXCEPT;
/// The symbol type.
/// \a empty_symbol when empty.
};
/// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
+ struct symbol_type : basic_symbol<by_type>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_type> super_type;
+
+ /// Empty symbol.
+ symbol_type () {}
+
+ /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, location_type l)
+ : super_type(token_type (tok), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_NETCONF || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_BOOT_UPDATE || tok == token::TOKEN_SUBSCRIBE_CHANGES || tok == token::TOKEN_VALIDATE_CHANGES || tok == token::TOKEN_MANAGED_SERVERS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_CA_SERVER || tok == token::TOKEN_MODEL || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HTTP || tok == token::TOKEN_STDOUT || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_URL || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_NETCONF || tok == token::TOKEN_START_SUB_NETCONF);
+ }
+#else
+ symbol_type (int tok, const location_type& l)
+ : super_type(token_type (tok), l)
+ {
+ YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_NETCONF || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_BOOT_UPDATE || tok == token::TOKEN_SUBSCRIBE_CHANGES || tok == token::TOKEN_VALIDATE_CHANGES || tok == token::TOKEN_MANAGED_SERVERS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_CA_SERVER || tok == token::TOKEN_MODEL || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HTTP || tok == token::TOKEN_STDOUT || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_URL || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_NETCONF || tok == token::TOKEN_START_SUB_NETCONF);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, bool v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#else
+ symbol_type (int tok, const bool& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, double v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#else
+ symbol_type (int tok, const double& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_FLOAT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, int64_t v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#else
+ symbol_type (int tok, const int64_t& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_INTEGER);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, std::string v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#else
+ symbol_type (int tok, const std::string& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YYASSERT (tok == token::TOKEN_STRING);
+ }
+#endif
+ };
/// Build a parser object.
NetconfParser (isc::netconf::ParserContext& ctx_yyarg);
/// Report a syntax error.
void error (const syntax_error& err);
- // Symbol constructors declarations.
- static
- symbol_type
- make_END (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COMMA (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COLON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LSQUARE_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RSQUARE_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LCURLY_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_RCURLY_BRACKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NULL_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NETCONF (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_USER_CONTEXT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_COMMENT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_BOOT_UPDATE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SUBSCRIBE_CHANGES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_VALIDATE_CHANGES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MANAGED_SERVERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP4_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DHCP6_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_D2_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CA_SERVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MODEL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_CONTROL_SOCKET (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_TYPE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_UNIX (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HTTP (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_STDOUT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SOCKET_URL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LIBRARY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PARAMETERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LOGGING (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_LOGGERS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_NAME (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_OUTPUT (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_DEBUGLEVEL (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_SEVERITY (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLUSH (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAXSIZE (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_MAXVER (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_PATTERN (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_START_JSON (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_START_NETCONF (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_START_SUB_NETCONF (YY_COPY (location_type) l);
-
- static
- symbol_type
- make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
-
- static
- symbol_type
- make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
-
+ // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_END (location_type l)
+ {
+ return symbol_type (token::TOKEN_END, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_END (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_END, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMA (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COLON (location_type l)
+ {
+ return symbol_type (token::TOKEN_COLON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COLON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COLON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NULL_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NULL_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NETCONF (location_type l)
+ {
+ return symbol_type (token::TOKEN_NETCONF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NETCONF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NETCONF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER_CONTEXT (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER_CONTEXT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBSCRIBE_CHANGES (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBSCRIBE_CHANGES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBSCRIBE_CHANGES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBSCRIBE_CHANGES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_VALIDATE_CHANGES (location_type l)
+ {
+ return symbol_type (token::TOKEN_VALIDATE_CHANGES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_VALIDATE_CHANGES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_VALIDATE_CHANGES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MANAGED_SERVERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_MANAGED_SERVERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MANAGED_SERVERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MANAGED_SERVERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_D2_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_D2_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_D2_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_D2_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CA_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_CA_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CA_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CA_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MODEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_MODEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MODEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MODEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_SOCKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_SOCKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UNIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_UNIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UNIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UNIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HTTP (location_type l)
+ {
+ return symbol_type (token::TOKEN_HTTP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HTTP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HTTP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STDOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_STDOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STDOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STDOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_URL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_URL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_URL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_URL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PARAMETERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PARAMETERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DEBUGLEVEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DEBUGLEVEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SEVERITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SEVERITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXSIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXSIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PATTERN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PATTERN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_START_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_START_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_START_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_START_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_START_NETCONF (location_type l)
+ {
+ return symbol_type (token::TOKEN_START_NETCONF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_START_NETCONF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_START_NETCONF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_START_SUB_NETCONF (location_type l)
+ {
+ return symbol_type (token::TOKEN_START_SUB_NETCONF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_START_SUB_NETCONF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_START_SUB_NETCONF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STRING (std::string v, location_type l)
+ {
+ return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTEGER (int64_t v, location_type l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLOAT (double v, location_type l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOLEAN (bool v, location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOLEAN (const bool& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ }
+#endif
private:
struct by_state
{
/// Default constructor.
- by_state ();
+ by_state () YY_NOEXCEPT;
/// The symbol type as needed by the constructor.
typedef state_type kind_type;
/// Constructor.
- by_state (kind_type s);
+ by_state (kind_type s) YY_NOEXCEPT;
/// Copy constructor.
- by_state (const by_state& other);
+ by_state (const by_state& that) YY_NOEXCEPT;
/// Record that this symbol is empty.
- void clear ();
+ void clear () YY_NOEXCEPT;
/// Steal the symbol type from \a that.
void move (by_state& that);
/// The (internal) type number (corresponding to \a state).
/// \a empty_symbol when empty.
- symbol_number_type type_get () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
enum { empty_state = -1 };
stack_symbol_type (YY_RVREF (stack_symbol_type) that);
/// Steal the contents from \a sym to build this.
stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
-#if !defined __cplusplus || __cplusplus < 201103L
+#if YY_CPLUSPLUS < 201103L
/// Assignment, needed by push_back by some old implementations.
/// Moves the contents of that.
stack_symbol_type& operator= (stack_symbol_type& that);
#endif
};
+ /// A stack with random access from its top.
+ template <typename T, typename S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+ typedef typename S::size_type size_type;
+
+ stack (size_type n = 200)
+ : seq_ (n)
+ {}
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (size_type i)
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (int i)
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (size_type i) const
+ {
+ return seq_[size () - 1 - i];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (int i) const
+ {
+ return operator[] (size_type (i));
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ void
+ push (YY_MOVE_REF (T) t)
+ {
+ seq_.push_back (T ());
+ operator[] (0).move (t);
+ }
+
+ /// Pop elements from the stack.
+ void
+ pop (int n = 1) YY_NOEXCEPT
+ {
+ for (; 0 < n; --n)
+ seq_.pop_back ();
+ }
+
+ /// Pop all elements from the stack.
+ void
+ clear () YY_NOEXCEPT
+ {
+ seq_.clear ();
+ }
+
+ /// Number of elements on the stack.
+ size_type
+ size () const YY_NOEXCEPT
+ {
+ return seq_.size ();
+ }
+
+ /// Iterator on top of the stack (going downwards).
+ const_iterator
+ begin () const YY_NOEXCEPT
+ {
+ return seq_.rbegin ();
+ }
+
+ /// Bottom of the stack.
+ const_iterator
+ end () const YY_NOEXCEPT
+ {
+ return seq_.rend ();
+ }
+
+ /// Present a slice of the top of a stack.
+ class slice
+ {
+ public:
+ slice (const stack& stack, int range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ const T&
+ operator[] (int i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const stack& stack_;
+ int range_;
+ };
+
+ private:
+ stack (const stack&);
+ stack& operator= (const stack&);
+ /// The wrapped container.
+ S seq_;
+ };
+
+
/// Stack type.
typedef stack<stack_symbol_type> stack_type;
isc::netconf::ParserContext& ctx;
};
- // Symbol number corresponding to token number t.
inline
NetconfParser::token_number_type
NetconfParser::yytranslate_ (token_type t)
{
+ // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+ // TOKEN-NUM as returned by yylex.
static
const token_number_type
translate_table[] =
{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
return undef_token_;
}
- inline
- NetconfParser::syntax_error::syntax_error (const location_type& l, const std::string& m)
- : std::runtime_error (m)
- , location (l)
- {}
-
// basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol ()
- : value ()
- , location ()
- {}
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (YY_RVREF (basic_symbol) other)
- : Base (YY_MOVE (other))
+ NetconfParser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+ : Base (std::move (that))
, value ()
- , location (YY_MOVE (other.location))
+ , location (std::move (that.location))
{
- switch (other.type_get ())
+ switch (this->type_get ())
{
case 58: // value
case 61: // map_value
case 120: // socket_type_value
- value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
+ value.move< ElementPtr > (std::move (that.value));
break;
case 49: // "boolean"
- value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
+ value.move< bool > (std::move (that.value));
break;
case 48: // "floating point"
- value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
+ value.move< double > (std::move (that.value));
break;
case 47: // "integer"
- value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
+ value.move< int64_t > (std::move (that.value));
break;
case 46: // "constant string"
- value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
+ value.move< std::string > (std::move (that.value));
break;
default:
}
}
-
-
- // Implementation of basic_symbol constructor for each type.
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l)
- : Base (t)
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l)
- : Base (t)
- , value (YY_MOVE (v))
- , location (YY_MOVE (l))
- {}
-
-
-
- template <typename Base>
- NetconfParser::basic_symbol<Base>::~basic_symbol ()
- {
- clear ();
- }
+#endif
template <typename Base>
- void
- NetconfParser::basic_symbol<Base>::clear ()
+ NetconfParser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+ : Base (that)
+ , value ()
+ , location (that.location)
{
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- basic_symbol<Base>& yysym = *this;
- (void) yysym;
- switch (yytype)
- {
- default:
- break;
- }
-
- // Type destructor.
- switch (yytype)
+ switch (this->type_get ())
{
case 58: // value
case 61: // map_value
case 120: // socket_type_value
- value.template destroy< ElementPtr > ();
+ value.copy< ElementPtr > (YY_MOVE (that.value));
break;
case 49: // "boolean"
- value.template destroy< bool > ();
+ value.copy< bool > (YY_MOVE (that.value));
break;
case 48: // "floating point"
- value.template destroy< double > ();
+ value.copy< double > (YY_MOVE (that.value));
break;
case 47: // "integer"
- value.template destroy< int64_t > ();
+ value.copy< int64_t > (YY_MOVE (that.value));
break;
case 46: // "constant string"
- value.template destroy< std::string > ();
+ value.copy< std::string > (YY_MOVE (that.value));
break;
default:
break;
}
- Base::clear ();
}
+
+
template <typename Base>
bool
- NetconfParser::basic_symbol<Base>::empty () const
+ NetconfParser::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
return Base::type_get () == empty_symbol;
}
: type (empty_symbol)
{}
+#if 201103L <= YY_CPLUSPLUS
inline
- NetconfParser::by_type::by_type (const by_type& other)
- : type (other.type)
+ NetconfParser::by_type::by_type (by_type&& that)
+ : type (that.type)
+ {
+ that.clear ();
+ }
+#endif
+
+ inline
+ NetconfParser::by_type::by_type (const by_type& that)
+ : type (that.type)
{}
inline
inline
int
- NetconfParser::by_type::type_get () const
+ NetconfParser::by_type::type_get () const YY_NOEXCEPT
{
return type;
}
inline
NetconfParser::token_type
- NetconfParser::by_type::token () const
+ NetconfParser::by_type::token () const YY_NOEXCEPT
{
// YYTOKNUM[NUM] -- (External) token number corresponding to the
// (internal) symbol number NUM (which must be that of a token). */
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304
};
- return static_cast<token_type> (yytoken_number_[type]);
- }
-
- // Implementation of make_symbol for each symbol type.
- inline
- NetconfParser::symbol_type
- NetconfParser::make_END (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_END, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_COMMA (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_COLON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_LSQUARE_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_RSQUARE_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_LCURLY_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_RCURLY_BRACKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_NULL_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_NETCONF (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NETCONF, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_USER_CONTEXT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l));
+ return token_type (yytoken_number_[type]);
}
- inline
- NetconfParser::symbol_type
- NetconfParser::make_COMMENT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_BOOT_UPDATE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_BOOT_UPDATE, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_SUBSCRIBE_CHANGES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SUBSCRIBE_CHANGES, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_VALIDATE_CHANGES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_VALIDATE_CHANGES, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_MANAGED_SERVERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MANAGED_SERVERS, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_DHCP4_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP4_SERVER, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_DHCP6_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DHCP6_SERVER, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_D2_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_D2_SERVER, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_CA_SERVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CA_SERVER, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_MODEL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MODEL, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_CONTROL_SOCKET (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_CONTROL_SOCKET, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_SOCKET_TYPE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_UNIX (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_UNIX, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_HTTP (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HTTP, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_STDOUT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_STDOUT, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_SOCKET_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_SOCKET_URL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SOCKET_URL, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_LIBRARY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_PARAMETERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_LOGGING (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_LOGGERS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_NAME (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_OUTPUT (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_DEBUGLEVEL (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_SEVERITY (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_FLUSH (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_MAXSIZE (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_MAXVER (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_PATTERN (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_PATTERN, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_START_JSON (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_START_JSON, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_START_NETCONF (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_START_NETCONF, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_START_SUB_NETCONF (YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_START_SUB_NETCONF, YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
- }
-
- inline
- NetconfParser::symbol_type
- NetconfParser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l)
- {
- return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
- }
-
-
-#line 14 "netconf_parser.yy" // lalr1.cc:404
+#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 1747 "netconf_parser.h" // lalr1.cc:404
+#line 2118 "netconf_parser.h"
+
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.