From: Francis Dupont Date: Thu, 15 Nov 2018 13:38:22 +0000 (+0000) Subject: [master] Regen bison with 3.2.1 (last) version X-Git-Tag: 268-reservation-mode-is-not-global_base~28^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0b1d2e7652ff8a013ab759455c9fdb1daeb5068;p=thirdparty%2Fkea.git [master] Regen bison with 3.2.1 (last) version --- diff --git a/src/bin/agent/agent_parser.cc b/src/bin/agent/agent_parser.cc index 4ce4ea98cf..db9da58519 100644 --- a/src/bin/agent/agent_parser.cc +++ b/src/bin/agent/agent_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -35,7 +35,7 @@ // First part of user declarations. -#line 39 "agent_parser.cc" // lalr1.cc:404 +#line 39 "agent_parser.cc" // lalr1.cc:406 # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -49,13 +49,13 @@ // User implementation prologue. -#line 53 "agent_parser.cc" // lalr1.cc:412 +#line 53 "agent_parser.cc" // lalr1.cc:414 // Unqualified %code blocks. -#line 33 "agent_parser.yy" // lalr1.cc:413 +#line 33 "agent_parser.yy" // lalr1.cc:415 #include -#line 59 "agent_parser.cc" // lalr1.cc:413 +#line 59 "agent_parser.cc" // lalr1.cc:415 #ifndef YY_ @@ -106,7 +106,7 @@ { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << std::endl; \ + *yycdebug_ << '\n'; \ } \ } while (false) @@ -125,9 +125,9 @@ #else // !AGENT_DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast (0) +# define YY_STACK_PRINT() static_cast (0) #endif // !AGENT_DEBUG @@ -139,9 +139,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "agent_parser.yy" // lalr1.cc:479 +#line 14 "agent_parser.yy" // lalr1.cc:481 namespace isc { namespace agent { -#line 145 "agent_parser.cc" // lalr1.cc:479 +#line 145 "agent_parser.cc" // lalr1.cc:481 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -202,24 +202,20 @@ namespace isc { namespace agent { // by_state. - inline AgentParser::by_state::by_state () : state (empty_state) {} - inline AgentParser::by_state::by_state (const by_state& other) : state (other.state) {} - inline void AgentParser::by_state::clear () { state = empty_state; } - inline void AgentParser::by_state::move (by_state& that) { @@ -227,12 +223,10 @@ namespace isc { namespace agent { that.clear (); } - inline AgentParser::by_state::by_state (state_type s) : state (s) {} - inline AgentParser::symbol_number_type AgentParser::by_state::type_get () const { @@ -242,16 +236,46 @@ namespace isc { namespace agent { return yystos_[state]; } - inline AgentParser::stack_symbol_type::stack_symbol_type () {} + AgentParser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) + : super_type (that.state, that.location) + { + switch (that.type_get ()) + { + case 53: // value + case 56: // map_value + case 107: // socket_type_value + value.copy< ElementPtr > (that.value); + break; + + case 44: // "boolean" + value.copy< bool > (that.value); + break; + + case 43: // "floating point" + value.copy< double > (that.value); + break; + + case 42: // "integer" + value.copy< int64_t > (that.value); + break; + + case 41: // "constant string" + value.copy< std::string > (that.value); + break; + + default: + break; + } + + } - inline AgentParser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) : super_type (s, that.location) { - switch (that.type_get ()) + switch (that.type_get ()) { case 53: // value case 56: // map_value @@ -283,12 +307,11 @@ namespace isc { namespace agent { that.type = empty_symbol; } - inline AgentParser::stack_symbol_type& AgentParser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.type_get ()) + switch (that.type_get ()) { case 53: // value case 56: // map_value @@ -322,7 +345,6 @@ namespace isc { namespace agent { template - inline void AgentParser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -350,51 +372,51 @@ namespace isc { namespace agent { { case 41: // "constant string" -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } -#line 356 "agent_parser.cc" // lalr1.cc:636 +#line 378 "agent_parser.cc" // lalr1.cc:635 break; case 42: // "integer" -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } -#line 363 "agent_parser.cc" // lalr1.cc:636 +#line 385 "agent_parser.cc" // lalr1.cc:635 break; case 43: // "floating point" -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } -#line 370 "agent_parser.cc" // lalr1.cc:636 +#line 392 "agent_parser.cc" // lalr1.cc:635 break; case 44: // "boolean" -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } -#line 377 "agent_parser.cc" // lalr1.cc:636 +#line 399 "agent_parser.cc" // lalr1.cc:635 break; case 53: // value -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 384 "agent_parser.cc" // lalr1.cc:636 +#line 406 "agent_parser.cc" // lalr1.cc:635 break; case 56: // map_value -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 391 "agent_parser.cc" // lalr1.cc:636 +#line 413 "agent_parser.cc" // lalr1.cc:635 break; case 107: // socket_type_value -#line 103 "agent_parser.yy" // lalr1.cc:636 +#line 103 ""agent_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 398 "agent_parser.cc" // lalr1.cc:636 +#line 420 "agent_parser.cc" // lalr1.cc:635 break; @@ -405,7 +427,6 @@ namespace isc { namespace agent { } #endif - inline void AgentParser::yypush_ (const char* m, state_type s, symbol_type& sym) { @@ -413,7 +434,6 @@ namespace isc { namespace agent { yypush_ (m, t); } - inline void AgentParser::yypush_ (const char* m, stack_symbol_type& s) { @@ -422,9 +442,8 @@ namespace isc { namespace agent { yystack_.push (s); } - inline void - AgentParser::yypop_ (unsigned int n) + AgentParser::yypop_ (unsigned n) { yystack_.pop (n); } @@ -456,7 +475,7 @@ namespace isc { namespace agent { } #endif // AGENT_DEBUG - inline AgentParser::state_type + AgentParser::state_type AgentParser::yy_lr_goto_state_ (state_type yystate, int yysym) { int yyr = yypgoto_[yysym - yyntokens_] + yystate; @@ -466,13 +485,13 @@ namespace isc { namespace agent { return yydefgoto_[yysym - yyntokens_]; } - inline bool + bool AgentParser::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } - inline bool + bool AgentParser::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; @@ -503,7 +522,7 @@ namespace isc { namespace agent { // avoid gratuitous conflicts when merging into the master branch. try { - YYCDEBUG << "Starting parse" << std::endl; + YYCDEBUG << "Starting parse\n"; /* Initialize the stack. The initial state will be set in @@ -515,7 +534,7 @@ namespace isc { namespace agent { // A new symbol was pushed 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_) @@ -588,11 +607,11 @@ namespace isc { namespace agent { 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 53: // value case 56: // map_value @@ -621,10 +640,11 @@ namespace isc { namespace agent { } - // Compute the default @$. + // Default location. { slice slice (yystack_, yylen); YYLLOC_DEFAULT (yylhs.location, slice, yylen); + yyerror_range[1].location = yylhs.location; } // Perform the reduction. @@ -634,206 +654,206 @@ namespace isc { namespace agent { switch (yyn) { case 2: -#line 114 "agent_parser.yy" // lalr1.cc:859 +#line 114 "agent_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.NO_KEYWORDS; } -#line 640 "agent_parser.cc" // lalr1.cc:859 +#line 660 "agent_parser.cc" // lalr1.cc:856 break; case 4: -#line 115 "agent_parser.yy" // lalr1.cc:859 +#line 115 "agent_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG; } -#line 646 "agent_parser.cc" // lalr1.cc:859 +#line 666 "agent_parser.cc" // lalr1.cc:856 break; case 6: -#line 116 "agent_parser.yy" // lalr1.cc:859 +#line 116 "agent_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.AGENT; } -#line 652 "agent_parser.cc" // lalr1.cc:859 +#line 672 "agent_parser.cc" // lalr1.cc:856 break; case 8: -#line 124 "agent_parser.yy" // lalr1.cc:859 +#line 124 "agent_parser.yy" // lalr1.cc:856 { // Parse the Control-agent map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 662 "agent_parser.cc" // lalr1.cc:859 +#line 682 "agent_parser.cc" // lalr1.cc:856 break; case 9: -#line 128 "agent_parser.yy" // lalr1.cc:859 +#line 128 "agent_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 670 "agent_parser.cc" // lalr1.cc:859 +#line 690 "agent_parser.cc" // lalr1.cc:856 break; case 10: -#line 135 "agent_parser.yy" // lalr1.cc:859 +#line 135 "agent_parser.yy" // lalr1.cc:856 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 679 "agent_parser.cc" // lalr1.cc:859 +#line 699 "agent_parser.cc" // lalr1.cc:856 break; case 11: -#line 141 "agent_parser.yy" // lalr1.cc:859 +#line 141 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 685 "agent_parser.cc" // lalr1.cc:859 +#line 705 "agent_parser.cc" // lalr1.cc:856 break; case 12: -#line 142 "agent_parser.yy" // lalr1.cc:859 +#line 142 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } -#line 691 "agent_parser.cc" // lalr1.cc:859 +#line 711 "agent_parser.cc" // lalr1.cc:856 break; case 13: -#line 143 "agent_parser.yy" // lalr1.cc:859 +#line 143 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 697 "agent_parser.cc" // lalr1.cc:859 +#line 717 "agent_parser.cc" // lalr1.cc:856 break; case 14: -#line 144 "agent_parser.yy" // lalr1.cc:859 +#line 144 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 703 "agent_parser.cc" // lalr1.cc:859 +#line 723 "agent_parser.cc" // lalr1.cc:856 break; case 15: -#line 145 "agent_parser.yy" // lalr1.cc:859 +#line 145 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 709 "agent_parser.cc" // lalr1.cc:859 +#line 729 "agent_parser.cc" // lalr1.cc:856 break; case 16: -#line 146 "agent_parser.yy" // lalr1.cc:859 +#line 146 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 715 "agent_parser.cc" // lalr1.cc:859 +#line 735 "agent_parser.cc" // lalr1.cc:856 break; case 17: -#line 147 "agent_parser.yy" // lalr1.cc:859 +#line 147 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 721 "agent_parser.cc" // lalr1.cc:859 +#line 741 "agent_parser.cc" // lalr1.cc:856 break; case 18: -#line 151 "agent_parser.yy" // lalr1.cc:859 +#line 151 "agent_parser.yy" // lalr1.cc:856 { // 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 732 "agent_parser.cc" // lalr1.cc:859 +#line 752 "agent_parser.cc" // lalr1.cc:856 break; case 19: -#line 156 "agent_parser.yy" // lalr1.cc:859 +#line 156 "agent_parser.yy" // lalr1.cc:856 { // 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 742 "agent_parser.cc" // lalr1.cc:859 +#line 762 "agent_parser.cc" // lalr1.cc:856 break; case 20: -#line 162 "agent_parser.yy" // lalr1.cc:859 +#line 162 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 748 "agent_parser.cc" // lalr1.cc:859 +#line 768 "agent_parser.cc" // lalr1.cc:856 break; case 23: -#line 176 "agent_parser.yy" // lalr1.cc:859 +#line 176 "agent_parser.yy" // lalr1.cc:856 { // map containing a single entry ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 757 "agent_parser.cc" // lalr1.cc:859 +#line 777 "agent_parser.cc" // lalr1.cc:856 break; case 24: -#line 180 "agent_parser.yy" // lalr1.cc:859 +#line 180 "agent_parser.yy" // lalr1.cc:856 { // 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 > ()); } -#line 767 "agent_parser.cc" // lalr1.cc:859 +#line 787 "agent_parser.cc" // lalr1.cc:856 break; case 25: -#line 187 "agent_parser.yy" // lalr1.cc:859 +#line 187 "agent_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 776 "agent_parser.cc" // lalr1.cc:859 +#line 796 "agent_parser.cc" // lalr1.cc:856 break; case 26: -#line 190 "agent_parser.yy" // lalr1.cc:859 +#line 190 "agent_parser.yy" // lalr1.cc:856 { } -#line 783 "agent_parser.cc" // lalr1.cc:859 +#line 803 "agent_parser.cc" // lalr1.cc:856 break; case 29: -#line 197 "agent_parser.yy" // lalr1.cc:859 +#line 197 "agent_parser.yy" // lalr1.cc:856 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 792 "agent_parser.cc" // lalr1.cc:859 +#line 812 "agent_parser.cc" // lalr1.cc:856 break; case 30: -#line 201 "agent_parser.yy" // lalr1.cc:859 +#line 201 "agent_parser.yy" // lalr1.cc:856 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 801 "agent_parser.cc" // lalr1.cc:859 +#line 821 "agent_parser.cc" // lalr1.cc:856 break; case 31: -#line 214 "agent_parser.yy" // lalr1.cc:859 +#line 214 "agent_parser.yy" // lalr1.cc:856 { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 812 "agent_parser.cc" // lalr1.cc:859 +#line 832 "agent_parser.cc" // lalr1.cc:856 break; case 32: -#line 223 "agent_parser.yy" // lalr1.cc:859 +#line 223 "agent_parser.yy" // lalr1.cc:856 { // 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 823 "agent_parser.cc" // lalr1.cc:859 +#line 843 "agent_parser.cc" // lalr1.cc:856 break; case 33: -#line 228 "agent_parser.yy" // lalr1.cc:859 +#line 228 "agent_parser.yy" // lalr1.cc:856 { // 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 833 "agent_parser.cc" // lalr1.cc:859 +#line 853 "agent_parser.cc" // lalr1.cc:856 break; case 42: -#line 249 "agent_parser.yy" // lalr1.cc:859 +#line 249 "agent_parser.yy" // lalr1.cc:856 { // Let's create a MapElement that will represent it, add it to the @@ -845,57 +865,57 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.AGENT); } -#line 849 "agent_parser.cc" // lalr1.cc:859 +#line 869 "agent_parser.cc" // lalr1.cc:856 break; case 43: -#line 259 "agent_parser.yy" // lalr1.cc:859 +#line 259 "agent_parser.yy" // lalr1.cc:856 { // Ok, we're done with parsing control-agent. Let's take the map // off the stack. ctx.stack_.pop_back(); ctx.leave(); } -#line 860 "agent_parser.cc" // lalr1.cc:859 +#line 880 "agent_parser.cc" // lalr1.cc:856 break; case 53: -#line 281 "agent_parser.yy" // lalr1.cc:859 +#line 281 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 868 "agent_parser.cc" // lalr1.cc:859 +#line 888 "agent_parser.cc" // lalr1.cc:856 break; case 54: -#line 283 "agent_parser.yy" // lalr1.cc:859 +#line 283 "agent_parser.yy" // lalr1.cc:856 { 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 878 "agent_parser.cc" // lalr1.cc:859 +#line 898 "agent_parser.cc" // lalr1.cc:856 break; case 55: -#line 289 "agent_parser.yy" // lalr1.cc:859 +#line 289 "agent_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("http-port", prf); } -#line 887 "agent_parser.cc" // lalr1.cc:859 +#line 907 "agent_parser.cc" // lalr1.cc:856 break; case 56: -#line 294 "agent_parser.yy" // lalr1.cc:859 +#line 294 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 895 "agent_parser.cc" // lalr1.cc:859 +#line 915 "agent_parser.cc" // lalr1.cc:856 break; case 57: -#line 296 "agent_parser.yy" // lalr1.cc:859 +#line 296 "agent_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -918,19 +938,19 @@ namespace isc { namespace agent { parent->set("user-context", user_context); ctx.leave(); } -#line 922 "agent_parser.cc" // lalr1.cc:859 +#line 942 "agent_parser.cc" // lalr1.cc:856 break; case 58: -#line 319 "agent_parser.yy" // lalr1.cc:859 +#line 319 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 930 "agent_parser.cc" // lalr1.cc:859 +#line 950 "agent_parser.cc" // lalr1.cc:856 break; case 59: -#line 321 "agent_parser.yy" // lalr1.cc:859 +#line 321 "agent_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -955,442 +975,442 @@ namespace isc { namespace agent { parent->set("user-context", user_context); ctx.leave(); } -#line 959 "agent_parser.cc" // lalr1.cc:859 +#line 979 "agent_parser.cc" // lalr1.cc:856 break; case 60: -#line 347 "agent_parser.yy" // lalr1.cc:859 +#line 347 "agent_parser.yy" // lalr1.cc:856 { 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 970 "agent_parser.cc" // lalr1.cc:859 +#line 990 "agent_parser.cc" // lalr1.cc:856 break; case 61: -#line 352 "agent_parser.yy" // lalr1.cc:859 +#line 352 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 979 "agent_parser.cc" // lalr1.cc:859 +#line 999 "agent_parser.cc" // lalr1.cc:856 break; case 66: -#line 365 "agent_parser.yy" // lalr1.cc:859 +#line 365 "agent_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 989 "agent_parser.cc" // lalr1.cc:859 +#line 1009 "agent_parser.cc" // lalr1.cc:856 break; case 67: -#line 369 "agent_parser.yy" // lalr1.cc:859 +#line 369 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 997 "agent_parser.cc" // lalr1.cc:859 +#line 1017 "agent_parser.cc" // lalr1.cc:856 break; case 73: -#line 382 "agent_parser.yy" // lalr1.cc:859 +#line 382 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1005 "agent_parser.cc" // lalr1.cc:859 +#line 1025 "agent_parser.cc" // lalr1.cc:856 break; case 74: -#line 384 "agent_parser.yy" // lalr1.cc:859 +#line 384 "agent_parser.yy" // lalr1.cc:856 { ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1015 "agent_parser.cc" // lalr1.cc:859 +#line 1035 "agent_parser.cc" // lalr1.cc:856 break; case 75: -#line 390 "agent_parser.yy" // lalr1.cc:859 +#line 390 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1023 "agent_parser.cc" // lalr1.cc:859 +#line 1043 "agent_parser.cc" // lalr1.cc:856 break; case 76: -#line 392 "agent_parser.yy" // lalr1.cc:859 +#line 392 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1032 "agent_parser.cc" // lalr1.cc:859 +#line 1052 "agent_parser.cc" // lalr1.cc:856 break; case 77: -#line 400 "agent_parser.yy" // lalr1.cc:859 +#line 400 "agent_parser.yy" // lalr1.cc:856 { 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 1043 "agent_parser.cc" // lalr1.cc:859 +#line 1063 "agent_parser.cc" // lalr1.cc:856 break; case 78: -#line 405 "agent_parser.yy" // lalr1.cc:859 +#line 405 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1052 "agent_parser.cc" // lalr1.cc:859 +#line 1072 "agent_parser.cc" // lalr1.cc:856 break; case 85: -#line 426 "agent_parser.yy" // lalr1.cc:859 +#line 426 "agent_parser.yy" // lalr1.cc:856 { 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 1063 "agent_parser.cc" // lalr1.cc:859 +#line 1083 "agent_parser.cc" // lalr1.cc:856 break; case 86: -#line 431 "agent_parser.yy" // lalr1.cc:859 +#line 431 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1072 "agent_parser.cc" // lalr1.cc:859 +#line 1092 "agent_parser.cc" // lalr1.cc:856 break; case 87: -#line 437 "agent_parser.yy" // lalr1.cc:859 +#line 437 "agent_parser.yy" // lalr1.cc:856 { 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 1083 "agent_parser.cc" // lalr1.cc:859 +#line 1103 "agent_parser.cc" // lalr1.cc:856 break; case 88: -#line 442 "agent_parser.yy" // lalr1.cc:859 +#line 442 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1092 "agent_parser.cc" // lalr1.cc:859 +#line 1112 "agent_parser.cc" // lalr1.cc:856 break; case 89: -#line 448 "agent_parser.yy" // lalr1.cc:859 +#line 448 "agent_parser.yy" // lalr1.cc:856 { 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 1103 "agent_parser.cc" // lalr1.cc:859 +#line 1123 "agent_parser.cc" // lalr1.cc:856 break; case 90: -#line 453 "agent_parser.yy" // lalr1.cc:859 +#line 453 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1112 "agent_parser.cc" // lalr1.cc:859 +#line 1132 "agent_parser.cc" // lalr1.cc:856 break; case 98: -#line 472 "agent_parser.yy" // lalr1.cc:859 +#line 472 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1120 "agent_parser.cc" // lalr1.cc:859 +#line 1140 "agent_parser.cc" // lalr1.cc:856 break; case 99: -#line 474 "agent_parser.yy" // lalr1.cc:859 +#line 474 "agent_parser.yy" // lalr1.cc:856 { 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 1130 "agent_parser.cc" // lalr1.cc:859 +#line 1150 "agent_parser.cc" // lalr1.cc:856 break; case 100: -#line 481 "agent_parser.yy" // lalr1.cc:859 +#line 481 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.SOCKET_TYPE); } -#line 1138 "agent_parser.cc" // lalr1.cc:859 +#line 1158 "agent_parser.cc" // lalr1.cc:856 break; case 101: -#line 483 "agent_parser.yy" // lalr1.cc:859 +#line 483 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1147 "agent_parser.cc" // lalr1.cc:859 +#line 1167 "agent_parser.cc" // lalr1.cc:856 break; case 102: -#line 489 "agent_parser.yy" // lalr1.cc:859 +#line 489 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } -#line 1153 "agent_parser.cc" // lalr1.cc:859 +#line 1173 "agent_parser.cc" // lalr1.cc:856 break; case 103: -#line 495 "agent_parser.yy" // lalr1.cc:859 +#line 495 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1161 "agent_parser.cc" // lalr1.cc:859 +#line 1181 "agent_parser.cc" // lalr1.cc:856 break; case 104: -#line 497 "agent_parser.yy" // lalr1.cc:859 +#line 497 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1170 "agent_parser.cc" // lalr1.cc:859 +#line 1190 "agent_parser.cc" // lalr1.cc:856 break; case 105: -#line 502 "agent_parser.yy" // lalr1.cc:859 +#line 502 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1178 "agent_parser.cc" // lalr1.cc:859 +#line 1198 "agent_parser.cc" // lalr1.cc:856 break; case 106: -#line 504 "agent_parser.yy" // lalr1.cc:859 +#line 504 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1187 "agent_parser.cc" // lalr1.cc:859 +#line 1207 "agent_parser.cc" // lalr1.cc:856 break; case 107: -#line 509 "agent_parser.yy" // lalr1.cc:859 +#line 509 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1195 "agent_parser.cc" // lalr1.cc:859 +#line 1215 "agent_parser.cc" // lalr1.cc:856 break; case 108: -#line 511 "agent_parser.yy" // lalr1.cc:859 +#line 511 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1204 "agent_parser.cc" // lalr1.cc:859 +#line 1224 "agent_parser.cc" // lalr1.cc:856 break; case 109: -#line 521 "agent_parser.yy" // lalr1.cc:859 +#line 521 "agent_parser.yy" // lalr1.cc:856 { 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 1215 "agent_parser.cc" // lalr1.cc:859 +#line 1235 "agent_parser.cc" // lalr1.cc:856 break; case 110: -#line 526 "agent_parser.yy" // lalr1.cc:859 +#line 526 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1224 "agent_parser.cc" // lalr1.cc:859 +#line 1244 "agent_parser.cc" // lalr1.cc:856 break; case 114: -#line 543 "agent_parser.yy" // lalr1.cc:859 +#line 543 "agent_parser.yy" // lalr1.cc:856 { 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 1235 "agent_parser.cc" // lalr1.cc:859 +#line 1255 "agent_parser.cc" // lalr1.cc:856 break; case 115: -#line 548 "agent_parser.yy" // lalr1.cc:859 +#line 548 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1244 "agent_parser.cc" // lalr1.cc:859 +#line 1264 "agent_parser.cc" // lalr1.cc:856 break; case 118: -#line 560 "agent_parser.yy" // lalr1.cc:859 +#line 560 "agent_parser.yy" // lalr1.cc:856 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 1254 "agent_parser.cc" // lalr1.cc:859 +#line 1274 "agent_parser.cc" // lalr1.cc:856 break; case 119: -#line 564 "agent_parser.yy" // lalr1.cc:859 +#line 564 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1262 "agent_parser.cc" // lalr1.cc:859 +#line 1282 "agent_parser.cc" // lalr1.cc:856 break; case 129: -#line 581 "agent_parser.yy" // lalr1.cc:859 +#line 581 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1270 "agent_parser.cc" // lalr1.cc:859 +#line 1290 "agent_parser.cc" // lalr1.cc:856 break; case 130: -#line 583 "agent_parser.yy" // lalr1.cc:859 +#line 583 "agent_parser.yy" // lalr1.cc:856 { ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1280 "agent_parser.cc" // lalr1.cc:859 +#line 1300 "agent_parser.cc" // lalr1.cc:856 break; case 131: -#line 589 "agent_parser.yy" // lalr1.cc:859 +#line 589 "agent_parser.yy" // lalr1.cc:856 { ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 1289 "agent_parser.cc" // lalr1.cc:859 +#line 1309 "agent_parser.cc" // lalr1.cc:856 break; case 132: -#line 594 "agent_parser.yy" // lalr1.cc:859 +#line 594 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1297 "agent_parser.cc" // lalr1.cc:859 +#line 1317 "agent_parser.cc" // lalr1.cc:856 break; case 133: -#line 596 "agent_parser.yy" // lalr1.cc:859 +#line 596 "agent_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 1307 "agent_parser.cc" // lalr1.cc:859 +#line 1327 "agent_parser.cc" // lalr1.cc:856 break; case 134: -#line 602 "agent_parser.yy" // lalr1.cc:859 +#line 602 "agent_parser.yy" // lalr1.cc:856 { 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 1318 "agent_parser.cc" // lalr1.cc:859 +#line 1338 "agent_parser.cc" // lalr1.cc:856 break; case 135: -#line 607 "agent_parser.yy" // lalr1.cc:859 +#line 607 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1327 "agent_parser.cc" // lalr1.cc:859 +#line 1347 "agent_parser.cc" // lalr1.cc:856 break; case 138: -#line 616 "agent_parser.yy" // lalr1.cc:859 +#line 616 "agent_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1337 "agent_parser.cc" // lalr1.cc:859 +#line 1357 "agent_parser.cc" // lalr1.cc:856 break; case 139: -#line 620 "agent_parser.yy" // lalr1.cc:859 +#line 620 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1345 "agent_parser.cc" // lalr1.cc:859 +#line 1365 "agent_parser.cc" // lalr1.cc:856 break; case 146: -#line 634 "agent_parser.yy" // lalr1.cc:859 +#line 634 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1353 "agent_parser.cc" // lalr1.cc:859 +#line 1373 "agent_parser.cc" // lalr1.cc:856 break; case 147: -#line 636 "agent_parser.yy" // lalr1.cc:859 +#line 636 "agent_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 1363 "agent_parser.cc" // lalr1.cc:859 +#line 1383 "agent_parser.cc" // lalr1.cc:856 break; case 148: -#line 642 "agent_parser.yy" // lalr1.cc:859 +#line 642 "agent_parser.yy" // lalr1.cc:856 { ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 1372 "agent_parser.cc" // lalr1.cc:859 +#line 1392 "agent_parser.cc" // lalr1.cc:856 break; case 149: -#line 647 "agent_parser.yy" // lalr1.cc:859 +#line 647 "agent_parser.yy" // lalr1.cc:856 { ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 1381 "agent_parser.cc" // lalr1.cc:859 +#line 1401 "agent_parser.cc" // lalr1.cc:856 break; case 150: -#line 652 "agent_parser.yy" // lalr1.cc:859 +#line 652 "agent_parser.yy" // lalr1.cc:856 { ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 1390 "agent_parser.cc" // lalr1.cc:859 +#line 1410 "agent_parser.cc" // lalr1.cc:856 break; -#line 1394 "agent_parser.cc" // lalr1.cc:859 +#line 1414 "agent_parser.cc" // lalr1.cc:856 default: break; } @@ -1452,7 +1472,6 @@ namespace isc { namespace agent { code. */ if (false) goto yyerrorlab; - yyerror_range[1].location = yystack_[yylen - 1].location; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); @@ -1526,8 +1545,7 @@ namespace isc { namespace agent { } 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. if (!yyla.empty ()) @@ -1545,7 +1563,7 @@ namespace isc { namespace agent { void AgentParser::error (const syntax_error& yyexc) { - error (yyexc.location, yyexc.what()); + error (yyexc.location, yyexc.what ()); } // Generate an error message. @@ -1621,12 +1639,13 @@ namespace isc { namespace agent { 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_ } @@ -1936,18 +1955,18 @@ namespace isc { namespace agent { 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 AgentParser::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 << " =", @@ -1956,10 +1975,10 @@ namespace isc { namespace agent { #endif // AGENT_DEBUG -#line 14 "agent_parser.yy" // lalr1.cc:1167 +#line 14 "agent_parser.yy" // lalr1.cc:1163 } } // isc::agent -#line 1962 "agent_parser.cc" // lalr1.cc:1167 -#line 657 "agent_parser.yy" // lalr1.cc:1168 +#line 1981 "agent_parser.cc" // lalr1.cc:1163 +#line 657 "agent_parser.yy" // lalr1.cc:1164 void diff --git a/src/bin/agent/agent_parser.h b/src/bin/agent/agent_parser.h index 921e5ea1a0..da7eb8ce02 100644 --- a/src/bin/agent/agent_parser.h +++ b/src/bin/agent/agent_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,7 +40,7 @@ #ifndef YY_AGENT_AGENT_PARSER_H_INCLUDED # define YY_AGENT_AGENT_PARSER_H_INCLUDED // // "%code requires" blocks. -#line 17 "agent_parser.yy" // lalr1.cc:377 +#line 17 "agent_parser.yy" // lalr1.cc:379 #include #include @@ -51,7 +51,7 @@ using namespace isc::agent; using namespace isc::data; using namespace std; -#line 55 "agent_parser.h" // lalr1.cc:377 +#line 55 "agent_parser.h" // lalr1.cc:379 # include # include // std::abort @@ -134,9 +134,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined AGENT_DEBUG */ -#line 14 "agent_parser.yy" // lalr1.cc:377 +#line 14 "agent_parser.yy" // lalr1.cc:379 namespace isc { namespace agent { -#line 140 "agent_parser.h" // lalr1.cc:377 +#line 140 "agent_parser.h" // lalr1.cc:379 @@ -841,6 +841,8 @@ namespace isc { namespace agent { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); + /// Copy construct. + stack_symbol_type (const stack_symbol_type& that); /// Steal the contents from \a sym to build this. stack_symbol_type (state_type s, symbol_type& sym); /// Assignment, needed by push_back. @@ -869,7 +871,7 @@ namespace isc { namespace agent { void yypush_ (const char* m, state_type s, symbol_type& sym); /// Pop \a n symbols the three stacks. - void yypop_ (unsigned int n = 1); + void yypop_ (unsigned n = 1); /// Constants. enum @@ -928,12 +930,12 @@ namespace isc { namespace agent { 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 }; - const unsigned int user_token_number_max_ = 299; + const unsigned user_token_number_max_ = 299; const token_number_type undef_token_ = 2; - if (static_cast(t) <= yyeof_) + if (static_cast (t) <= yyeof_) return yyeof_; - else if (static_cast (t) <= user_token_number_max_) + else if (static_cast (t) <= user_token_number_max_) return translate_table[t]; else return undef_token_; @@ -947,19 +949,17 @@ namespace isc { namespace agent { // basic_symbol. template - inline AgentParser::basic_symbol::basic_symbol () : value () {} template - inline AgentParser::basic_symbol::basic_symbol (const basic_symbol& other) : Base (other) , value () , location (other.location) { - switch (other.type_get ()) + switch (other.type_get ()) { case 53: // value case 56: // map_value @@ -989,16 +989,14 @@ namespace isc { namespace agent { } - template - inline AgentParser::basic_symbol::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 ()) + switch (this->type_get ()) { case 53: // value case 56: // map_value @@ -1074,14 +1072,12 @@ namespace isc { namespace agent { template - inline AgentParser::basic_symbol::~basic_symbol () { clear (); } template - inline void AgentParser::basic_symbol::clear () { @@ -1096,7 +1092,7 @@ namespace isc { namespace agent { } // Type destructor. - switch (yytype) + switch (yytype) { case 53: // value case 56: // map_value @@ -1128,7 +1124,6 @@ namespace isc { namespace agent { } template - inline bool AgentParser::basic_symbol::empty () const { @@ -1136,12 +1131,11 @@ namespace isc { namespace agent { } template - inline void AgentParser::basic_symbol::move (basic_symbol& s) { - super_type::move(s); - switch (this->type_get ()) + super_type::move (s); + switch (this->type_get ()) { case 53: // value case 56: // map_value @@ -1488,9 +1482,9 @@ namespace isc { namespace agent { } -#line 14 "agent_parser.yy" // lalr1.cc:377 +#line 14 "agent_parser.yy" // lalr1.cc:379 } } // isc::agent -#line 1494 "agent_parser.h" // lalr1.cc:377 +#line 1488 "agent_parser.h" // lalr1.cc:379 diff --git a/src/bin/agent/location.hh b/src/bin/agent/location.hh index c978ea584a..84cd15ed12 100644 --- a/src/bin/agent/location.hh +++ b/src/bin/agent/location.hh @@ -1,9 +1,9 @@ -// Generated 201804111444 -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -41,9 +41,9 @@ # include "position.hh" -#line 14 "agent_parser.yy" // location.cc:296 +#line 14 "agent_parser.yy" // location.cc:292 namespace isc { namespace agent { -#line 46 "location.hh" // location.cc:296 +#line 46 "location.hh" // location.cc:292 /// Abstract a location. class location { @@ -53,30 +53,27 @@ namespace isc { namespace agent { 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; @@ -174,7 +171,7 @@ namespace isc { namespace agent { inline std::basic_ostream& operator<< (std::basic_ostream& 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 @@ -187,7 +184,7 @@ namespace isc { namespace agent { return ostr; } -#line 14 "agent_parser.yy" // location.cc:296 +#line 14 "agent_parser.yy" // location.cc:292 } } // isc::agent -#line 192 "location.hh" // location.cc:296 +#line 189 "location.hh" // location.cc:292 #endif // !YY_AGENT_LOCATION_HH_INCLUDED diff --git a/src/bin/agent/position.hh b/src/bin/agent/position.hh index 4678102783..b6bd2938df 100644 --- a/src/bin/agent/position.hh +++ b/src/bin/agent/position.hh @@ -1,9 +1,9 @@ -// Generated 201804111444 -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Positions for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -51,28 +51,27 @@ # endif # endif -#line 14 "agent_parser.yy" // location.cc:296 +#line 14 "agent_parser.yy" // location.cc:292 namespace isc { namespace agent { -#line 56 "position.hh" // location.cc:296 +#line 56 "position.hh" // location.cc:292 /// Abstract a position. class position { public: /// Construct a position. explicit position (std::string* f = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) : filename (f) , line (l) , column (c) - { - } + {} /// Initialization. void initialize (std::string* fn = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) { filename = fn; line = l; @@ -101,15 +100,15 @@ namespace isc { namespace agent { /// File name to which this position refers. std::string* filename; /// Current line number. - unsigned int line; + unsigned line; /// Current column number. - unsigned int column; + unsigned column; private: /// Compute max(min, lhs+rhs) (provided min <= lhs). - static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return (0 < rhs || -static_cast(rhs) < lhs + return (0 < rhs || -static_cast(rhs) < lhs ? rhs + lhs : min); } @@ -175,7 +174,7 @@ namespace isc { namespace agent { return ostr << pos.line << '.' << pos.column; } -#line 14 "agent_parser.yy" // location.cc:296 +#line 14 "agent_parser.yy" // location.cc:292 } } // isc::agent -#line 180 "position.hh" // location.cc:296 +#line 179 "position.hh" // location.cc:292 #endif // !YY_AGENT_POSITION_HH_INCLUDED diff --git a/src/bin/agent/stack.hh b/src/bin/agent/stack.hh index efca5678c7..d7176d965c 100644 --- a/src/bin/agent/stack.hh +++ b/src/bin/agent/stack.hh @@ -1,9 +1,9 @@ -// Generated 201804111444 -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Stack handling for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -41,9 +41,10 @@ # include -#line 14 "agent_parser.yy" // stack.hh:132 +#line 14 "agent_parser.yy" // stack.hh:131 namespace isc { namespace agent { -#line 46 "stack.hh" // stack.hh:132 +#line 46 "stack.hh" // stack.hh:131 + /// A stack with random access from its top. template > class stack { @@ -58,20 +59,24 @@ namespace isc { namespace agent { seq_.reserve (200); } - stack (unsigned int n) + stack (unsigned n) : seq_ (n) {} - inline + /// Random access. + /// + /// Index 0 returns the topmost element. T& - operator[] (unsigned int i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } - inline + /// Random access. + /// + /// Index 0 returns the topmost element. const T& - operator[] (unsigned int i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -79,7 +84,6 @@ namespace isc { namespace agent { /// Steal the contents of \a t. /// /// Close to move-semantics. - inline void push (T& t) { @@ -87,9 +91,8 @@ namespace isc { namespace agent { operator[](0).move (t); } - inline void - pop (unsigned int n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -101,21 +104,18 @@ namespace isc { namespace agent { 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 { @@ -134,25 +134,24 @@ namespace isc { namespace agent { class slice { public: - slice (const S& stack, unsigned int range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} - inline const T& - operator [] (unsigned int i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - unsigned int range_; + unsigned range_; }; -#line 14 "agent_parser.yy" // stack.hh:132 +#line 14 "agent_parser.yy" // stack.hh:131 } } // isc::agent -#line 156 "stack.hh" // stack.hh:132 +#line 155 "stack.hh" // stack.hh:131 #endif // !YY_AGENT_STACK_HH_INCLUDED diff --git a/src/bin/d2/d2_parser.cc b/src/bin/d2/d2_parser.cc index 11d8cbc5e6..6392737d66 100644 --- a/src/bin/d2/d2_parser.cc +++ b/src/bin/d2/d2_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -35,7 +35,7 @@ // First part of user declarations. -#line 39 "d2_parser.cc" // lalr1.cc:404 +#line 39 "d2_parser.cc" // lalr1.cc:406 # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -49,13 +49,13 @@ // User implementation prologue. -#line 53 "d2_parser.cc" // lalr1.cc:412 +#line 53 "d2_parser.cc" // lalr1.cc:414 // Unqualified %code blocks. -#line 34 "d2_parser.yy" // lalr1.cc:413 +#line 34 "d2_parser.yy" // lalr1.cc:415 #include -#line 59 "d2_parser.cc" // lalr1.cc:413 +#line 59 "d2_parser.cc" // lalr1.cc:415 #ifndef YY_ @@ -106,7 +106,7 @@ { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << std::endl; \ + *yycdebug_ << '\n'; \ } \ } while (false) @@ -125,9 +125,9 @@ #else // !D2_PARSER_DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast (0) +# define YY_STACK_PRINT() static_cast (0) #endif // !D2_PARSER_DEBUG @@ -139,9 +139,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "d2_parser.yy" // lalr1.cc:479 +#line 14 "d2_parser.yy" // lalr1.cc:481 namespace isc { namespace d2 { -#line 145 "d2_parser.cc" // lalr1.cc:479 +#line 145 "d2_parser.cc" // lalr1.cc:481 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -202,24 +202,20 @@ namespace isc { namespace d2 { // by_state. - inline D2Parser::by_state::by_state () : state (empty_state) {} - inline D2Parser::by_state::by_state (const by_state& other) : state (other.state) {} - inline void D2Parser::by_state::clear () { state = empty_state; } - inline void D2Parser::by_state::move (by_state& that) { @@ -227,12 +223,10 @@ namespace isc { namespace d2 { that.clear (); } - inline D2Parser::by_state::by_state (state_type s) : state (s) {} - inline D2Parser::symbol_number_type D2Parser::by_state::type_get () const { @@ -242,16 +236,46 @@ namespace isc { namespace d2 { return yystos_[state]; } - inline D2Parser::stack_symbol_type::stack_symbol_type () {} + D2Parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) + : super_type (that.state, that.location) + { + switch (that.type_get ()) + { + case 68: // value + case 72: // map_value + case 96: // ncr_protocol_value + value.copy< ElementPtr > (that.value); + break; + + case 56: // "boolean" + value.copy< bool > (that.value); + break; + + case 55: // "floating point" + value.copy< double > (that.value); + break; + + case 54: // "integer" + value.copy< int64_t > (that.value); + break; + + case 53: // "constant string" + value.copy< std::string > (that.value); + break; + + default: + break; + } + + } - inline D2Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) : super_type (s, that.location) { - switch (that.type_get ()) + switch (that.type_get ()) { case 68: // value case 72: // map_value @@ -283,12 +307,11 @@ namespace isc { namespace d2 { that.type = empty_symbol; } - inline D2Parser::stack_symbol_type& D2Parser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.type_get ()) + switch (that.type_get ()) { case 68: // value case 72: // map_value @@ -322,7 +345,6 @@ namespace isc { namespace d2 { template - inline void D2Parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -350,51 +372,51 @@ namespace isc { namespace d2 { { case 53: // "constant string" -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } -#line 356 "d2_parser.cc" // lalr1.cc:636 +#line 378 "d2_parser.cc" // lalr1.cc:635 break; case 54: // "integer" -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } -#line 363 "d2_parser.cc" // lalr1.cc:636 +#line 385 "d2_parser.cc" // lalr1.cc:635 break; case 55: // "floating point" -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } -#line 370 "d2_parser.cc" // lalr1.cc:636 +#line 392 "d2_parser.cc" // lalr1.cc:635 break; case 56: // "boolean" -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } -#line 377 "d2_parser.cc" // lalr1.cc:636 +#line 399 "d2_parser.cc" // lalr1.cc:635 break; case 68: // value -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 384 "d2_parser.cc" // lalr1.cc:636 +#line 406 "d2_parser.cc" // lalr1.cc:635 break; case 72: // map_value -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 391 "d2_parser.cc" // lalr1.cc:636 +#line 413 "d2_parser.cc" // lalr1.cc:635 break; case 96: // ncr_protocol_value -#line 111 "d2_parser.yy" // lalr1.cc:636 +#line 111 ""d2_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 398 "d2_parser.cc" // lalr1.cc:636 +#line 420 "d2_parser.cc" // lalr1.cc:635 break; @@ -405,7 +427,6 @@ namespace isc { namespace d2 { } #endif - inline void D2Parser::yypush_ (const char* m, state_type s, symbol_type& sym) { @@ -413,7 +434,6 @@ namespace isc { namespace d2 { yypush_ (m, t); } - inline void D2Parser::yypush_ (const char* m, stack_symbol_type& s) { @@ -422,9 +442,8 @@ namespace isc { namespace d2 { yystack_.push (s); } - inline void - D2Parser::yypop_ (unsigned int n) + D2Parser::yypop_ (unsigned n) { yystack_.pop (n); } @@ -456,7 +475,7 @@ namespace isc { namespace d2 { } #endif // D2_PARSER_DEBUG - inline D2Parser::state_type + D2Parser::state_type D2Parser::yy_lr_goto_state_ (state_type yystate, int yysym) { int yyr = yypgoto_[yysym - yyntokens_] + yystate; @@ -466,13 +485,13 @@ namespace isc { namespace d2 { return yydefgoto_[yysym - yyntokens_]; } - inline bool + bool D2Parser::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } - inline bool + bool D2Parser::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; @@ -503,7 +522,7 @@ namespace isc { namespace d2 { // avoid gratuitous conflicts when merging into the master branch. try { - YYCDEBUG << "Starting parse" << std::endl; + YYCDEBUG << "Starting parse\n"; /* Initialize the stack. The initial state will be set in @@ -515,7 +534,7 @@ namespace isc { namespace d2 { // A new symbol was pushed 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_) @@ -588,11 +607,11 @@ namespace isc { namespace d2 { 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 68: // value case 72: // map_value @@ -621,10 +640,11 @@ namespace isc { namespace d2 { } - // Compute the default @$. + // Default location. { slice slice (yystack_, yylen); YYLLOC_DEFAULT (yylhs.location, slice, yylen); + yyerror_range[1].location = yylhs.location; } // Perform the reduction. @@ -634,281 +654,281 @@ namespace isc { namespace d2 { switch (yyn) { case 2: -#line 120 "d2_parser.yy" // lalr1.cc:859 +#line 120 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 640 "d2_parser.cc" // lalr1.cc:859 +#line 660 "d2_parser.cc" // lalr1.cc:856 break; case 4: -#line 121 "d2_parser.yy" // lalr1.cc:859 +#line 121 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG; } -#line 646 "d2_parser.cc" // lalr1.cc:859 +#line 666 "d2_parser.cc" // lalr1.cc:856 break; case 6: -#line 122 "d2_parser.yy" // lalr1.cc:859 +#line 122 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCPDDNS; } -#line 652 "d2_parser.cc" // lalr1.cc:859 +#line 672 "d2_parser.cc" // lalr1.cc:856 break; case 8: -#line 123 "d2_parser.yy" // lalr1.cc:859 +#line 123 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.TSIG_KEY; } -#line 658 "d2_parser.cc" // lalr1.cc:859 +#line 678 "d2_parser.cc" // lalr1.cc:856 break; case 10: -#line 124 "d2_parser.yy" // lalr1.cc:859 +#line 124 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.TSIG_KEYS; } -#line 664 "d2_parser.cc" // lalr1.cc:859 +#line 684 "d2_parser.cc" // lalr1.cc:856 break; case 12: -#line 125 "d2_parser.yy" // lalr1.cc:859 +#line 125 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DDNS_DOMAIN; } -#line 670 "d2_parser.cc" // lalr1.cc:859 +#line 690 "d2_parser.cc" // lalr1.cc:856 break; case 14: -#line 126 "d2_parser.yy" // lalr1.cc:859 +#line 126 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DDNS_DOMAINS; } -#line 676 "d2_parser.cc" // lalr1.cc:859 +#line 696 "d2_parser.cc" // lalr1.cc:856 break; case 16: -#line 127 "d2_parser.yy" // lalr1.cc:859 +#line 127 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DNS_SERVERS; } -#line 682 "d2_parser.cc" // lalr1.cc:859 +#line 702 "d2_parser.cc" // lalr1.cc:856 break; case 18: -#line 128 "d2_parser.yy" // lalr1.cc:859 +#line 128 "d2_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DNS_SERVERS; } -#line 688 "d2_parser.cc" // lalr1.cc:859 +#line 708 "d2_parser.cc" // lalr1.cc:856 break; case 20: -#line 136 "d2_parser.yy" // lalr1.cc:859 +#line 136 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 694 "d2_parser.cc" // lalr1.cc:859 +#line 714 "d2_parser.cc" // lalr1.cc:856 break; case 21: -#line 137 "d2_parser.yy" // lalr1.cc:859 +#line 137 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } -#line 700 "d2_parser.cc" // lalr1.cc:859 +#line 720 "d2_parser.cc" // lalr1.cc:856 break; case 22: -#line 138 "d2_parser.yy" // lalr1.cc:859 +#line 138 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 706 "d2_parser.cc" // lalr1.cc:859 +#line 726 "d2_parser.cc" // lalr1.cc:856 break; case 23: -#line 139 "d2_parser.yy" // lalr1.cc:859 +#line 139 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 712 "d2_parser.cc" // lalr1.cc:859 +#line 732 "d2_parser.cc" // lalr1.cc:856 break; case 24: -#line 140 "d2_parser.yy" // lalr1.cc:859 +#line 140 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 718 "d2_parser.cc" // lalr1.cc:859 +#line 738 "d2_parser.cc" // lalr1.cc:856 break; case 25: -#line 141 "d2_parser.yy" // lalr1.cc:859 +#line 141 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 724 "d2_parser.cc" // lalr1.cc:859 +#line 744 "d2_parser.cc" // lalr1.cc:856 break; case 26: -#line 142 "d2_parser.yy" // lalr1.cc:859 +#line 142 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 730 "d2_parser.cc" // lalr1.cc:859 +#line 750 "d2_parser.cc" // lalr1.cc:856 break; case 27: -#line 145 "d2_parser.yy" // lalr1.cc:859 +#line 145 "d2_parser.yy" // lalr1.cc:856 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 739 "d2_parser.cc" // lalr1.cc:859 +#line 759 "d2_parser.cc" // lalr1.cc:856 break; case 28: -#line 150 "d2_parser.yy" // lalr1.cc:859 +#line 150 "d2_parser.yy" // lalr1.cc:856 { // 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 750 "d2_parser.cc" // lalr1.cc:859 +#line 770 "d2_parser.cc" // lalr1.cc:856 break; case 29: -#line 155 "d2_parser.yy" // lalr1.cc:859 +#line 155 "d2_parser.yy" // lalr1.cc:856 { // 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 760 "d2_parser.cc" // lalr1.cc:859 +#line 780 "d2_parser.cc" // lalr1.cc:856 break; case 30: -#line 161 "d2_parser.yy" // lalr1.cc:859 +#line 161 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 766 "d2_parser.cc" // lalr1.cc:859 +#line 786 "d2_parser.cc" // lalr1.cc:856 break; case 33: -#line 168 "d2_parser.yy" // lalr1.cc:859 +#line 168 "d2_parser.yy" // lalr1.cc:856 { // map containing a single entry ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 775 "d2_parser.cc" // lalr1.cc:859 +#line 795 "d2_parser.cc" // lalr1.cc:856 break; case 34: -#line 172 "d2_parser.yy" // lalr1.cc:859 +#line 172 "d2_parser.yy" // lalr1.cc:856 { // 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 > ()); } -#line 785 "d2_parser.cc" // lalr1.cc:859 +#line 805 "d2_parser.cc" // lalr1.cc:856 break; case 35: -#line 179 "d2_parser.yy" // lalr1.cc:859 +#line 179 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 794 "d2_parser.cc" // lalr1.cc:859 +#line 814 "d2_parser.cc" // lalr1.cc:856 break; case 36: -#line 182 "d2_parser.yy" // lalr1.cc:859 +#line 182 "d2_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here } -#line 802 "d2_parser.cc" // lalr1.cc:859 +#line 822 "d2_parser.cc" // lalr1.cc:856 break; case 39: -#line 190 "d2_parser.yy" // lalr1.cc:859 +#line 190 "d2_parser.yy" // lalr1.cc:856 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 811 "d2_parser.cc" // lalr1.cc:859 +#line 831 "d2_parser.cc" // lalr1.cc:856 break; case 40: -#line 194 "d2_parser.yy" // lalr1.cc:859 +#line 194 "d2_parser.yy" // lalr1.cc:856 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 820 "d2_parser.cc" // lalr1.cc:859 +#line 840 "d2_parser.cc" // lalr1.cc:856 break; case 41: -#line 205 "d2_parser.yy" // lalr1.cc:859 +#line 205 "d2_parser.yy" // lalr1.cc:856 { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 831 "d2_parser.cc" // lalr1.cc:859 +#line 851 "d2_parser.cc" // lalr1.cc:856 break; case 42: -#line 215 "d2_parser.yy" // lalr1.cc:859 +#line 215 "d2_parser.yy" // lalr1.cc:856 { // 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 842 "d2_parser.cc" // lalr1.cc:859 +#line 862 "d2_parser.cc" // lalr1.cc:856 break; case 43: -#line 220 "d2_parser.yy" // lalr1.cc:859 +#line 220 "d2_parser.yy" // lalr1.cc:856 { // 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 852 "d2_parser.cc" // lalr1.cc:859 +#line 872 "d2_parser.cc" // lalr1.cc:856 break; case 52: -#line 242 "d2_parser.yy" // lalr1.cc:859 +#line 242 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("DhcpDdns", m); ctx.stack_.push_back(m); ctx.enter(ctx.DHCPDDNS); } -#line 863 "d2_parser.cc" // lalr1.cc:859 +#line 883 "d2_parser.cc" // lalr1.cc:856 break; case 53: -#line 247 "d2_parser.yy" // lalr1.cc:859 +#line 247 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 872 "d2_parser.cc" // lalr1.cc:859 +#line 892 "d2_parser.cc" // lalr1.cc:856 break; case 54: -#line 252 "d2_parser.yy" // lalr1.cc:859 +#line 252 "d2_parser.yy" // lalr1.cc:856 { // Parse the dhcpddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 882 "d2_parser.cc" // lalr1.cc:859 +#line 902 "d2_parser.cc" // lalr1.cc:856 break; case 55: -#line 256 "d2_parser.yy" // lalr1.cc:859 +#line 256 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 890 "d2_parser.cc" // lalr1.cc:859 +#line 910 "d2_parser.cc" // lalr1.cc:856 break; case 69: -#line 278 "d2_parser.yy" // lalr1.cc:859 +#line 278 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 898 "d2_parser.cc" // lalr1.cc:859 +#line 918 "d2_parser.cc" // lalr1.cc:856 break; case 70: -#line 280 "d2_parser.yy" // lalr1.cc:859 +#line 280 "d2_parser.yy" // lalr1.cc:856 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", s); ctx.leave(); } -#line 908 "d2_parser.cc" // lalr1.cc:859 +#line 928 "d2_parser.cc" // lalr1.cc:856 break; case 71: -#line 286 "d2_parser.yy" // lalr1.cc:859 +#line 286 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< int64_t > () <= 0 || yystack_[0].value.as< int64_t > () >= 65536 ) { error(yystack_[0].location, "port must be greater than zero but less than 65536"); @@ -916,11 +936,11 @@ namespace isc { namespace d2 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", i); } -#line 920 "d2_parser.cc" // lalr1.cc:859 +#line 940 "d2_parser.cc" // lalr1.cc:856 break; case 72: -#line 294 "d2_parser.yy" // lalr1.cc:859 +#line 294 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< int64_t > () <= 0) { error(yystack_[0].location, "dns-server-timeout must be greater than zero"); @@ -929,66 +949,66 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("dns-server-timeout", i); } } -#line 933 "d2_parser.cc" // lalr1.cc:859 +#line 953 "d2_parser.cc" // lalr1.cc:856 break; case 73: -#line 303 "d2_parser.yy" // lalr1.cc:859 +#line 303 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_PROTOCOL); } -#line 941 "d2_parser.cc" // lalr1.cc:859 +#line 961 "d2_parser.cc" // lalr1.cc:856 break; case 74: -#line 305 "d2_parser.yy" // lalr1.cc:859 +#line 305 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 950 "d2_parser.cc" // lalr1.cc:859 +#line 970 "d2_parser.cc" // lalr1.cc:856 break; case 75: -#line 311 "d2_parser.yy" // lalr1.cc:859 +#line 311 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 956 "d2_parser.cc" // lalr1.cc:859 +#line 976 "d2_parser.cc" // lalr1.cc:856 break; case 76: -#line 312 "d2_parser.yy" // lalr1.cc:859 +#line 312 "d2_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 962 "d2_parser.cc" // lalr1.cc:859 +#line 982 "d2_parser.cc" // lalr1.cc:856 break; case 77: -#line 315 "d2_parser.yy" // lalr1.cc:859 +#line 315 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_FORMAT); } -#line 970 "d2_parser.cc" // lalr1.cc:859 +#line 990 "d2_parser.cc" // lalr1.cc:856 break; case 78: -#line 317 "d2_parser.yy" // lalr1.cc:859 +#line 317 "d2_parser.yy" // lalr1.cc:856 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 980 "d2_parser.cc" // lalr1.cc:859 +#line 1000 "d2_parser.cc" // lalr1.cc:856 break; case 79: -#line 323 "d2_parser.yy" // lalr1.cc:859 +#line 323 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 988 "d2_parser.cc" // lalr1.cc:859 +#line 1008 "d2_parser.cc" // lalr1.cc:856 break; case 80: -#line 325 "d2_parser.yy" // lalr1.cc:859 +#line 325 "d2_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -1011,19 +1031,19 @@ namespace isc { namespace d2 { parent->set("user-context", user_context); ctx.leave(); } -#line 1015 "d2_parser.cc" // lalr1.cc:859 +#line 1035 "d2_parser.cc" // lalr1.cc:856 break; case 81: -#line 348 "d2_parser.yy" // lalr1.cc:859 +#line 348 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1023 "d2_parser.cc" // lalr1.cc:859 +#line 1043 "d2_parser.cc" // lalr1.cc:856 break; case 82: -#line 350 "d2_parser.yy" // lalr1.cc:859 +#line 350 "d2_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -1048,131 +1068,131 @@ namespace isc { namespace d2 { parent->set("user-context", user_context); ctx.leave(); } -#line 1052 "d2_parser.cc" // lalr1.cc:859 +#line 1072 "d2_parser.cc" // lalr1.cc:856 break; case 83: -#line 375 "d2_parser.yy" // lalr1.cc:859 +#line 375 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("forward-ddns", m); ctx.stack_.push_back(m); ctx.enter(ctx.FORWARD_DDNS); } -#line 1063 "d2_parser.cc" // lalr1.cc:859 +#line 1083 "d2_parser.cc" // lalr1.cc:856 break; case 84: -#line 380 "d2_parser.yy" // lalr1.cc:859 +#line 380 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1072 "d2_parser.cc" // lalr1.cc:859 +#line 1092 "d2_parser.cc" // lalr1.cc:856 break; case 85: -#line 385 "d2_parser.yy" // lalr1.cc:859 +#line 385 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reverse-ddns", m); ctx.stack_.push_back(m); ctx.enter(ctx.REVERSE_DDNS); } -#line 1083 "d2_parser.cc" // lalr1.cc:859 +#line 1103 "d2_parser.cc" // lalr1.cc:856 break; case 86: -#line 390 "d2_parser.yy" // lalr1.cc:859 +#line 390 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1092 "d2_parser.cc" // lalr1.cc:859 +#line 1112 "d2_parser.cc" // lalr1.cc:856 break; case 93: -#line 409 "d2_parser.yy" // lalr1.cc:859 +#line 409 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-domains", l); ctx.stack_.push_back(l); ctx.enter(ctx.DDNS_DOMAINS); } -#line 1103 "d2_parser.cc" // lalr1.cc:859 +#line 1123 "d2_parser.cc" // lalr1.cc:856 break; case 94: -#line 414 "d2_parser.yy" // lalr1.cc:859 +#line 414 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1112 "d2_parser.cc" // lalr1.cc:859 +#line 1132 "d2_parser.cc" // lalr1.cc:856 break; case 95: -#line 419 "d2_parser.yy" // lalr1.cc:859 +#line 419 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 1121 "d2_parser.cc" // lalr1.cc:859 +#line 1141 "d2_parser.cc" // lalr1.cc:856 break; case 96: -#line 422 "d2_parser.yy" // lalr1.cc:859 +#line 422 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 1129 "d2_parser.cc" // lalr1.cc:859 +#line 1149 "d2_parser.cc" // lalr1.cc:856 break; case 101: -#line 434 "d2_parser.yy" // lalr1.cc:859 +#line 434 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1139 "d2_parser.cc" // lalr1.cc:859 +#line 1159 "d2_parser.cc" // lalr1.cc:856 break; case 102: -#line 438 "d2_parser.yy" // lalr1.cc:859 +#line 438 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1147 "d2_parser.cc" // lalr1.cc:859 +#line 1167 "d2_parser.cc" // lalr1.cc:856 break; case 103: -#line 442 "d2_parser.yy" // lalr1.cc:859 +#line 442 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1156 "d2_parser.cc" // lalr1.cc:859 +#line 1176 "d2_parser.cc" // lalr1.cc:856 break; case 104: -#line 445 "d2_parser.yy" // lalr1.cc:859 +#line 445 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 1164 "d2_parser.cc" // lalr1.cc:859 +#line 1184 "d2_parser.cc" // lalr1.cc:856 break; case 113: -#line 462 "d2_parser.yy" // lalr1.cc:859 +#line 462 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1172 "d2_parser.cc" // lalr1.cc:859 +#line 1192 "d2_parser.cc" // lalr1.cc:856 break; case 114: -#line 464 "d2_parser.yy" // lalr1.cc:859 +#line 464 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< std::string > () == "") { error(yystack_[1].location, "Ddns domain name cannot be blank"); @@ -1182,110 +1202,110 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1186 "d2_parser.cc" // lalr1.cc:859 +#line 1206 "d2_parser.cc" // lalr1.cc:856 break; case 115: -#line 474 "d2_parser.yy" // lalr1.cc:859 +#line 474 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1194 "d2_parser.cc" // lalr1.cc:859 +#line 1214 "d2_parser.cc" // lalr1.cc:856 break; case 116: -#line 476 "d2_parser.yy" // lalr1.cc:859 +#line 476 "d2_parser.yy" // lalr1.cc:856 { ElementPtr elem(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("key-name", name); ctx.leave(); } -#line 1205 "d2_parser.cc" // lalr1.cc:859 +#line 1225 "d2_parser.cc" // lalr1.cc:856 break; case 117: -#line 486 "d2_parser.yy" // lalr1.cc:859 +#line 486 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dns-servers", l); ctx.stack_.push_back(l); ctx.enter(ctx.DNS_SERVERS); } -#line 1216 "d2_parser.cc" // lalr1.cc:859 +#line 1236 "d2_parser.cc" // lalr1.cc:856 break; case 118: -#line 491 "d2_parser.yy" // lalr1.cc:859 +#line 491 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1225 "d2_parser.cc" // lalr1.cc:859 +#line 1245 "d2_parser.cc" // lalr1.cc:856 break; case 119: -#line 496 "d2_parser.yy" // lalr1.cc:859 +#line 496 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 1234 "d2_parser.cc" // lalr1.cc:859 +#line 1254 "d2_parser.cc" // lalr1.cc:856 break; case 120: -#line 499 "d2_parser.yy" // lalr1.cc:859 +#line 499 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 1242 "d2_parser.cc" // lalr1.cc:859 +#line 1262 "d2_parser.cc" // lalr1.cc:856 break; case 123: -#line 507 "d2_parser.yy" // lalr1.cc:859 +#line 507 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1252 "d2_parser.cc" // lalr1.cc:859 +#line 1272 "d2_parser.cc" // lalr1.cc:856 break; case 124: -#line 511 "d2_parser.yy" // lalr1.cc:859 +#line 511 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1260 "d2_parser.cc" // lalr1.cc:859 +#line 1280 "d2_parser.cc" // lalr1.cc:856 break; case 125: -#line 515 "d2_parser.yy" // lalr1.cc:859 +#line 515 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1269 "d2_parser.cc" // lalr1.cc:859 +#line 1289 "d2_parser.cc" // lalr1.cc:856 break; case 126: -#line 518 "d2_parser.yy" // lalr1.cc:859 +#line 518 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 1277 "d2_parser.cc" // lalr1.cc:859 +#line 1297 "d2_parser.cc" // lalr1.cc:856 break; case 135: -#line 534 "d2_parser.yy" // lalr1.cc:859 +#line 534 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1285 "d2_parser.cc" // lalr1.cc:859 +#line 1305 "d2_parser.cc" // lalr1.cc:856 break; case 136: -#line 536 "d2_parser.yy" // lalr1.cc:859 +#line 536 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< std::string > () != "") { error(yystack_[1].location, "hostname is not yet supported"); @@ -1295,29 +1315,29 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("hostname", name); ctx.leave(); } -#line 1299 "d2_parser.cc" // lalr1.cc:859 +#line 1319 "d2_parser.cc" // lalr1.cc:856 break; case 137: -#line 546 "d2_parser.yy" // lalr1.cc:859 +#line 546 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1307 "d2_parser.cc" // lalr1.cc:859 +#line 1327 "d2_parser.cc" // lalr1.cc:856 break; case 138: -#line 548 "d2_parser.yy" // lalr1.cc:859 +#line 548 "d2_parser.yy" // lalr1.cc:856 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", s); ctx.leave(); } -#line 1317 "d2_parser.cc" // lalr1.cc:859 +#line 1337 "d2_parser.cc" // lalr1.cc:856 break; case 139: -#line 554 "d2_parser.yy" // lalr1.cc:859 +#line 554 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< int64_t > () <= 0 || yystack_[0].value.as< int64_t > () >= 65536 ) { error(yystack_[0].location, "port must be greater than zero but less than 65536"); @@ -1325,92 +1345,92 @@ namespace isc { namespace d2 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", i); } -#line 1329 "d2_parser.cc" // lalr1.cc:859 +#line 1349 "d2_parser.cc" // lalr1.cc:856 break; case 140: -#line 568 "d2_parser.yy" // lalr1.cc:859 +#line 568 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tsig-keys", l); ctx.stack_.push_back(l); ctx.enter(ctx.TSIG_KEYS); } -#line 1340 "d2_parser.cc" // lalr1.cc:859 +#line 1360 "d2_parser.cc" // lalr1.cc:856 break; case 141: -#line 573 "d2_parser.yy" // lalr1.cc:859 +#line 573 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1349 "d2_parser.cc" // lalr1.cc:859 +#line 1369 "d2_parser.cc" // lalr1.cc:856 break; case 142: -#line 578 "d2_parser.yy" // lalr1.cc:859 +#line 578 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 1358 "d2_parser.cc" // lalr1.cc:859 +#line 1378 "d2_parser.cc" // lalr1.cc:856 break; case 143: -#line 581 "d2_parser.yy" // lalr1.cc:859 +#line 581 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 1366 "d2_parser.cc" // lalr1.cc:859 +#line 1386 "d2_parser.cc" // lalr1.cc:856 break; case 148: -#line 593 "d2_parser.yy" // lalr1.cc:859 +#line 593 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1376 "d2_parser.cc" // lalr1.cc:859 +#line 1396 "d2_parser.cc" // lalr1.cc:856 break; case 149: -#line 597 "d2_parser.yy" // lalr1.cc:859 +#line 597 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1384 "d2_parser.cc" // lalr1.cc:859 +#line 1404 "d2_parser.cc" // lalr1.cc:856 break; case 150: -#line 601 "d2_parser.yy" // lalr1.cc:859 +#line 601 "d2_parser.yy" // lalr1.cc:856 { // Parse tsig key list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1394 "d2_parser.cc" // lalr1.cc:859 +#line 1414 "d2_parser.cc" // lalr1.cc:856 break; case 151: -#line 605 "d2_parser.yy" // lalr1.cc:859 +#line 605 "d2_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 1402 "d2_parser.cc" // lalr1.cc:859 +#line 1422 "d2_parser.cc" // lalr1.cc:856 break; case 161: -#line 623 "d2_parser.yy" // lalr1.cc:859 +#line 623 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1410 "d2_parser.cc" // lalr1.cc:859 +#line 1430 "d2_parser.cc" // lalr1.cc:856 break; case 162: -#line 625 "d2_parser.yy" // lalr1.cc:859 +#line 625 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< std::string > () == "") { error(yystack_[1].location, "TSIG key name cannot be blank"); @@ -1420,19 +1440,19 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1424 "d2_parser.cc" // lalr1.cc:859 +#line 1444 "d2_parser.cc" // lalr1.cc:856 break; case 163: -#line 635 "d2_parser.yy" // lalr1.cc:859 +#line 635 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1432 "d2_parser.cc" // lalr1.cc:859 +#line 1452 "d2_parser.cc" // lalr1.cc:856 break; case 164: -#line 637 "d2_parser.yy" // lalr1.cc:859 +#line 637 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< std::string > () == "") { error(yystack_[1].location, "TSIG key algorithm cannot be blank"); @@ -1441,11 +1461,11 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("algorithm", elem); ctx.leave(); } -#line 1445 "d2_parser.cc" // lalr1.cc:859 +#line 1465 "d2_parser.cc" // lalr1.cc:856 break; case 165: -#line 646 "d2_parser.yy" // lalr1.cc:859 +#line 646 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< int64_t > () < 0 || (yystack_[0].value.as< int64_t > () > 0 && (yystack_[0].value.as< int64_t > () % 8 != 0))) { error(yystack_[0].location, "TSIG key digest-bits must either be zero or a positive, multiple of eight"); @@ -1453,19 +1473,19 @@ namespace isc { namespace d2 { ElementPtr elem(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("digest-bits", elem); } -#line 1457 "d2_parser.cc" // lalr1.cc:859 +#line 1477 "d2_parser.cc" // lalr1.cc:856 break; case 166: -#line 654 "d2_parser.yy" // lalr1.cc:859 +#line 654 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1465 "d2_parser.cc" // lalr1.cc:859 +#line 1485 "d2_parser.cc" // lalr1.cc:856 break; case 167: -#line 656 "d2_parser.yy" // lalr1.cc:859 +#line 656 "d2_parser.yy" // lalr1.cc:856 { if (yystack_[0].value.as< std::string > () == "") { error(yystack_[1].location, "TSIG key secret cannot be blank"); @@ -1474,248 +1494,248 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("secret", elem); ctx.leave(); } -#line 1478 "d2_parser.cc" // lalr1.cc:859 +#line 1498 "d2_parser.cc" // lalr1.cc:856 break; case 168: -#line 669 "d2_parser.yy" // lalr1.cc:859 +#line 669 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1486 "d2_parser.cc" // lalr1.cc:859 +#line 1506 "d2_parser.cc" // lalr1.cc:856 break; case 169: -#line 671 "d2_parser.yy" // lalr1.cc:859 +#line 671 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1495 "d2_parser.cc" // lalr1.cc:859 +#line 1515 "d2_parser.cc" // lalr1.cc:856 break; case 170: -#line 676 "d2_parser.yy" // lalr1.cc:859 +#line 676 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1503 "d2_parser.cc" // lalr1.cc:859 +#line 1523 "d2_parser.cc" // lalr1.cc:856 break; case 171: -#line 678 "d2_parser.yy" // lalr1.cc:859 +#line 678 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1512 "d2_parser.cc" // lalr1.cc:859 +#line 1532 "d2_parser.cc" // lalr1.cc:856 break; case 172: -#line 683 "d2_parser.yy" // lalr1.cc:859 +#line 683 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1520 "d2_parser.cc" // lalr1.cc:859 +#line 1540 "d2_parser.cc" // lalr1.cc:856 break; case 173: -#line 685 "d2_parser.yy" // lalr1.cc:859 +#line 685 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1529 "d2_parser.cc" // lalr1.cc:859 +#line 1549 "d2_parser.cc" // lalr1.cc:856 break; case 174: -#line 695 "d2_parser.yy" // lalr1.cc:859 +#line 695 "d2_parser.yy" // lalr1.cc:856 { 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 1540 "d2_parser.cc" // lalr1.cc:859 +#line 1560 "d2_parser.cc" // lalr1.cc:856 break; case 175: -#line 700 "d2_parser.yy" // lalr1.cc:859 +#line 700 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1549 "d2_parser.cc" // lalr1.cc:859 +#line 1569 "d2_parser.cc" // lalr1.cc:856 break; case 179: -#line 717 "d2_parser.yy" // lalr1.cc:859 +#line 717 "d2_parser.yy" // lalr1.cc:856 { 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 1560 "d2_parser.cc" // lalr1.cc:859 +#line 1580 "d2_parser.cc" // lalr1.cc:856 break; case 180: -#line 722 "d2_parser.yy" // lalr1.cc:859 +#line 722 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1569 "d2_parser.cc" // lalr1.cc:859 +#line 1589 "d2_parser.cc" // lalr1.cc:856 break; case 183: -#line 734 "d2_parser.yy" // lalr1.cc:859 +#line 734 "d2_parser.yy" // lalr1.cc:856 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 1579 "d2_parser.cc" // lalr1.cc:859 +#line 1599 "d2_parser.cc" // lalr1.cc:856 break; case 184: -#line 738 "d2_parser.yy" // lalr1.cc:859 +#line 738 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1587 "d2_parser.cc" // lalr1.cc:859 +#line 1607 "d2_parser.cc" // lalr1.cc:856 break; case 194: -#line 755 "d2_parser.yy" // lalr1.cc:859 +#line 755 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1595 "d2_parser.cc" // lalr1.cc:859 +#line 1615 "d2_parser.cc" // lalr1.cc:856 break; case 195: -#line 757 "d2_parser.yy" // lalr1.cc:859 +#line 757 "d2_parser.yy" // lalr1.cc:856 { ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1605 "d2_parser.cc" // lalr1.cc:859 +#line 1625 "d2_parser.cc" // lalr1.cc:856 break; case 196: -#line 763 "d2_parser.yy" // lalr1.cc:859 +#line 763 "d2_parser.yy" // lalr1.cc:856 { ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 1614 "d2_parser.cc" // lalr1.cc:859 +#line 1634 "d2_parser.cc" // lalr1.cc:856 break; case 197: -#line 767 "d2_parser.yy" // lalr1.cc:859 +#line 767 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1622 "d2_parser.cc" // lalr1.cc:859 +#line 1642 "d2_parser.cc" // lalr1.cc:856 break; case 198: -#line 769 "d2_parser.yy" // lalr1.cc:859 +#line 769 "d2_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 1632 "d2_parser.cc" // lalr1.cc:859 +#line 1652 "d2_parser.cc" // lalr1.cc:856 break; case 199: -#line 775 "d2_parser.yy" // lalr1.cc:859 +#line 775 "d2_parser.yy" // lalr1.cc:856 { 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 1643 "d2_parser.cc" // lalr1.cc:859 +#line 1663 "d2_parser.cc" // lalr1.cc:856 break; case 200: -#line 780 "d2_parser.yy" // lalr1.cc:859 +#line 780 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1652 "d2_parser.cc" // lalr1.cc:859 +#line 1672 "d2_parser.cc" // lalr1.cc:856 break; case 203: -#line 789 "d2_parser.yy" // lalr1.cc:859 +#line 789 "d2_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1662 "d2_parser.cc" // lalr1.cc:859 +#line 1682 "d2_parser.cc" // lalr1.cc:856 break; case 204: -#line 793 "d2_parser.yy" // lalr1.cc:859 +#line 793 "d2_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1670 "d2_parser.cc" // lalr1.cc:859 +#line 1690 "d2_parser.cc" // lalr1.cc:856 break; case 211: -#line 807 "d2_parser.yy" // lalr1.cc:859 +#line 807 "d2_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1678 "d2_parser.cc" // lalr1.cc:859 +#line 1698 "d2_parser.cc" // lalr1.cc:856 break; case 212: -#line 809 "d2_parser.yy" // lalr1.cc:859 +#line 809 "d2_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 1688 "d2_parser.cc" // lalr1.cc:859 +#line 1708 "d2_parser.cc" // lalr1.cc:856 break; case 213: -#line 815 "d2_parser.yy" // lalr1.cc:859 +#line 815 "d2_parser.yy" // lalr1.cc:856 { ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 1697 "d2_parser.cc" // lalr1.cc:859 +#line 1717 "d2_parser.cc" // lalr1.cc:856 break; case 214: -#line 820 "d2_parser.yy" // lalr1.cc:859 +#line 820 "d2_parser.yy" // lalr1.cc:856 { ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 1706 "d2_parser.cc" // lalr1.cc:859 +#line 1726 "d2_parser.cc" // lalr1.cc:856 break; case 215: -#line 825 "d2_parser.yy" // lalr1.cc:859 +#line 825 "d2_parser.yy" // lalr1.cc:856 { ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 1715 "d2_parser.cc" // lalr1.cc:859 +#line 1735 "d2_parser.cc" // lalr1.cc:856 break; -#line 1719 "d2_parser.cc" // lalr1.cc:859 +#line 1739 "d2_parser.cc" // lalr1.cc:856 default: break; } @@ -1777,7 +1797,6 @@ namespace isc { namespace d2 { code. */ if (false) goto yyerrorlab; - yyerror_range[1].location = yystack_[yylen - 1].location; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); @@ -1851,8 +1870,7 @@ namespace isc { namespace d2 { } 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. if (!yyla.empty ()) @@ -1870,7 +1888,7 @@ namespace isc { namespace d2 { void D2Parser::error (const syntax_error& yyexc) { - error (yyexc.location, yyexc.what()); + error (yyexc.location, yyexc.what ()); } // Generate an error message. @@ -1946,12 +1964,13 @@ namespace isc { namespace d2 { 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_ } @@ -2347,18 +2366,18 @@ namespace isc { namespace d2 { 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 D2Parser::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 << " =", @@ -2367,10 +2386,10 @@ namespace isc { namespace d2 { #endif // D2_PARSER_DEBUG -#line 14 "d2_parser.yy" // lalr1.cc:1167 +#line 14 "d2_parser.yy" // lalr1.cc:1163 } } // isc::d2 -#line 2373 "d2_parser.cc" // lalr1.cc:1167 -#line 830 "d2_parser.yy" // lalr1.cc:1168 +#line 2392 "d2_parser.cc" // lalr1.cc:1163 +#line 830 "d2_parser.yy" // lalr1.cc:1164 void diff --git a/src/bin/d2/d2_parser.h b/src/bin/d2/d2_parser.h index 41df8d11ba..ec28c68280 100644 --- a/src/bin/d2/d2_parser.h +++ b/src/bin/d2/d2_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,7 +40,7 @@ #ifndef YY_D2_PARSER_D2_PARSER_H_INCLUDED # define YY_D2_PARSER_D2_PARSER_H_INCLUDED // // "%code requires" blocks. -#line 17 "d2_parser.yy" // lalr1.cc:377 +#line 17 "d2_parser.yy" // lalr1.cc:379 #include #include @@ -52,7 +52,7 @@ using namespace isc::d2; using namespace isc::data; using namespace std; -#line 56 "d2_parser.h" // lalr1.cc:377 +#line 56 "d2_parser.h" // lalr1.cc:379 # include # include // std::abort @@ -135,9 +135,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined D2_PARSER_DEBUG */ -#line 14 "d2_parser.yy" // lalr1.cc:377 +#line 14 "d2_parser.yy" // lalr1.cc:379 namespace isc { namespace d2 { -#line 141 "d2_parser.h" // lalr1.cc:377 +#line 141 "d2_parser.h" // lalr1.cc:379 @@ -902,6 +902,8 @@ namespace isc { namespace d2 { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); + /// Copy construct. + stack_symbol_type (const stack_symbol_type& that); /// Steal the contents from \a sym to build this. stack_symbol_type (state_type s, symbol_type& sym); /// Assignment, needed by push_back. @@ -930,7 +932,7 @@ namespace isc { namespace d2 { void yypush_ (const char* m, state_type s, symbol_type& sym); /// Pop \a n symbols the three stacks. - void yypop_ (unsigned int n = 1); + void yypop_ (unsigned n = 1); /// Constants. enum @@ -991,12 +993,12 @@ namespace isc { namespace d2 { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 }; - const unsigned int user_token_number_max_ = 311; + const unsigned user_token_number_max_ = 311; const token_number_type undef_token_ = 2; - if (static_cast(t) <= yyeof_) + if (static_cast (t) <= yyeof_) return yyeof_; - else if (static_cast (t) <= user_token_number_max_) + else if (static_cast (t) <= user_token_number_max_) return translate_table[t]; else return undef_token_; @@ -1010,19 +1012,17 @@ namespace isc { namespace d2 { // basic_symbol. template - inline D2Parser::basic_symbol::basic_symbol () : value () {} template - inline D2Parser::basic_symbol::basic_symbol (const basic_symbol& other) : Base (other) , value () , location (other.location) { - switch (other.type_get ()) + switch (other.type_get ()) { case 68: // value case 72: // map_value @@ -1052,16 +1052,14 @@ namespace isc { namespace d2 { } - template - inline D2Parser::basic_symbol::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 ()) + switch (this->type_get ()) { case 68: // value case 72: // map_value @@ -1137,14 +1135,12 @@ namespace isc { namespace d2 { template - inline D2Parser::basic_symbol::~basic_symbol () { clear (); } template - inline void D2Parser::basic_symbol::clear () { @@ -1159,7 +1155,7 @@ namespace isc { namespace d2 { } // Type destructor. - switch (yytype) + switch (yytype) { case 68: // value case 72: // map_value @@ -1191,7 +1187,6 @@ namespace isc { namespace d2 { } template - inline bool D2Parser::basic_symbol::empty () const { @@ -1199,12 +1194,11 @@ namespace isc { namespace d2 { } template - inline void D2Parser::basic_symbol::move (basic_symbol& s) { - super_type::move(s); - switch (this->type_get ()) + super_type::move (s); + switch (this->type_get ()) { case 68: // value case 72: // map_value @@ -1624,9 +1618,9 @@ namespace isc { namespace d2 { } -#line 14 "d2_parser.yy" // lalr1.cc:377 +#line 14 "d2_parser.yy" // lalr1.cc:379 } } // isc::d2 -#line 1630 "d2_parser.h" // lalr1.cc:377 +#line 1624 "d2_parser.h" // lalr1.cc:379 diff --git a/src/bin/d2/location.hh b/src/bin/d2/location.hh index e91f42fc4c..8d1b3db903 100644 --- a/src/bin/d2/location.hh +++ b/src/bin/d2/location.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,9 +41,9 @@ # include "position.hh" -#line 14 "d2_parser.yy" // location.cc:296 +#line 14 "d2_parser.yy" // location.cc:292 namespace isc { namespace d2 { -#line 46 "location.hh" // location.cc:296 +#line 46 "location.hh" // location.cc:292 /// Abstract a location. class location { @@ -52,30 +53,27 @@ namespace isc { namespace d2 { 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; @@ -173,7 +171,7 @@ namespace isc { namespace d2 { inline std::basic_ostream& operator<< (std::basic_ostream& 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 @@ -186,7 +184,7 @@ namespace isc { namespace d2 { return ostr; } -#line 14 "d2_parser.yy" // location.cc:296 +#line 14 "d2_parser.yy" // location.cc:292 } } // isc::d2 -#line 192 "location.hh" // location.cc:296 +#line 189 "location.hh" // location.cc:292 #endif // !YY_D2_PARSER_LOCATION_HH_INCLUDED diff --git a/src/bin/d2/position.hh b/src/bin/d2/position.hh index 1ba4edcffe..494155a8b1 100644 --- a/src/bin/d2/position.hh +++ b/src/bin/d2/position.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Positions for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -50,28 +51,27 @@ # endif # endif -#line 14 "d2_parser.yy" // location.cc:296 +#line 14 "d2_parser.yy" // location.cc:292 namespace isc { namespace d2 { -#line 56 "position.hh" // location.cc:296 +#line 56 "position.hh" // location.cc:292 /// Abstract a position. class position { public: /// Construct a position. explicit position (std::string* f = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) : filename (f) , line (l) , column (c) - { - } + {} /// Initialization. void initialize (std::string* fn = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) { filename = fn; line = l; @@ -100,15 +100,15 @@ namespace isc { namespace d2 { /// File name to which this position refers. std::string* filename; /// Current line number. - unsigned int line; + unsigned line; /// Current column number. - unsigned int column; + unsigned column; private: /// Compute max(min, lhs+rhs) (provided min <= lhs). - static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return (0 < rhs || -static_cast(rhs) < lhs + return (0 < rhs || -static_cast(rhs) < lhs ? rhs + lhs : min); } @@ -174,7 +174,7 @@ namespace isc { namespace d2 { return ostr << pos.line << '.' << pos.column; } -#line 14 "d2_parser.yy" // location.cc:296 +#line 14 "d2_parser.yy" // location.cc:292 } } // isc::d2 -#line 180 "position.hh" // location.cc:296 +#line 179 "position.hh" // location.cc:292 #endif // !YY_D2_PARSER_POSITION_HH_INCLUDED diff --git a/src/bin/d2/stack.hh b/src/bin/d2/stack.hh index 770196b000..76e48d75ff 100644 --- a/src/bin/d2/stack.hh +++ b/src/bin/d2/stack.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Stack handling for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,9 +41,10 @@ # include -#line 14 "d2_parser.yy" // stack.hh:132 +#line 14 "d2_parser.yy" // stack.hh:131 namespace isc { namespace d2 { -#line 46 "stack.hh" // stack.hh:132 +#line 46 "stack.hh" // stack.hh:131 + /// A stack with random access from its top. template > class stack { @@ -57,20 +59,24 @@ namespace isc { namespace d2 { seq_.reserve (200); } - stack (unsigned int n) + stack (unsigned n) : seq_ (n) {} - inline + /// Random access. + /// + /// Index 0 returns the topmost element. T& - operator[] (unsigned int i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } - inline + /// Random access. + /// + /// Index 0 returns the topmost element. const T& - operator[] (unsigned int i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -78,7 +84,6 @@ namespace isc { namespace d2 { /// Steal the contents of \a t. /// /// Close to move-semantics. - inline void push (T& t) { @@ -86,9 +91,8 @@ namespace isc { namespace d2 { operator[](0).move (t); } - inline void - pop (unsigned int n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -100,21 +104,18 @@ namespace isc { namespace d2 { 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 { @@ -133,25 +134,24 @@ namespace isc { namespace d2 { class slice { public: - slice (const S& stack, unsigned int range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} - inline const T& - operator [] (unsigned int i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - unsigned int range_; + unsigned range_; }; -#line 14 "d2_parser.yy" // stack.hh:132 +#line 14 "d2_parser.yy" // stack.hh:131 } } // isc::d2 -#line 156 "stack.hh" // stack.hh:132 +#line 155 "stack.hh" // stack.hh:131 #endif // !YY_D2_PARSER_STACK_HH_INCLUDED diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index 3f883f5bcf..7ef5d214e5 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -35,7 +35,7 @@ // First part of user declarations. -#line 39 "dhcp4_parser.cc" // lalr1.cc:404 +#line 39 "dhcp4_parser.cc" // lalr1.cc:406 # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -49,13 +49,13 @@ // User implementation prologue. -#line 53 "dhcp4_parser.cc" // lalr1.cc:412 +#line 53 "dhcp4_parser.cc" // lalr1.cc:414 // Unqualified %code blocks. -#line 34 "dhcp4_parser.yy" // lalr1.cc:413 +#line 34 "dhcp4_parser.yy" // lalr1.cc:415 #include -#line 59 "dhcp4_parser.cc" // lalr1.cc:413 +#line 59 "dhcp4_parser.cc" // lalr1.cc:415 #ifndef YY_ @@ -106,7 +106,7 @@ { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << std::endl; \ + *yycdebug_ << '\n'; \ } \ } while (false) @@ -125,9 +125,9 @@ #else // !PARSER4_DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast (0) +# define YY_STACK_PRINT() static_cast (0) #endif // !PARSER4_DEBUG @@ -139,9 +139,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "dhcp4_parser.yy" // lalr1.cc:479 +#line 14 "dhcp4_parser.yy" // lalr1.cc:481 namespace isc { namespace dhcp { -#line 145 "dhcp4_parser.cc" // lalr1.cc:479 +#line 145 "dhcp4_parser.cc" // lalr1.cc:481 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -202,24 +202,20 @@ namespace isc { namespace dhcp { // by_state. - inline Dhcp4Parser::by_state::by_state () : state (empty_state) {} - inline Dhcp4Parser::by_state::by_state (const by_state& other) : state (other.state) {} - inline void Dhcp4Parser::by_state::clear () { state = empty_state; } - inline void Dhcp4Parser::by_state::move (by_state& that) { @@ -227,12 +223,10 @@ namespace isc { namespace dhcp { that.clear (); } - inline Dhcp4Parser::by_state::by_state (state_type s) : state (s) {} - inline Dhcp4Parser::symbol_number_type Dhcp4Parser::by_state::type_get () const { @@ -242,16 +236,51 @@ namespace isc { namespace dhcp { return yystos_[state]; } - inline Dhcp4Parser::stack_symbol_type::stack_symbol_type () {} + Dhcp4Parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) + : super_type (that.state, that.location) + { + switch (that.type_get ()) + { + case 186: // value + case 190: // map_value + case 231: // socket_type + case 234: // outbound_interface_value + case 256: // db_type + case 338: // hr_mode + case 487: // ncr_protocol_value + case 495: // replace_client_name_value + value.copy< ElementPtr > (that.value); + break; + + case 169: // "boolean" + value.copy< bool > (that.value); + break; + + case 168: // "floating point" + value.copy< double > (that.value); + break; + + case 167: // "integer" + value.copy< int64_t > (that.value); + break; + + case 166: // "constant string" + value.copy< std::string > (that.value); + break; + + default: + break; + } + + } - inline Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) : super_type (s, that.location) { - switch (that.type_get ()) + switch (that.type_get ()) { case 186: // value case 190: // map_value @@ -288,12 +317,11 @@ namespace isc { namespace dhcp { that.type = empty_symbol; } - inline Dhcp4Parser::stack_symbol_type& Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.type_get ()) + switch (that.type_get ()) { case 186: // value case 190: // map_value @@ -332,7 +360,6 @@ namespace isc { namespace dhcp { template - inline void Dhcp4Parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -360,86 +387,86 @@ namespace isc { namespace dhcp { { case 166: // "constant string" -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } -#line 366 "dhcp4_parser.cc" // lalr1.cc:636 +#line 393 "dhcp4_parser.cc" // lalr1.cc:635 break; case 167: // "integer" -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } -#line 373 "dhcp4_parser.cc" // lalr1.cc:636 +#line 400 "dhcp4_parser.cc" // lalr1.cc:635 break; case 168: // "floating point" -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } -#line 380 "dhcp4_parser.cc" // lalr1.cc:636 +#line 407 "dhcp4_parser.cc" // lalr1.cc:635 break; case 169: // "boolean" -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } -#line 387 "dhcp4_parser.cc" // lalr1.cc:636 +#line 414 "dhcp4_parser.cc" // lalr1.cc:635 break; case 186: // value -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 394 "dhcp4_parser.cc" // lalr1.cc:636 +#line 421 "dhcp4_parser.cc" // lalr1.cc:635 break; case 190: // map_value -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 401 "dhcp4_parser.cc" // lalr1.cc:636 +#line 428 "dhcp4_parser.cc" // lalr1.cc:635 break; case 231: // socket_type -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 408 "dhcp4_parser.cc" // lalr1.cc:636 +#line 435 "dhcp4_parser.cc" // lalr1.cc:635 break; case 234: // outbound_interface_value -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 415 "dhcp4_parser.cc" // lalr1.cc:636 +#line 442 "dhcp4_parser.cc" // lalr1.cc:635 break; case 256: // db_type -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 422 "dhcp4_parser.cc" // lalr1.cc:636 +#line 449 "dhcp4_parser.cc" // lalr1.cc:635 break; case 338: // hr_mode -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 429 "dhcp4_parser.cc" // lalr1.cc:636 +#line 456 "dhcp4_parser.cc" // lalr1.cc:635 break; case 487: // ncr_protocol_value -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 436 "dhcp4_parser.cc" // lalr1.cc:636 +#line 463 "dhcp4_parser.cc" // lalr1.cc:635 break; case 495: // replace_client_name_value -#line 246 "dhcp4_parser.yy" // lalr1.cc:636 +#line 246 ""dhcp4_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 443 "dhcp4_parser.cc" // lalr1.cc:636 +#line 470 "dhcp4_parser.cc" // lalr1.cc:635 break; @@ -450,7 +477,6 @@ namespace isc { namespace dhcp { } #endif - inline void Dhcp4Parser::yypush_ (const char* m, state_type s, symbol_type& sym) { @@ -458,7 +484,6 @@ namespace isc { namespace dhcp { yypush_ (m, t); } - inline void Dhcp4Parser::yypush_ (const char* m, stack_symbol_type& s) { @@ -467,9 +492,8 @@ namespace isc { namespace dhcp { yystack_.push (s); } - inline void - Dhcp4Parser::yypop_ (unsigned int n) + Dhcp4Parser::yypop_ (unsigned n) { yystack_.pop (n); } @@ -501,7 +525,7 @@ namespace isc { namespace dhcp { } #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; @@ -511,13 +535,13 @@ namespace isc { namespace dhcp { 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_; @@ -548,7 +572,7 @@ namespace isc { namespace dhcp { // avoid gratuitous conflicts when merging into the master branch. try { - YYCDEBUG << "Starting parse" << std::endl; + YYCDEBUG << "Starting parse\n"; /* Initialize the stack. The initial state will be set in @@ -560,7 +584,7 @@ namespace isc { namespace dhcp { // A new symbol was pushed 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_) @@ -633,11 +657,11 @@ namespace isc { namespace dhcp { 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 186: // value case 190: // map_value @@ -671,10 +695,11 @@ namespace isc { namespace dhcp { } - // Compute the default @$. + // Default location. { slice slice (yystack_, yylen); YYLLOC_DEFAULT (yylhs.location, slice, yylen); + yyerror_range[1].location = yylhs.location; } // Perform the reduction. @@ -684,280 +709,280 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: -#line 255 "dhcp4_parser.yy" // lalr1.cc:859 +#line 255 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 690 "dhcp4_parser.cc" // lalr1.cc:859 +#line 715 "dhcp4_parser.cc" // lalr1.cc:856 break; case 4: -#line 256 "dhcp4_parser.yy" // lalr1.cc:859 +#line 256 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG; } -#line 696 "dhcp4_parser.cc" // lalr1.cc:859 +#line 721 "dhcp4_parser.cc" // lalr1.cc:856 break; case 6: -#line 257 "dhcp4_parser.yy" // lalr1.cc:859 +#line 257 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP4; } -#line 702 "dhcp4_parser.cc" // lalr1.cc:859 +#line 727 "dhcp4_parser.cc" // lalr1.cc:856 break; case 8: -#line 258 "dhcp4_parser.yy" // lalr1.cc:859 +#line 258 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 708 "dhcp4_parser.cc" // lalr1.cc:859 +#line 733 "dhcp4_parser.cc" // lalr1.cc:856 break; case 10: -#line 259 "dhcp4_parser.yy" // lalr1.cc:859 +#line 259 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.SUBNET4; } -#line 714 "dhcp4_parser.cc" // lalr1.cc:859 +#line 739 "dhcp4_parser.cc" // lalr1.cc:856 break; case 12: -#line 260 "dhcp4_parser.yy" // lalr1.cc:859 +#line 260 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.POOLS; } -#line 720 "dhcp4_parser.cc" // lalr1.cc:859 +#line 745 "dhcp4_parser.cc" // lalr1.cc:856 break; case 14: -#line 261 "dhcp4_parser.yy" // lalr1.cc:859 +#line 261 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.RESERVATIONS; } -#line 726 "dhcp4_parser.cc" // lalr1.cc:859 +#line 751 "dhcp4_parser.cc" // lalr1.cc:856 break; case 16: -#line 262 "dhcp4_parser.yy" // lalr1.cc:859 +#line 262 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP4; } -#line 732 "dhcp4_parser.cc" // lalr1.cc:859 +#line 757 "dhcp4_parser.cc" // lalr1.cc:856 break; case 18: -#line 263 "dhcp4_parser.yy" // lalr1.cc:859 +#line 263 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.OPTION_DEF; } -#line 738 "dhcp4_parser.cc" // lalr1.cc:859 +#line 763 "dhcp4_parser.cc" // lalr1.cc:856 break; case 20: -#line 264 "dhcp4_parser.yy" // lalr1.cc:859 +#line 264 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.OPTION_DATA; } -#line 744 "dhcp4_parser.cc" // lalr1.cc:859 +#line 769 "dhcp4_parser.cc" // lalr1.cc:856 break; case 22: -#line 265 "dhcp4_parser.yy" // lalr1.cc:859 +#line 265 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 750 "dhcp4_parser.cc" // lalr1.cc:859 +#line 775 "dhcp4_parser.cc" // lalr1.cc:856 break; case 24: -#line 266 "dhcp4_parser.yy" // lalr1.cc:859 +#line 266 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 756 "dhcp4_parser.cc" // lalr1.cc:859 +#line 781 "dhcp4_parser.cc" // lalr1.cc:856 break; case 26: -#line 267 "dhcp4_parser.yy" // lalr1.cc:859 +#line 267 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.LOGGING; } -#line 762 "dhcp4_parser.cc" // lalr1.cc:859 +#line 787 "dhcp4_parser.cc" // lalr1.cc:856 break; case 28: -#line 268 "dhcp4_parser.yy" // lalr1.cc:859 +#line 268 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 768 "dhcp4_parser.cc" // lalr1.cc:859 +#line 793 "dhcp4_parser.cc" // lalr1.cc:856 break; case 30: -#line 276 "dhcp4_parser.yy" // lalr1.cc:859 +#line 276 "dhcp4_parser.yy" // lalr1.cc:856 { 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 799 "dhcp4_parser.cc" // lalr1.cc:856 break; case 31: -#line 277 "dhcp4_parser.yy" // lalr1.cc:859 +#line 277 "dhcp4_parser.yy" // lalr1.cc:856 { 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 805 "dhcp4_parser.cc" // lalr1.cc:856 break; case 32: -#line 278 "dhcp4_parser.yy" // lalr1.cc:859 +#line 278 "dhcp4_parser.yy" // lalr1.cc:856 { 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 811 "dhcp4_parser.cc" // lalr1.cc:856 break; case 33: -#line 279 "dhcp4_parser.yy" // lalr1.cc:859 +#line 279 "dhcp4_parser.yy" // lalr1.cc:856 { 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 817 "dhcp4_parser.cc" // lalr1.cc:856 break; case 34: -#line 280 "dhcp4_parser.yy" // lalr1.cc:859 +#line 280 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 798 "dhcp4_parser.cc" // lalr1.cc:859 +#line 823 "dhcp4_parser.cc" // lalr1.cc:856 break; case 35: -#line 281 "dhcp4_parser.yy" // lalr1.cc:859 +#line 281 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 804 "dhcp4_parser.cc" // lalr1.cc:859 +#line 829 "dhcp4_parser.cc" // lalr1.cc:856 break; case 36: -#line 282 "dhcp4_parser.yy" // lalr1.cc:859 +#line 282 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 810 "dhcp4_parser.cc" // lalr1.cc:859 +#line 835 "dhcp4_parser.cc" // lalr1.cc:856 break; case 37: -#line 285 "dhcp4_parser.yy" // lalr1.cc:859 +#line 285 "dhcp4_parser.yy" // lalr1.cc:856 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 819 "dhcp4_parser.cc" // lalr1.cc:859 +#line 844 "dhcp4_parser.cc" // lalr1.cc:856 break; case 38: -#line 290 "dhcp4_parser.yy" // lalr1.cc:859 +#line 290 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 855 "dhcp4_parser.cc" // lalr1.cc:856 break; case 39: -#line 295 "dhcp4_parser.yy" // lalr1.cc:859 +#line 295 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 865 "dhcp4_parser.cc" // lalr1.cc:856 break; case 40: -#line 301 "dhcp4_parser.yy" // lalr1.cc:859 +#line 301 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 846 "dhcp4_parser.cc" // lalr1.cc:859 +#line 871 "dhcp4_parser.cc" // lalr1.cc:856 break; case 43: -#line 308 "dhcp4_parser.yy" // lalr1.cc:859 +#line 308 "dhcp4_parser.yy" // lalr1.cc:856 { // map containing a single entry ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 855 "dhcp4_parser.cc" // lalr1.cc:859 +#line 880 "dhcp4_parser.cc" // lalr1.cc:856 break; case 44: -#line 312 "dhcp4_parser.yy" // lalr1.cc:859 +#line 312 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 > ()); } -#line 865 "dhcp4_parser.cc" // lalr1.cc:859 +#line 890 "dhcp4_parser.cc" // lalr1.cc:856 break; case 45: -#line 319 "dhcp4_parser.yy" // lalr1.cc:859 +#line 319 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 874 "dhcp4_parser.cc" // lalr1.cc:859 +#line 899 "dhcp4_parser.cc" // lalr1.cc:856 break; case 46: -#line 322 "dhcp4_parser.yy" // lalr1.cc:859 +#line 322 "dhcp4_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here } -#line 882 "dhcp4_parser.cc" // lalr1.cc:859 +#line 907 "dhcp4_parser.cc" // lalr1.cc:856 break; case 49: -#line 330 "dhcp4_parser.yy" // lalr1.cc:859 +#line 330 "dhcp4_parser.yy" // lalr1.cc:856 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 891 "dhcp4_parser.cc" // lalr1.cc:859 +#line 916 "dhcp4_parser.cc" // lalr1.cc:856 break; case 50: -#line 334 "dhcp4_parser.yy" // lalr1.cc:859 +#line 334 "dhcp4_parser.yy" // lalr1.cc:856 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 900 "dhcp4_parser.cc" // lalr1.cc:859 +#line 925 "dhcp4_parser.cc" // lalr1.cc:856 break; case 51: -#line 341 "dhcp4_parser.yy" // lalr1.cc:859 +#line 341 "dhcp4_parser.yy" // lalr1.cc:856 { // List parsing about to start } -#line 908 "dhcp4_parser.cc" // lalr1.cc:859 +#line 933 "dhcp4_parser.cc" // lalr1.cc:856 break; case 52: -#line 343 "dhcp4_parser.yy" // lalr1.cc:859 +#line 343 "dhcp4_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 917 "dhcp4_parser.cc" // lalr1.cc:859 +#line 942 "dhcp4_parser.cc" // lalr1.cc:856 break; case 55: -#line 352 "dhcp4_parser.yy" // lalr1.cc:859 +#line 352 "dhcp4_parser.yy" // lalr1.cc:856 { 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 951 "dhcp4_parser.cc" // lalr1.cc:856 break; case 56: -#line 356 "dhcp4_parser.yy" // lalr1.cc:859 +#line 356 "dhcp4_parser.yy" // lalr1.cc:856 { 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 960 "dhcp4_parser.cc" // lalr1.cc:856 break; case 57: -#line 367 "dhcp4_parser.yy" // lalr1.cc:859 +#line 367 "dhcp4_parser.yy" // lalr1.cc:856 { const std::string& where = ctx.contextName(); 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 971 "dhcp4_parser.cc" // lalr1.cc:856 break; case 58: -#line 377 "dhcp4_parser.yy" // lalr1.cc:859 +#line 377 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 982 "dhcp4_parser.cc" // lalr1.cc:856 break; case 59: -#line 382 "dhcp4_parser.yy" // lalr1.cc:859 +#line 382 "dhcp4_parser.yy" // lalr1.cc:856 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -966,11 +991,11 @@ namespace isc { namespace dhcp { // 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 995 "dhcp4_parser.cc" // lalr1.cc:856 break; case 68: -#line 406 "dhcp4_parser.yy" // lalr1.cc:859 +#line 406 "dhcp4_parser.yy" // lalr1.cc:856 { // This code is executed when we're about to start parsing // the content of the map @@ -979,302 +1004,302 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP4); } -#line 983 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1008 "dhcp4_parser.cc" // lalr1.cc:856 break; case 69: -#line 413 "dhcp4_parser.yy" // lalr1.cc:859 +#line 413 "dhcp4_parser.yy" // lalr1.cc:856 { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 993 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1018 "dhcp4_parser.cc" // lalr1.cc:856 break; case 70: -#line 421 "dhcp4_parser.yy" // lalr1.cc:859 +#line 421 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 1028 "dhcp4_parser.cc" // lalr1.cc:856 break; case 71: -#line 425 "dhcp4_parser.yy" // lalr1.cc:859 +#line 425 "dhcp4_parser.yy" // lalr1.cc:856 { // No global parameter is required // parsing completed } -#line 1012 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1037 "dhcp4_parser.cc" // lalr1.cc:856 break; case 107: -#line 471 "dhcp4_parser.yy" // lalr1.cc:859 +#line 471 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1046 "dhcp4_parser.cc" // lalr1.cc:856 break; case 108: -#line 476 "dhcp4_parser.yy" // lalr1.cc:859 +#line 476 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1030 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1055 "dhcp4_parser.cc" // lalr1.cc:856 break; case 109: -#line 481 "dhcp4_parser.yy" // lalr1.cc:859 +#line 481 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1039 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1064 "dhcp4_parser.cc" // lalr1.cc:856 break; case 110: -#line 486 "dhcp4_parser.yy" // lalr1.cc:859 +#line 486 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1048 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1073 "dhcp4_parser.cc" // lalr1.cc:856 break; case 111: -#line 491 "dhcp4_parser.yy" // lalr1.cc:859 +#line 491 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1056 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1081 "dhcp4_parser.cc" // lalr1.cc:856 break; case 112: -#line 493 "dhcp4_parser.yy" // lalr1.cc:859 +#line 493 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1066 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1091 "dhcp4_parser.cc" // lalr1.cc:856 break; case 113: -#line 499 "dhcp4_parser.yy" // lalr1.cc:859 +#line 499 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("echo-client-id", echo); } -#line 1075 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1100 "dhcp4_parser.cc" // lalr1.cc:856 break; case 114: -#line 504 "dhcp4_parser.yy" // lalr1.cc:859 +#line 504 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("match-client-id", match); } -#line 1084 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1109 "dhcp4_parser.cc" // lalr1.cc:856 break; case 115: -#line 509 "dhcp4_parser.yy" // lalr1.cc:859 +#line 509 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr prf(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("authoritative", prf); } -#line 1093 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1118 "dhcp4_parser.cc" // lalr1.cc:856 break; case 116: -#line 515 "dhcp4_parser.yy" // lalr1.cc:859 +#line 515 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1104 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1129 "dhcp4_parser.cc" // lalr1.cc:856 break; case 117: -#line 520 "dhcp4_parser.yy" // lalr1.cc:859 +#line 520 "dhcp4_parser.yy" // lalr1.cc:856 { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1114 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1139 "dhcp4_parser.cc" // lalr1.cc:856 break; case 127: -#line 539 "dhcp4_parser.yy" // lalr1.cc:859 +#line 539 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1124 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1149 "dhcp4_parser.cc" // lalr1.cc:856 break; case 128: -#line 543 "dhcp4_parser.yy" // lalr1.cc:859 +#line 543 "dhcp4_parser.yy" // lalr1.cc:856 { // No interfaces config param is required // parsing completed } -#line 1133 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1158 "dhcp4_parser.cc" // lalr1.cc:856 break; case 129: -#line 548 "dhcp4_parser.yy" // lalr1.cc:859 +#line 548 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1144 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1169 "dhcp4_parser.cc" // lalr1.cc:856 break; case 130: -#line 553 "dhcp4_parser.yy" // lalr1.cc:859 +#line 553 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1153 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1178 "dhcp4_parser.cc" // lalr1.cc:856 break; case 131: -#line 558 "dhcp4_parser.yy" // lalr1.cc:859 +#line 558 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.DHCP_SOCKET_TYPE); } -#line 1161 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1186 "dhcp4_parser.cc" // lalr1.cc:856 break; case 132: -#line 560 "dhcp4_parser.yy" // lalr1.cc:859 +#line 560 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1170 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1195 "dhcp4_parser.cc" // lalr1.cc:856 break; case 133: -#line 565 "dhcp4_parser.yy" // lalr1.cc:859 +#line 565 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } -#line 1176 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1201 "dhcp4_parser.cc" // lalr1.cc:856 break; case 134: -#line 566 "dhcp4_parser.yy" // lalr1.cc:859 +#line 566 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } -#line 1182 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1207 "dhcp4_parser.cc" // lalr1.cc:856 break; case 135: -#line 569 "dhcp4_parser.yy" // lalr1.cc:859 +#line 569 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.OUTBOUND_INTERFACE); } -#line 1190 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1215 "dhcp4_parser.cc" // lalr1.cc:856 break; case 136: -#line 571 "dhcp4_parser.yy" // lalr1.cc:859 +#line 571 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1199 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1224 "dhcp4_parser.cc" // lalr1.cc:856 break; case 137: -#line 576 "dhcp4_parser.yy" // lalr1.cc:859 +#line 576 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } -#line 1207 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1232 "dhcp4_parser.cc" // lalr1.cc:856 break; case 138: -#line 578 "dhcp4_parser.yy" // lalr1.cc:859 +#line 578 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } -#line 1215 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1240 "dhcp4_parser.cc" // lalr1.cc:856 break; case 139: -#line 582 "dhcp4_parser.yy" // lalr1.cc:859 +#line 582 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1224 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1249 "dhcp4_parser.cc" // lalr1.cc:856 break; case 140: -#line 588 "dhcp4_parser.yy" // lalr1.cc:859 +#line 588 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1235 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1260 "dhcp4_parser.cc" // lalr1.cc:856 break; case 141: -#line 593 "dhcp4_parser.yy" // lalr1.cc:859 +#line 593 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 1246 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1271 "dhcp4_parser.cc" // lalr1.cc:856 break; case 142: -#line 600 "dhcp4_parser.yy" // lalr1.cc:859 +#line 600 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1257 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1282 "dhcp4_parser.cc" // lalr1.cc:856 break; case 143: -#line 605 "dhcp4_parser.yy" // lalr1.cc:859 +#line 605 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1266 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1291 "dhcp4_parser.cc" // lalr1.cc:856 break; case 147: -#line 615 "dhcp4_parser.yy" // lalr1.cc:859 +#line 615 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1274 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1299 "dhcp4_parser.cc" // lalr1.cc:856 break; case 148: -#line 617 "dhcp4_parser.yy" // lalr1.cc:859 +#line 617 "dhcp4_parser.yy" // lalr1.cc:856 { if ( (string(yystack_[0].value.as< std::string > ()) == "none") || @@ -1290,577 +1315,577 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1294 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1319 "dhcp4_parser.cc" // lalr1.cc:856 break; case 149: -#line 633 "dhcp4_parser.yy" // lalr1.cc:859 +#line 633 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1305 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1330 "dhcp4_parser.cc" // lalr1.cc:856 break; case 150: -#line 638 "dhcp4_parser.yy" // lalr1.cc:859 +#line 638 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 1316 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1341 "dhcp4_parser.cc" // lalr1.cc:856 break; case 151: -#line 645 "dhcp4_parser.yy" // lalr1.cc:859 +#line 645 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1327 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1352 "dhcp4_parser.cc" // lalr1.cc:856 break; case 152: -#line 650 "dhcp4_parser.yy" // lalr1.cc:859 +#line 650 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1336 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1361 "dhcp4_parser.cc" // lalr1.cc:856 break; case 157: -#line 663 "dhcp4_parser.yy" // lalr1.cc:859 +#line 663 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1346 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1371 "dhcp4_parser.cc" // lalr1.cc:856 break; case 158: -#line 667 "dhcp4_parser.yy" // lalr1.cc:859 +#line 667 "dhcp4_parser.yy" // lalr1.cc:856 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1356 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1381 "dhcp4_parser.cc" // lalr1.cc:856 break; case 179: -#line 697 "dhcp4_parser.yy" // lalr1.cc:859 +#line 697 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.DATABASE_TYPE); } -#line 1364 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1389 "dhcp4_parser.cc" // lalr1.cc:856 break; case 180: -#line 699 "dhcp4_parser.yy" // lalr1.cc:859 +#line 699 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1373 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1398 "dhcp4_parser.cc" // lalr1.cc:856 break; case 181: -#line 704 "dhcp4_parser.yy" // lalr1.cc:859 +#line 704 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1379 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1404 "dhcp4_parser.cc" // lalr1.cc:856 break; case 182: -#line 705 "dhcp4_parser.yy" // lalr1.cc:859 +#line 705 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1385 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1410 "dhcp4_parser.cc" // lalr1.cc:856 break; case 183: -#line 706 "dhcp4_parser.yy" // lalr1.cc:859 +#line 706 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1391 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1416 "dhcp4_parser.cc" // lalr1.cc:856 break; case 184: -#line 707 "dhcp4_parser.yy" // lalr1.cc:859 +#line 707 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1397 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1422 "dhcp4_parser.cc" // lalr1.cc:856 break; case 185: -#line 710 "dhcp4_parser.yy" // lalr1.cc:859 +#line 710 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1405 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1430 "dhcp4_parser.cc" // lalr1.cc:856 break; case 186: -#line 712 "dhcp4_parser.yy" // lalr1.cc:859 +#line 712 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1415 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1440 "dhcp4_parser.cc" // lalr1.cc:856 break; case 187: -#line 718 "dhcp4_parser.yy" // lalr1.cc:859 +#line 718 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1423 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1448 "dhcp4_parser.cc" // lalr1.cc:856 break; case 188: -#line 720 "dhcp4_parser.yy" // lalr1.cc:859 +#line 720 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1433 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1458 "dhcp4_parser.cc" // lalr1.cc:856 break; case 189: -#line 726 "dhcp4_parser.yy" // lalr1.cc:859 +#line 726 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1441 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1466 "dhcp4_parser.cc" // lalr1.cc:856 break; case 190: -#line 728 "dhcp4_parser.yy" // lalr1.cc:859 +#line 728 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1451 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1476 "dhcp4_parser.cc" // lalr1.cc:856 break; case 191: -#line 734 "dhcp4_parser.yy" // lalr1.cc:859 +#line 734 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1460 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1485 "dhcp4_parser.cc" // lalr1.cc:856 break; case 192: -#line 739 "dhcp4_parser.yy" // lalr1.cc:859 +#line 739 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1468 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1493 "dhcp4_parser.cc" // lalr1.cc:856 break; case 193: -#line 741 "dhcp4_parser.yy" // lalr1.cc:859 +#line 741 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1478 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1503 "dhcp4_parser.cc" // lalr1.cc:856 break; case 194: -#line 747 "dhcp4_parser.yy" // lalr1.cc:859 +#line 747 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1487 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1512 "dhcp4_parser.cc" // lalr1.cc:856 break; case 195: -#line 752 "dhcp4_parser.yy" // lalr1.cc:859 +#line 752 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1496 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1521 "dhcp4_parser.cc" // lalr1.cc:856 break; case 196: -#line 757 "dhcp4_parser.yy" // lalr1.cc:859 +#line 757 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1505 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1530 "dhcp4_parser.cc" // lalr1.cc:856 break; case 197: -#line 762 "dhcp4_parser.yy" // lalr1.cc:859 +#line 762 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1514 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1539 "dhcp4_parser.cc" // lalr1.cc:856 break; case 198: -#line 767 "dhcp4_parser.yy" // lalr1.cc:859 +#line 767 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1523 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1548 "dhcp4_parser.cc" // lalr1.cc:856 break; case 199: -#line 772 "dhcp4_parser.yy" // lalr1.cc:859 +#line 772 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 1532 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1557 "dhcp4_parser.cc" // lalr1.cc:856 break; case 200: -#line 777 "dhcp4_parser.yy" // lalr1.cc:859 +#line 777 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 1541 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1566 "dhcp4_parser.cc" // lalr1.cc:856 break; case 201: -#line 782 "dhcp4_parser.yy" // lalr1.cc:859 +#line 782 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1549 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1574 "dhcp4_parser.cc" // lalr1.cc:856 break; case 202: -#line 784 "dhcp4_parser.yy" // lalr1.cc:859 +#line 784 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1559 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1584 "dhcp4_parser.cc" // lalr1.cc:856 break; case 203: -#line 790 "dhcp4_parser.yy" // lalr1.cc:859 +#line 790 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1567 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1592 "dhcp4_parser.cc" // lalr1.cc:856 break; case 204: -#line 792 "dhcp4_parser.yy" // lalr1.cc:859 +#line 792 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 1577 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1602 "dhcp4_parser.cc" // lalr1.cc:856 break; case 205: -#line 798 "dhcp4_parser.yy" // lalr1.cc:859 +#line 798 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 1586 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1611 "dhcp4_parser.cc" // lalr1.cc:856 break; case 206: -#line 803 "dhcp4_parser.yy" // lalr1.cc:859 +#line 803 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 1595 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1620 "dhcp4_parser.cc" // lalr1.cc:856 break; case 207: -#line 808 "dhcp4_parser.yy" // lalr1.cc:859 +#line 808 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1606 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1631 "dhcp4_parser.cc" // lalr1.cc:856 break; case 208: -#line 813 "dhcp4_parser.yy" // lalr1.cc:859 +#line 813 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1615 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1640 "dhcp4_parser.cc" // lalr1.cc:856 break; case 216: -#line 829 "dhcp4_parser.yy" // lalr1.cc:859 +#line 829 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 1624 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1649 "dhcp4_parser.cc" // lalr1.cc:856 break; case 217: -#line 834 "dhcp4_parser.yy" // lalr1.cc:859 +#line 834 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 1633 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1658 "dhcp4_parser.cc" // lalr1.cc:856 break; case 218: -#line 839 "dhcp4_parser.yy" // lalr1.cc:859 +#line 839 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 1642 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1667 "dhcp4_parser.cc" // lalr1.cc:856 break; case 219: -#line 844 "dhcp4_parser.yy" // lalr1.cc:859 +#line 844 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 1651 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1676 "dhcp4_parser.cc" // lalr1.cc:856 break; case 220: -#line 849 "dhcp4_parser.yy" // lalr1.cc:859 +#line 849 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 1660 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1685 "dhcp4_parser.cc" // lalr1.cc:856 break; case 221: -#line 854 "dhcp4_parser.yy" // lalr1.cc:859 +#line 854 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1671 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1696 "dhcp4_parser.cc" // lalr1.cc:856 break; case 222: -#line 859 "dhcp4_parser.yy" // lalr1.cc:859 +#line 859 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1680 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1705 "dhcp4_parser.cc" // lalr1.cc:856 break; case 227: -#line 872 "dhcp4_parser.yy" // lalr1.cc:859 +#line 872 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1690 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1715 "dhcp4_parser.cc" // lalr1.cc:856 break; case 228: -#line 876 "dhcp4_parser.yy" // lalr1.cc:859 +#line 876 "dhcp4_parser.yy" // lalr1.cc:856 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1700 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1725 "dhcp4_parser.cc" // lalr1.cc:856 break; case 229: -#line 882 "dhcp4_parser.yy" // lalr1.cc:859 +#line 882 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1710 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1735 "dhcp4_parser.cc" // lalr1.cc:856 break; case 230: -#line 886 "dhcp4_parser.yy" // lalr1.cc:859 +#line 886 "dhcp4_parser.yy" // lalr1.cc:856 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1720 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1745 "dhcp4_parser.cc" // lalr1.cc:856 break; case 236: -#line 901 "dhcp4_parser.yy" // lalr1.cc:859 +#line 901 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1728 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1753 "dhcp4_parser.cc" // lalr1.cc:856 break; case 237: -#line 903 "dhcp4_parser.yy" // lalr1.cc:859 +#line 903 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1738 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1763 "dhcp4_parser.cc" // lalr1.cc:856 break; case 238: -#line 909 "dhcp4_parser.yy" // lalr1.cc:859 +#line 909 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1746 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1771 "dhcp4_parser.cc" // lalr1.cc:856 break; case 239: -#line 911 "dhcp4_parser.yy" // lalr1.cc:859 +#line 911 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1755 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1780 "dhcp4_parser.cc" // lalr1.cc:856 break; case 240: -#line 917 "dhcp4_parser.yy" // lalr1.cc:859 +#line 917 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1766 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1791 "dhcp4_parser.cc" // lalr1.cc:856 break; case 241: -#line 922 "dhcp4_parser.yy" // lalr1.cc:859 +#line 922 "dhcp4_parser.yy" // lalr1.cc:856 { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1776 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1801 "dhcp4_parser.cc" // lalr1.cc:856 break; case 250: -#line 940 "dhcp4_parser.yy" // lalr1.cc:859 +#line 940 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1785 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1810 "dhcp4_parser.cc" // lalr1.cc:856 break; case 251: -#line 945 "dhcp4_parser.yy" // lalr1.cc:859 +#line 945 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1794 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1819 "dhcp4_parser.cc" // lalr1.cc:856 break; case 252: -#line 950 "dhcp4_parser.yy" // lalr1.cc:859 +#line 950 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 1803 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1828 "dhcp4_parser.cc" // lalr1.cc:856 break; case 253: -#line 955 "dhcp4_parser.yy" // lalr1.cc:859 +#line 955 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 1812 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1837 "dhcp4_parser.cc" // lalr1.cc:856 break; case 254: -#line 960 "dhcp4_parser.yy" // lalr1.cc:859 +#line 960 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 1821 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1846 "dhcp4_parser.cc" // lalr1.cc:856 break; case 255: -#line 965 "dhcp4_parser.yy" // lalr1.cc:859 +#line 965 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 1830 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1855 "dhcp4_parser.cc" // lalr1.cc:856 break; case 256: -#line 973 "dhcp4_parser.yy" // lalr1.cc:859 +#line 973 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1841 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1866 "dhcp4_parser.cc" // lalr1.cc:856 break; case 257: -#line 978 "dhcp4_parser.yy" // lalr1.cc:859 +#line 978 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1850 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1875 "dhcp4_parser.cc" // lalr1.cc:856 break; case 262: -#line 998 "dhcp4_parser.yy" // lalr1.cc:859 +#line 998 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1860 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1885 "dhcp4_parser.cc" // lalr1.cc:856 break; case 263: -#line 1002 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1002 "dhcp4_parser.yy" // lalr1.cc:856 { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -1882,294 +1907,294 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1886 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1911 "dhcp4_parser.cc" // lalr1.cc:856 break; case 264: -#line 1024 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1024 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1896 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1921 "dhcp4_parser.cc" // lalr1.cc:856 break; case 265: -#line 1028 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1028 "dhcp4_parser.yy" // lalr1.cc:856 { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1906 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1931 "dhcp4_parser.cc" // lalr1.cc:856 break; case 292: -#line 1066 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1066 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1914 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1939 "dhcp4_parser.cc" // lalr1.cc:856 break; case 293: -#line 1068 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1068 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 1924 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1949 "dhcp4_parser.cc" // lalr1.cc:856 break; case 294: -#line 1074 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1074 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1932 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1957 "dhcp4_parser.cc" // lalr1.cc:856 break; case 295: -#line 1076 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1076 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1942 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1967 "dhcp4_parser.cc" // lalr1.cc:856 break; case 296: -#line 1082 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1082 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1950 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1975 "dhcp4_parser.cc" // lalr1.cc:856 break; case 297: -#line 1084 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1084 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1960 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1985 "dhcp4_parser.cc" // lalr1.cc:856 break; case 298: -#line 1090 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1090 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1968 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1993 "dhcp4_parser.cc" // lalr1.cc:856 break; case 299: -#line 1092 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1092 "dhcp4_parser.yy" // lalr1.cc:856 { 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 1978 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2003 "dhcp4_parser.cc" // lalr1.cc:856 break; case 300: -#line 1098 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1098 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1986 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2011 "dhcp4_parser.cc" // lalr1.cc:856 break; case 301: -#line 1100 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1100 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 1996 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2021 "dhcp4_parser.cc" // lalr1.cc:856 break; case 302: -#line 1106 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1106 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2004 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2029 "dhcp4_parser.cc" // lalr1.cc:856 break; case 303: -#line 1108 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1108 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2014 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2039 "dhcp4_parser.cc" // lalr1.cc:856 break; case 304: -#line 1114 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1114 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2025 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2050 "dhcp4_parser.cc" // lalr1.cc:856 break; case 305: -#line 1119 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1119 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2034 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2059 "dhcp4_parser.cc" // lalr1.cc:856 break; case 306: -#line 1124 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1124 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.RESERVATION_MODE); } -#line 2042 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2067 "dhcp4_parser.cc" // lalr1.cc:856 break; case 307: -#line 1126 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1126 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2051 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2076 "dhcp4_parser.cc" // lalr1.cc:856 break; case 308: -#line 1131 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1131 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2057 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2082 "dhcp4_parser.cc" // lalr1.cc:856 break; case 309: -#line 1132 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1132 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2063 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2088 "dhcp4_parser.cc" // lalr1.cc:856 break; case 310: -#line 1133 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1133 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2069 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2094 "dhcp4_parser.cc" // lalr1.cc:856 break; case 311: -#line 1134 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1134 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2075 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2100 "dhcp4_parser.cc" // lalr1.cc:856 break; case 312: -#line 1137 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1137 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2084 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2109 "dhcp4_parser.cc" // lalr1.cc:856 break; case 313: -#line 1144 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1144 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2095 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2120 "dhcp4_parser.cc" // lalr1.cc:856 break; case 314: -#line 1149 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1149 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2104 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2129 "dhcp4_parser.cc" // lalr1.cc:856 break; case 319: -#line 1164 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1164 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2114 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2139 "dhcp4_parser.cc" // lalr1.cc:856 break; case 320: -#line 1168 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1168 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 2122 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2147 "dhcp4_parser.cc" // lalr1.cc:856 break; case 342: -#line 1201 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1201 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2133 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2158 "dhcp4_parser.cc" // lalr1.cc:856 break; case 343: -#line 1206 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1206 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2142 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2167 "dhcp4_parser.cc" // lalr1.cc:856 break; case 344: -#line 1214 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1214 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2151 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2176 "dhcp4_parser.cc" // lalr1.cc:856 break; case 345: -#line 1217 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1217 "dhcp4_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 2159 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2184 "dhcp4_parser.cc" // lalr1.cc:856 break; case 350: -#line 1233 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1233 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2169 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2194 "dhcp4_parser.cc" // lalr1.cc:856 break; case 351: -#line 1237 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1237 "dhcp4_parser.yy" // lalr1.cc:856 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2177,21 +2202,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2181 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2206 "dhcp4_parser.cc" // lalr1.cc:856 break; case 352: -#line 1248 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1248 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2191 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2216 "dhcp4_parser.cc" // lalr1.cc:856 break; case 353: -#line 1252 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1252 "dhcp4_parser.yy" // lalr1.cc:856 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2199,281 +2224,281 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2203 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2228 "dhcp4_parser.cc" // lalr1.cc:856 break; case 369: -#line 1284 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1284 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 2212 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2237 "dhcp4_parser.cc" // lalr1.cc:856 break; case 371: -#line 1291 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1291 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2220 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2245 "dhcp4_parser.cc" // lalr1.cc:856 break; case 372: -#line 1293 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1293 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 2230 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2255 "dhcp4_parser.cc" // lalr1.cc:856 break; case 373: -#line 1299 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1299 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2238 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2263 "dhcp4_parser.cc" // lalr1.cc:856 break; case 374: -#line 1301 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1301 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2248 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2273 "dhcp4_parser.cc" // lalr1.cc:856 break; case 375: -#line 1307 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1307 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2256 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2281 "dhcp4_parser.cc" // lalr1.cc:856 break; case 376: -#line 1309 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1309 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 2266 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2291 "dhcp4_parser.cc" // lalr1.cc:856 break; case 378: -#line 1317 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1317 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2274 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2299 "dhcp4_parser.cc" // lalr1.cc:856 break; case 379: -#line 1319 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1319 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 2284 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2309 "dhcp4_parser.cc" // lalr1.cc:856 break; case 380: -#line 1325 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1325 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 2293 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2318 "dhcp4_parser.cc" // lalr1.cc:856 break; case 381: -#line 1334 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1334 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2304 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2329 "dhcp4_parser.cc" // lalr1.cc:856 break; case 382: -#line 1339 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1339 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2313 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2338 "dhcp4_parser.cc" // lalr1.cc:856 break; case 387: -#line 1358 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1358 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2323 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2348 "dhcp4_parser.cc" // lalr1.cc:856 break; case 388: -#line 1362 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1362 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2332 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2357 "dhcp4_parser.cc" // lalr1.cc:856 break; case 389: -#line 1370 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1370 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2342 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2367 "dhcp4_parser.cc" // lalr1.cc:856 break; case 390: -#line 1374 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1374 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: the code or name parameters are required. // parsing completed } -#line 2351 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2376 "dhcp4_parser.cc" // lalr1.cc:856 break; case 405: -#line 1407 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1407 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2359 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2384 "dhcp4_parser.cc" // lalr1.cc:856 break; case 406: -#line 1409 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1409 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 2369 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2394 "dhcp4_parser.cc" // lalr1.cc:856 break; case 409: -#line 1419 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1419 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 2378 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2403 "dhcp4_parser.cc" // lalr1.cc:856 break; case 410: -#line 1424 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1424 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 2387 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2412 "dhcp4_parser.cc" // lalr1.cc:856 break; case 411: -#line 1432 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1432 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2398 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2423 "dhcp4_parser.cc" // lalr1.cc:856 break; case 412: -#line 1437 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1437 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2407 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2432 "dhcp4_parser.cc" // lalr1.cc:856 break; case 417: -#line 1452 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1452 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2417 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2442 "dhcp4_parser.cc" // lalr1.cc:856 break; case 418: -#line 1456 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1456 "dhcp4_parser.yy" // lalr1.cc:856 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2427 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2452 "dhcp4_parser.cc" // lalr1.cc:856 break; case 419: -#line 1462 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1462 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2437 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2462 "dhcp4_parser.cc" // lalr1.cc:856 break; case 420: -#line 1466 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1466 "dhcp4_parser.yy" // lalr1.cc:856 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2447 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2472 "dhcp4_parser.cc" // lalr1.cc:856 break; case 430: -#line 1485 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1485 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2455 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2480 "dhcp4_parser.cc" // lalr1.cc:856 break; case 431: -#line 1487 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1487 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 2465 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2490 "dhcp4_parser.cc" // lalr1.cc:856 break; case 432: -#line 1493 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1493 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2473 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2498 "dhcp4_parser.cc" // lalr1.cc:856 break; case 433: -#line 1495 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1495 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -2496,19 +2521,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2500 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2525 "dhcp4_parser.cc" // lalr1.cc:856 break; case 434: -#line 1518 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1518 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2508 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2533 "dhcp4_parser.cc" // lalr1.cc:856 break; case 435: -#line 1520 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1520 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -2533,449 +2558,449 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2537 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2562 "dhcp4_parser.cc" // lalr1.cc:856 break; case 436: -#line 1548 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1548 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2548 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2573 "dhcp4_parser.cc" // lalr1.cc:856 break; case 437: -#line 1553 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1553 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2557 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2582 "dhcp4_parser.cc" // lalr1.cc:856 break; case 442: -#line 1566 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1566 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2567 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2592 "dhcp4_parser.cc" // lalr1.cc:856 break; case 443: -#line 1570 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1570 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 2576 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2601 "dhcp4_parser.cc" // lalr1.cc:856 break; case 444: -#line 1575 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1575 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2586 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2611 "dhcp4_parser.cc" // lalr1.cc:856 break; case 445: -#line 1579 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1579 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: an identifier parameter is required. // parsing completed } -#line 2595 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2620 "dhcp4_parser.cc" // lalr1.cc:856 break; case 465: -#line 1610 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1610 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2603 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2628 "dhcp4_parser.cc" // lalr1.cc:856 break; case 466: -#line 1612 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1612 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2613 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2638 "dhcp4_parser.cc" // lalr1.cc:856 break; case 467: -#line 1618 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1618 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2621 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2646 "dhcp4_parser.cc" // lalr1.cc:856 break; case 468: -#line 1620 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1620 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2631 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2656 "dhcp4_parser.cc" // lalr1.cc:856 break; case 469: -#line 1626 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1626 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2639 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2664 "dhcp4_parser.cc" // lalr1.cc:856 break; case 470: -#line 1628 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1628 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2649 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2674 "dhcp4_parser.cc" // lalr1.cc:856 break; case 471: -#line 1634 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1634 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2657 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2682 "dhcp4_parser.cc" // lalr1.cc:856 break; case 472: -#line 1636 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1636 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2667 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2692 "dhcp4_parser.cc" // lalr1.cc:856 break; case 473: -#line 1642 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1642 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2678 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2703 "dhcp4_parser.cc" // lalr1.cc:856 break; case 474: -#line 1647 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1647 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2687 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2712 "dhcp4_parser.cc" // lalr1.cc:856 break; case 475: -#line 1652 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1652 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2695 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2720 "dhcp4_parser.cc" // lalr1.cc:856 break; case 476: -#line 1654 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1654 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 2705 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2730 "dhcp4_parser.cc" // lalr1.cc:856 break; case 477: -#line 1660 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1660 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2713 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2738 "dhcp4_parser.cc" // lalr1.cc:856 break; case 478: -#line 1662 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1662 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2723 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2748 "dhcp4_parser.cc" // lalr1.cc:856 break; case 479: -#line 1668 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1668 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2731 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2756 "dhcp4_parser.cc" // lalr1.cc:856 break; case 480: -#line 1670 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1670 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2741 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2766 "dhcp4_parser.cc" // lalr1.cc:856 break; case 481: -#line 1676 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1676 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2749 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2774 "dhcp4_parser.cc" // lalr1.cc:856 break; case 482: -#line 1678 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1678 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2759 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2784 "dhcp4_parser.cc" // lalr1.cc:856 break; case 483: -#line 1684 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1684 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2767 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2792 "dhcp4_parser.cc" // lalr1.cc:856 break; case 484: -#line 1686 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1686 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2777 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2802 "dhcp4_parser.cc" // lalr1.cc:856 break; case 485: -#line 1692 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1692 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2785 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2810 "dhcp4_parser.cc" // lalr1.cc:856 break; case 486: -#line 1694 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1694 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 2795 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2820 "dhcp4_parser.cc" // lalr1.cc:856 break; case 487: -#line 1700 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1700 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2806 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2831 "dhcp4_parser.cc" // lalr1.cc:856 break; case 488: -#line 1705 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1705 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2815 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2840 "dhcp4_parser.cc" // lalr1.cc:856 break; case 489: -#line 1713 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1713 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2826 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2851 "dhcp4_parser.cc" // lalr1.cc:856 break; case 490: -#line 1718 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1718 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2835 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2860 "dhcp4_parser.cc" // lalr1.cc:856 break; case 493: -#line 1730 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1730 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2846 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2871 "dhcp4_parser.cc" // lalr1.cc:856 break; case 494: -#line 1735 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1735 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2855 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2880 "dhcp4_parser.cc" // lalr1.cc:856 break; case 497: -#line 1744 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1744 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2865 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2890 "dhcp4_parser.cc" // lalr1.cc:856 break; case 498: -#line 1748 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1748 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 2875 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2900 "dhcp4_parser.cc" // lalr1.cc:856 break; case 515: -#line 1777 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1777 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2883 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2908 "dhcp4_parser.cc" // lalr1.cc:856 break; case 516: -#line 1779 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1779 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 2893 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2918 "dhcp4_parser.cc" // lalr1.cc:856 break; case 517: -#line 1785 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1785 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 2902 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2927 "dhcp4_parser.cc" // lalr1.cc:856 break; case 518: -#line 1794 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1794 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 2911 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2936 "dhcp4_parser.cc" // lalr1.cc:856 break; case 519: -#line 1801 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1801 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2922 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2947 "dhcp4_parser.cc" // lalr1.cc:856 break; case 520: -#line 1806 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1806 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2931 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2956 "dhcp4_parser.cc" // lalr1.cc:856 break; case 528: -#line 1822 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1822 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2939 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2964 "dhcp4_parser.cc" // lalr1.cc:856 break; case 529: -#line 1824 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1824 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2949 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2974 "dhcp4_parser.cc" // lalr1.cc:856 break; case 530: -#line 1830 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1830 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2957 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2982 "dhcp4_parser.cc" // lalr1.cc:856 break; case 531: -#line 1832 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1832 "dhcp4_parser.yy" // lalr1.cc:856 { 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 2967 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2992 "dhcp4_parser.cc" // lalr1.cc:856 break; case 532: -#line 1841 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1841 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2975 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3000 "dhcp4_parser.cc" // lalr1.cc:856 break; case 533: -#line 1843 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1843 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr qc = yystack_[0].value.as< ElementPtr > (); ctx.stack_.back()->set("dhcp-queue-control", qc); @@ -2989,644 +3014,644 @@ namespace isc { namespace dhcp { ctx.leave(); } -#line 2993 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3018 "dhcp4_parser.cc" // lalr1.cc:856 break; case 534: -#line 1859 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1859 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3004 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3029 "dhcp4_parser.cc" // lalr1.cc:856 break; case 535: -#line 1864 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1864 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 3015 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3040 "dhcp4_parser.cc" // lalr1.cc:856 break; case 536: -#line 1871 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1871 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3025 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3050 "dhcp4_parser.cc" // lalr1.cc:856 break; case 537: -#line 1875 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1875 "dhcp4_parser.yy" // lalr1.cc:856 { // 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 3035 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3060 "dhcp4_parser.cc" // lalr1.cc:856 break; case 559: -#line 1906 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1906 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 3044 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3069 "dhcp4_parser.cc" // lalr1.cc:856 break; case 560: -#line 1911 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1911 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3052 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3077 "dhcp4_parser.cc" // lalr1.cc:856 break; case 561: -#line 1913 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1913 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3062 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3087 "dhcp4_parser.cc" // lalr1.cc:856 break; case 562: -#line 1919 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1919 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3070 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3095 "dhcp4_parser.cc" // lalr1.cc:856 break; case 563: -#line 1921 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1921 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3080 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3105 "dhcp4_parser.cc" // lalr1.cc:856 break; case 564: -#line 1927 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1927 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 3089 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3114 "dhcp4_parser.cc" // lalr1.cc:856 break; case 565: -#line 1932 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1932 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3097 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3122 "dhcp4_parser.cc" // lalr1.cc:856 break; case 566: -#line 1934 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1934 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3107 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3132 "dhcp4_parser.cc" // lalr1.cc:856 break; case 567: -#line 1940 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1940 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 3116 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3141 "dhcp4_parser.cc" // lalr1.cc:856 break; case 568: -#line 1945 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1945 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 3125 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3150 "dhcp4_parser.cc" // lalr1.cc:856 break; case 569: -#line 1950 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1950 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_PROTOCOL); } -#line 3133 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3158 "dhcp4_parser.cc" // lalr1.cc:856 break; case 570: -#line 1952 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1952 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3142 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3167 "dhcp4_parser.cc" // lalr1.cc:856 break; case 571: -#line 1958 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1958 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 3148 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3173 "dhcp4_parser.cc" // lalr1.cc:856 break; case 572: -#line 1959 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1959 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 3154 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3179 "dhcp4_parser.cc" // lalr1.cc:856 break; case 573: -#line 1962 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1962 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_FORMAT); } -#line 3162 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3187 "dhcp4_parser.cc" // lalr1.cc:856 break; case 574: -#line 1964 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1964 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 3172 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3197 "dhcp4_parser.cc" // lalr1.cc:856 break; case 575: -#line 1970 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1970 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-include-fqdn", b); } -#line 3181 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3206 "dhcp4_parser.cc" // lalr1.cc:856 break; case 576: -#line 1975 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1975 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 3190 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3215 "dhcp4_parser.cc" // lalr1.cc:856 break; case 577: -#line 1980 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1980 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 3199 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3224 "dhcp4_parser.cc" // lalr1.cc:856 break; case 578: -#line 1985 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1985 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3207 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3232 "dhcp4_parser.cc" // lalr1.cc:856 break; case 579: -#line 1987 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1987 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3216 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3241 "dhcp4_parser.cc" // lalr1.cc:856 break; case 580: -#line 1993 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1993 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 3224 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3249 "dhcp4_parser.cc" // lalr1.cc:856 break; case 581: -#line 1996 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1996 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 3232 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3257 "dhcp4_parser.cc" // lalr1.cc:856 break; case 582: -#line 1999 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1999 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 3240 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3265 "dhcp4_parser.cc" // lalr1.cc:856 break; case 583: -#line 2002 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2002 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 3248 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3273 "dhcp4_parser.cc" // lalr1.cc:856 break; case 584: -#line 2005 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2005 "dhcp4_parser.yy" // lalr1.cc:856 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 3257 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3282 "dhcp4_parser.cc" // lalr1.cc:856 break; case 585: -#line 2011 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2011 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3265 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3290 "dhcp4_parser.cc" // lalr1.cc:856 break; case 586: -#line 2013 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2013 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3275 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3300 "dhcp4_parser.cc" // lalr1.cc:856 break; case 587: -#line 2019 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2019 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3283 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3308 "dhcp4_parser.cc" // lalr1.cc:856 break; case 588: -#line 2021 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2021 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3293 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3318 "dhcp4_parser.cc" // lalr1.cc:856 break; case 589: -#line 2027 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2027 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3301 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3326 "dhcp4_parser.cc" // lalr1.cc:856 break; case 590: -#line 2029 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2029 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3311 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3336 "dhcp4_parser.cc" // lalr1.cc:856 break; case 591: -#line 2038 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2038 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3319 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3344 "dhcp4_parser.cc" // lalr1.cc:856 break; case 592: -#line 2040 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2040 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3328 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3353 "dhcp4_parser.cc" // lalr1.cc:856 break; case 593: -#line 2045 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2045 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3336 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3361 "dhcp4_parser.cc" // lalr1.cc:856 break; case 594: -#line 2047 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2047 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3345 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3370 "dhcp4_parser.cc" // lalr1.cc:856 break; case 595: -#line 2052 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2052 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3353 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3378 "dhcp4_parser.cc" // lalr1.cc:856 break; case 596: -#line 2054 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2054 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3362 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3387 "dhcp4_parser.cc" // lalr1.cc:856 break; case 597: -#line 2059 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2059 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3372 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3397 "dhcp4_parser.cc" // lalr1.cc:856 break; case 598: -#line 2063 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2063 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3380 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3405 "dhcp4_parser.cc" // lalr1.cc:856 break; case 599: -#line 2068 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2068 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3391 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3416 "dhcp4_parser.cc" // lalr1.cc:856 break; case 600: -#line 2073 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2073 "dhcp4_parser.yy" // lalr1.cc:856 { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 3401 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3426 "dhcp4_parser.cc" // lalr1.cc:856 break; case 601: -#line 2079 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2079 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3411 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3436 "dhcp4_parser.cc" // lalr1.cc:856 break; case 602: -#line 2083 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2083 "dhcp4_parser.yy" // lalr1.cc:856 { // No config_control params are required // parsing completed } -#line 3420 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3445 "dhcp4_parser.cc" // lalr1.cc:856 break; case 607: -#line 2098 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2098 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3431 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3456 "dhcp4_parser.cc" // lalr1.cc:856 break; case 608: -#line 2103 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2103 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3440 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3465 "dhcp4_parser.cc" // lalr1.cc:856 break; case 609: -#line 2113 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2113 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3451 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3476 "dhcp4_parser.cc" // lalr1.cc:856 break; case 610: -#line 2118 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2118 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3460 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3485 "dhcp4_parser.cc" // lalr1.cc:856 break; case 611: -#line 2123 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2123 "dhcp4_parser.yy" // lalr1.cc:856 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3470 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3495 "dhcp4_parser.cc" // lalr1.cc:856 break; case 612: -#line 2127 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2127 "dhcp4_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 3478 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3503 "dhcp4_parser.cc" // lalr1.cc:856 break; case 616: -#line 2143 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2143 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3489 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3514 "dhcp4_parser.cc" // lalr1.cc:856 break; case 617: -#line 2148 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2148 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3498 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3523 "dhcp4_parser.cc" // lalr1.cc:856 break; case 620: -#line 2160 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2160 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 3508 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3533 "dhcp4_parser.cc" // lalr1.cc:856 break; case 621: -#line 2164 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2164 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3516 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3541 "dhcp4_parser.cc" // lalr1.cc:856 break; case 631: -#line 2181 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2181 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 3525 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3550 "dhcp4_parser.cc" // lalr1.cc:856 break; case 632: -#line 2186 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2186 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3533 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3558 "dhcp4_parser.cc" // lalr1.cc:856 break; case 633: -#line 2188 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2188 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 3543 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3568 "dhcp4_parser.cc" // lalr1.cc:856 break; case 634: -#line 2194 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2194 "dhcp4_parser.yy" // lalr1.cc:856 { 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 3554 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3579 "dhcp4_parser.cc" // lalr1.cc:856 break; case 635: -#line 2199 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2199 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3563 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3588 "dhcp4_parser.cc" // lalr1.cc:856 break; case 638: -#line 2208 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2208 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3573 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3598 "dhcp4_parser.cc" // lalr1.cc:856 break; case 639: -#line 2212 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2212 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3581 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3606 "dhcp4_parser.cc" // lalr1.cc:856 break; case 646: -#line 2226 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2226 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3589 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3614 "dhcp4_parser.cc" // lalr1.cc:856 break; case 647: -#line 2228 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2228 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 3599 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3624 "dhcp4_parser.cc" // lalr1.cc:856 break; case 648: -#line 2234 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2234 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 3608 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3633 "dhcp4_parser.cc" // lalr1.cc:856 break; case 649: -#line 2239 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2239 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 3617 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3642 "dhcp4_parser.cc" // lalr1.cc:856 break; case 650: -#line 2244 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2244 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 3626 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3651 "dhcp4_parser.cc" // lalr1.cc:856 break; -#line 3630 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3655 "dhcp4_parser.cc" // lalr1.cc:856 default: break; } @@ -3688,7 +3713,6 @@ namespace isc { namespace dhcp { code. */ if (false) goto yyerrorlab; - yyerror_range[1].location = yystack_[yylen - 1].location; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); @@ -3762,8 +3786,7 @@ namespace isc { namespace dhcp { } 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. if (!yyla.empty ()) @@ -3781,7 +3804,7 @@ namespace isc { namespace dhcp { void Dhcp4Parser::error (const syntax_error& yyexc) { - error (yyexc.location, yyexc.what()); + error (yyexc.location, yyexc.what ()); } // Generate an error message. @@ -3857,12 +3880,13 @@ namespace isc { namespace dhcp { 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_ } @@ -4882,18 +4906,18 @@ namespace isc { namespace dhcp { 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 << " =", @@ -4902,10 +4926,10 @@ namespace isc { namespace dhcp { #endif // PARSER4_DEBUG -#line 14 "dhcp4_parser.yy" // lalr1.cc:1167 +#line 14 "dhcp4_parser.yy" // lalr1.cc:1163 } } // isc::dhcp -#line 4908 "dhcp4_parser.cc" // lalr1.cc:1167 -#line 2249 "dhcp4_parser.yy" // lalr1.cc:1168 +#line 4932 "dhcp4_parser.cc" // lalr1.cc:1163 +#line 2249 "dhcp4_parser.yy" // lalr1.cc:1164 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 5adac5b937..bae83b8fdb 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,7 +40,7 @@ #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" // lalr1.cc:379 #include #include @@ -52,7 +52,7 @@ using namespace isc::dhcp; using namespace isc::data; using namespace std; -#line 56 "dhcp4_parser.h" // lalr1.cc:377 +#line 56 "dhcp4_parser.h" // lalr1.cc:379 # include # include // std::abort @@ -135,9 +135,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER4_DEBUG */ -#line 14 "dhcp4_parser.yy" // lalr1.cc:377 +#line 14 "dhcp4_parser.yy" // lalr1.cc:379 namespace isc { namespace dhcp { -#line 141 "dhcp4_parser.h" // lalr1.cc:377 +#line 141 "dhcp4_parser.h" // lalr1.cc:379 @@ -1472,6 +1472,8 @@ namespace isc { namespace dhcp { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); + /// Copy construct. + stack_symbol_type (const stack_symbol_type& that); /// Steal the contents from \a sym to build this. stack_symbol_type (state_type s, symbol_type& sym); /// Assignment, needed by push_back. @@ -1500,7 +1502,7 @@ namespace isc { namespace dhcp { void yypush_ (const char* m, state_type s, symbol_type& sym); /// Pop \a n symbols the three stacks. - void yypop_ (unsigned int n = 1); + void yypop_ (unsigned n = 1); /// Constants. enum @@ -1572,12 +1574,12 @@ namespace isc { namespace dhcp { 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169 }; - const unsigned int user_token_number_max_ = 424; + const unsigned user_token_number_max_ = 424; const token_number_type undef_token_ = 2; - if (static_cast(t) <= yyeof_) + if (static_cast (t) <= yyeof_) return yyeof_; - else if (static_cast (t) <= user_token_number_max_) + else if (static_cast (t) <= user_token_number_max_) return translate_table[t]; else return undef_token_; @@ -1591,19 +1593,17 @@ namespace isc { namespace dhcp { // basic_symbol. template - inline Dhcp4Parser::basic_symbol::basic_symbol () : value () {} template - inline Dhcp4Parser::basic_symbol::basic_symbol (const basic_symbol& other) : Base (other) , value () , location (other.location) { - switch (other.type_get ()) + switch (other.type_get ()) { case 186: // value case 190: // map_value @@ -1638,16 +1638,14 @@ namespace isc { namespace dhcp { } - template - inline Dhcp4Parser::basic_symbol::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 ()) + switch (this->type_get ()) { case 186: // value case 190: // map_value @@ -1728,14 +1726,12 @@ namespace isc { namespace dhcp { template - inline Dhcp4Parser::basic_symbol::~basic_symbol () { clear (); } template - inline void Dhcp4Parser::basic_symbol::clear () { @@ -1750,7 +1746,7 @@ namespace isc { namespace dhcp { } // Type destructor. - switch (yytype) + switch (yytype) { case 186: // value case 190: // map_value @@ -1787,7 +1783,6 @@ namespace isc { namespace dhcp { } template - inline bool Dhcp4Parser::basic_symbol::empty () const { @@ -1795,12 +1790,11 @@ namespace isc { namespace dhcp { } template - inline void Dhcp4Parser::basic_symbol::move (basic_symbol& s) { - super_type::move(s); - switch (this->type_get ()) + super_type::move (s); + switch (this->type_get ()) { case 186: // value case 190: // map_value @@ -2914,9 +2908,9 @@ namespace isc { namespace dhcp { } -#line 14 "dhcp4_parser.yy" // lalr1.cc:377 +#line 14 "dhcp4_parser.yy" // lalr1.cc:379 } } // isc::dhcp -#line 2920 "dhcp4_parser.h" // lalr1.cc:377 +#line 2914 "dhcp4_parser.h" // lalr1.cc:379 diff --git a/src/bin/dhcp4/location.hh b/src/bin/dhcp4/location.hh index 7e23a2ccac..e88ab6ed5b 100644 --- a/src/bin/dhcp4/location.hh +++ b/src/bin/dhcp4/location.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,9 +41,9 @@ # include "position.hh" -#line 14 "dhcp4_parser.yy" // location.cc:296 +#line 14 "dhcp4_parser.yy" // location.cc:292 namespace isc { namespace dhcp { -#line 46 "location.hh" // location.cc:296 +#line 46 "location.hh" // location.cc:292 /// Abstract a location. class location { @@ -52,30 +53,27 @@ namespace isc { namespace dhcp { 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; @@ -173,7 +171,7 @@ namespace isc { namespace dhcp { inline std::basic_ostream& operator<< (std::basic_ostream& 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 @@ -186,7 +184,7 @@ namespace isc { namespace dhcp { return ostr; } -#line 14 "dhcp4_parser.yy" // location.cc:296 +#line 14 "dhcp4_parser.yy" // location.cc:292 } } // isc::dhcp -#line 192 "location.hh" // location.cc:296 +#line 189 "location.hh" // location.cc:292 #endif // !YY_PARSER4_LOCATION_HH_INCLUDED diff --git a/src/bin/dhcp4/position.hh b/src/bin/dhcp4/position.hh index c60fabbdf8..fe438ff050 100644 --- a/src/bin/dhcp4/position.hh +++ b/src/bin/dhcp4/position.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Positions for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -50,28 +51,27 @@ # endif # endif -#line 14 "dhcp4_parser.yy" // location.cc:296 +#line 14 "dhcp4_parser.yy" // location.cc:292 namespace isc { namespace dhcp { -#line 56 "position.hh" // location.cc:296 +#line 56 "position.hh" // location.cc:292 /// Abstract a position. class position { public: /// Construct a position. explicit position (std::string* f = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) : filename (f) , line (l) , column (c) - { - } + {} /// Initialization. void initialize (std::string* fn = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) { filename = fn; line = l; @@ -100,15 +100,15 @@ namespace isc { namespace dhcp { /// File name to which this position refers. std::string* filename; /// Current line number. - unsigned int line; + unsigned line; /// Current column number. - unsigned int column; + unsigned column; private: /// Compute max(min, lhs+rhs) (provided min <= lhs). - static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return (0 < rhs || -static_cast(rhs) < lhs + return (0 < rhs || -static_cast(rhs) < lhs ? rhs + lhs : min); } @@ -174,7 +174,7 @@ namespace isc { namespace dhcp { return ostr << pos.line << '.' << pos.column; } -#line 14 "dhcp4_parser.yy" // location.cc:296 +#line 14 "dhcp4_parser.yy" // location.cc:292 } } // isc::dhcp -#line 180 "position.hh" // location.cc:296 +#line 179 "position.hh" // location.cc:292 #endif // !YY_PARSER4_POSITION_HH_INCLUDED diff --git a/src/bin/dhcp4/stack.hh b/src/bin/dhcp4/stack.hh index 3dd2a2a393..c9a79dd1f3 100644 --- a/src/bin/dhcp4/stack.hh +++ b/src/bin/dhcp4/stack.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Stack handling for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,9 +41,10 @@ # include -#line 14 "dhcp4_parser.yy" // stack.hh:132 +#line 14 "dhcp4_parser.yy" // stack.hh:131 namespace isc { namespace dhcp { -#line 46 "stack.hh" // stack.hh:132 +#line 46 "stack.hh" // stack.hh:131 + /// A stack with random access from its top. template > class stack { @@ -57,20 +59,24 @@ namespace isc { namespace dhcp { seq_.reserve (200); } - stack (unsigned int n) + stack (unsigned n) : seq_ (n) {} - inline + /// Random access. + /// + /// Index 0 returns the topmost element. T& - operator[] (unsigned int i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } - inline + /// Random access. + /// + /// Index 0 returns the topmost element. const T& - operator[] (unsigned int i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -78,7 +84,6 @@ namespace isc { namespace dhcp { /// Steal the contents of \a t. /// /// Close to move-semantics. - inline void push (T& t) { @@ -86,9 +91,8 @@ namespace isc { namespace dhcp { operator[](0).move (t); } - inline void - pop (unsigned int n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -100,21 +104,18 @@ namespace isc { namespace dhcp { 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 { @@ -133,25 +134,24 @@ namespace isc { namespace dhcp { class slice { public: - slice (const S& stack, unsigned int range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} - inline const T& - operator [] (unsigned int i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - unsigned int range_; + unsigned range_; }; -#line 14 "dhcp4_parser.yy" // stack.hh:132 +#line 14 "dhcp4_parser.yy" // stack.hh:131 } } // isc::dhcp -#line 156 "stack.hh" // stack.hh:132 +#line 155 "stack.hh" // stack.hh:131 #endif // !YY_PARSER4_STACK_HH_INCLUDED diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 3b6755872f..90445d101c 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -35,7 +35,7 @@ // First part of user declarations. -#line 39 "dhcp6_parser.cc" // lalr1.cc:404 +#line 39 "dhcp6_parser.cc" // lalr1.cc:406 # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -49,13 +49,13 @@ // User implementation prologue. -#line 53 "dhcp6_parser.cc" // lalr1.cc:412 +#line 53 "dhcp6_parser.cc" // lalr1.cc:414 // Unqualified %code blocks. -#line 34 "dhcp6_parser.yy" // lalr1.cc:413 +#line 34 "dhcp6_parser.yy" // lalr1.cc:415 #include -#line 59 "dhcp6_parser.cc" // lalr1.cc:413 +#line 59 "dhcp6_parser.cc" // lalr1.cc:415 #ifndef YY_ @@ -106,7 +106,7 @@ { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << std::endl; \ + *yycdebug_ << '\n'; \ } \ } while (false) @@ -125,9 +125,9 @@ #else // !PARSER6_DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast (0) +# define YY_STACK_PRINT() static_cast (0) #endif // !PARSER6_DEBUG @@ -139,9 +139,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "dhcp6_parser.yy" // lalr1.cc:479 +#line 14 "dhcp6_parser.yy" // lalr1.cc:481 namespace isc { namespace dhcp { -#line 145 "dhcp6_parser.cc" // lalr1.cc:479 +#line 145 "dhcp6_parser.cc" // lalr1.cc:481 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -202,24 +202,20 @@ namespace isc { namespace dhcp { // by_state. - inline Dhcp6Parser::by_state::by_state () : state (empty_state) {} - inline Dhcp6Parser::by_state::by_state (const by_state& other) : state (other.state) {} - inline void Dhcp6Parser::by_state::clear () { state = empty_state; } - inline void Dhcp6Parser::by_state::move (by_state& that) { @@ -227,12 +223,10 @@ namespace isc { namespace dhcp { that.clear (); } - inline Dhcp6Parser::by_state::by_state (state_type s) : state (s) {} - inline Dhcp6Parser::symbol_number_type Dhcp6Parser::by_state::type_get () const { @@ -242,16 +236,50 @@ namespace isc { namespace dhcp { return yystos_[state]; } - inline Dhcp6Parser::stack_symbol_type::stack_symbol_type () {} + Dhcp6Parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) + : super_type (that.state, that.location) + { + switch (that.type_get ()) + { + case 192: // value + case 196: // map_value + case 248: // db_type + case 337: // hr_mode + case 473: // duid_type + case 508: // ncr_protocol_value + case 516: // replace_client_name_value + value.copy< ElementPtr > (that.value); + break; + + case 174: // "boolean" + value.copy< bool > (that.value); + break; + + case 173: // "floating point" + value.copy< double > (that.value); + break; + + case 172: // "integer" + value.copy< int64_t > (that.value); + break; + + case 171: // "constant string" + value.copy< std::string > (that.value); + break; + + default: + break; + } + + } - inline Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) : super_type (s, that.location) { - switch (that.type_get ()) + switch (that.type_get ()) { case 192: // value case 196: // map_value @@ -287,12 +315,11 @@ namespace isc { namespace dhcp { that.type = empty_symbol; } - inline Dhcp6Parser::stack_symbol_type& Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.type_get ()) + switch (that.type_get ()) { case 192: // value case 196: // map_value @@ -330,7 +357,6 @@ namespace isc { namespace dhcp { template - inline void Dhcp6Parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -358,79 +384,79 @@ namespace isc { namespace dhcp { { case 171: // "constant string" -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } -#line 364 "dhcp6_parser.cc" // lalr1.cc:636 +#line 390 "dhcp6_parser.cc" // lalr1.cc:635 break; case 172: // "integer" -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } -#line 371 "dhcp6_parser.cc" // lalr1.cc:636 +#line 397 "dhcp6_parser.cc" // lalr1.cc:635 break; case 173: // "floating point" -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } -#line 378 "dhcp6_parser.cc" // lalr1.cc:636 +#line 404 "dhcp6_parser.cc" // lalr1.cc:635 break; case 174: // "boolean" -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } -#line 385 "dhcp6_parser.cc" // lalr1.cc:636 +#line 411 "dhcp6_parser.cc" // lalr1.cc:635 break; case 192: // value -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 392 "dhcp6_parser.cc" // lalr1.cc:636 +#line 418 "dhcp6_parser.cc" // lalr1.cc:635 break; case 196: // map_value -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 399 "dhcp6_parser.cc" // lalr1.cc:636 +#line 425 "dhcp6_parser.cc" // lalr1.cc:635 break; case 248: // db_type -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 406 "dhcp6_parser.cc" // lalr1.cc:636 +#line 432 "dhcp6_parser.cc" // lalr1.cc:635 break; case 337: // hr_mode -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 413 "dhcp6_parser.cc" // lalr1.cc:636 +#line 439 "dhcp6_parser.cc" // lalr1.cc:635 break; case 473: // duid_type -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 420 "dhcp6_parser.cc" // lalr1.cc:636 +#line 446 "dhcp6_parser.cc" // lalr1.cc:635 break; case 508: // ncr_protocol_value -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 427 "dhcp6_parser.cc" // lalr1.cc:636 +#line 453 "dhcp6_parser.cc" // lalr1.cc:635 break; case 516: // replace_client_name_value -#line 249 "dhcp6_parser.yy" // lalr1.cc:636 +#line 249 ""dhcp6_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 434 "dhcp6_parser.cc" // lalr1.cc:636 +#line 460 "dhcp6_parser.cc" // lalr1.cc:635 break; @@ -441,7 +467,6 @@ namespace isc { namespace dhcp { } #endif - inline void Dhcp6Parser::yypush_ (const char* m, state_type s, symbol_type& sym) { @@ -449,7 +474,6 @@ namespace isc { namespace dhcp { yypush_ (m, t); } - inline void Dhcp6Parser::yypush_ (const char* m, stack_symbol_type& s) { @@ -458,9 +482,8 @@ namespace isc { namespace dhcp { yystack_.push (s); } - inline void - Dhcp6Parser::yypop_ (unsigned int n) + Dhcp6Parser::yypop_ (unsigned n) { yystack_.pop (n); } @@ -492,7 +515,7 @@ namespace isc { namespace dhcp { } #endif // PARSER6_DEBUG - inline Dhcp6Parser::state_type + Dhcp6Parser::state_type Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym) { int yyr = yypgoto_[yysym - yyntokens_] + yystate; @@ -502,13 +525,13 @@ namespace isc { namespace dhcp { return yydefgoto_[yysym - yyntokens_]; } - inline bool + bool Dhcp6Parser::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } - inline bool + bool Dhcp6Parser::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; @@ -539,7 +562,7 @@ namespace isc { namespace dhcp { // avoid gratuitous conflicts when merging into the master branch. try { - YYCDEBUG << "Starting parse" << std::endl; + YYCDEBUG << "Starting parse\n"; /* Initialize the stack. The initial state will be set in @@ -551,7 +574,7 @@ namespace isc { namespace dhcp { // A new symbol was pushed 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_) @@ -624,11 +647,11 @@ namespace isc { namespace dhcp { 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 192: // value case 196: // map_value @@ -661,10 +684,11 @@ namespace isc { namespace dhcp { } - // Compute the default @$. + // Default location. { slice slice (yystack_, yylen); YYLLOC_DEFAULT (yylhs.location, slice, yylen); + yyerror_range[1].location = yylhs.location; } // Perform the reduction. @@ -674,286 +698,286 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: -#line 258 "dhcp6_parser.yy" // lalr1.cc:859 +#line 258 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 680 "dhcp6_parser.cc" // lalr1.cc:859 +#line 704 "dhcp6_parser.cc" // lalr1.cc:856 break; case 4: -#line 259 "dhcp6_parser.yy" // lalr1.cc:859 +#line 259 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG; } -#line 686 "dhcp6_parser.cc" // lalr1.cc:859 +#line 710 "dhcp6_parser.cc" // lalr1.cc:856 break; case 6: -#line 260 "dhcp6_parser.yy" // lalr1.cc:859 +#line 260 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP6; } -#line 692 "dhcp6_parser.cc" // lalr1.cc:859 +#line 716 "dhcp6_parser.cc" // lalr1.cc:856 break; case 8: -#line 261 "dhcp6_parser.yy" // lalr1.cc:859 +#line 261 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 698 "dhcp6_parser.cc" // lalr1.cc:859 +#line 722 "dhcp6_parser.cc" // lalr1.cc:856 break; case 10: -#line 262 "dhcp6_parser.yy" // lalr1.cc:859 +#line 262 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.SUBNET6; } -#line 704 "dhcp6_parser.cc" // lalr1.cc:859 +#line 728 "dhcp6_parser.cc" // lalr1.cc:856 break; case 12: -#line 263 "dhcp6_parser.yy" // lalr1.cc:859 +#line 263 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.POOLS; } -#line 710 "dhcp6_parser.cc" // lalr1.cc:859 +#line 734 "dhcp6_parser.cc" // lalr1.cc:856 break; case 14: -#line 264 "dhcp6_parser.yy" // lalr1.cc:859 +#line 264 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.PD_POOLS; } -#line 716 "dhcp6_parser.cc" // lalr1.cc:859 +#line 740 "dhcp6_parser.cc" // lalr1.cc:856 break; case 16: -#line 265 "dhcp6_parser.yy" // lalr1.cc:859 +#line 265 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.RESERVATIONS; } -#line 722 "dhcp6_parser.cc" // lalr1.cc:859 +#line 746 "dhcp6_parser.cc" // lalr1.cc:856 break; case 18: -#line 266 "dhcp6_parser.yy" // lalr1.cc:859 +#line 266 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP6; } -#line 728 "dhcp6_parser.cc" // lalr1.cc:859 +#line 752 "dhcp6_parser.cc" // lalr1.cc:856 break; case 20: -#line 267 "dhcp6_parser.yy" // lalr1.cc:859 +#line 267 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.OPTION_DEF; } -#line 734 "dhcp6_parser.cc" // lalr1.cc:859 +#line 758 "dhcp6_parser.cc" // lalr1.cc:856 break; case 22: -#line 268 "dhcp6_parser.yy" // lalr1.cc:859 +#line 268 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.OPTION_DATA; } -#line 740 "dhcp6_parser.cc" // lalr1.cc:859 +#line 764 "dhcp6_parser.cc" // lalr1.cc:856 break; case 24: -#line 269 "dhcp6_parser.yy" // lalr1.cc:859 +#line 269 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 746 "dhcp6_parser.cc" // lalr1.cc:859 +#line 770 "dhcp6_parser.cc" // lalr1.cc:856 break; case 26: -#line 270 "dhcp6_parser.yy" // lalr1.cc:859 +#line 270 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 752 "dhcp6_parser.cc" // lalr1.cc:859 +#line 776 "dhcp6_parser.cc" // lalr1.cc:856 break; case 28: -#line 271 "dhcp6_parser.yy" // lalr1.cc:859 +#line 271 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.LOGGING; } -#line 758 "dhcp6_parser.cc" // lalr1.cc:859 +#line 782 "dhcp6_parser.cc" // lalr1.cc:856 break; case 30: -#line 272 "dhcp6_parser.yy" // lalr1.cc:859 +#line 272 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 764 "dhcp6_parser.cc" // lalr1.cc:859 +#line 788 "dhcp6_parser.cc" // lalr1.cc:856 break; case 32: -#line 280 "dhcp6_parser.yy" // lalr1.cc:859 +#line 280 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 770 "dhcp6_parser.cc" // lalr1.cc:859 +#line 794 "dhcp6_parser.cc" // lalr1.cc:856 break; case 33: -#line 281 "dhcp6_parser.yy" // lalr1.cc:859 +#line 281 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } -#line 776 "dhcp6_parser.cc" // lalr1.cc:859 +#line 800 "dhcp6_parser.cc" // lalr1.cc:856 break; case 34: -#line 282 "dhcp6_parser.yy" // lalr1.cc:859 +#line 282 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 782 "dhcp6_parser.cc" // lalr1.cc:859 +#line 806 "dhcp6_parser.cc" // lalr1.cc:856 break; case 35: -#line 283 "dhcp6_parser.yy" // lalr1.cc:859 +#line 283 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 788 "dhcp6_parser.cc" // lalr1.cc:859 +#line 812 "dhcp6_parser.cc" // lalr1.cc:856 break; case 36: -#line 284 "dhcp6_parser.yy" // lalr1.cc:859 +#line 284 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 794 "dhcp6_parser.cc" // lalr1.cc:859 +#line 818 "dhcp6_parser.cc" // lalr1.cc:856 break; case 37: -#line 285 "dhcp6_parser.yy" // lalr1.cc:859 +#line 285 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 800 "dhcp6_parser.cc" // lalr1.cc:859 +#line 824 "dhcp6_parser.cc" // lalr1.cc:856 break; case 38: -#line 286 "dhcp6_parser.yy" // lalr1.cc:859 +#line 286 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 806 "dhcp6_parser.cc" // lalr1.cc:859 +#line 830 "dhcp6_parser.cc" // lalr1.cc:856 break; case 39: -#line 289 "dhcp6_parser.yy" // lalr1.cc:859 +#line 289 "dhcp6_parser.yy" // lalr1.cc:856 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 815 "dhcp6_parser.cc" // lalr1.cc:859 +#line 839 "dhcp6_parser.cc" // lalr1.cc:856 break; case 40: -#line 294 "dhcp6_parser.yy" // lalr1.cc:859 +#line 294 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 826 "dhcp6_parser.cc" // lalr1.cc:859 +#line 850 "dhcp6_parser.cc" // lalr1.cc:856 break; case 41: -#line 299 "dhcp6_parser.yy" // lalr1.cc:859 +#line 299 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 836 "dhcp6_parser.cc" // lalr1.cc:859 +#line 860 "dhcp6_parser.cc" // lalr1.cc:856 break; case 42: -#line 305 "dhcp6_parser.yy" // lalr1.cc:859 +#line 305 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 842 "dhcp6_parser.cc" // lalr1.cc:859 +#line 866 "dhcp6_parser.cc" // lalr1.cc:856 break; case 45: -#line 312 "dhcp6_parser.yy" // lalr1.cc:859 +#line 312 "dhcp6_parser.yy" // lalr1.cc:856 { // map containing a single entry ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 851 "dhcp6_parser.cc" // lalr1.cc:859 +#line 875 "dhcp6_parser.cc" // lalr1.cc:856 break; case 46: -#line 316 "dhcp6_parser.yy" // lalr1.cc:859 +#line 316 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 > ()); } -#line 861 "dhcp6_parser.cc" // lalr1.cc:859 +#line 885 "dhcp6_parser.cc" // lalr1.cc:856 break; case 47: -#line 323 "dhcp6_parser.yy" // lalr1.cc:859 +#line 323 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 870 "dhcp6_parser.cc" // lalr1.cc:859 +#line 894 "dhcp6_parser.cc" // lalr1.cc:856 break; case 48: -#line 326 "dhcp6_parser.yy" // lalr1.cc:859 +#line 326 "dhcp6_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here } -#line 878 "dhcp6_parser.cc" // lalr1.cc:859 +#line 902 "dhcp6_parser.cc" // lalr1.cc:856 break; case 51: -#line 334 "dhcp6_parser.yy" // lalr1.cc:859 +#line 334 "dhcp6_parser.yy" // lalr1.cc:856 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 887 "dhcp6_parser.cc" // lalr1.cc:859 +#line 911 "dhcp6_parser.cc" // lalr1.cc:856 break; case 52: -#line 338 "dhcp6_parser.yy" // lalr1.cc:859 +#line 338 "dhcp6_parser.yy" // lalr1.cc:856 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 896 "dhcp6_parser.cc" // lalr1.cc:859 +#line 920 "dhcp6_parser.cc" // lalr1.cc:856 break; case 53: -#line 345 "dhcp6_parser.yy" // lalr1.cc:859 +#line 345 "dhcp6_parser.yy" // lalr1.cc:856 { // List parsing about to start } -#line 904 "dhcp6_parser.cc" // lalr1.cc:859 +#line 928 "dhcp6_parser.cc" // lalr1.cc:856 break; case 54: -#line 347 "dhcp6_parser.yy" // lalr1.cc:859 +#line 347 "dhcp6_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 913 "dhcp6_parser.cc" // lalr1.cc:859 +#line 937 "dhcp6_parser.cc" // lalr1.cc:856 break; case 57: -#line 356 "dhcp6_parser.yy" // lalr1.cc:859 +#line 356 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 922 "dhcp6_parser.cc" // lalr1.cc:859 +#line 946 "dhcp6_parser.cc" // lalr1.cc:856 break; case 58: -#line 360 "dhcp6_parser.yy" // lalr1.cc:859 +#line 360 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 931 "dhcp6_parser.cc" // lalr1.cc:859 +#line 955 "dhcp6_parser.cc" // lalr1.cc:856 break; case 59: -#line 371 "dhcp6_parser.yy" // lalr1.cc:859 +#line 371 "dhcp6_parser.yy" // lalr1.cc:856 { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 942 "dhcp6_parser.cc" // lalr1.cc:859 +#line 966 "dhcp6_parser.cc" // lalr1.cc:856 break; case 60: -#line 381 "dhcp6_parser.yy" // lalr1.cc:859 +#line 381 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 953 "dhcp6_parser.cc" // lalr1.cc:859 +#line 977 "dhcp6_parser.cc" // lalr1.cc:856 break; case 61: -#line 386 "dhcp6_parser.yy" // lalr1.cc:859 +#line 386 "dhcp6_parser.yy" // lalr1.cc:856 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -962,11 +986,11 @@ namespace isc { namespace dhcp { // Dhcp6 is required ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 966 "dhcp6_parser.cc" // lalr1.cc:859 +#line 990 "dhcp6_parser.cc" // lalr1.cc:856 break; case 70: -#line 409 "dhcp6_parser.yy" // lalr1.cc:859 +#line 409 "dhcp6_parser.yy" // lalr1.cc:856 { // This code is executed when we're about to start parsing // the content of the map @@ -975,523 +999,523 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP6); } -#line 979 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1003 "dhcp6_parser.cc" // lalr1.cc:856 break; case 71: -#line 416 "dhcp6_parser.yy" // lalr1.cc:859 +#line 416 "dhcp6_parser.yy" // lalr1.cc:856 { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 989 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1013 "dhcp6_parser.cc" // lalr1.cc:856 break; case 72: -#line 424 "dhcp6_parser.yy" // lalr1.cc:859 +#line 424 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 999 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1023 "dhcp6_parser.cc" // lalr1.cc:856 break; case 73: -#line 428 "dhcp6_parser.yy" // lalr1.cc:859 +#line 428 "dhcp6_parser.yy" // lalr1.cc:856 { // No global parameter is required // parsing completed } -#line 1008 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1032 "dhcp6_parser.cc" // lalr1.cc:856 break; case 107: -#line 472 "dhcp6_parser.yy" // lalr1.cc:859 +#line 472 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("preferred-lifetime", prf); } -#line 1017 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1041 "dhcp6_parser.cc" // lalr1.cc:856 break; case 108: -#line 477 "dhcp6_parser.yy" // lalr1.cc:859 +#line 477 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 1026 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1050 "dhcp6_parser.cc" // lalr1.cc:856 break; case 109: -#line 482 "dhcp6_parser.yy" // lalr1.cc:859 +#line 482 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1035 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1059 "dhcp6_parser.cc" // lalr1.cc:856 break; case 110: -#line 487 "dhcp6_parser.yy" // lalr1.cc:859 +#line 487 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1044 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1068 "dhcp6_parser.cc" // lalr1.cc:856 break; case 111: -#line 492 "dhcp6_parser.yy" // lalr1.cc:859 +#line 492 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1053 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1077 "dhcp6_parser.cc" // lalr1.cc:856 break; case 112: -#line 497 "dhcp6_parser.yy" // lalr1.cc:859 +#line 497 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1061 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1085 "dhcp6_parser.cc" // lalr1.cc:856 break; case 113: -#line 499 "dhcp6_parser.yy" // lalr1.cc:859 +#line 499 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1071 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1095 "dhcp6_parser.cc" // lalr1.cc:856 break; case 114: -#line 505 "dhcp6_parser.yy" // lalr1.cc:859 +#line 505 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1082 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1106 "dhcp6_parser.cc" // lalr1.cc:856 break; case 115: -#line 510 "dhcp6_parser.yy" // lalr1.cc:859 +#line 510 "dhcp6_parser.yy" // lalr1.cc:856 { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1092 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1116 "dhcp6_parser.cc" // lalr1.cc:856 break; case 116: -#line 516 "dhcp6_parser.yy" // lalr1.cc:859 +#line 516 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1102 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1126 "dhcp6_parser.cc" // lalr1.cc:856 break; case 117: -#line 520 "dhcp6_parser.yy" // lalr1.cc:859 +#line 520 "dhcp6_parser.yy" // lalr1.cc:856 { // No interfaces config param is required // parsing completed } -#line 1111 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1135 "dhcp6_parser.cc" // lalr1.cc:856 break; case 125: -#line 536 "dhcp6_parser.yy" // lalr1.cc:859 +#line 536 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1122 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1146 "dhcp6_parser.cc" // lalr1.cc:856 break; case 126: -#line 541 "dhcp6_parser.yy" // lalr1.cc:859 +#line 541 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1131 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1155 "dhcp6_parser.cc" // lalr1.cc:856 break; case 127: -#line 546 "dhcp6_parser.yy" // lalr1.cc:859 +#line 546 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1140 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1164 "dhcp6_parser.cc" // lalr1.cc:856 break; case 128: -#line 552 "dhcp6_parser.yy" // lalr1.cc:859 +#line 552 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1151 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1175 "dhcp6_parser.cc" // lalr1.cc:856 break; case 129: -#line 557 "dhcp6_parser.yy" // lalr1.cc:859 +#line 557 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 1162 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1186 "dhcp6_parser.cc" // lalr1.cc:856 break; case 130: -#line 564 "dhcp6_parser.yy" // lalr1.cc:859 +#line 564 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1173 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1197 "dhcp6_parser.cc" // lalr1.cc:856 break; case 131: -#line 569 "dhcp6_parser.yy" // lalr1.cc:859 +#line 569 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 1184 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1208 "dhcp6_parser.cc" // lalr1.cc:856 break; case 132: -#line 576 "dhcp6_parser.yy" // lalr1.cc:859 +#line 576 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1195 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1219 "dhcp6_parser.cc" // lalr1.cc:856 break; case 133: -#line 581 "dhcp6_parser.yy" // lalr1.cc:859 +#line 581 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1204 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1228 "dhcp6_parser.cc" // lalr1.cc:856 break; case 138: -#line 594 "dhcp6_parser.yy" // lalr1.cc:859 +#line 594 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1214 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1238 "dhcp6_parser.cc" // lalr1.cc:856 break; case 139: -#line 598 "dhcp6_parser.yy" // lalr1.cc:859 +#line 598 "dhcp6_parser.yy" // lalr1.cc:856 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1224 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1248 "dhcp6_parser.cc" // lalr1.cc:856 break; case 160: -#line 628 "dhcp6_parser.yy" // lalr1.cc:859 +#line 628 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.DATABASE_TYPE); } -#line 1232 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1256 "dhcp6_parser.cc" // lalr1.cc:856 break; case 161: -#line 630 "dhcp6_parser.yy" // lalr1.cc:859 +#line 630 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1241 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1265 "dhcp6_parser.cc" // lalr1.cc:856 break; case 162: -#line 635 "dhcp6_parser.yy" // lalr1.cc:859 +#line 635 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1247 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1271 "dhcp6_parser.cc" // lalr1.cc:856 break; case 163: -#line 636 "dhcp6_parser.yy" // lalr1.cc:859 +#line 636 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1253 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1277 "dhcp6_parser.cc" // lalr1.cc:856 break; case 164: -#line 637 "dhcp6_parser.yy" // lalr1.cc:859 +#line 637 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1259 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1283 "dhcp6_parser.cc" // lalr1.cc:856 break; case 165: -#line 638 "dhcp6_parser.yy" // lalr1.cc:859 +#line 638 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1265 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1289 "dhcp6_parser.cc" // lalr1.cc:856 break; case 166: -#line 641 "dhcp6_parser.yy" // lalr1.cc:859 +#line 641 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1273 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1297 "dhcp6_parser.cc" // lalr1.cc:856 break; case 167: -#line 643 "dhcp6_parser.yy" // lalr1.cc:859 +#line 643 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1283 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1307 "dhcp6_parser.cc" // lalr1.cc:856 break; case 168: -#line 649 "dhcp6_parser.yy" // lalr1.cc:859 +#line 649 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1291 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1315 "dhcp6_parser.cc" // lalr1.cc:856 break; case 169: -#line 651 "dhcp6_parser.yy" // lalr1.cc:859 +#line 651 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1301 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1325 "dhcp6_parser.cc" // lalr1.cc:856 break; case 170: -#line 657 "dhcp6_parser.yy" // lalr1.cc:859 +#line 657 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1309 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1333 "dhcp6_parser.cc" // lalr1.cc:856 break; case 171: -#line 659 "dhcp6_parser.yy" // lalr1.cc:859 +#line 659 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1319 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1343 "dhcp6_parser.cc" // lalr1.cc:856 break; case 172: -#line 665 "dhcp6_parser.yy" // lalr1.cc:859 +#line 665 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1328 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1352 "dhcp6_parser.cc" // lalr1.cc:856 break; case 173: -#line 670 "dhcp6_parser.yy" // lalr1.cc:859 +#line 670 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1336 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1360 "dhcp6_parser.cc" // lalr1.cc:856 break; case 174: -#line 672 "dhcp6_parser.yy" // lalr1.cc:859 +#line 672 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1346 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1370 "dhcp6_parser.cc" // lalr1.cc:856 break; case 175: -#line 678 "dhcp6_parser.yy" // lalr1.cc:859 +#line 678 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1355 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1379 "dhcp6_parser.cc" // lalr1.cc:856 break; case 176: -#line 683 "dhcp6_parser.yy" // lalr1.cc:859 +#line 683 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1364 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1388 "dhcp6_parser.cc" // lalr1.cc:856 break; case 177: -#line 688 "dhcp6_parser.yy" // lalr1.cc:859 +#line 688 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1373 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1397 "dhcp6_parser.cc" // lalr1.cc:856 break; case 178: -#line 693 "dhcp6_parser.yy" // lalr1.cc:859 +#line 693 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1382 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1406 "dhcp6_parser.cc" // lalr1.cc:856 break; case 179: -#line 698 "dhcp6_parser.yy" // lalr1.cc:859 +#line 698 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 1391 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1415 "dhcp6_parser.cc" // lalr1.cc:856 break; case 180: -#line 703 "dhcp6_parser.yy" // lalr1.cc:859 +#line 703 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1400 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1424 "dhcp6_parser.cc" // lalr1.cc:856 break; case 181: -#line 708 "dhcp6_parser.yy" // lalr1.cc:859 +#line 708 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 1409 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1433 "dhcp6_parser.cc" // lalr1.cc:856 break; case 182: -#line 713 "dhcp6_parser.yy" // lalr1.cc:859 +#line 713 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 1418 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1442 "dhcp6_parser.cc" // lalr1.cc:856 break; case 183: -#line 718 "dhcp6_parser.yy" // lalr1.cc:859 +#line 718 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1426 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1450 "dhcp6_parser.cc" // lalr1.cc:856 break; case 184: -#line 720 "dhcp6_parser.yy" // lalr1.cc:859 +#line 720 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1436 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1460 "dhcp6_parser.cc" // lalr1.cc:856 break; case 185: -#line 726 "dhcp6_parser.yy" // lalr1.cc:859 +#line 726 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 1445 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1469 "dhcp6_parser.cc" // lalr1.cc:856 break; case 186: -#line 731 "dhcp6_parser.yy" // lalr1.cc:859 +#line 731 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1453 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1477 "dhcp6_parser.cc" // lalr1.cc:856 break; case 187: -#line 733 "dhcp6_parser.yy" // lalr1.cc:859 +#line 733 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 1463 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1487 "dhcp6_parser.cc" // lalr1.cc:856 break; case 188: -#line 739 "dhcp6_parser.yy" // lalr1.cc:859 +#line 739 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1474 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1498 "dhcp6_parser.cc" // lalr1.cc:856 break; case 189: -#line 744 "dhcp6_parser.yy" // lalr1.cc:859 +#line 744 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1483 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1507 "dhcp6_parser.cc" // lalr1.cc:856 break; case 193: -#line 754 "dhcp6_parser.yy" // lalr1.cc:859 +#line 754 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1491 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1515 "dhcp6_parser.cc" // lalr1.cc:856 break; case 194: -#line 756 "dhcp6_parser.yy" // lalr1.cc:859 +#line 756 "dhcp6_parser.yy" // lalr1.cc:856 { if ( (string(yystack_[0].value.as< std::string > ()) == "none") || @@ -1507,307 +1531,307 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1511 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1535 "dhcp6_parser.cc" // lalr1.cc:856 break; case 195: -#line 772 "dhcp6_parser.yy" // lalr1.cc:859 +#line 772 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1522 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1546 "dhcp6_parser.cc" // lalr1.cc:856 break; case 196: -#line 777 "dhcp6_parser.yy" // lalr1.cc:859 +#line 777 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1531 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1555 "dhcp6_parser.cc" // lalr1.cc:856 break; case 201: -#line 790 "dhcp6_parser.yy" // lalr1.cc:859 +#line 790 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 1540 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1564 "dhcp6_parser.cc" // lalr1.cc:856 break; case 202: -#line 795 "dhcp6_parser.yy" // lalr1.cc:859 +#line 795 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 1549 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1573 "dhcp6_parser.cc" // lalr1.cc:856 break; case 203: -#line 800 "dhcp6_parser.yy" // lalr1.cc:859 +#line 800 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1560 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1584 "dhcp6_parser.cc" // lalr1.cc:856 break; case 204: -#line 805 "dhcp6_parser.yy" // lalr1.cc:859 +#line 805 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1569 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1593 "dhcp6_parser.cc" // lalr1.cc:856 break; case 210: -#line 819 "dhcp6_parser.yy" // lalr1.cc:859 +#line 819 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 1578 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1602 "dhcp6_parser.cc" // lalr1.cc:856 break; case 211: -#line 824 "dhcp6_parser.yy" // lalr1.cc:859 +#line 824 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 1587 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1611 "dhcp6_parser.cc" // lalr1.cc:856 break; case 212: -#line 831 "dhcp6_parser.yy" // lalr1.cc:859 +#line 831 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1598 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1622 "dhcp6_parser.cc" // lalr1.cc:856 break; case 213: -#line 836 "dhcp6_parser.yy" // lalr1.cc:859 +#line 836 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1607 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1631 "dhcp6_parser.cc" // lalr1.cc:856 break; case 214: -#line 841 "dhcp6_parser.yy" // lalr1.cc:859 +#line 841 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1618 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1642 "dhcp6_parser.cc" // lalr1.cc:856 break; case 215: -#line 846 "dhcp6_parser.yy" // lalr1.cc:859 +#line 846 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1627 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1651 "dhcp6_parser.cc" // lalr1.cc:856 break; case 220: -#line 859 "dhcp6_parser.yy" // lalr1.cc:859 +#line 859 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1637 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1661 "dhcp6_parser.cc" // lalr1.cc:856 break; case 221: -#line 863 "dhcp6_parser.yy" // lalr1.cc:859 +#line 863 "dhcp6_parser.yy" // lalr1.cc:856 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1647 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1671 "dhcp6_parser.cc" // lalr1.cc:856 break; case 222: -#line 869 "dhcp6_parser.yy" // lalr1.cc:859 +#line 869 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1657 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1681 "dhcp6_parser.cc" // lalr1.cc:856 break; case 223: -#line 873 "dhcp6_parser.yy" // lalr1.cc:859 +#line 873 "dhcp6_parser.yy" // lalr1.cc:856 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1667 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1691 "dhcp6_parser.cc" // lalr1.cc:856 break; case 229: -#line 888 "dhcp6_parser.yy" // lalr1.cc:859 +#line 888 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1675 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1699 "dhcp6_parser.cc" // lalr1.cc:856 break; case 230: -#line 890 "dhcp6_parser.yy" // lalr1.cc:859 +#line 890 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1685 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1709 "dhcp6_parser.cc" // lalr1.cc:856 break; case 231: -#line 896 "dhcp6_parser.yy" // lalr1.cc:859 +#line 896 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1693 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1717 "dhcp6_parser.cc" // lalr1.cc:856 break; case 232: -#line 898 "dhcp6_parser.yy" // lalr1.cc:859 +#line 898 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1702 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1726 "dhcp6_parser.cc" // lalr1.cc:856 break; case 233: -#line 904 "dhcp6_parser.yy" // lalr1.cc:859 +#line 904 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1713 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1737 "dhcp6_parser.cc" // lalr1.cc:856 break; case 234: -#line 909 "dhcp6_parser.yy" // lalr1.cc:859 +#line 909 "dhcp6_parser.yy" // lalr1.cc:856 { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1723 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1747 "dhcp6_parser.cc" // lalr1.cc:856 break; case 243: -#line 927 "dhcp6_parser.yy" // lalr1.cc:859 +#line 927 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1732 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1756 "dhcp6_parser.cc" // lalr1.cc:856 break; case 244: -#line 932 "dhcp6_parser.yy" // lalr1.cc:859 +#line 932 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1741 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1765 "dhcp6_parser.cc" // lalr1.cc:856 break; case 245: -#line 937 "dhcp6_parser.yy" // lalr1.cc:859 +#line 937 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 1750 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1774 "dhcp6_parser.cc" // lalr1.cc:856 break; case 246: -#line 942 "dhcp6_parser.yy" // lalr1.cc:859 +#line 942 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 1759 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1783 "dhcp6_parser.cc" // lalr1.cc:856 break; case 247: -#line 947 "dhcp6_parser.yy" // lalr1.cc:859 +#line 947 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 1768 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1792 "dhcp6_parser.cc" // lalr1.cc:856 break; case 248: -#line 952 "dhcp6_parser.yy" // lalr1.cc:859 +#line 952 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 1777 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1801 "dhcp6_parser.cc" // lalr1.cc:856 break; case 249: -#line 960 "dhcp6_parser.yy" // lalr1.cc:859 +#line 960 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1788 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1812 "dhcp6_parser.cc" // lalr1.cc:856 break; case 250: -#line 965 "dhcp6_parser.yy" // lalr1.cc:859 +#line 965 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1797 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1821 "dhcp6_parser.cc" // lalr1.cc:856 break; case 255: -#line 985 "dhcp6_parser.yy" // lalr1.cc:859 +#line 985 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1807 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1831 "dhcp6_parser.cc" // lalr1.cc:856 break; case 256: -#line 989 "dhcp6_parser.yy" // lalr1.cc:859 +#line 989 "dhcp6_parser.yy" // lalr1.cc:856 { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -1829,267 +1853,267 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1833 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1857 "dhcp6_parser.cc" // lalr1.cc:856 break; case 257: -#line 1011 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1011 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1843 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1867 "dhcp6_parser.cc" // lalr1.cc:856 break; case 258: -#line 1015 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1015 "dhcp6_parser.yy" // lalr1.cc:856 { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1853 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1877 "dhcp6_parser.cc" // lalr1.cc:856 break; case 281: -#line 1049 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1049 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1861 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1885 "dhcp6_parser.cc" // lalr1.cc:856 break; case 282: -#line 1051 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1051 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 1871 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1895 "dhcp6_parser.cc" // lalr1.cc:856 break; case 283: -#line 1057 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1057 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1879 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1903 "dhcp6_parser.cc" // lalr1.cc:856 break; case 284: -#line 1059 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1059 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 1889 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1913 "dhcp6_parser.cc" // lalr1.cc:856 break; case 285: -#line 1065 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1065 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1897 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1921 "dhcp6_parser.cc" // lalr1.cc:856 break; case 286: -#line 1067 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1067 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1907 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1931 "dhcp6_parser.cc" // lalr1.cc:856 break; case 287: -#line 1073 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1073 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1915 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1939 "dhcp6_parser.cc" // lalr1.cc:856 break; case 288: -#line 1075 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1075 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1925 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1949 "dhcp6_parser.cc" // lalr1.cc:856 break; case 289: -#line 1081 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1081 "dhcp6_parser.yy" // lalr1.cc:856 { 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 1936 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1960 "dhcp6_parser.cc" // lalr1.cc:856 break; case 290: -#line 1086 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1086 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1945 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1969 "dhcp6_parser.cc" // lalr1.cc:856 break; case 291: -#line 1091 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1091 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.RESERVATION_MODE); } -#line 1953 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1977 "dhcp6_parser.cc" // lalr1.cc:856 break; case 292: -#line 1093 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1093 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1962 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1986 "dhcp6_parser.cc" // lalr1.cc:856 break; case 293: -#line 1098 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1098 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 1968 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1992 "dhcp6_parser.cc" // lalr1.cc:856 break; case 294: -#line 1099 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1099 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 1974 "dhcp6_parser.cc" // lalr1.cc:859 +#line 1998 "dhcp6_parser.cc" // lalr1.cc:856 break; case 295: -#line 1100 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1100 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 1980 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2004 "dhcp6_parser.cc" // lalr1.cc:856 break; case 296: -#line 1101 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1101 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 1986 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2010 "dhcp6_parser.cc" // lalr1.cc:856 break; case 297: -#line 1104 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1104 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 1995 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2019 "dhcp6_parser.cc" // lalr1.cc:856 break; case 298: -#line 1109 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1109 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 2004 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2028 "dhcp6_parser.cc" // lalr1.cc:856 break; case 299: -#line 1117 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1117 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2015 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2039 "dhcp6_parser.cc" // lalr1.cc:856 break; case 300: -#line 1122 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1122 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2024 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2048 "dhcp6_parser.cc" // lalr1.cc:856 break; case 305: -#line 1137 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1137 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2034 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2058 "dhcp6_parser.cc" // lalr1.cc:856 break; case 306: -#line 1141 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1141 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 2042 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2066 "dhcp6_parser.cc" // lalr1.cc:856 break; case 326: -#line 1172 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1172 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2053 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2077 "dhcp6_parser.cc" // lalr1.cc:856 break; case 327: -#line 1177 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1177 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2062 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2086 "dhcp6_parser.cc" // lalr1.cc:856 break; case 328: -#line 1185 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1185 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2071 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2095 "dhcp6_parser.cc" // lalr1.cc:856 break; case 329: -#line 1188 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1188 "dhcp6_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 2079 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2103 "dhcp6_parser.cc" // lalr1.cc:856 break; case 334: -#line 1204 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1204 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2089 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2113 "dhcp6_parser.cc" // lalr1.cc:856 break; case 335: -#line 1208 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1208 "dhcp6_parser.yy" // lalr1.cc:856 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2097,21 +2121,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2101 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2125 "dhcp6_parser.cc" // lalr1.cc:856 break; case 336: -#line 1219 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1219 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2111 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2135 "dhcp6_parser.cc" // lalr1.cc:856 break; case 337: -#line 1223 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1223 "dhcp6_parser.yy" // lalr1.cc:856 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2119,280 +2143,280 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2123 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2147 "dhcp6_parser.cc" // lalr1.cc:856 break; case 353: -#line 1255 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1255 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 2132 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2156 "dhcp6_parser.cc" // lalr1.cc:856 break; case 355: -#line 1262 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1262 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2140 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2164 "dhcp6_parser.cc" // lalr1.cc:856 break; case 356: -#line 1264 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1264 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 2150 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2174 "dhcp6_parser.cc" // lalr1.cc:856 break; case 357: -#line 1270 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1270 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2158 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2182 "dhcp6_parser.cc" // lalr1.cc:856 break; case 358: -#line 1272 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1272 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2168 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2192 "dhcp6_parser.cc" // lalr1.cc:856 break; case 359: -#line 1278 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1278 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2176 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2200 "dhcp6_parser.cc" // lalr1.cc:856 break; case 360: -#line 1280 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1280 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 2186 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2210 "dhcp6_parser.cc" // lalr1.cc:856 break; case 362: -#line 1288 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1288 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2194 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2218 "dhcp6_parser.cc" // lalr1.cc:856 break; case 363: -#line 1290 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1290 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 2204 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2228 "dhcp6_parser.cc" // lalr1.cc:856 break; case 364: -#line 1296 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1296 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 2213 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2237 "dhcp6_parser.cc" // lalr1.cc:856 break; case 365: -#line 1305 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1305 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2224 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2248 "dhcp6_parser.cc" // lalr1.cc:856 break; case 366: -#line 1310 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1310 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2233 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2257 "dhcp6_parser.cc" // lalr1.cc:856 break; case 371: -#line 1329 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1329 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2243 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2267 "dhcp6_parser.cc" // lalr1.cc:856 break; case 372: -#line 1333 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1333 "dhcp6_parser.yy" // lalr1.cc:856 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2252 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2276 "dhcp6_parser.cc" // lalr1.cc:856 break; case 373: -#line 1341 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1341 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2262 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2286 "dhcp6_parser.cc" // lalr1.cc:856 break; case 374: -#line 1345 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1345 "dhcp6_parser.yy" // lalr1.cc:856 { /// @todo: the code or name parameters are required. // parsing completed } -#line 2271 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2295 "dhcp6_parser.cc" // lalr1.cc:856 break; case 389: -#line 1378 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1378 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2279 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2303 "dhcp6_parser.cc" // lalr1.cc:856 break; case 390: -#line 1380 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1380 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 2289 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2313 "dhcp6_parser.cc" // lalr1.cc:856 break; case 393: -#line 1390 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1390 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 2298 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2322 "dhcp6_parser.cc" // lalr1.cc:856 break; case 394: -#line 1395 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1395 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 2307 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2331 "dhcp6_parser.cc" // lalr1.cc:856 break; case 395: -#line 1403 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1403 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2318 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2342 "dhcp6_parser.cc" // lalr1.cc:856 break; case 396: -#line 1408 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1408 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2327 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2351 "dhcp6_parser.cc" // lalr1.cc:856 break; case 401: -#line 1423 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1423 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2337 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2361 "dhcp6_parser.cc" // lalr1.cc:856 break; case 402: -#line 1427 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1427 "dhcp6_parser.yy" // lalr1.cc:856 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2347 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2371 "dhcp6_parser.cc" // lalr1.cc:856 break; case 403: -#line 1433 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1433 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2357 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2381 "dhcp6_parser.cc" // lalr1.cc:856 break; case 404: -#line 1437 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1437 "dhcp6_parser.yy" // lalr1.cc:856 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 2366 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2390 "dhcp6_parser.cc" // lalr1.cc:856 break; case 414: -#line 1455 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1455 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2374 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2398 "dhcp6_parser.cc" // lalr1.cc:856 break; case 415: -#line 1457 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1457 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 2384 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2408 "dhcp6_parser.cc" // lalr1.cc:856 break; case 416: -#line 1463 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1463 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2392 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2416 "dhcp6_parser.cc" // lalr1.cc:856 break; case 417: -#line 1465 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1465 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -2415,19 +2439,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2419 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2443 "dhcp6_parser.cc" // lalr1.cc:856 break; case 418: -#line 1488 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1488 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2427 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2451 "dhcp6_parser.cc" // lalr1.cc:856 break; case 419: -#line 1490 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1490 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -2452,41 +2476,41 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2456 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2480 "dhcp6_parser.cc" // lalr1.cc:856 break; case 420: -#line 1518 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1518 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2467 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2491 "dhcp6_parser.cc" // lalr1.cc:856 break; case 421: -#line 1523 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1523 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2476 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2500 "dhcp6_parser.cc" // lalr1.cc:856 break; case 426: -#line 1538 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1538 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2486 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2510 "dhcp6_parser.cc" // lalr1.cc:856 break; case 427: -#line 1542 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1542 "dhcp6_parser.yy" // lalr1.cc:856 { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2494,21 +2518,21 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2498 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2522 "dhcp6_parser.cc" // lalr1.cc:856 break; case 428: -#line 1550 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1550 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2508 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2532 "dhcp6_parser.cc" // lalr1.cc:856 break; case 429: -#line 1554 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1554 "dhcp6_parser.yy" // lalr1.cc:856 { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2516,544 +2540,544 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2520 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2544 "dhcp6_parser.cc" // lalr1.cc:856 break; case 443: -#line 1579 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1579 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2528 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2552 "dhcp6_parser.cc" // lalr1.cc:856 break; case 444: -#line 1581 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1581 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); ctx.leave(); } -#line 2538 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2562 "dhcp6_parser.cc" // lalr1.cc:856 break; case 445: -#line 1587 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1587 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); } -#line 2547 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2571 "dhcp6_parser.cc" // lalr1.cc:856 break; case 446: -#line 1592 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1592 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2555 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2579 "dhcp6_parser.cc" // lalr1.cc:856 break; case 447: -#line 1594 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1594 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2565 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2589 "dhcp6_parser.cc" // lalr1.cc:856 break; case 448: -#line 1600 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1600 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix-len", prf); } -#line 2574 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2598 "dhcp6_parser.cc" // lalr1.cc:856 break; case 449: -#line 1605 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1605 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); } -#line 2583 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2607 "dhcp6_parser.cc" // lalr1.cc:856 break; case 450: -#line 1613 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1613 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2594 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2618 "dhcp6_parser.cc" // lalr1.cc:856 break; case 451: -#line 1618 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1618 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2603 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2627 "dhcp6_parser.cc" // lalr1.cc:856 break; case 456: -#line 1631 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1631 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2613 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2637 "dhcp6_parser.cc" // lalr1.cc:856 break; case 457: -#line 1635 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1635 "dhcp6_parser.yy" // lalr1.cc:856 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 2622 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2646 "dhcp6_parser.cc" // lalr1.cc:856 break; case 458: -#line 1640 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1640 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2632 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2656 "dhcp6_parser.cc" // lalr1.cc:856 break; case 459: -#line 1644 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1644 "dhcp6_parser.yy" // lalr1.cc:856 { /// @todo: an identifier parameter is required. // parsing completed } -#line 2641 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2665 "dhcp6_parser.cc" // lalr1.cc:856 break; case 475: -#line 1671 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1671 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2652 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2676 "dhcp6_parser.cc" // lalr1.cc:856 break; case 476: -#line 1676 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1676 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2661 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2685 "dhcp6_parser.cc" // lalr1.cc:856 break; case 477: -#line 1681 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1681 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2672 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2696 "dhcp6_parser.cc" // lalr1.cc:856 break; case 478: -#line 1686 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1686 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2681 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2705 "dhcp6_parser.cc" // lalr1.cc:856 break; case 479: -#line 1691 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1691 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2689 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2713 "dhcp6_parser.cc" // lalr1.cc:856 break; case 480: -#line 1693 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1693 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 2699 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2723 "dhcp6_parser.cc" // lalr1.cc:856 break; case 481: -#line 1699 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1699 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2707 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2731 "dhcp6_parser.cc" // lalr1.cc:856 break; case 482: -#line 1701 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1701 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2717 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2741 "dhcp6_parser.cc" // lalr1.cc:856 break; case 483: -#line 1707 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1707 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2725 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2749 "dhcp6_parser.cc" // lalr1.cc:856 break; case 484: -#line 1709 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1709 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 2735 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2759 "dhcp6_parser.cc" // lalr1.cc:856 break; case 485: -#line 1715 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1715 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2743 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2767 "dhcp6_parser.cc" // lalr1.cc:856 break; case 486: -#line 1717 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1717 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2753 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2777 "dhcp6_parser.cc" // lalr1.cc:856 break; case 487: -#line 1723 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1723 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2764 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2788 "dhcp6_parser.cc" // lalr1.cc:856 break; case 488: -#line 1728 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1728 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2773 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2797 "dhcp6_parser.cc" // lalr1.cc:856 break; case 489: -#line 1736 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1736 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2784 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2808 "dhcp6_parser.cc" // lalr1.cc:856 break; case 490: -#line 1741 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1741 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2793 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2817 "dhcp6_parser.cc" // lalr1.cc:856 break; case 493: -#line 1750 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1750 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2801 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2825 "dhcp6_parser.cc" // lalr1.cc:856 break; case 494: -#line 1752 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1752 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2811 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2835 "dhcp6_parser.cc" // lalr1.cc:856 break; case 495: -#line 1761 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1761 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2822 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2846 "dhcp6_parser.cc" // lalr1.cc:856 break; case 496: -#line 1766 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1766 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2831 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2855 "dhcp6_parser.cc" // lalr1.cc:856 break; case 499: -#line 1775 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1775 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2841 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2865 "dhcp6_parser.cc" // lalr1.cc:856 break; case 500: -#line 1779 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1779 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 2851 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2875 "dhcp6_parser.cc" // lalr1.cc:856 break; case 513: -#line 1804 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1804 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2859 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2883 "dhcp6_parser.cc" // lalr1.cc:856 break; case 514: -#line 1806 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1806 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 2869 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2893 "dhcp6_parser.cc" // lalr1.cc:856 break; case 515: -#line 1812 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1812 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 2878 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2902 "dhcp6_parser.cc" // lalr1.cc:856 break; case 516: -#line 1820 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1820 "dhcp6_parser.yy" // lalr1.cc:856 { 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 2889 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2913 "dhcp6_parser.cc" // lalr1.cc:856 break; case 517: -#line 1825 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1825 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 2900 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2924 "dhcp6_parser.cc" // lalr1.cc:856 break; case 529: -#line 1847 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1847 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.DUID_TYPE); } -#line 2908 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2932 "dhcp6_parser.cc" // lalr1.cc:856 break; case 530: -#line 1849 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1849 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2917 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2941 "dhcp6_parser.cc" // lalr1.cc:856 break; case 531: -#line 1854 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1854 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 2923 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2947 "dhcp6_parser.cc" // lalr1.cc:856 break; case 532: -#line 1855 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1855 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 2929 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2953 "dhcp6_parser.cc" // lalr1.cc:856 break; case 533: -#line 1856 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1856 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 2935 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2959 "dhcp6_parser.cc" // lalr1.cc:856 break; case 534: -#line 1859 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1859 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); } -#line 2944 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2968 "dhcp6_parser.cc" // lalr1.cc:856 break; case 535: -#line 1864 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1864 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2952 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2976 "dhcp6_parser.cc" // lalr1.cc:856 break; case 536: -#line 1866 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1866 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); ctx.leave(); } -#line 2962 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2986 "dhcp6_parser.cc" // lalr1.cc:856 break; case 537: -#line 1872 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1872 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); } -#line 2971 "dhcp6_parser.cc" // lalr1.cc:859 +#line 2995 "dhcp6_parser.cc" // lalr1.cc:856 break; case 538: -#line 1877 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1877 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); } -#line 2980 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3004 "dhcp6_parser.cc" // lalr1.cc:856 break; case 539: -#line 1884 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1884 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 2989 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3013 "dhcp6_parser.cc" // lalr1.cc:856 break; case 540: -#line 1891 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1891 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3000 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3024 "dhcp6_parser.cc" // lalr1.cc:856 break; case 541: -#line 1896 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1896 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3009 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3033 "dhcp6_parser.cc" // lalr1.cc:856 break; case 549: -#line 1912 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1912 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3017 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3041 "dhcp6_parser.cc" // lalr1.cc:856 break; case 550: -#line 1914 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1914 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3027 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3051 "dhcp6_parser.cc" // lalr1.cc:856 break; case 551: -#line 1920 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1920 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3035 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3059 "dhcp6_parser.cc" // lalr1.cc:856 break; case 552: -#line 1922 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1922 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3045 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3069 "dhcp6_parser.cc" // lalr1.cc:856 break; case 553: -#line 1930 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1930 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3053 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3077 "dhcp6_parser.cc" // lalr1.cc:856 break; case 554: -#line 1932 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1932 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr qc = yystack_[0].value.as< ElementPtr > (); ctx.stack_.back()->set("dhcp-queue-control", qc); @@ -3067,644 +3091,644 @@ namespace isc { namespace dhcp { ctx.leave(); } -#line 3071 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3095 "dhcp6_parser.cc" // lalr1.cc:856 break; case 555: -#line 1948 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1948 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3082 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3106 "dhcp6_parser.cc" // lalr1.cc:856 break; case 556: -#line 1953 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1953 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 3093 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3117 "dhcp6_parser.cc" // lalr1.cc:856 break; case 557: -#line 1960 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1960 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3103 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3127 "dhcp6_parser.cc" // lalr1.cc:856 break; case 558: -#line 1964 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1964 "dhcp6_parser.yy" // lalr1.cc:856 { // 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 3113 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3137 "dhcp6_parser.cc" // lalr1.cc:856 break; case 580: -#line 1995 "dhcp6_parser.yy" // lalr1.cc:859 +#line 1995 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 3122 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3146 "dhcp6_parser.cc" // lalr1.cc:856 break; case 581: -#line 2000 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2000 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3130 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3154 "dhcp6_parser.cc" // lalr1.cc:856 break; case 582: -#line 2002 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2002 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3140 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3164 "dhcp6_parser.cc" // lalr1.cc:856 break; case 583: -#line 2008 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2008 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3148 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3172 "dhcp6_parser.cc" // lalr1.cc:856 break; case 584: -#line 2010 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2010 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3158 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3182 "dhcp6_parser.cc" // lalr1.cc:856 break; case 585: -#line 2016 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2016 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 3167 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3191 "dhcp6_parser.cc" // lalr1.cc:856 break; case 586: -#line 2021 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2021 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3175 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3199 "dhcp6_parser.cc" // lalr1.cc:856 break; case 587: -#line 2023 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2023 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3185 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3209 "dhcp6_parser.cc" // lalr1.cc:856 break; case 588: -#line 2029 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2029 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 3194 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3218 "dhcp6_parser.cc" // lalr1.cc:856 break; case 589: -#line 2034 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2034 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 3203 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3227 "dhcp6_parser.cc" // lalr1.cc:856 break; case 590: -#line 2039 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2039 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_PROTOCOL); } -#line 3211 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3235 "dhcp6_parser.cc" // lalr1.cc:856 break; case 591: -#line 2041 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2041 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3220 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3244 "dhcp6_parser.cc" // lalr1.cc:856 break; case 592: -#line 2047 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2047 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 3226 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3250 "dhcp6_parser.cc" // lalr1.cc:856 break; case 593: -#line 2048 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2048 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 3232 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3256 "dhcp6_parser.cc" // lalr1.cc:856 break; case 594: -#line 2051 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2051 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_FORMAT); } -#line 3240 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3264 "dhcp6_parser.cc" // lalr1.cc:856 break; case 595: -#line 2053 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2053 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 3250 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3274 "dhcp6_parser.cc" // lalr1.cc:856 break; case 596: -#line 2059 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2059 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-include-fqdn", b); } -#line 3259 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3283 "dhcp6_parser.cc" // lalr1.cc:856 break; case 597: -#line 2064 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2064 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 3268 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3292 "dhcp6_parser.cc" // lalr1.cc:856 break; case 598: -#line 2069 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2069 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 3277 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3301 "dhcp6_parser.cc" // lalr1.cc:856 break; case 599: -#line 2074 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2074 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3285 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3309 "dhcp6_parser.cc" // lalr1.cc:856 break; case 600: -#line 2076 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2076 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3294 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3318 "dhcp6_parser.cc" // lalr1.cc:856 break; case 601: -#line 2082 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2082 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 3302 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3326 "dhcp6_parser.cc" // lalr1.cc:856 break; case 602: -#line 2085 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2085 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 3310 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3334 "dhcp6_parser.cc" // lalr1.cc:856 break; case 603: -#line 2088 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2088 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 3318 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3342 "dhcp6_parser.cc" // lalr1.cc:856 break; case 604: -#line 2091 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2091 "dhcp6_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 3326 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3350 "dhcp6_parser.cc" // lalr1.cc:856 break; case 605: -#line 2094 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2094 "dhcp6_parser.yy" // lalr1.cc:856 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 3335 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3359 "dhcp6_parser.cc" // lalr1.cc:856 break; case 606: -#line 2100 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2100 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3343 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3367 "dhcp6_parser.cc" // lalr1.cc:856 break; case 607: -#line 2102 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2102 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3353 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3377 "dhcp6_parser.cc" // lalr1.cc:856 break; case 608: -#line 2108 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2108 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3361 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3385 "dhcp6_parser.cc" // lalr1.cc:856 break; case 609: -#line 2110 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2110 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3371 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3395 "dhcp6_parser.cc" // lalr1.cc:856 break; case 610: -#line 2116 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2116 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3379 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3403 "dhcp6_parser.cc" // lalr1.cc:856 break; case 611: -#line 2118 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2118 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3389 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3413 "dhcp6_parser.cc" // lalr1.cc:856 break; case 612: -#line 2126 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2126 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3397 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3421 "dhcp6_parser.cc" // lalr1.cc:856 break; case 613: -#line 2128 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2128 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3406 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3430 "dhcp6_parser.cc" // lalr1.cc:856 break; case 614: -#line 2133 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2133 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3414 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3438 "dhcp6_parser.cc" // lalr1.cc:856 break; case 615: -#line 2135 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2135 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3423 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3447 "dhcp6_parser.cc" // lalr1.cc:856 break; case 616: -#line 2140 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2140 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3431 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3455 "dhcp6_parser.cc" // lalr1.cc:856 break; case 617: -#line 2142 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2142 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3440 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3464 "dhcp6_parser.cc" // lalr1.cc:856 break; case 618: -#line 2149 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2149 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3450 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3474 "dhcp6_parser.cc" // lalr1.cc:856 break; case 619: -#line 2153 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2153 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3458 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3482 "dhcp6_parser.cc" // lalr1.cc:856 break; case 620: -#line 2158 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2158 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3469 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3493 "dhcp6_parser.cc" // lalr1.cc:856 break; case 621: -#line 2163 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2163 "dhcp6_parser.yy" // lalr1.cc:856 { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 3479 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3503 "dhcp6_parser.cc" // lalr1.cc:856 break; case 622: -#line 2169 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2169 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3489 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3513 "dhcp6_parser.cc" // lalr1.cc:856 break; case 623: -#line 2173 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2173 "dhcp6_parser.yy" // lalr1.cc:856 { // No config_control params are required // parsing completed } -#line 3498 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3522 "dhcp6_parser.cc" // lalr1.cc:856 break; case 628: -#line 2188 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2188 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3509 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3533 "dhcp6_parser.cc" // lalr1.cc:856 break; case 629: -#line 2193 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2193 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3518 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3542 "dhcp6_parser.cc" // lalr1.cc:856 break; case 630: -#line 2203 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2203 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3529 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3553 "dhcp6_parser.cc" // lalr1.cc:856 break; case 631: -#line 2208 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2208 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3538 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3562 "dhcp6_parser.cc" // lalr1.cc:856 break; case 632: -#line 2213 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2213 "dhcp6_parser.yy" // lalr1.cc:856 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3548 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3572 "dhcp6_parser.cc" // lalr1.cc:856 break; case 633: -#line 2217 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2217 "dhcp6_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 3556 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3580 "dhcp6_parser.cc" // lalr1.cc:856 break; case 637: -#line 2233 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2233 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3567 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3591 "dhcp6_parser.cc" // lalr1.cc:856 break; case 638: -#line 2238 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2238 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3576 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3600 "dhcp6_parser.cc" // lalr1.cc:856 break; case 641: -#line 2250 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2250 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 3586 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3610 "dhcp6_parser.cc" // lalr1.cc:856 break; case 642: -#line 2254 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2254 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3594 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3618 "dhcp6_parser.cc" // lalr1.cc:856 break; case 652: -#line 2271 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2271 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 3603 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3627 "dhcp6_parser.cc" // lalr1.cc:856 break; case 653: -#line 2276 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2276 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3611 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3635 "dhcp6_parser.cc" // lalr1.cc:856 break; case 654: -#line 2278 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2278 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 3621 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3645 "dhcp6_parser.cc" // lalr1.cc:856 break; case 655: -#line 2284 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2284 "dhcp6_parser.yy" // lalr1.cc:856 { 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 3632 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3656 "dhcp6_parser.cc" // lalr1.cc:856 break; case 656: -#line 2289 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2289 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3641 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3665 "dhcp6_parser.cc" // lalr1.cc:856 break; case 659: -#line 2298 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2298 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3651 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3675 "dhcp6_parser.cc" // lalr1.cc:856 break; case 660: -#line 2302 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2302 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3659 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3683 "dhcp6_parser.cc" // lalr1.cc:856 break; case 667: -#line 2316 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2316 "dhcp6_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3667 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3691 "dhcp6_parser.cc" // lalr1.cc:856 break; case 668: -#line 2318 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2318 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 3677 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3701 "dhcp6_parser.cc" // lalr1.cc:856 break; case 669: -#line 2324 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2324 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 3686 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3710 "dhcp6_parser.cc" // lalr1.cc:856 break; case 670: -#line 2329 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2329 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 3695 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3719 "dhcp6_parser.cc" // lalr1.cc:856 break; case 671: -#line 2334 "dhcp6_parser.yy" // lalr1.cc:859 +#line 2334 "dhcp6_parser.yy" // lalr1.cc:856 { ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 3704 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3728 "dhcp6_parser.cc" // lalr1.cc:856 break; -#line 3708 "dhcp6_parser.cc" // lalr1.cc:859 +#line 3732 "dhcp6_parser.cc" // lalr1.cc:856 default: break; } @@ -3766,7 +3790,6 @@ namespace isc { namespace dhcp { code. */ if (false) goto yyerrorlab; - yyerror_range[1].location = yystack_[yylen - 1].location; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); @@ -3840,8 +3863,7 @@ namespace isc { namespace dhcp { } 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. if (!yyla.empty ()) @@ -3859,7 +3881,7 @@ namespace isc { namespace dhcp { void Dhcp6Parser::error (const syntax_error& yyexc) { - error (yyexc.location, yyexc.what()); + error (yyexc.location, yyexc.what ()); } // Generate an error message. @@ -3935,12 +3957,13 @@ namespace isc { namespace dhcp { 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_ } @@ -4995,18 +5018,18 @@ namespace isc { namespace dhcp { 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 Dhcp6Parser::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 << " =", @@ -5015,10 +5038,10 @@ namespace isc { namespace dhcp { #endif // PARSER6_DEBUG -#line 14 "dhcp6_parser.yy" // lalr1.cc:1167 +#line 14 "dhcp6_parser.yy" // lalr1.cc:1163 } } // isc::dhcp -#line 5021 "dhcp6_parser.cc" // lalr1.cc:1167 -#line 2339 "dhcp6_parser.yy" // lalr1.cc:1168 +#line 5044 "dhcp6_parser.cc" // lalr1.cc:1163 +#line 2339 "dhcp6_parser.yy" // lalr1.cc:1164 void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index 8680ab58f9..3035ef11ce 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,7 +40,7 @@ #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED // // "%code requires" blocks. -#line 17 "dhcp6_parser.yy" // lalr1.cc:377 +#line 17 "dhcp6_parser.yy" // lalr1.cc:379 #include #include @@ -52,7 +52,7 @@ using namespace isc::dhcp; using namespace isc::data; using namespace std; -#line 56 "dhcp6_parser.h" // lalr1.cc:377 +#line 56 "dhcp6_parser.h" // lalr1.cc:379 # include # include // std::abort @@ -135,9 +135,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER6_DEBUG */ -#line 14 "dhcp6_parser.yy" // lalr1.cc:377 +#line 14 "dhcp6_parser.yy" // lalr1.cc:379 namespace isc { namespace dhcp { -#line 141 "dhcp6_parser.h" // lalr1.cc:377 +#line 141 "dhcp6_parser.h" // lalr1.cc:379 @@ -1496,6 +1496,8 @@ namespace isc { namespace dhcp { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); + /// Copy construct. + stack_symbol_type (const stack_symbol_type& that); /// Steal the contents from \a sym to build this. stack_symbol_type (state_type s, symbol_type& sym); /// Assignment, needed by push_back. @@ -1524,7 +1526,7 @@ namespace isc { namespace dhcp { void yypush_ (const char* m, state_type s, symbol_type& sym); /// Pop \a n symbols the three stacks. - void yypop_ (unsigned int n = 1); + void yypop_ (unsigned n = 1); /// Constants. enum @@ -1596,12 +1598,12 @@ namespace isc { namespace dhcp { 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174 }; - const unsigned int user_token_number_max_ = 429; + const unsigned user_token_number_max_ = 429; const token_number_type undef_token_ = 2; - if (static_cast(t) <= yyeof_) + if (static_cast (t) <= yyeof_) return yyeof_; - else if (static_cast (t) <= user_token_number_max_) + else if (static_cast (t) <= user_token_number_max_) return translate_table[t]; else return undef_token_; @@ -1615,19 +1617,17 @@ namespace isc { namespace dhcp { // basic_symbol. template - inline Dhcp6Parser::basic_symbol::basic_symbol () : value () {} template - inline Dhcp6Parser::basic_symbol::basic_symbol (const basic_symbol& other) : Base (other) , value () , location (other.location) { - switch (other.type_get ()) + switch (other.type_get ()) { case 192: // value case 196: // map_value @@ -1661,16 +1661,14 @@ namespace isc { namespace dhcp { } - template - inline Dhcp6Parser::basic_symbol::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 ()) + switch (this->type_get ()) { case 192: // value case 196: // map_value @@ -1750,14 +1748,12 @@ namespace isc { namespace dhcp { template - inline Dhcp6Parser::basic_symbol::~basic_symbol () { clear (); } template - inline void Dhcp6Parser::basic_symbol::clear () { @@ -1772,7 +1768,7 @@ namespace isc { namespace dhcp { } // Type destructor. - switch (yytype) + switch (yytype) { case 192: // value case 196: // map_value @@ -1808,7 +1804,6 @@ namespace isc { namespace dhcp { } template - inline bool Dhcp6Parser::basic_symbol::empty () const { @@ -1816,12 +1811,11 @@ namespace isc { namespace dhcp { } template - inline void Dhcp6Parser::basic_symbol::move (basic_symbol& s) { - super_type::move(s); - switch (this->type_get ()) + super_type::move (s); + switch (this->type_get ()) { case 192: // value case 196: // map_value @@ -2965,9 +2959,9 @@ namespace isc { namespace dhcp { } -#line 14 "dhcp6_parser.yy" // lalr1.cc:377 +#line 14 "dhcp6_parser.yy" // lalr1.cc:379 } } // isc::dhcp -#line 2971 "dhcp6_parser.h" // lalr1.cc:377 +#line 2965 "dhcp6_parser.h" // lalr1.cc:379 diff --git a/src/bin/dhcp6/location.hh b/src/bin/dhcp6/location.hh index 239704683c..3c8d9b80f5 100644 --- a/src/bin/dhcp6/location.hh +++ b/src/bin/dhcp6/location.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,9 +41,9 @@ # include "position.hh" -#line 14 "dhcp6_parser.yy" // location.cc:296 +#line 14 "dhcp6_parser.yy" // location.cc:292 namespace isc { namespace dhcp { -#line 46 "location.hh" // location.cc:296 +#line 46 "location.hh" // location.cc:292 /// Abstract a location. class location { @@ -52,30 +53,27 @@ namespace isc { namespace dhcp { 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; @@ -173,7 +171,7 @@ namespace isc { namespace dhcp { inline std::basic_ostream& operator<< (std::basic_ostream& 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 @@ -186,7 +184,7 @@ namespace isc { namespace dhcp { return ostr; } -#line 14 "dhcp6_parser.yy" // location.cc:296 +#line 14 "dhcp6_parser.yy" // location.cc:292 } } // isc::dhcp -#line 192 "location.hh" // location.cc:296 +#line 189 "location.hh" // location.cc:292 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED diff --git a/src/bin/dhcp6/position.hh b/src/bin/dhcp6/position.hh index 2ee80e6d0a..a0746c667d 100644 --- a/src/bin/dhcp6/position.hh +++ b/src/bin/dhcp6/position.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Positions for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -50,28 +51,27 @@ # endif # endif -#line 14 "dhcp6_parser.yy" // location.cc:296 +#line 14 "dhcp6_parser.yy" // location.cc:292 namespace isc { namespace dhcp { -#line 56 "position.hh" // location.cc:296 +#line 56 "position.hh" // location.cc:292 /// Abstract a position. class position { public: /// Construct a position. explicit position (std::string* f = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) : filename (f) , line (l) , column (c) - { - } + {} /// Initialization. void initialize (std::string* fn = YY_NULLPTR, - unsigned int l = 1u, - unsigned int c = 1u) + unsigned l = 1u, + unsigned c = 1u) { filename = fn; line = l; @@ -100,15 +100,15 @@ namespace isc { namespace dhcp { /// File name to which this position refers. std::string* filename; /// Current line number. - unsigned int line; + unsigned line; /// Current column number. - unsigned int column; + unsigned column; private: /// Compute max(min, lhs+rhs) (provided min <= lhs). - static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return (0 < rhs || -static_cast(rhs) < lhs + return (0 < rhs || -static_cast(rhs) < lhs ? rhs + lhs : min); } @@ -174,7 +174,7 @@ namespace isc { namespace dhcp { return ostr << pos.line << '.' << pos.column; } -#line 14 "dhcp6_parser.yy" // location.cc:296 +#line 14 "dhcp6_parser.yy" // location.cc:292 } } // isc::dhcp -#line 180 "position.hh" // location.cc:296 +#line 179 "position.hh" // location.cc:292 #endif // !YY_PARSER6_POSITION_HH_INCLUDED diff --git a/src/bin/dhcp6/stack.hh b/src/bin/dhcp6/stack.hh index db2863a06e..838f13426c 100644 --- a/src/bin/dhcp6/stack.hh +++ b/src/bin/dhcp6/stack.hh @@ -1,8 +1,9 @@ -// A Bison parser, made by GNU Bison 3.0.4. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Stack handling for Bison parsers in C++ -// Copyright (C) 2002-2015 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -40,9 +41,10 @@ # include -#line 14 "dhcp6_parser.yy" // stack.hh:132 +#line 14 "dhcp6_parser.yy" // stack.hh:131 namespace isc { namespace dhcp { -#line 46 "stack.hh" // stack.hh:132 +#line 46 "stack.hh" // stack.hh:131 + /// A stack with random access from its top. template > class stack { @@ -57,20 +59,24 @@ namespace isc { namespace dhcp { seq_.reserve (200); } - stack (unsigned int n) + stack (unsigned n) : seq_ (n) {} - inline + /// Random access. + /// + /// Index 0 returns the topmost element. T& - operator[] (unsigned int i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } - inline + /// Random access. + /// + /// Index 0 returns the topmost element. const T& - operator[] (unsigned int i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -78,7 +84,6 @@ namespace isc { namespace dhcp { /// Steal the contents of \a t. /// /// Close to move-semantics. - inline void push (T& t) { @@ -86,9 +91,8 @@ namespace isc { namespace dhcp { operator[](0).move (t); } - inline void - pop (unsigned int n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -100,21 +104,18 @@ namespace isc { namespace dhcp { 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 { @@ -133,25 +134,24 @@ namespace isc { namespace dhcp { class slice { public: - slice (const S& stack, unsigned int range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} - inline const T& - operator [] (unsigned int i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - unsigned int range_; + unsigned range_; }; -#line 14 "dhcp6_parser.yy" // stack.hh:132 +#line 14 "dhcp6_parser.yy" // stack.hh:131 } } // isc::dhcp -#line 156 "stack.hh" // stack.hh:132 +#line 155 "stack.hh" // stack.hh:131 #endif // !YY_PARSER6_STACK_HH_INCLUDED diff --git a/src/bin/netconf/location.hh b/src/bin/netconf/location.hh index 5369188d2e..18a2c074e7 100644 --- a/src/bin/netconf/location.hh +++ b/src/bin/netconf/location.hh @@ -1,5 +1,5 @@ -// Generated 201810092120 -// A Bison parser, made by GNU Bison 3.0.5. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ diff --git a/src/bin/netconf/netconf_parser.cc b/src/bin/netconf/netconf_parser.cc index 66c8b997a8..c3ab6456fe 100644 --- a/src/bin/netconf/netconf_parser.cc +++ b/src/bin/netconf/netconf_parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.0.5. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -372,49 +372,49 @@ namespace isc { namespace netconf { { case 45: // "constant string" -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } #line 378 "netconf_parser.cc" // lalr1.cc:635 break; case 46: // "integer" -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } #line 385 "netconf_parser.cc" // lalr1.cc:635 break; case 47: // "floating point" -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } #line 392 "netconf_parser.cc" // lalr1.cc:635 break; case 48: // "boolean" -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } #line 399 "netconf_parser.cc" // lalr1.cc:635 break; case 57: // value -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 406 "netconf_parser.cc" // lalr1.cc:635 break; case 60: // map_value -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 413 "netconf_parser.cc" // lalr1.cc:635 break; case 119: // socket_type_value -#line 107 "netconf_parser.yy" // lalr1.cc:635 +#line 107 ""netconf_parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 420 "netconf_parser.cc" // lalr1.cc:635 break; diff --git a/src/bin/netconf/netconf_parser.h b/src/bin/netconf/netconf_parser.h index f7a4e6cb3a..7b6b982ff2 100644 --- a/src/bin/netconf/netconf_parser.h +++ b/src/bin/netconf/netconf_parser.h @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.0.5. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ diff --git a/src/bin/netconf/position.hh b/src/bin/netconf/position.hh index 97d1919a1d..b55b8fcd38 100644 --- a/src/bin/netconf/position.hh +++ b/src/bin/netconf/position.hh @@ -1,5 +1,5 @@ -// Generated 201810092120 -// A Bison parser, made by GNU Bison 3.0.5. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Positions for Bison parsers in C++ diff --git a/src/bin/netconf/stack.hh b/src/bin/netconf/stack.hh index 7074ea3de0..bfb57c3686 100644 --- a/src/bin/netconf/stack.hh +++ b/src/bin/netconf/stack.hh @@ -1,5 +1,5 @@ -// Generated 201810092120 -// A Bison parser, made by GNU Bison 3.0.5. +// Generated 201811151337 +// A Bison parser, made by GNU Bison 3.2.1. // Stack handling for Bison parsers in C++ diff --git a/src/lib/eval/location.hh b/src/lib/eval/location.hh index b20a76b1a8..0ad19beac1 100644 --- a/src/lib/eval/location.hh +++ b/src/lib/eval/location.hh @@ -1,5 +1,5 @@ -// Generated 201809161042 -// A Bison parser, made by GNU Bison 3.0.5. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ diff --git a/src/lib/eval/parser.cc b/src/lib/eval/parser.cc index 86a9b2345f..8d8858e500 100644 --- a/src/lib/eval/parser.cc +++ b/src/lib/eval/parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.0.5. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -429,98 +429,98 @@ namespace isc { namespace eval { { case 50: // "constant string" -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } #line 435 "parser.cc" // lalr1.cc:635 break; case 51: // "integer" -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } #line 442 "parser.cc" // lalr1.cc:635 break; case 52: // "constant hexstring" -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } #line 449 "parser.cc" // lalr1.cc:635 break; case 53: // "option name" -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } #line 456 "parser.cc" // lalr1.cc:635 break; case 54: // "ip address" -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } #line 463 "parser.cc" // lalr1.cc:635 break; case 60: // integer_expr -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< uint32_t > (); } #line 470 "parser.cc" // lalr1.cc:635 break; case 61: // option_code -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< uint16_t > (); } #line 477 "parser.cc" // lalr1.cc:635 break; case 62: // option_repr_type -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< TokenOption::RepresentationType > (); } #line 484 "parser.cc" // lalr1.cc:635 break; case 63: // nest_level -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< int8_t > (); } #line 491 "parser.cc" // lalr1.cc:635 break; case 64: // pkt_metadata -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< TokenPkt::MetadataType > (); } #line 498 "parser.cc" // lalr1.cc:635 break; case 65: // enterprise_id -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< uint32_t > (); } #line 505 "parser.cc" // lalr1.cc:635 break; case 66: // pkt4_field -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< TokenPkt4::FieldType > (); } #line 512 "parser.cc" // lalr1.cc:635 break; case 67: // pkt6_field -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< TokenPkt6::FieldType > (); } #line 519 "parser.cc" // lalr1.cc:635 break; case 68: // relay6_field -#line 111 "parser.yy" // lalr1.cc:635 +#line 111 ""parser.yy"" // lalr1.cc:635 { yyoutput << yysym.value.template as< TokenRelay6Field::FieldType > (); } #line 526 "parser.cc" // lalr1.cc:635 break; diff --git a/src/lib/eval/parser.h b/src/lib/eval/parser.h index c79f0fddbb..592727afa0 100644 --- a/src/lib/eval/parser.h +++ b/src/lib/eval/parser.h @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.0.5. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ diff --git a/src/lib/eval/position.hh b/src/lib/eval/position.hh index cb72c16895..cf15897c1a 100644 --- a/src/lib/eval/position.hh +++ b/src/lib/eval/position.hh @@ -1,5 +1,5 @@ -// Generated 201809161042 -// A Bison parser, made by GNU Bison 3.0.5. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Positions for Bison parsers in C++ diff --git a/src/lib/eval/stack.hh b/src/lib/eval/stack.hh index 2d70e54f4b..d4d05de643 100644 --- a/src/lib/eval/stack.hh +++ b/src/lib/eval/stack.hh @@ -1,5 +1,5 @@ -// Generated 201809161042 -// A Bison parser, made by GNU Bison 3.0.5. +// Generated 201811151336 +// A Bison parser, made by GNU Bison 3.2.1. // Stack handling for Bison parsers in C++