diff --git a/src/bin/agent/agent_parser.cc b/src/bin/agent/agent_parser.cc index b4a56a5ba7..3523c1b440 100644 --- a/src/bin/agent/agent_parser.cc +++ b/src/bin/agent/agent_parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.0.5. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -35,7 +35,7 @@ // First part of user declarations. -#line 39 "agent_parser.cc" // lalr1.cc:407 +#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:415 +#line 53 "agent_parser.cc" // lalr1.cc:414 // Unqualified %code blocks. -#line 33 "agent_parser.yy" // lalr1.cc:416 +#line 33 "agent_parser.yy" // lalr1.cc:415 #include -#line 59 "agent_parser.cc" // lalr1.cc:416 +#line 59 "agent_parser.cc" // lalr1.cc:415 #ifndef YY_ @@ -70,15 +70,6 @@ # endif #endif -// Whether we are compiled with exception support. -#ifndef YY_EXCEPTIONS -# if defined __GNUC__ && !defined __EXCEPTIONS -# define YY_EXCEPTIONS 0 -# else -# define YY_EXCEPTIONS 1 -# endif -#endif - #define YYRHSLOC(Rhs, K) ((Rhs)[K].location) /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends @@ -148,9 +139,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "agent_parser.yy" // lalr1.cc:491 +#line 14 "agent_parser.yy" // lalr1.cc:481 namespace isc { namespace agent { -#line 154 "agent_parser.cc" // lalr1.cc:491 +#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 @@ -381,51 +372,51 @@ namespace isc { namespace agent { { case 41: // "constant string" -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } -#line 387 "agent_parser.cc" // lalr1.cc:644 +#line 378 "agent_parser.cc" // lalr1.cc:635 break; case 42: // "integer" -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } -#line 394 "agent_parser.cc" // lalr1.cc:644 +#line 385 "agent_parser.cc" // lalr1.cc:635 break; case 43: // "floating point" -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } -#line 401 "agent_parser.cc" // lalr1.cc:644 +#line 392 "agent_parser.cc" // lalr1.cc:635 break; case 44: // "boolean" -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } -#line 408 "agent_parser.cc" // lalr1.cc:644 +#line 399 "agent_parser.cc" // lalr1.cc:635 break; case 53: // value -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 415 "agent_parser.cc" // lalr1.cc:644 +#line 406 "agent_parser.cc" // lalr1.cc:635 break; case 56: // map_value -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 422 "agent_parser.cc" // lalr1.cc:644 +#line 413 "agent_parser.cc" // lalr1.cc:635 break; case 107: // socket_type_value -#line 103 "agent_parser.yy" // lalr1.cc:644 +#line 103 "agent_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 429 "agent_parser.cc" // lalr1.cc:644 +#line 420 "agent_parser.cc" // lalr1.cc:635 break; @@ -527,9 +518,9 @@ namespace isc { namespace agent { /// The return value of parse (). int yyresult; -#if YY_EXCEPTIONS + // FIXME: This shoud be completely indented. It is not yet to + // avoid gratuitous conflicts when merging into the master branch. try -#endif // YY_EXCEPTIONS { YYCDEBUG << "Starting parse\n"; @@ -553,6 +544,7 @@ namespace isc { namespace agent { // Backup. yybackup: + // Try to take a decision without lookahead. yyn = yypact_[yystack_[0].state]; if (yy_pact_value_is_default_ (yyn)) @@ -562,20 +554,16 @@ namespace isc { namespace agent { if (yyla.empty ()) { YYCDEBUG << "Reading a token: "; -#if YY_EXCEPTIONS try -#endif // YY_EXCEPTIONS { symbol_type yylookahead (yylex (ctx)); yyla.move (yylookahead); } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { error (yyexc); goto yyerrlab1; } -#endif // YY_EXCEPTIONS } YY_SYMBOL_PRINT ("Next token is", yyla); @@ -661,213 +649,211 @@ namespace isc { namespace agent { // Perform the reduction. YY_REDUCE_PRINT (yyn); -#if YY_EXCEPTIONS try -#endif // YY_EXCEPTIONS { switch (yyn) { case 2: -#line 114 "agent_parser.yy" // lalr1.cc:870 +#line 114 "agent_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.NO_KEYWORDS; } -#line 674 "agent_parser.cc" // lalr1.cc:870 +#line 660 "agent_parser.cc" // lalr1.cc:856 break; case 4: -#line 115 "agent_parser.yy" // lalr1.cc:870 +#line 115 "agent_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG; } -#line 680 "agent_parser.cc" // lalr1.cc:870 +#line 666 "agent_parser.cc" // lalr1.cc:856 break; case 6: -#line 116 "agent_parser.yy" // lalr1.cc:870 +#line 116 "agent_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.AGENT; } -#line 686 "agent_parser.cc" // lalr1.cc:870 +#line 672 "agent_parser.cc" // lalr1.cc:856 break; case 8: -#line 124 "agent_parser.yy" // lalr1.cc:870 +#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 696 "agent_parser.cc" // lalr1.cc:870 +#line 682 "agent_parser.cc" // lalr1.cc:856 break; case 9: -#line 128 "agent_parser.yy" // lalr1.cc:870 +#line 128 "agent_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 704 "agent_parser.cc" // lalr1.cc:870 +#line 690 "agent_parser.cc" // lalr1.cc:856 break; case 10: -#line 135 "agent_parser.yy" // lalr1.cc:870 +#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 713 "agent_parser.cc" // lalr1.cc:870 +#line 699 "agent_parser.cc" // lalr1.cc:856 break; case 11: -#line 141 "agent_parser.yy" // lalr1.cc:870 +#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 719 "agent_parser.cc" // lalr1.cc:870 +#line 705 "agent_parser.cc" // lalr1.cc:856 break; case 12: -#line 142 "agent_parser.yy" // lalr1.cc:870 +#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 725 "agent_parser.cc" // lalr1.cc:870 +#line 711 "agent_parser.cc" // lalr1.cc:856 break; case 13: -#line 143 "agent_parser.yy" // lalr1.cc:870 +#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 731 "agent_parser.cc" // lalr1.cc:870 +#line 717 "agent_parser.cc" // lalr1.cc:856 break; case 14: -#line 144 "agent_parser.yy" // lalr1.cc:870 +#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 737 "agent_parser.cc" // lalr1.cc:870 +#line 723 "agent_parser.cc" // lalr1.cc:856 break; case 15: -#line 145 "agent_parser.yy" // lalr1.cc:870 +#line 145 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 743 "agent_parser.cc" // lalr1.cc:870 +#line 729 "agent_parser.cc" // lalr1.cc:856 break; case 16: -#line 146 "agent_parser.yy" // lalr1.cc:870 +#line 146 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 749 "agent_parser.cc" // lalr1.cc:870 +#line 735 "agent_parser.cc" // lalr1.cc:856 break; case 17: -#line 147 "agent_parser.yy" // lalr1.cc:870 +#line 147 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 755 "agent_parser.cc" // lalr1.cc:870 +#line 741 "agent_parser.cc" // lalr1.cc:856 break; case 18: -#line 151 "agent_parser.yy" // lalr1.cc:870 +#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 766 "agent_parser.cc" // lalr1.cc:870 +#line 752 "agent_parser.cc" // lalr1.cc:856 break; case 19: -#line 156 "agent_parser.yy" // lalr1.cc:870 +#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 776 "agent_parser.cc" // lalr1.cc:870 +#line 762 "agent_parser.cc" // lalr1.cc:856 break; case 20: -#line 162 "agent_parser.yy" // lalr1.cc:870 +#line 162 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 782 "agent_parser.cc" // lalr1.cc:870 +#line 768 "agent_parser.cc" // lalr1.cc:856 break; case 23: -#line 176 "agent_parser.yy" // lalr1.cc:870 +#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 791 "agent_parser.cc" // lalr1.cc:870 +#line 777 "agent_parser.cc" // lalr1.cc:856 break; case 24: -#line 180 "agent_parser.yy" // lalr1.cc:870 +#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 801 "agent_parser.cc" // lalr1.cc:870 +#line 787 "agent_parser.cc" // lalr1.cc:856 break; case 25: -#line 187 "agent_parser.yy" // lalr1.cc:870 +#line 187 "agent_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 810 "agent_parser.cc" // lalr1.cc:870 +#line 796 "agent_parser.cc" // lalr1.cc:856 break; case 26: -#line 190 "agent_parser.yy" // lalr1.cc:870 +#line 190 "agent_parser.yy" // lalr1.cc:856 { } -#line 817 "agent_parser.cc" // lalr1.cc:870 +#line 803 "agent_parser.cc" // lalr1.cc:856 break; case 29: -#line 197 "agent_parser.yy" // lalr1.cc:870 +#line 197 "agent_parser.yy" // lalr1.cc:856 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 826 "agent_parser.cc" // lalr1.cc:870 +#line 812 "agent_parser.cc" // lalr1.cc:856 break; case 30: -#line 201 "agent_parser.yy" // lalr1.cc:870 +#line 201 "agent_parser.yy" // lalr1.cc:856 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 835 "agent_parser.cc" // lalr1.cc:870 +#line 821 "agent_parser.cc" // lalr1.cc:856 break; case 31: -#line 214 "agent_parser.yy" // lalr1.cc:870 +#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 846 "agent_parser.cc" // lalr1.cc:870 +#line 832 "agent_parser.cc" // lalr1.cc:856 break; case 32: -#line 223 "agent_parser.yy" // lalr1.cc:870 +#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 857 "agent_parser.cc" // lalr1.cc:870 +#line 843 "agent_parser.cc" // lalr1.cc:856 break; case 33: -#line 228 "agent_parser.yy" // lalr1.cc:870 +#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 867 "agent_parser.cc" // lalr1.cc:870 +#line 853 "agent_parser.cc" // lalr1.cc:856 break; case 42: -#line 249 "agent_parser.yy" // lalr1.cc:870 +#line 249 "agent_parser.yy" // lalr1.cc:856 { // Let's create a MapElement that will represent it, add it to the @@ -879,57 +865,57 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.AGENT); } -#line 883 "agent_parser.cc" // lalr1.cc:870 +#line 869 "agent_parser.cc" // lalr1.cc:856 break; case 43: -#line 259 "agent_parser.yy" // lalr1.cc:870 +#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 894 "agent_parser.cc" // lalr1.cc:870 +#line 880 "agent_parser.cc" // lalr1.cc:856 break; case 53: -#line 281 "agent_parser.yy" // lalr1.cc:870 +#line 281 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 902 "agent_parser.cc" // lalr1.cc:870 +#line 888 "agent_parser.cc" // lalr1.cc:856 break; case 54: -#line 283 "agent_parser.yy" // lalr1.cc:870 +#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 912 "agent_parser.cc" // lalr1.cc:870 +#line 898 "agent_parser.cc" // lalr1.cc:856 break; case 55: -#line 289 "agent_parser.yy" // lalr1.cc:870 +#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 921 "agent_parser.cc" // lalr1.cc:870 +#line 907 "agent_parser.cc" // lalr1.cc:856 break; case 56: -#line 294 "agent_parser.yy" // lalr1.cc:870 +#line 294 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 929 "agent_parser.cc" // lalr1.cc:870 +#line 915 "agent_parser.cc" // lalr1.cc:856 break; case 57: -#line 296 "agent_parser.yy" // lalr1.cc:870 +#line 296 "agent_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -952,19 +938,19 @@ namespace isc { namespace agent { parent->set("user-context", user_context); ctx.leave(); } -#line 956 "agent_parser.cc" // lalr1.cc:870 +#line 942 "agent_parser.cc" // lalr1.cc:856 break; case 58: -#line 319 "agent_parser.yy" // lalr1.cc:870 +#line 319 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 964 "agent_parser.cc" // lalr1.cc:870 +#line 950 "agent_parser.cc" // lalr1.cc:856 break; case 59: -#line 321 "agent_parser.yy" // lalr1.cc:870 +#line 321 "agent_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -989,453 +975,451 @@ namespace isc { namespace agent { parent->set("user-context", user_context); ctx.leave(); } -#line 993 "agent_parser.cc" // lalr1.cc:870 +#line 979 "agent_parser.cc" // lalr1.cc:856 break; case 60: -#line 347 "agent_parser.yy" // lalr1.cc:870 +#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 1004 "agent_parser.cc" // lalr1.cc:870 +#line 990 "agent_parser.cc" // lalr1.cc:856 break; case 61: -#line 352 "agent_parser.yy" // lalr1.cc:870 +#line 352 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1013 "agent_parser.cc" // lalr1.cc:870 +#line 999 "agent_parser.cc" // lalr1.cc:856 break; case 66: -#line 365 "agent_parser.yy" // lalr1.cc:870 +#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 1023 "agent_parser.cc" // lalr1.cc:870 +#line 1009 "agent_parser.cc" // lalr1.cc:856 break; case 67: -#line 369 "agent_parser.yy" // lalr1.cc:870 +#line 369 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1031 "agent_parser.cc" // lalr1.cc:870 +#line 1017 "agent_parser.cc" // lalr1.cc:856 break; case 73: -#line 382 "agent_parser.yy" // lalr1.cc:870 +#line 382 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1039 "agent_parser.cc" // lalr1.cc:870 +#line 1025 "agent_parser.cc" // lalr1.cc:856 break; case 74: -#line 384 "agent_parser.yy" // lalr1.cc:870 +#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 1049 "agent_parser.cc" // lalr1.cc:870 +#line 1035 "agent_parser.cc" // lalr1.cc:856 break; case 75: -#line 390 "agent_parser.yy" // lalr1.cc:870 +#line 390 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1057 "agent_parser.cc" // lalr1.cc:870 +#line 1043 "agent_parser.cc" // lalr1.cc:856 break; case 76: -#line 392 "agent_parser.yy" // lalr1.cc:870 +#line 392 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1066 "agent_parser.cc" // lalr1.cc:870 +#line 1052 "agent_parser.cc" // lalr1.cc:856 break; case 77: -#line 400 "agent_parser.yy" // lalr1.cc:870 +#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 1077 "agent_parser.cc" // lalr1.cc:870 +#line 1063 "agent_parser.cc" // lalr1.cc:856 break; case 78: -#line 405 "agent_parser.yy" // lalr1.cc:870 +#line 405 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1086 "agent_parser.cc" // lalr1.cc:870 +#line 1072 "agent_parser.cc" // lalr1.cc:856 break; case 85: -#line 426 "agent_parser.yy" // lalr1.cc:870 +#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 1097 "agent_parser.cc" // lalr1.cc:870 +#line 1083 "agent_parser.cc" // lalr1.cc:856 break; case 86: -#line 431 "agent_parser.yy" // lalr1.cc:870 +#line 431 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1106 "agent_parser.cc" // lalr1.cc:870 +#line 1092 "agent_parser.cc" // lalr1.cc:856 break; case 87: -#line 437 "agent_parser.yy" // lalr1.cc:870 +#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 1117 "agent_parser.cc" // lalr1.cc:870 +#line 1103 "agent_parser.cc" // lalr1.cc:856 break; case 88: -#line 442 "agent_parser.yy" // lalr1.cc:870 +#line 442 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1126 "agent_parser.cc" // lalr1.cc:870 +#line 1112 "agent_parser.cc" // lalr1.cc:856 break; case 89: -#line 448 "agent_parser.yy" // lalr1.cc:870 +#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 1137 "agent_parser.cc" // lalr1.cc:870 +#line 1123 "agent_parser.cc" // lalr1.cc:856 break; case 90: -#line 453 "agent_parser.yy" // lalr1.cc:870 +#line 453 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1146 "agent_parser.cc" // lalr1.cc:870 +#line 1132 "agent_parser.cc" // lalr1.cc:856 break; case 98: -#line 472 "agent_parser.yy" // lalr1.cc:870 +#line 472 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1154 "agent_parser.cc" // lalr1.cc:870 +#line 1140 "agent_parser.cc" // lalr1.cc:856 break; case 99: -#line 474 "agent_parser.yy" // lalr1.cc:870 +#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 1164 "agent_parser.cc" // lalr1.cc:870 +#line 1150 "agent_parser.cc" // lalr1.cc:856 break; case 100: -#line 481 "agent_parser.yy" // lalr1.cc:870 +#line 481 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.SOCKET_TYPE); } -#line 1172 "agent_parser.cc" // lalr1.cc:870 +#line 1158 "agent_parser.cc" // lalr1.cc:856 break; case 101: -#line 483 "agent_parser.yy" // lalr1.cc:870 +#line 483 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1181 "agent_parser.cc" // lalr1.cc:870 +#line 1167 "agent_parser.cc" // lalr1.cc:856 break; case 102: -#line 489 "agent_parser.yy" // lalr1.cc:870 +#line 489 "agent_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } -#line 1187 "agent_parser.cc" // lalr1.cc:870 +#line 1173 "agent_parser.cc" // lalr1.cc:856 break; case 103: -#line 495 "agent_parser.yy" // lalr1.cc:870 +#line 495 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1195 "agent_parser.cc" // lalr1.cc:870 +#line 1181 "agent_parser.cc" // lalr1.cc:856 break; case 104: -#line 497 "agent_parser.yy" // lalr1.cc:870 +#line 497 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1204 "agent_parser.cc" // lalr1.cc:870 +#line 1190 "agent_parser.cc" // lalr1.cc:856 break; case 105: -#line 502 "agent_parser.yy" // lalr1.cc:870 +#line 502 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1212 "agent_parser.cc" // lalr1.cc:870 +#line 1198 "agent_parser.cc" // lalr1.cc:856 break; case 106: -#line 504 "agent_parser.yy" // lalr1.cc:870 +#line 504 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1221 "agent_parser.cc" // lalr1.cc:870 +#line 1207 "agent_parser.cc" // lalr1.cc:856 break; case 107: -#line 509 "agent_parser.yy" // lalr1.cc:870 +#line 509 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1229 "agent_parser.cc" // lalr1.cc:870 +#line 1215 "agent_parser.cc" // lalr1.cc:856 break; case 108: -#line 511 "agent_parser.yy" // lalr1.cc:870 +#line 511 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1238 "agent_parser.cc" // lalr1.cc:870 +#line 1224 "agent_parser.cc" // lalr1.cc:856 break; case 109: -#line 521 "agent_parser.yy" // lalr1.cc:870 +#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 1249 "agent_parser.cc" // lalr1.cc:870 +#line 1235 "agent_parser.cc" // lalr1.cc:856 break; case 110: -#line 526 "agent_parser.yy" // lalr1.cc:870 +#line 526 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1258 "agent_parser.cc" // lalr1.cc:870 +#line 1244 "agent_parser.cc" // lalr1.cc:856 break; case 114: -#line 543 "agent_parser.yy" // lalr1.cc:870 +#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 1269 "agent_parser.cc" // lalr1.cc:870 +#line 1255 "agent_parser.cc" // lalr1.cc:856 break; case 115: -#line 548 "agent_parser.yy" // lalr1.cc:870 +#line 548 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1278 "agent_parser.cc" // lalr1.cc:870 +#line 1264 "agent_parser.cc" // lalr1.cc:856 break; case 118: -#line 560 "agent_parser.yy" // lalr1.cc:870 +#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 1288 "agent_parser.cc" // lalr1.cc:870 +#line 1274 "agent_parser.cc" // lalr1.cc:856 break; case 119: -#line 564 "agent_parser.yy" // lalr1.cc:870 +#line 564 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1296 "agent_parser.cc" // lalr1.cc:870 +#line 1282 "agent_parser.cc" // lalr1.cc:856 break; case 129: -#line 581 "agent_parser.yy" // lalr1.cc:870 +#line 581 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1304 "agent_parser.cc" // lalr1.cc:870 +#line 1290 "agent_parser.cc" // lalr1.cc:856 break; case 130: -#line 583 "agent_parser.yy" // lalr1.cc:870 +#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 1314 "agent_parser.cc" // lalr1.cc:870 +#line 1300 "agent_parser.cc" // lalr1.cc:856 break; case 131: -#line 589 "agent_parser.yy" // lalr1.cc:870 +#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 1323 "agent_parser.cc" // lalr1.cc:870 +#line 1309 "agent_parser.cc" // lalr1.cc:856 break; case 132: -#line 594 "agent_parser.yy" // lalr1.cc:870 +#line 594 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1331 "agent_parser.cc" // lalr1.cc:870 +#line 1317 "agent_parser.cc" // lalr1.cc:856 break; case 133: -#line 596 "agent_parser.yy" // lalr1.cc:870 +#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 1341 "agent_parser.cc" // lalr1.cc:870 +#line 1327 "agent_parser.cc" // lalr1.cc:856 break; case 134: -#line 602 "agent_parser.yy" // lalr1.cc:870 +#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 1352 "agent_parser.cc" // lalr1.cc:870 +#line 1338 "agent_parser.cc" // lalr1.cc:856 break; case 135: -#line 607 "agent_parser.yy" // lalr1.cc:870 +#line 607 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1361 "agent_parser.cc" // lalr1.cc:870 +#line 1347 "agent_parser.cc" // lalr1.cc:856 break; case 138: -#line 616 "agent_parser.yy" // lalr1.cc:870 +#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 1371 "agent_parser.cc" // lalr1.cc:870 +#line 1357 "agent_parser.cc" // lalr1.cc:856 break; case 139: -#line 620 "agent_parser.yy" // lalr1.cc:870 +#line 620 "agent_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 1379 "agent_parser.cc" // lalr1.cc:870 +#line 1365 "agent_parser.cc" // lalr1.cc:856 break; case 146: -#line 634 "agent_parser.yy" // lalr1.cc:870 +#line 634 "agent_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1387 "agent_parser.cc" // lalr1.cc:870 +#line 1373 "agent_parser.cc" // lalr1.cc:856 break; case 147: -#line 636 "agent_parser.yy" // lalr1.cc:870 +#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 1397 "agent_parser.cc" // lalr1.cc:870 +#line 1383 "agent_parser.cc" // lalr1.cc:856 break; case 148: -#line 642 "agent_parser.yy" // lalr1.cc:870 +#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 1406 "agent_parser.cc" // lalr1.cc:870 +#line 1392 "agent_parser.cc" // lalr1.cc:856 break; case 149: -#line 647 "agent_parser.yy" // lalr1.cc:870 +#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 1415 "agent_parser.cc" // lalr1.cc:870 +#line 1401 "agent_parser.cc" // lalr1.cc:856 break; case 150: -#line 652 "agent_parser.yy" // lalr1.cc:870 +#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 1424 "agent_parser.cc" // lalr1.cc:870 +#line 1410 "agent_parser.cc" // lalr1.cc:856 break; -#line 1428 "agent_parser.cc" // lalr1.cc:870 +#line 1414 "agent_parser.cc" // lalr1.cc:856 default: break; } } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { error (yyexc); YYERROR; } -#endif // YY_EXCEPTIONS YY_SYMBOL_PRINT ("-> $$ =", yylhs); yypop_ (yylen); yylen = 0; @@ -1559,12 +1543,11 @@ namespace isc { namespace agent { return yyresult; } -#if YY_EXCEPTIONS catch (...) { YYCDEBUG << "Exception caught: cleaning lookahead and stack\n"; // Do not try to display the values of the reclaimed symbols, - // as their printers might throw an exception. + // as their printer might throw an exception. if (!yyla.empty ()) yy_destroy_ (YY_NULLPTR, yyla); @@ -1575,7 +1558,6 @@ namespace isc { namespace agent { } throw; } -#endif // YY_EXCEPTIONS } void @@ -1686,7 +1668,7 @@ namespace isc { namespace agent { const signed char AgentParser::yytable_ninf_ = -1; - const short + const short int AgentParser::yypact_[] = { 59, -68, -68, -68, 6, 8, 9, 34, -68, -68, @@ -1763,7 +1745,7 @@ namespace isc { namespace agent { -68, -67, -68, -68, -68, -68, -68 }; - const short + const short int AgentParser::yydefgoto_[] = { -1, 4, 5, 6, 7, 23, 27, 16, 17, 18, @@ -1803,7 +1785,7 @@ namespace isc { namespace agent { 199 }; - const short + const short int AgentParser::yycheck_[] = { 26, 27, 27, 27, 24, 10, 0, 11, 12, 13, @@ -1942,7 +1924,7 @@ namespace isc { namespace agent { }; #if AGENT_DEBUG - const unsigned short + const unsigned short int AgentParser::yyrline_[] = { 0, 114, 114, 114, 115, 115, 116, 116, 124, 124, @@ -1993,10 +1975,10 @@ namespace isc { namespace agent { #endif // AGENT_DEBUG -#line 14 "agent_parser.yy" // lalr1.cc:1181 +#line 14 "agent_parser.yy" // lalr1.cc:1163 } } // isc::agent -#line 1999 "agent_parser.cc" // lalr1.cc:1181 -#line 657 "agent_parser.yy" // lalr1.cc:1182 +#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 2a193f1b4d..3349b3b157 100644 --- a/src/bin/agent/agent_parser.h +++ b/src/bin/agent/agent_parser.h @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.0.5. // Skeleton interface for Bison LALR(1) parsers in C++ @@ -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:380 +#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:380 +#line 55 "agent_parser.h" // lalr1.cc:379 # include # include // std::abort @@ -102,7 +102,7 @@ using namespace std; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -121,13 +121,6 @@ using namespace std; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif /* Debug traces. */ #ifndef AGENT_DEBUG # if defined YYDEBUG @@ -141,9 +134,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined AGENT_DEBUG */ -#line 14 "agent_parser.yy" // lalr1.cc:380 +#line 14 "agent_parser.yy" // lalr1.cc:379 namespace isc { namespace agent { -#line 147 "agent_parser.h" // lalr1.cc:380 +#line 140 "agent_parser.h" // lalr1.cc:379 @@ -160,8 +153,7 @@ namespace isc { namespace agent { /// Empty construction. variant () - : yybuffer_ () - , yytypeid_ (YY_NULLPTR) + : yytypeid_ (YY_NULLPTR) {} /// Construct and fill. @@ -187,7 +179,7 @@ namespace isc { namespace agent { YYASSERT (!yytypeid_); YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (); + return *new (yyas_ ()) T; } /// Instantiate a \a T in here from \a t. @@ -206,7 +198,6 @@ namespace isc { namespace agent { T& as () { - YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); YYASSERT (sizeof (T) <= S); return *yyas_ (); @@ -217,7 +208,6 @@ namespace isc { namespace agent { const T& as () const { - YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); YYASSERT (sizeof (T) <= S); return *yyas_ (); @@ -431,15 +421,15 @@ namespace isc { namespace agent { basic_symbol (typename Base::kind_type t, const location_type& l); - basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l); - basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const bool v, const location_type& l); - basic_symbol (typename Base::kind_type t, const double& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const double v, const location_type& l); - basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l); - basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l); /// Constructor for symbols with semantic value. @@ -747,7 +737,7 @@ namespace isc { namespace agent { // Tables. // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing // STATE-NUM. - static const short yypact_[]; + static const short int yypact_[]; // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. // Performed when YYTABLE does not specify something else to do. Zero @@ -758,14 +748,14 @@ namespace isc { namespace agent { static const signed char yypgoto_[]; // YYDEFGOTO[NTERM-NUM]. - static const short yydefgoto_[]; + static const short int yydefgoto_[]; // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If // positive, shift that token. If negative, reduce the rule whose // number is the opposite. If YYTABLE_NINF, syntax error. static const unsigned char yytable_[]; - static const short yycheck_[]; + static const short int yycheck_[]; // YYSTOS[STATE-NUM] -- The (internal number of the) accessing // symbol of state STATE-NUM. @@ -786,7 +776,7 @@ namespace isc { namespace agent { static const char* const yytname_[]; #if AGENT_DEBUG // YYRLINE[YYN] -- Source line where rule number YYN was defined. - static const unsigned short yyrline_[]; + static const unsigned short int yyrline_[]; /// Report on the debug stream that the rule \a r is going to be reduced. virtual void yy_reduce_print_ (int r); /// Print the state stack on the debug stream. @@ -851,7 +841,7 @@ namespace isc { namespace agent { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); - /// Copy construct (for efficiency). + /// 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); @@ -961,7 +951,6 @@ namespace isc { namespace agent { template AgentParser::basic_symbol::basic_symbol () : value () - , location () {} template @@ -1042,39 +1031,40 @@ namespace isc { namespace agent { template AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const location_type& l) : Base (t) + , value () , location (l) {} template - AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l) + AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l) : Base (t) , value (v) , location (l) {} template - AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l) + AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l) : Base (t) , value (v) , location (l) {} template - AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const double& v, const location_type& l) + AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const double v, const location_type& l) : Base (t) , value (v) , location (l) {} template - AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l) + AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l) : Base (t) , value (v) , location (l) {} template - AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l) + AgentParser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l) : Base (t) , value (v) , location (l) @@ -1221,7 +1211,7 @@ namespace isc { namespace agent { // YYTOKNUM[NUM] -- (External) token number corresponding to the // (internal) symbol number NUM (which must be that of a token). */ static - const unsigned short + const unsigned short int yytoken_number_[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1492,9 +1482,9 @@ namespace isc { namespace agent { } -#line 14 "agent_parser.yy" // lalr1.cc:380 +#line 14 "agent_parser.yy" // lalr1.cc:379 } } // isc::agent -#line 1498 "agent_parser.h" // lalr1.cc:380 +#line 1488 "agent_parser.h" // lalr1.cc:379 diff --git a/src/bin/agent/location.hh b/src/bin/agent/location.hh index 46981341fc..36ce68021d 100644 --- a/src/bin/agent/location.hh +++ b/src/bin/agent/location.hh @@ -1,4 +1,5 @@ -// A Bison parser, made by GNU Bison 3.1. +// Generated 201811071038 +// A Bison parser, made by GNU Bison 3.0.5. // Locations for Bison parsers in C++ @@ -40,9 +41,9 @@ # include "position.hh" -#line 14 "agent_parser.yy" // location.cc:290 +#line 14 "agent_parser.yy" // location.cc:292 namespace isc { namespace agent { -#line 46 "location.hh" // location.cc:290 +#line 46 "location.hh" // location.cc:292 /// Abstract a location. class location { @@ -167,7 +168,7 @@ namespace isc { namespace agent { ** Avoid duplicate information. */ template - std::basic_ostream& + inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const location& loc) { unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; @@ -183,7 +184,7 @@ namespace isc { namespace agent { return ostr; } -#line 14 "agent_parser.yy" // location.cc:290 +#line 14 "agent_parser.yy" // location.cc:292 } } // isc::agent -#line 189 "location.hh" // location.cc:290 +#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 1f1cad47e0..319845bd9e 100644 --- a/src/bin/agent/position.hh +++ b/src/bin/agent/position.hh @@ -1,4 +1,5 @@ -// A Bison parser, made by GNU Bison 3.1. +// Generated 201811071038 +// A Bison parser, made by GNU Bison 3.0.5. // Positions for Bison parsers in C++ @@ -50,9 +51,9 @@ # endif # endif -#line 14 "agent_parser.yy" // location.cc:290 +#line 14 "agent_parser.yy" // location.cc:292 namespace isc { namespace agent { -#line 56 "position.hh" // location.cc:290 +#line 56 "position.hh" // location.cc:292 /// Abstract a position. class position { @@ -104,10 +105,12 @@ namespace isc { namespace agent { unsigned column; private: - /// Compute max(min, lhs+rhs). - static unsigned add_ (unsigned lhs, int rhs, int min) + /// Compute max(min, lhs+rhs) (provided min <= lhs). + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return static_cast(std::max(min, static_cast(lhs) + rhs)); + return (0 < rhs || -static_cast(rhs) < lhs + ? rhs + lhs + : min); } }; @@ -163,7 +166,7 @@ namespace isc { namespace agent { ** \param pos a reference to the position to redirect */ template - std::basic_ostream& + inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const position& pos) { if (pos.filename) @@ -171,7 +174,7 @@ namespace isc { namespace agent { return ostr << pos.line << '.' << pos.column; } -#line 14 "agent_parser.yy" // location.cc:290 +#line 14 "agent_parser.yy" // location.cc:292 } } // isc::agent -#line 177 "position.hh" // location.cc:290 +#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 45ba76fcde..30c4cf934b 100644 --- a/src/bin/agent/stack.hh +++ b/src/bin/agent/stack.hh @@ -1,4 +1,5 @@ -// A Bison parser, made by GNU Bison 3.1. +// Generated 201811071038 +// A Bison parser, made by GNU Bison 3.0.5. // Stack handling for Bison parsers in C++ @@ -40,9 +41,9 @@ # 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 @@ -51,14 +52,14 @@ namespace isc { namespace agent { // Hide our reversed order. typedef typename S::reverse_iterator iterator; typedef typename S::const_reverse_iterator const_iterator; - typedef typename S::size_type size_type; stack () + : seq_ () { seq_.reserve (200); } - stack (size_type n) + stack (unsigned n) : seq_ (n) {} @@ -66,7 +67,7 @@ namespace isc { namespace agent { /// /// Index 0 returns the topmost element. T& - operator[] (size_type i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } @@ -75,7 +76,7 @@ namespace isc { namespace agent { /// /// Index 0 returns the topmost element. const T& - operator[] (size_type i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -91,7 +92,7 @@ namespace isc { namespace agent { } void - pop (size_type n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -103,7 +104,7 @@ namespace isc { namespace agent { seq_.clear (); } - size_type + typename S::size_type size () const { return seq_.size (); @@ -133,25 +134,24 @@ namespace isc { namespace agent { class slice { public: - typedef typename S::size_type size_type; - slice (const S& stack, size_type range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} const T& - operator[] (size_type i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - size_type 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/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index c8fbfd1c07..a6c16aac04 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.0.5. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -35,7 +35,7 @@ // First part of user declarations. -#line 39 "dhcp4_parser.cc" // lalr1.cc:407 +#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:415 +#line 53 "dhcp4_parser.cc" // lalr1.cc:414 // Unqualified %code blocks. -#line 34 "dhcp4_parser.yy" // lalr1.cc:416 +#line 34 "dhcp4_parser.yy" // lalr1.cc:415 #include -#line 59 "dhcp4_parser.cc" // lalr1.cc:416 +#line 59 "dhcp4_parser.cc" // lalr1.cc:415 #ifndef YY_ @@ -70,15 +70,6 @@ # endif #endif -// Whether we are compiled with exception support. -#ifndef YY_EXCEPTIONS -# if defined __GNUC__ && !defined __EXCEPTIONS -# define YY_EXCEPTIONS 0 -# else -# define YY_EXCEPTIONS 1 -# endif -#endif - #define YYRHSLOC(Rhs, K) ((Rhs)[K].location) /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends @@ -148,9 +139,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "dhcp4_parser.yy" // lalr1.cc:491 +#line 14 "dhcp4_parser.yy" // lalr1.cc:481 namespace isc { namespace dhcp { -#line 154 "dhcp4_parser.cc" // lalr1.cc:491 +#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 @@ -396,86 +387,86 @@ namespace isc { namespace dhcp { { case 165: // "constant string" -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< std::string > (); } -#line 402 "dhcp4_parser.cc" // lalr1.cc:644 +#line 393 "dhcp4_parser.cc" // lalr1.cc:635 break; case 166: // "integer" -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< int64_t > (); } -#line 409 "dhcp4_parser.cc" // lalr1.cc:644 +#line 400 "dhcp4_parser.cc" // lalr1.cc:635 break; case 167: // "floating point" -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< double > (); } -#line 416 "dhcp4_parser.cc" // lalr1.cc:644 +#line 407 "dhcp4_parser.cc" // lalr1.cc:635 break; case 168: // "boolean" -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< bool > (); } -#line 423 "dhcp4_parser.cc" // lalr1.cc:644 +#line 414 "dhcp4_parser.cc" // lalr1.cc:635 break; case 185: // value -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 430 "dhcp4_parser.cc" // lalr1.cc:644 +#line 421 "dhcp4_parser.cc" // lalr1.cc:635 break; case 189: // map_value -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 437 "dhcp4_parser.cc" // lalr1.cc:644 +#line 428 "dhcp4_parser.cc" // lalr1.cc:635 break; case 230: // socket_type -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 444 "dhcp4_parser.cc" // lalr1.cc:644 +#line 435 "dhcp4_parser.cc" // lalr1.cc:635 break; case 233: // outbound_interface_value -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 451 "dhcp4_parser.cc" // lalr1.cc:644 +#line 442 "dhcp4_parser.cc" // lalr1.cc:635 break; case 255: // db_type -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 458 "dhcp4_parser.cc" // lalr1.cc:644 +#line 449 "dhcp4_parser.cc" // lalr1.cc:635 break; case 337: // hr_mode -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 465 "dhcp4_parser.cc" // lalr1.cc:644 +#line 456 "dhcp4_parser.cc" // lalr1.cc:635 break; case 484: // ncr_protocol_value -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 472 "dhcp4_parser.cc" // lalr1.cc:644 +#line 463 "dhcp4_parser.cc" // lalr1.cc:635 break; case 492: // replace_client_name_value -#line 244 "dhcp4_parser.yy" // lalr1.cc:644 +#line 244 "dhcp4_parser.yy" // lalr1.cc:635 { yyoutput << yysym.value.template as< ElementPtr > (); } -#line 479 "dhcp4_parser.cc" // lalr1.cc:644 +#line 470 "dhcp4_parser.cc" // lalr1.cc:635 break; @@ -577,9 +568,9 @@ namespace isc { namespace dhcp { /// The return value of parse (). int yyresult; -#if YY_EXCEPTIONS + // FIXME: This shoud be completely indented. It is not yet to + // avoid gratuitous conflicts when merging into the master branch. try -#endif // YY_EXCEPTIONS { YYCDEBUG << "Starting parse\n"; @@ -603,6 +594,7 @@ namespace isc { namespace dhcp { // Backup. yybackup: + // Try to take a decision without lookahead. yyn = yypact_[yystack_[0].state]; if (yy_pact_value_is_default_ (yyn)) @@ -612,20 +604,16 @@ namespace isc { namespace dhcp { if (yyla.empty ()) { YYCDEBUG << "Reading a token: "; -#if YY_EXCEPTIONS try -#endif // YY_EXCEPTIONS { symbol_type yylookahead (yylex (ctx)); yyla.move (yylookahead); } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { error (yyexc); goto yyerrlab1; } -#endif // YY_EXCEPTIONS } YY_SYMBOL_PRINT ("Next token is", yyla); @@ -716,287 +704,285 @@ namespace isc { namespace dhcp { // Perform the reduction. YY_REDUCE_PRINT (yyn); -#if YY_EXCEPTIONS try -#endif // YY_EXCEPTIONS { switch (yyn) { case 2: -#line 253 "dhcp4_parser.yy" // lalr1.cc:870 +#line 253 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 729 "dhcp4_parser.cc" // lalr1.cc:870 +#line 715 "dhcp4_parser.cc" // lalr1.cc:856 break; case 4: -#line 254 "dhcp4_parser.yy" // lalr1.cc:870 +#line 254 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG; } -#line 735 "dhcp4_parser.cc" // lalr1.cc:870 +#line 721 "dhcp4_parser.cc" // lalr1.cc:856 break; case 6: -#line 255 "dhcp4_parser.yy" // lalr1.cc:870 +#line 255 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP4; } -#line 741 "dhcp4_parser.cc" // lalr1.cc:870 +#line 727 "dhcp4_parser.cc" // lalr1.cc:856 break; case 8: -#line 256 "dhcp4_parser.yy" // lalr1.cc:870 +#line 256 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 747 "dhcp4_parser.cc" // lalr1.cc:870 +#line 733 "dhcp4_parser.cc" // lalr1.cc:856 break; case 10: -#line 257 "dhcp4_parser.yy" // lalr1.cc:870 +#line 257 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.SUBNET4; } -#line 753 "dhcp4_parser.cc" // lalr1.cc:870 +#line 739 "dhcp4_parser.cc" // lalr1.cc:856 break; case 12: -#line 258 "dhcp4_parser.yy" // lalr1.cc:870 +#line 258 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.POOLS; } -#line 759 "dhcp4_parser.cc" // lalr1.cc:870 +#line 745 "dhcp4_parser.cc" // lalr1.cc:856 break; case 14: -#line 259 "dhcp4_parser.yy" // lalr1.cc:870 +#line 259 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.RESERVATIONS; } -#line 765 "dhcp4_parser.cc" // lalr1.cc:870 +#line 751 "dhcp4_parser.cc" // lalr1.cc:856 break; case 16: -#line 260 "dhcp4_parser.yy" // lalr1.cc:870 +#line 260 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP4; } -#line 771 "dhcp4_parser.cc" // lalr1.cc:870 +#line 757 "dhcp4_parser.cc" // lalr1.cc:856 break; case 18: -#line 261 "dhcp4_parser.yy" // lalr1.cc:870 +#line 261 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.OPTION_DEF; } -#line 777 "dhcp4_parser.cc" // lalr1.cc:870 +#line 763 "dhcp4_parser.cc" // lalr1.cc:856 break; case 20: -#line 262 "dhcp4_parser.yy" // lalr1.cc:870 +#line 262 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.OPTION_DATA; } -#line 783 "dhcp4_parser.cc" // lalr1.cc:870 +#line 769 "dhcp4_parser.cc" // lalr1.cc:856 break; case 22: -#line 263 "dhcp4_parser.yy" // lalr1.cc:870 +#line 263 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 789 "dhcp4_parser.cc" // lalr1.cc:870 +#line 775 "dhcp4_parser.cc" // lalr1.cc:856 break; case 24: -#line 264 "dhcp4_parser.yy" // lalr1.cc:870 +#line 264 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 795 "dhcp4_parser.cc" // lalr1.cc:870 +#line 781 "dhcp4_parser.cc" // lalr1.cc:856 break; case 26: -#line 265 "dhcp4_parser.yy" // lalr1.cc:870 +#line 265 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.LOGGING; } -#line 801 "dhcp4_parser.cc" // lalr1.cc:870 +#line 787 "dhcp4_parser.cc" // lalr1.cc:856 break; case 28: -#line 266 "dhcp4_parser.yy" // lalr1.cc:870 +#line 266 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 807 "dhcp4_parser.cc" // lalr1.cc:870 +#line 793 "dhcp4_parser.cc" // lalr1.cc:856 break; case 30: -#line 274 "dhcp4_parser.yy" // lalr1.cc:870 +#line 274 "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 813 "dhcp4_parser.cc" // lalr1.cc:870 +#line 799 "dhcp4_parser.cc" // lalr1.cc:856 break; case 31: -#line 275 "dhcp4_parser.yy" // lalr1.cc:870 +#line 275 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } -#line 819 "dhcp4_parser.cc" // lalr1.cc:870 +#line 805 "dhcp4_parser.cc" // lalr1.cc:856 break; case 32: -#line 276 "dhcp4_parser.yy" // lalr1.cc:870 +#line 276 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 825 "dhcp4_parser.cc" // lalr1.cc:870 +#line 811 "dhcp4_parser.cc" // lalr1.cc:856 break; case 33: -#line 277 "dhcp4_parser.yy" // lalr1.cc:870 +#line 277 "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 831 "dhcp4_parser.cc" // lalr1.cc:870 +#line 817 "dhcp4_parser.cc" // lalr1.cc:856 break; case 34: -#line 278 "dhcp4_parser.yy" // lalr1.cc:870 +#line 278 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 837 "dhcp4_parser.cc" // lalr1.cc:870 +#line 823 "dhcp4_parser.cc" // lalr1.cc:856 break; case 35: -#line 279 "dhcp4_parser.yy" // lalr1.cc:870 +#line 279 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 843 "dhcp4_parser.cc" // lalr1.cc:870 +#line 829 "dhcp4_parser.cc" // lalr1.cc:856 break; case 36: -#line 280 "dhcp4_parser.yy" // lalr1.cc:870 +#line 280 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 849 "dhcp4_parser.cc" // lalr1.cc:870 +#line 835 "dhcp4_parser.cc" // lalr1.cc:856 break; case 37: -#line 283 "dhcp4_parser.yy" // lalr1.cc:870 +#line 283 "dhcp4_parser.yy" // lalr1.cc:856 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 858 "dhcp4_parser.cc" // lalr1.cc:870 +#line 844 "dhcp4_parser.cc" // lalr1.cc:856 break; case 38: -#line 288 "dhcp4_parser.yy" // lalr1.cc:870 +#line 288 "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 869 "dhcp4_parser.cc" // lalr1.cc:870 +#line 855 "dhcp4_parser.cc" // lalr1.cc:856 break; case 39: -#line 293 "dhcp4_parser.yy" // lalr1.cc:870 +#line 293 "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 879 "dhcp4_parser.cc" // lalr1.cc:870 +#line 865 "dhcp4_parser.cc" // lalr1.cc:856 break; case 40: -#line 299 "dhcp4_parser.yy" // lalr1.cc:870 +#line 299 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 885 "dhcp4_parser.cc" // lalr1.cc:870 +#line 871 "dhcp4_parser.cc" // lalr1.cc:856 break; case 43: -#line 306 "dhcp4_parser.yy" // lalr1.cc:870 +#line 306 "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 894 "dhcp4_parser.cc" // lalr1.cc:870 +#line 880 "dhcp4_parser.cc" // lalr1.cc:856 break; case 44: -#line 310 "dhcp4_parser.yy" // lalr1.cc:870 +#line 310 "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 904 "dhcp4_parser.cc" // lalr1.cc:870 +#line 890 "dhcp4_parser.cc" // lalr1.cc:856 break; case 45: -#line 317 "dhcp4_parser.yy" // lalr1.cc:870 +#line 317 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 913 "dhcp4_parser.cc" // lalr1.cc:870 +#line 899 "dhcp4_parser.cc" // lalr1.cc:856 break; case 46: -#line 320 "dhcp4_parser.yy" // lalr1.cc:870 +#line 320 "dhcp4_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here } -#line 921 "dhcp4_parser.cc" // lalr1.cc:870 +#line 907 "dhcp4_parser.cc" // lalr1.cc:856 break; case 49: -#line 328 "dhcp4_parser.yy" // lalr1.cc:870 +#line 328 "dhcp4_parser.yy" // lalr1.cc:856 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 930 "dhcp4_parser.cc" // lalr1.cc:870 +#line 916 "dhcp4_parser.cc" // lalr1.cc:856 break; case 50: -#line 332 "dhcp4_parser.yy" // lalr1.cc:870 +#line 332 "dhcp4_parser.yy" // lalr1.cc:856 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 939 "dhcp4_parser.cc" // lalr1.cc:870 +#line 925 "dhcp4_parser.cc" // lalr1.cc:856 break; case 51: -#line 339 "dhcp4_parser.yy" // lalr1.cc:870 +#line 339 "dhcp4_parser.yy" // lalr1.cc:856 { // List parsing about to start } -#line 947 "dhcp4_parser.cc" // lalr1.cc:870 +#line 933 "dhcp4_parser.cc" // lalr1.cc:856 break; case 52: -#line 341 "dhcp4_parser.yy" // lalr1.cc:870 +#line 341 "dhcp4_parser.yy" // lalr1.cc:856 { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 956 "dhcp4_parser.cc" // lalr1.cc:870 +#line 942 "dhcp4_parser.cc" // lalr1.cc:856 break; case 55: -#line 350 "dhcp4_parser.yy" // lalr1.cc:870 +#line 350 "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 965 "dhcp4_parser.cc" // lalr1.cc:870 +#line 951 "dhcp4_parser.cc" // lalr1.cc:856 break; case 56: -#line 354 "dhcp4_parser.yy" // lalr1.cc:870 +#line 354 "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 974 "dhcp4_parser.cc" // lalr1.cc:870 +#line 960 "dhcp4_parser.cc" // lalr1.cc:856 break; case 57: -#line 365 "dhcp4_parser.yy" // lalr1.cc:870 +#line 365 "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 985 "dhcp4_parser.cc" // lalr1.cc:870 +#line 971 "dhcp4_parser.cc" // lalr1.cc:856 break; case 58: -#line 375 "dhcp4_parser.yy" // lalr1.cc:870 +#line 375 "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 996 "dhcp4_parser.cc" // lalr1.cc:870 +#line 982 "dhcp4_parser.cc" // lalr1.cc:856 break; case 59: -#line 380 "dhcp4_parser.yy" // lalr1.cc:870 +#line 380 "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 @@ -1005,11 +991,11 @@ namespace isc { namespace dhcp { // Dhcp4 is required ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 1009 "dhcp4_parser.cc" // lalr1.cc:870 +#line 995 "dhcp4_parser.cc" // lalr1.cc:856 break; case 68: -#line 404 "dhcp4_parser.yy" // lalr1.cc:870 +#line 404 "dhcp4_parser.yy" // lalr1.cc:856 { // This code is executed when we're about to start parsing // the content of the map @@ -1018,302 +1004,302 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP4); } -#line 1022 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1008 "dhcp4_parser.cc" // lalr1.cc:856 break; case 69: -#line 411 "dhcp4_parser.yy" // lalr1.cc:870 +#line 411 "dhcp4_parser.yy" // lalr1.cc:856 { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1032 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1018 "dhcp4_parser.cc" // lalr1.cc:856 break; case 70: -#line 419 "dhcp4_parser.yy" // lalr1.cc:870 +#line 419 "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 1042 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1028 "dhcp4_parser.cc" // lalr1.cc:856 break; case 71: -#line 423 "dhcp4_parser.yy" // lalr1.cc:870 +#line 423 "dhcp4_parser.yy" // lalr1.cc:856 { // No global parameter is required // parsing completed } -#line 1051 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1037 "dhcp4_parser.cc" // lalr1.cc:856 break; case 106: -#line 468 "dhcp4_parser.yy" // lalr1.cc:870 +#line 468 "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 1060 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1046 "dhcp4_parser.cc" // lalr1.cc:856 break; case 107: -#line 473 "dhcp4_parser.yy" // lalr1.cc:870 +#line 473 "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 1069 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1055 "dhcp4_parser.cc" // lalr1.cc:856 break; case 108: -#line 478 "dhcp4_parser.yy" // lalr1.cc:870 +#line 478 "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 1078 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1064 "dhcp4_parser.cc" // lalr1.cc:856 break; case 109: -#line 483 "dhcp4_parser.yy" // lalr1.cc:870 +#line 483 "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 1087 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1073 "dhcp4_parser.cc" // lalr1.cc:856 break; case 110: -#line 488 "dhcp4_parser.yy" // lalr1.cc:870 +#line 488 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1095 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1081 "dhcp4_parser.cc" // lalr1.cc:856 break; case 111: -#line 490 "dhcp4_parser.yy" // lalr1.cc:870 +#line 490 "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 1105 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1091 "dhcp4_parser.cc" // lalr1.cc:856 break; case 112: -#line 496 "dhcp4_parser.yy" // lalr1.cc:870 +#line 496 "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 1114 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1100 "dhcp4_parser.cc" // lalr1.cc:856 break; case 113: -#line 501 "dhcp4_parser.yy" // lalr1.cc:870 +#line 501 "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 1123 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1109 "dhcp4_parser.cc" // lalr1.cc:856 break; case 114: -#line 506 "dhcp4_parser.yy" // lalr1.cc:870 +#line 506 "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 1132 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1118 "dhcp4_parser.cc" // lalr1.cc:856 break; case 115: -#line 512 "dhcp4_parser.yy" // lalr1.cc:870 +#line 512 "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 1143 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1129 "dhcp4_parser.cc" // lalr1.cc:856 break; case 116: -#line 517 "dhcp4_parser.yy" // lalr1.cc:870 +#line 517 "dhcp4_parser.yy" // lalr1.cc:856 { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1153 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1139 "dhcp4_parser.cc" // lalr1.cc:856 break; case 126: -#line 536 "dhcp4_parser.yy" // lalr1.cc:870 +#line 536 "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 1163 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1149 "dhcp4_parser.cc" // lalr1.cc:856 break; case 127: -#line 540 "dhcp4_parser.yy" // lalr1.cc:870 +#line 540 "dhcp4_parser.yy" // lalr1.cc:856 { // No interfaces config param is required // parsing completed } -#line 1172 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1158 "dhcp4_parser.cc" // lalr1.cc:856 break; case 128: -#line 545 "dhcp4_parser.yy" // lalr1.cc:870 +#line 545 "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 1183 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1169 "dhcp4_parser.cc" // lalr1.cc:856 break; case 129: -#line 550 "dhcp4_parser.yy" // lalr1.cc:870 +#line 550 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1192 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1178 "dhcp4_parser.cc" // lalr1.cc:856 break; case 130: -#line 555 "dhcp4_parser.yy" // lalr1.cc:870 +#line 555 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.DHCP_SOCKET_TYPE); } -#line 1200 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1186 "dhcp4_parser.cc" // lalr1.cc:856 break; case 131: -#line 557 "dhcp4_parser.yy" // lalr1.cc:870 +#line 557 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1209 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1195 "dhcp4_parser.cc" // lalr1.cc:856 break; case 132: -#line 562 "dhcp4_parser.yy" // lalr1.cc:870 +#line 562 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } -#line 1215 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1201 "dhcp4_parser.cc" // lalr1.cc:856 break; case 133: -#line 563 "dhcp4_parser.yy" // lalr1.cc:870 +#line 563 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } -#line 1221 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1207 "dhcp4_parser.cc" // lalr1.cc:856 break; case 134: -#line 566 "dhcp4_parser.yy" // lalr1.cc:870 +#line 566 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.OUTBOUND_INTERFACE); } -#line 1229 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1215 "dhcp4_parser.cc" // lalr1.cc:856 break; case 135: -#line 568 "dhcp4_parser.yy" // lalr1.cc:870 +#line 568 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1238 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1224 "dhcp4_parser.cc" // lalr1.cc:856 break; case 136: -#line 573 "dhcp4_parser.yy" // lalr1.cc:870 +#line 573 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } -#line 1246 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1232 "dhcp4_parser.cc" // lalr1.cc:856 break; case 137: -#line 575 "dhcp4_parser.yy" // lalr1.cc:870 +#line 575 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } -#line 1254 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1240 "dhcp4_parser.cc" // lalr1.cc:856 break; case 138: -#line 579 "dhcp4_parser.yy" // lalr1.cc:870 +#line 579 "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 1263 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1249 "dhcp4_parser.cc" // lalr1.cc:856 break; case 139: -#line 585 "dhcp4_parser.yy" // lalr1.cc:870 +#line 585 "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 1274 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1260 "dhcp4_parser.cc" // lalr1.cc:856 break; case 140: -#line 590 "dhcp4_parser.yy" // lalr1.cc:870 +#line 590 "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 1285 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1271 "dhcp4_parser.cc" // lalr1.cc:856 break; case 141: -#line 597 "dhcp4_parser.yy" // lalr1.cc:870 +#line 597 "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 1296 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1282 "dhcp4_parser.cc" // lalr1.cc:856 break; case 142: -#line 602 "dhcp4_parser.yy" // lalr1.cc:870 +#line 602 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1305 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1291 "dhcp4_parser.cc" // lalr1.cc:856 break; case 146: -#line 612 "dhcp4_parser.yy" // lalr1.cc:870 +#line 612 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1313 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1299 "dhcp4_parser.cc" // lalr1.cc:856 break; case 147: -#line 614 "dhcp4_parser.yy" // lalr1.cc:870 +#line 614 "dhcp4_parser.yy" // lalr1.cc:856 { if ( (string(yystack_[0].value.as< std::string > ()) == "none") || @@ -1329,577 +1315,577 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1333 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1319 "dhcp4_parser.cc" // lalr1.cc:856 break; case 148: -#line 630 "dhcp4_parser.yy" // lalr1.cc:870 +#line 630 "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 1344 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1330 "dhcp4_parser.cc" // lalr1.cc:856 break; case 149: -#line 635 "dhcp4_parser.yy" // lalr1.cc:870 +#line 635 "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 1355 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1341 "dhcp4_parser.cc" // lalr1.cc:856 break; case 150: -#line 642 "dhcp4_parser.yy" // lalr1.cc:870 +#line 642 "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 1366 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1352 "dhcp4_parser.cc" // lalr1.cc:856 break; case 151: -#line 647 "dhcp4_parser.yy" // lalr1.cc:870 +#line 647 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1375 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1361 "dhcp4_parser.cc" // lalr1.cc:856 break; case 156: -#line 660 "dhcp4_parser.yy" // lalr1.cc:870 +#line 660 "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 1385 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1371 "dhcp4_parser.cc" // lalr1.cc:856 break; case 157: -#line 664 "dhcp4_parser.yy" // lalr1.cc:870 +#line 664 "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 1395 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1381 "dhcp4_parser.cc" // lalr1.cc:856 break; case 178: -#line 694 "dhcp4_parser.yy" // lalr1.cc:870 +#line 694 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.DATABASE_TYPE); } -#line 1403 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1389 "dhcp4_parser.cc" // lalr1.cc:856 break; case 179: -#line 696 "dhcp4_parser.yy" // lalr1.cc:870 +#line 696 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1412 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1398 "dhcp4_parser.cc" // lalr1.cc:856 break; case 180: -#line 701 "dhcp4_parser.yy" // lalr1.cc:870 +#line 701 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1418 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1404 "dhcp4_parser.cc" // lalr1.cc:856 break; case 181: -#line 702 "dhcp4_parser.yy" // lalr1.cc:870 +#line 702 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1424 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1410 "dhcp4_parser.cc" // lalr1.cc:856 break; case 182: -#line 703 "dhcp4_parser.yy" // lalr1.cc:870 +#line 703 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1430 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1416 "dhcp4_parser.cc" // lalr1.cc:856 break; case 183: -#line 704 "dhcp4_parser.yy" // lalr1.cc:870 +#line 704 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1436 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1422 "dhcp4_parser.cc" // lalr1.cc:856 break; case 184: -#line 707 "dhcp4_parser.yy" // lalr1.cc:870 +#line 707 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1444 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1430 "dhcp4_parser.cc" // lalr1.cc:856 break; case 185: -#line 709 "dhcp4_parser.yy" // lalr1.cc:870 +#line 709 "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 1454 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1440 "dhcp4_parser.cc" // lalr1.cc:856 break; case 186: -#line 715 "dhcp4_parser.yy" // lalr1.cc:870 +#line 715 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1462 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1448 "dhcp4_parser.cc" // lalr1.cc:856 break; case 187: -#line 717 "dhcp4_parser.yy" // lalr1.cc:870 +#line 717 "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 1472 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1458 "dhcp4_parser.cc" // lalr1.cc:856 break; case 188: -#line 723 "dhcp4_parser.yy" // lalr1.cc:870 +#line 723 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1480 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1466 "dhcp4_parser.cc" // lalr1.cc:856 break; case 189: -#line 725 "dhcp4_parser.yy" // lalr1.cc:870 +#line 725 "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 1490 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1476 "dhcp4_parser.cc" // lalr1.cc:856 break; case 190: -#line 731 "dhcp4_parser.yy" // lalr1.cc:870 +#line 731 "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 1499 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1485 "dhcp4_parser.cc" // lalr1.cc:856 break; case 191: -#line 736 "dhcp4_parser.yy" // lalr1.cc:870 +#line 736 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1507 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1493 "dhcp4_parser.cc" // lalr1.cc:856 break; case 192: -#line 738 "dhcp4_parser.yy" // lalr1.cc:870 +#line 738 "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 1517 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1503 "dhcp4_parser.cc" // lalr1.cc:856 break; case 193: -#line 744 "dhcp4_parser.yy" // lalr1.cc:870 +#line 744 "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 1526 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1512 "dhcp4_parser.cc" // lalr1.cc:856 break; case 194: -#line 749 "dhcp4_parser.yy" // lalr1.cc:870 +#line 749 "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 1535 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1521 "dhcp4_parser.cc" // lalr1.cc:856 break; case 195: -#line 754 "dhcp4_parser.yy" // lalr1.cc:870 +#line 754 "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 1544 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1530 "dhcp4_parser.cc" // lalr1.cc:856 break; case 196: -#line 759 "dhcp4_parser.yy" // lalr1.cc:870 +#line 759 "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 1553 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1539 "dhcp4_parser.cc" // lalr1.cc:856 break; case 197: -#line 764 "dhcp4_parser.yy" // lalr1.cc:870 +#line 764 "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 1562 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1548 "dhcp4_parser.cc" // lalr1.cc:856 break; case 198: -#line 769 "dhcp4_parser.yy" // lalr1.cc:870 +#line 769 "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 1571 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1557 "dhcp4_parser.cc" // lalr1.cc:856 break; case 199: -#line 774 "dhcp4_parser.yy" // lalr1.cc:870 +#line 774 "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 1580 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1566 "dhcp4_parser.cc" // lalr1.cc:856 break; case 200: -#line 779 "dhcp4_parser.yy" // lalr1.cc:870 +#line 779 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1588 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1574 "dhcp4_parser.cc" // lalr1.cc:856 break; case 201: -#line 781 "dhcp4_parser.yy" // lalr1.cc:870 +#line 781 "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 1598 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1584 "dhcp4_parser.cc" // lalr1.cc:856 break; case 202: -#line 787 "dhcp4_parser.yy" // lalr1.cc:870 +#line 787 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1606 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1592 "dhcp4_parser.cc" // lalr1.cc:856 break; case 203: -#line 789 "dhcp4_parser.yy" // lalr1.cc:870 +#line 789 "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 1616 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1602 "dhcp4_parser.cc" // lalr1.cc:856 break; case 204: -#line 795 "dhcp4_parser.yy" // lalr1.cc:870 +#line 795 "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 1625 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1611 "dhcp4_parser.cc" // lalr1.cc:856 break; case 205: -#line 800 "dhcp4_parser.yy" // lalr1.cc:870 +#line 800 "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 1634 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1620 "dhcp4_parser.cc" // lalr1.cc:856 break; case 206: -#line 805 "dhcp4_parser.yy" // lalr1.cc:870 +#line 805 "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 1645 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1631 "dhcp4_parser.cc" // lalr1.cc:856 break; case 207: -#line 810 "dhcp4_parser.yy" // lalr1.cc:870 +#line 810 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1654 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1640 "dhcp4_parser.cc" // lalr1.cc:856 break; case 215: -#line 826 "dhcp4_parser.yy" // lalr1.cc:870 +#line 826 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 1663 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1649 "dhcp4_parser.cc" // lalr1.cc:856 break; case 216: -#line 831 "dhcp4_parser.yy" // lalr1.cc:870 +#line 831 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 1672 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1658 "dhcp4_parser.cc" // lalr1.cc:856 break; case 217: -#line 836 "dhcp4_parser.yy" // lalr1.cc:870 +#line 836 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 1681 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1667 "dhcp4_parser.cc" // lalr1.cc:856 break; case 218: -#line 841 "dhcp4_parser.yy" // lalr1.cc:870 +#line 841 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 1690 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1676 "dhcp4_parser.cc" // lalr1.cc:856 break; case 219: -#line 846 "dhcp4_parser.yy" // lalr1.cc:870 +#line 846 "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 1699 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1685 "dhcp4_parser.cc" // lalr1.cc:856 break; case 220: -#line 851 "dhcp4_parser.yy" // lalr1.cc:870 +#line 851 "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 1710 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1696 "dhcp4_parser.cc" // lalr1.cc:856 break; case 221: -#line 856 "dhcp4_parser.yy" // lalr1.cc:870 +#line 856 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1719 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1705 "dhcp4_parser.cc" // lalr1.cc:856 break; case 226: -#line 869 "dhcp4_parser.yy" // lalr1.cc:870 +#line 869 "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 1729 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1715 "dhcp4_parser.cc" // lalr1.cc:856 break; case 227: -#line 873 "dhcp4_parser.yy" // lalr1.cc:870 +#line 873 "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 1739 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1725 "dhcp4_parser.cc" // lalr1.cc:856 break; case 228: -#line 879 "dhcp4_parser.yy" // lalr1.cc:870 +#line 879 "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 1749 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1735 "dhcp4_parser.cc" // lalr1.cc:856 break; case 229: -#line 883 "dhcp4_parser.yy" // lalr1.cc:870 +#line 883 "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 1759 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1745 "dhcp4_parser.cc" // lalr1.cc:856 break; case 235: -#line 898 "dhcp4_parser.yy" // lalr1.cc:870 +#line 898 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1767 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1753 "dhcp4_parser.cc" // lalr1.cc:856 break; case 236: -#line 900 "dhcp4_parser.yy" // lalr1.cc:870 +#line 900 "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 1777 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1763 "dhcp4_parser.cc" // lalr1.cc:856 break; case 237: -#line 906 "dhcp4_parser.yy" // lalr1.cc:870 +#line 906 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1785 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1771 "dhcp4_parser.cc" // lalr1.cc:856 break; case 238: -#line 908 "dhcp4_parser.yy" // lalr1.cc:870 +#line 908 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1794 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1780 "dhcp4_parser.cc" // lalr1.cc:856 break; case 239: -#line 914 "dhcp4_parser.yy" // lalr1.cc:870 +#line 914 "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 1805 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1791 "dhcp4_parser.cc" // lalr1.cc:856 break; case 240: -#line 919 "dhcp4_parser.yy" // lalr1.cc:870 +#line 919 "dhcp4_parser.yy" // lalr1.cc:856 { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1815 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1801 "dhcp4_parser.cc" // lalr1.cc:856 break; case 249: -#line 937 "dhcp4_parser.yy" // lalr1.cc:870 +#line 937 "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 1824 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1810 "dhcp4_parser.cc" // lalr1.cc:856 break; case 250: -#line 942 "dhcp4_parser.yy" // lalr1.cc:870 +#line 942 "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 1833 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1819 "dhcp4_parser.cc" // lalr1.cc:856 break; case 251: -#line 947 "dhcp4_parser.yy" // lalr1.cc:870 +#line 947 "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 1842 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1828 "dhcp4_parser.cc" // lalr1.cc:856 break; case 252: -#line 952 "dhcp4_parser.yy" // lalr1.cc:870 +#line 952 "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 1851 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1837 "dhcp4_parser.cc" // lalr1.cc:856 break; case 253: -#line 957 "dhcp4_parser.yy" // lalr1.cc:870 +#line 957 "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 1860 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1846 "dhcp4_parser.cc" // lalr1.cc:856 break; case 254: -#line 962 "dhcp4_parser.yy" // lalr1.cc:870 +#line 962 "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 1869 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1855 "dhcp4_parser.cc" // lalr1.cc:856 break; case 255: -#line 970 "dhcp4_parser.yy" // lalr1.cc:870 +#line 970 "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 1880 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1866 "dhcp4_parser.cc" // lalr1.cc:856 break; case 256: -#line 975 "dhcp4_parser.yy" // lalr1.cc:870 +#line 975 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1889 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1875 "dhcp4_parser.cc" // lalr1.cc:856 break; case 261: -#line 995 "dhcp4_parser.yy" // lalr1.cc:870 +#line 995 "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 1899 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1885 "dhcp4_parser.cc" // lalr1.cc:856 break; case 262: -#line 999 "dhcp4_parser.yy" // lalr1.cc:870 +#line 999 "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. @@ -1921,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 1925 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1911 "dhcp4_parser.cc" // lalr1.cc:856 break; case 263: -#line 1021 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1021 "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 1935 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1921 "dhcp4_parser.cc" // lalr1.cc:856 break; case 264: -#line 1025 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1025 "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 1945 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1931 "dhcp4_parser.cc" // lalr1.cc:856 break; case 291: -#line 1063 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1063 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1953 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1939 "dhcp4_parser.cc" // lalr1.cc:856 break; case 292: -#line 1065 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1065 "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 1963 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1949 "dhcp4_parser.cc" // lalr1.cc:856 break; case 293: -#line 1071 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1071 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1971 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1957 "dhcp4_parser.cc" // lalr1.cc:856 break; case 294: -#line 1073 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1073 "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 1981 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1967 "dhcp4_parser.cc" // lalr1.cc:856 break; case 295: -#line 1079 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1079 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 1989 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1975 "dhcp4_parser.cc" // lalr1.cc:856 break; case 296: -#line 1081 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1081 "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 1999 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1985 "dhcp4_parser.cc" // lalr1.cc:856 break; case 297: -#line 1087 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1087 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2007 "dhcp4_parser.cc" // lalr1.cc:870 +#line 1993 "dhcp4_parser.cc" // lalr1.cc:856 break; case 298: -#line 1089 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1089 "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 2017 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2003 "dhcp4_parser.cc" // lalr1.cc:856 break; case 299: -#line 1095 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1095 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2025 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2011 "dhcp4_parser.cc" // lalr1.cc:856 break; case 300: -#line 1097 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1097 "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 2035 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2021 "dhcp4_parser.cc" // lalr1.cc:856 break; case 301: -#line 1103 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1103 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2043 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2029 "dhcp4_parser.cc" // lalr1.cc:856 break; case 302: -#line 1105 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1105 "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 2053 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2039 "dhcp4_parser.cc" // lalr1.cc:856 break; case 303: -#line 1111 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1111 "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 2064 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2050 "dhcp4_parser.cc" // lalr1.cc:856 break; case 304: -#line 1116 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1116 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2073 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2059 "dhcp4_parser.cc" // lalr1.cc:856 break; case 305: -#line 1121 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1121 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.RESERVATION_MODE); } -#line 2081 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2067 "dhcp4_parser.cc" // lalr1.cc:856 break; case 306: -#line 1123 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1123 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2090 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2076 "dhcp4_parser.cc" // lalr1.cc:856 break; case 307: -#line 1128 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1128 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2096 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2082 "dhcp4_parser.cc" // lalr1.cc:856 break; case 308: -#line 1129 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1129 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2102 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2088 "dhcp4_parser.cc" // lalr1.cc:856 break; case 309: -#line 1130 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1130 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2108 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2094 "dhcp4_parser.cc" // lalr1.cc:856 break; case 310: -#line 1131 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1131 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2114 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2100 "dhcp4_parser.cc" // lalr1.cc:856 break; case 311: -#line 1134 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1134 "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 2123 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2109 "dhcp4_parser.cc" // lalr1.cc:856 break; case 312: -#line 1141 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1141 "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 2134 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2120 "dhcp4_parser.cc" // lalr1.cc:856 break; case 313: -#line 1146 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1146 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2143 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2129 "dhcp4_parser.cc" // lalr1.cc:856 break; case 318: -#line 1161 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1161 "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 2153 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2139 "dhcp4_parser.cc" // lalr1.cc:856 break; case 319: -#line 1165 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1165 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 2161 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2147 "dhcp4_parser.cc" // lalr1.cc:856 break; case 341: -#line 1198 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1198 "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 2172 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2158 "dhcp4_parser.cc" // lalr1.cc:856 break; case 342: -#line 1203 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1203 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2181 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2167 "dhcp4_parser.cc" // lalr1.cc:856 break; case 343: -#line 1211 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1211 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2190 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2176 "dhcp4_parser.cc" // lalr1.cc:856 break; case 344: -#line 1214 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1214 "dhcp4_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 2198 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2184 "dhcp4_parser.cc" // lalr1.cc:856 break; case 349: -#line 1230 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1230 "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 2208 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2194 "dhcp4_parser.cc" // lalr1.cc:856 break; case 350: -#line 1234 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1234 "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)); @@ -2216,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 2220 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2206 "dhcp4_parser.cc" // lalr1.cc:856 break; case 351: -#line 1245 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1245 "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 2230 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2216 "dhcp4_parser.cc" // lalr1.cc:856 break; case 352: -#line 1249 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1249 "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)); @@ -2238,281 +2224,281 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2242 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2228 "dhcp4_parser.cc" // lalr1.cc:856 break; case 368: -#line 1281 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1281 "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 2251 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2237 "dhcp4_parser.cc" // lalr1.cc:856 break; case 370: -#line 1288 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1288 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2259 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2245 "dhcp4_parser.cc" // lalr1.cc:856 break; case 371: -#line 1290 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1290 "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 2269 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2255 "dhcp4_parser.cc" // lalr1.cc:856 break; case 372: -#line 1296 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1296 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2277 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2263 "dhcp4_parser.cc" // lalr1.cc:856 break; case 373: -#line 1298 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1298 "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 2287 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2273 "dhcp4_parser.cc" // lalr1.cc:856 break; case 374: -#line 1304 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1304 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2295 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2281 "dhcp4_parser.cc" // lalr1.cc:856 break; case 375: -#line 1306 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1306 "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 2305 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2291 "dhcp4_parser.cc" // lalr1.cc:856 break; case 377: -#line 1314 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1314 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2313 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2299 "dhcp4_parser.cc" // lalr1.cc:856 break; case 378: -#line 1316 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1316 "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 2323 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2309 "dhcp4_parser.cc" // lalr1.cc:856 break; case 379: -#line 1322 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1322 "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 2332 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2318 "dhcp4_parser.cc" // lalr1.cc:856 break; case 380: -#line 1331 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1331 "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 2343 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2329 "dhcp4_parser.cc" // lalr1.cc:856 break; case 381: -#line 1336 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1336 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2352 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2338 "dhcp4_parser.cc" // lalr1.cc:856 break; case 386: -#line 1355 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1355 "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 2362 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2348 "dhcp4_parser.cc" // lalr1.cc:856 break; case 387: -#line 1359 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1359 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2371 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2357 "dhcp4_parser.cc" // lalr1.cc:856 break; case 388: -#line 1367 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1367 "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 2381 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2367 "dhcp4_parser.cc" // lalr1.cc:856 break; case 389: -#line 1371 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1371 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: the code or name parameters are required. // parsing completed } -#line 2390 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2376 "dhcp4_parser.cc" // lalr1.cc:856 break; case 404: -#line 1404 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1404 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2398 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2384 "dhcp4_parser.cc" // lalr1.cc:856 break; case 405: -#line 1406 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1406 "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 2408 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2394 "dhcp4_parser.cc" // lalr1.cc:856 break; case 408: -#line 1416 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1416 "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 2417 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2403 "dhcp4_parser.cc" // lalr1.cc:856 break; case 409: -#line 1421 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1421 "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 2426 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2412 "dhcp4_parser.cc" // lalr1.cc:856 break; case 410: -#line 1429 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1429 "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 2437 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2423 "dhcp4_parser.cc" // lalr1.cc:856 break; case 411: -#line 1434 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1434 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2446 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2432 "dhcp4_parser.cc" // lalr1.cc:856 break; case 416: -#line 1449 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1449 "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 2456 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2442 "dhcp4_parser.cc" // lalr1.cc:856 break; case 417: -#line 1453 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1453 "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 2466 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2452 "dhcp4_parser.cc" // lalr1.cc:856 break; case 418: -#line 1459 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1459 "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 2476 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2462 "dhcp4_parser.cc" // lalr1.cc:856 break; case 419: -#line 1463 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1463 "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 2486 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2472 "dhcp4_parser.cc" // lalr1.cc:856 break; case 429: -#line 1482 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1482 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2494 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2480 "dhcp4_parser.cc" // lalr1.cc:856 break; case 430: -#line 1484 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1484 "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 2504 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2490 "dhcp4_parser.cc" // lalr1.cc:856 break; case 431: -#line 1490 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1490 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2512 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2498 "dhcp4_parser.cc" // lalr1.cc:856 break; case 432: -#line 1492 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1492 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -2535,19 +2521,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2539 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2525 "dhcp4_parser.cc" // lalr1.cc:856 break; case 433: -#line 1515 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1515 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2547 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2533 "dhcp4_parser.cc" // lalr1.cc:856 break; case 434: -#line 1517 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1517 "dhcp4_parser.yy" // lalr1.cc:856 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -2572,1085 +2558,1083 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2576 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2562 "dhcp4_parser.cc" // lalr1.cc:856 break; case 435: -#line 1545 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1545 "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 2587 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2573 "dhcp4_parser.cc" // lalr1.cc:856 break; case 436: -#line 1550 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1550 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2596 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2582 "dhcp4_parser.cc" // lalr1.cc:856 break; case 441: -#line 1563 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1563 "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 2606 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2592 "dhcp4_parser.cc" // lalr1.cc:856 break; case 442: -#line 1567 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1567 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 2615 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2601 "dhcp4_parser.cc" // lalr1.cc:856 break; case 443: -#line 1572 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1572 "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 2625 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2611 "dhcp4_parser.cc" // lalr1.cc:856 break; case 444: -#line 1576 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1576 "dhcp4_parser.yy" // lalr1.cc:856 { /// @todo: an identifier parameter is required. // parsing completed } -#line 2634 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2620 "dhcp4_parser.cc" // lalr1.cc:856 break; case 464: -#line 1607 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1607 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2642 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2628 "dhcp4_parser.cc" // lalr1.cc:856 break; case 465: -#line 1609 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1609 "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 2652 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2638 "dhcp4_parser.cc" // lalr1.cc:856 break; case 466: -#line 1615 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1615 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2660 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2646 "dhcp4_parser.cc" // lalr1.cc:856 break; case 467: -#line 1617 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1617 "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 2670 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2656 "dhcp4_parser.cc" // lalr1.cc:856 break; case 468: -#line 1623 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1623 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2678 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2664 "dhcp4_parser.cc" // lalr1.cc:856 break; case 469: -#line 1625 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1625 "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 2688 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2674 "dhcp4_parser.cc" // lalr1.cc:856 break; case 470: -#line 1631 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1631 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2696 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2682 "dhcp4_parser.cc" // lalr1.cc:856 break; case 471: -#line 1633 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1633 "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 2706 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2692 "dhcp4_parser.cc" // lalr1.cc:856 break; case 472: -#line 1639 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1639 "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 2717 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2703 "dhcp4_parser.cc" // lalr1.cc:856 break; case 473: -#line 1644 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1644 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2726 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2712 "dhcp4_parser.cc" // lalr1.cc:856 break; case 474: -#line 1649 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1649 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2734 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2720 "dhcp4_parser.cc" // lalr1.cc:856 break; case 475: -#line 1651 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1651 "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 2744 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2730 "dhcp4_parser.cc" // lalr1.cc:856 break; case 476: -#line 1657 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1657 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2752 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2738 "dhcp4_parser.cc" // lalr1.cc:856 break; case 477: -#line 1659 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1659 "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 2762 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2748 "dhcp4_parser.cc" // lalr1.cc:856 break; case 478: -#line 1665 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1665 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2770 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2756 "dhcp4_parser.cc" // lalr1.cc:856 break; case 479: -#line 1667 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1667 "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 2780 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2766 "dhcp4_parser.cc" // lalr1.cc:856 break; case 480: -#line 1673 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1673 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2788 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2774 "dhcp4_parser.cc" // lalr1.cc:856 break; case 481: -#line 1675 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1675 "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 2798 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2784 "dhcp4_parser.cc" // lalr1.cc:856 break; case 482: -#line 1681 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1681 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2806 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2792 "dhcp4_parser.cc" // lalr1.cc:856 break; case 483: -#line 1683 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1683 "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 2816 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2802 "dhcp4_parser.cc" // lalr1.cc:856 break; case 484: -#line 1689 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1689 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2824 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2810 "dhcp4_parser.cc" // lalr1.cc:856 break; case 485: -#line 1691 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1691 "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 2834 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2820 "dhcp4_parser.cc" // lalr1.cc:856 break; case 486: -#line 1697 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1697 "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 2845 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2831 "dhcp4_parser.cc" // lalr1.cc:856 break; case 487: -#line 1702 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1702 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2854 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2840 "dhcp4_parser.cc" // lalr1.cc:856 break; case 488: -#line 1710 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1710 "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 2865 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2851 "dhcp4_parser.cc" // lalr1.cc:856 break; case 489: -#line 1715 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1715 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2874 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2860 "dhcp4_parser.cc" // lalr1.cc:856 break; case 492: -#line 1727 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1727 "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 2885 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2871 "dhcp4_parser.cc" // lalr1.cc:856 break; case 493: -#line 1732 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1732 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2894 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2880 "dhcp4_parser.cc" // lalr1.cc:856 break; case 496: -#line 1741 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1741 "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 2904 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2890 "dhcp4_parser.cc" // lalr1.cc:856 break; case 497: -#line 1745 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1745 "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 2914 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2900 "dhcp4_parser.cc" // lalr1.cc:856 break; case 514: -#line 1774 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1774 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2922 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2908 "dhcp4_parser.cc" // lalr1.cc:856 break; case 515: -#line 1776 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1776 "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 2932 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2918 "dhcp4_parser.cc" // lalr1.cc:856 break; case 516: -#line 1782 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1782 "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 2941 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2927 "dhcp4_parser.cc" // lalr1.cc:856 break; case 517: -#line 1791 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1791 "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 2950 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2936 "dhcp4_parser.cc" // lalr1.cc:856 break; case 518: -#line 1798 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1798 "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 2961 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2947 "dhcp4_parser.cc" // lalr1.cc:856 break; case 519: -#line 1803 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1803 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2970 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2956 "dhcp4_parser.cc" // lalr1.cc:856 break; case 527: -#line 1819 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1819 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2978 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2964 "dhcp4_parser.cc" // lalr1.cc:856 break; case 528: -#line 1821 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1821 "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 2988 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2974 "dhcp4_parser.cc" // lalr1.cc:856 break; case 529: -#line 1827 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1827 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 2996 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2982 "dhcp4_parser.cc" // lalr1.cc:856 break; case 530: -#line 1829 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1829 "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 3006 "dhcp4_parser.cc" // lalr1.cc:870 +#line 2992 "dhcp4_parser.cc" // lalr1.cc:856 break; case 531: -#line 1837 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1837 "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 3017 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3003 "dhcp4_parser.cc" // lalr1.cc:856 break; case 532: -#line 1842 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1842 "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 3028 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3014 "dhcp4_parser.cc" // lalr1.cc:856 break; case 533: -#line 1849 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1849 "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 3038 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3024 "dhcp4_parser.cc" // lalr1.cc:856 break; case 534: -#line 1853 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1853 "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 3048 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3034 "dhcp4_parser.cc" // lalr1.cc:856 break; case 556: -#line 1884 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1884 "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 3057 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3043 "dhcp4_parser.cc" // lalr1.cc:856 break; case 557: -#line 1889 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1889 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3065 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3051 "dhcp4_parser.cc" // lalr1.cc:856 break; case 558: -#line 1891 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1891 "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 3075 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3061 "dhcp4_parser.cc" // lalr1.cc:856 break; case 559: -#line 1897 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1897 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3083 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3069 "dhcp4_parser.cc" // lalr1.cc:856 break; case 560: -#line 1899 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1899 "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 3093 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3079 "dhcp4_parser.cc" // lalr1.cc:856 break; case 561: -#line 1905 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1905 "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 3102 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3088 "dhcp4_parser.cc" // lalr1.cc:856 break; case 562: -#line 1910 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1910 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3110 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3096 "dhcp4_parser.cc" // lalr1.cc:856 break; case 563: -#line 1912 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1912 "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 3120 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3106 "dhcp4_parser.cc" // lalr1.cc:856 break; case 564: -#line 1918 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1918 "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 3129 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3115 "dhcp4_parser.cc" // lalr1.cc:856 break; case 565: -#line 1923 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1923 "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 3138 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3124 "dhcp4_parser.cc" // lalr1.cc:856 break; case 566: -#line 1928 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1928 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_PROTOCOL); } -#line 3146 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3132 "dhcp4_parser.cc" // lalr1.cc:856 break; case 567: -#line 1930 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1930 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3155 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3141 "dhcp4_parser.cc" // lalr1.cc:856 break; case 568: -#line 1936 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1936 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 3161 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3147 "dhcp4_parser.cc" // lalr1.cc:856 break; case 569: -#line 1937 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1937 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 3167 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3153 "dhcp4_parser.cc" // lalr1.cc:856 break; case 570: -#line 1940 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1940 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NCR_FORMAT); } -#line 3175 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3161 "dhcp4_parser.cc" // lalr1.cc:856 break; case 571: -#line 1942 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1942 "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 3185 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3171 "dhcp4_parser.cc" // lalr1.cc:856 break; case 572: -#line 1948 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1948 "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 3194 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3180 "dhcp4_parser.cc" // lalr1.cc:856 break; case 573: -#line 1953 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1953 "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 3203 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3189 "dhcp4_parser.cc" // lalr1.cc:856 break; case 574: -#line 1958 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1958 "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 3212 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3198 "dhcp4_parser.cc" // lalr1.cc:856 break; case 575: -#line 1963 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1963 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3220 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3206 "dhcp4_parser.cc" // lalr1.cc:856 break; case 576: -#line 1965 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1965 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3229 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3215 "dhcp4_parser.cc" // lalr1.cc:856 break; case 577: -#line 1971 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1971 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 3237 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3223 "dhcp4_parser.cc" // lalr1.cc:856 break; case 578: -#line 1974 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1974 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 3245 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3231 "dhcp4_parser.cc" // lalr1.cc:856 break; case 579: -#line 1977 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1977 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 3253 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3239 "dhcp4_parser.cc" // lalr1.cc:856 break; case 580: -#line 1980 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1980 "dhcp4_parser.yy" // lalr1.cc:856 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 3261 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3247 "dhcp4_parser.cc" // lalr1.cc:856 break; case 581: -#line 1983 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1983 "dhcp4_parser.yy" // lalr1.cc:856 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 3270 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3256 "dhcp4_parser.cc" // lalr1.cc:856 break; case 582: -#line 1989 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1989 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3278 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3264 "dhcp4_parser.cc" // lalr1.cc:856 break; case 583: -#line 1991 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1991 "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 3288 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3274 "dhcp4_parser.cc" // lalr1.cc:856 break; case 584: -#line 1997 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1997 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3296 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3282 "dhcp4_parser.cc" // lalr1.cc:856 break; case 585: -#line 1999 "dhcp4_parser.yy" // lalr1.cc:870 +#line 1999 "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 3306 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3292 "dhcp4_parser.cc" // lalr1.cc:856 break; case 586: -#line 2005 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2005 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3314 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3300 "dhcp4_parser.cc" // lalr1.cc:856 break; case 587: -#line 2007 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2007 "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 3324 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3310 "dhcp4_parser.cc" // lalr1.cc:856 break; case 588: -#line 2016 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2016 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3332 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3318 "dhcp4_parser.cc" // lalr1.cc:856 break; case 589: -#line 2018 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2018 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3341 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3327 "dhcp4_parser.cc" // lalr1.cc:856 break; case 590: -#line 2023 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2023 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3349 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3335 "dhcp4_parser.cc" // lalr1.cc:856 break; case 591: -#line 2025 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2025 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3358 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3344 "dhcp4_parser.cc" // lalr1.cc:856 break; case 592: -#line 2030 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2030 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3366 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3352 "dhcp4_parser.cc" // lalr1.cc:856 break; case 593: -#line 2032 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2032 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3375 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3361 "dhcp4_parser.cc" // lalr1.cc:856 break; case 594: -#line 2037 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2037 "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 3385 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3371 "dhcp4_parser.cc" // lalr1.cc:856 break; case 595: -#line 2041 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2041 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3393 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3379 "dhcp4_parser.cc" // lalr1.cc:856 break; case 596: -#line 2046 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2046 "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 3404 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3390 "dhcp4_parser.cc" // lalr1.cc:856 break; case 597: -#line 2051 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2051 "dhcp4_parser.yy" // lalr1.cc:856 { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 3414 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3400 "dhcp4_parser.cc" // lalr1.cc:856 break; case 598: -#line 2057 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2057 "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 3424 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3410 "dhcp4_parser.cc" // lalr1.cc:856 break; case 599: -#line 2061 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2061 "dhcp4_parser.yy" // lalr1.cc:856 { // No config_control params are required // parsing completed } -#line 3433 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3419 "dhcp4_parser.cc" // lalr1.cc:856 break; case 604: -#line 2076 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2076 "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 3444 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3430 "dhcp4_parser.cc" // lalr1.cc:856 break; case 605: -#line 2081 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2081 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3453 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3439 "dhcp4_parser.cc" // lalr1.cc:856 break; case 606: -#line 2091 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2091 "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 3464 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3450 "dhcp4_parser.cc" // lalr1.cc:856 break; case 607: -#line 2096 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2096 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3473 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3459 "dhcp4_parser.cc" // lalr1.cc:856 break; case 608: -#line 2101 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2101 "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 3483 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3469 "dhcp4_parser.cc" // lalr1.cc:856 break; case 609: -#line 2105 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2105 "dhcp4_parser.yy" // lalr1.cc:856 { // parsing completed } -#line 3491 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3477 "dhcp4_parser.cc" // lalr1.cc:856 break; case 613: -#line 2121 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2121 "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 3502 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3488 "dhcp4_parser.cc" // lalr1.cc:856 break; case 614: -#line 2126 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2126 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3511 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3497 "dhcp4_parser.cc" // lalr1.cc:856 break; case 617: -#line 2138 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2138 "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 3521 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3507 "dhcp4_parser.cc" // lalr1.cc:856 break; case 618: -#line 2142 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2142 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3529 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3515 "dhcp4_parser.cc" // lalr1.cc:856 break; case 628: -#line 2159 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2159 "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 3538 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3524 "dhcp4_parser.cc" // lalr1.cc:856 break; case 629: -#line 2164 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2164 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3546 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3532 "dhcp4_parser.cc" // lalr1.cc:856 break; case 630: -#line 2166 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2166 "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 3556 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3542 "dhcp4_parser.cc" // lalr1.cc:856 break; case 631: -#line 2172 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2172 "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 3567 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3553 "dhcp4_parser.cc" // lalr1.cc:856 break; case 632: -#line 2177 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2177 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3576 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3562 "dhcp4_parser.cc" // lalr1.cc:856 break; case 635: -#line 2186 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2186 "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 3586 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3572 "dhcp4_parser.cc" // lalr1.cc:856 break; case 636: -#line 2190 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2190 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.stack_.pop_back(); } -#line 3594 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3580 "dhcp4_parser.cc" // lalr1.cc:856 break; case 643: -#line 2204 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2204 "dhcp4_parser.yy" // lalr1.cc:856 { ctx.enter(ctx.NO_KEYWORD); } -#line 3602 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3588 "dhcp4_parser.cc" // lalr1.cc:856 break; case 644: -#line 2206 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2206 "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 3612 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3598 "dhcp4_parser.cc" // lalr1.cc:856 break; case 645: -#line 2212 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2212 "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 3621 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3607 "dhcp4_parser.cc" // lalr1.cc:856 break; case 646: -#line 2217 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2217 "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 3630 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3616 "dhcp4_parser.cc" // lalr1.cc:856 break; case 647: -#line 2222 "dhcp4_parser.yy" // lalr1.cc:870 +#line 2222 "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 3639 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3625 "dhcp4_parser.cc" // lalr1.cc:856 break; -#line 3643 "dhcp4_parser.cc" // lalr1.cc:870 +#line 3629 "dhcp4_parser.cc" // lalr1.cc:856 default: break; } } -#if YY_EXCEPTIONS catch (const syntax_error& yyexc) { error (yyexc); YYERROR; } -#endif // YY_EXCEPTIONS YY_SYMBOL_PRINT ("-> $$ =", yylhs); yypop_ (yylen); yylen = 0; @@ -3774,12 +3758,11 @@ namespace isc { namespace dhcp { return yyresult; } -#if YY_EXCEPTIONS catch (...) { YYCDEBUG << "Exception caught: cleaning lookahead and stack\n"; // Do not try to display the values of the reclaimed symbols, - // as their printers might throw an exception. + // as their printer might throw an exception. if (!yyla.empty ()) yy_destroy_ (YY_NULLPTR, yyla); @@ -3790,7 +3773,6 @@ namespace isc { namespace dhcp { } throw; } -#endif // YY_EXCEPTIONS } void @@ -3897,11 +3879,11 @@ namespace isc { namespace dhcp { } - const short Dhcp4Parser::yypact_ninf_ = -799; + const short int Dhcp4Parser::yypact_ninf_ = -799; const signed char Dhcp4Parser::yytable_ninf_ = -1; - const short + const short int Dhcp4Parser::yypact_[] = { 400, -799, -799, -799, -799, -799, -799, -799, -799, -799, @@ -4011,7 +3993,7 @@ namespace isc { namespace dhcp { -799, -799 }; - const unsigned short + const unsigned short int Dhcp4Parser::yydefact_[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, @@ -4121,7 +4103,7 @@ namespace isc { namespace dhcp { 638, 644 }; - const short + const short int Dhcp4Parser::yypgoto_[] = { -799, -799, -799, -799, -799, -799, -799, -799, -799, -799, @@ -4164,7 +4146,7 @@ namespace isc { namespace dhcp { -799, -799, -799 }; - const short + const short int Dhcp4Parser::yydefgoto_[] = { -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -4207,7 +4189,7 @@ namespace isc { namespace dhcp { 1026, 1027, 1028 }; - const unsigned short + const unsigned short int Dhcp4Parser::yytable_[] = { 95, 135, 173, 193, 220, 237, 711, 263, 282, 299, @@ -4311,7 +4293,7 @@ namespace isc { namespace dhcp { 906, 0, 927, 928, 915, 0, 0, 0, 901, 929 }; - const short + const short int Dhcp4Parser::yycheck_[] = { 70, 71, 72, 73, 74, 75, 592, 77, 78, 79, @@ -4415,7 +4397,7 @@ namespace isc { namespace dhcp { 984, -1, 989, 989, 984, -1, -1, -1, 984, 989 }; - const unsigned short + const unsigned short int Dhcp4Parser::yystos_[] = { 0, 151, 152, 153, 154, 155, 156, 157, 158, 159, @@ -4525,7 +4507,7 @@ namespace isc { namespace dhcp { 536, 165 }; - const unsigned short + const unsigned short int Dhcp4Parser::yyr1_[] = { 0, 169, 171, 170, 172, 170, 173, 170, 174, 170, @@ -4812,7 +4794,7 @@ namespace isc { namespace dhcp { }; #if PARSER4_DEBUG - const unsigned short + const unsigned short int Dhcp4Parser::yyrline_[] = { 0, 253, 253, 253, 254, 254, 255, 255, 256, 256, @@ -4912,10 +4894,10 @@ namespace isc { namespace dhcp { #endif // PARSER4_DEBUG -#line 14 "dhcp4_parser.yy" // lalr1.cc:1181 +#line 14 "dhcp4_parser.yy" // lalr1.cc:1163 } } // isc::dhcp -#line 4918 "dhcp4_parser.cc" // lalr1.cc:1181 -#line 2227 "dhcp4_parser.yy" // lalr1.cc:1182 +#line 4900 "dhcp4_parser.cc" // lalr1.cc:1163 +#line 2227 "dhcp4_parser.yy" // lalr1.cc:1164 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index e38d3dbc33..c0dd2b9236 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.1. +// A Bison parser, made by GNU Bison 3.0.5. // Skeleton interface for Bison LALR(1) parsers in C++ @@ -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:380 +#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:380 +#line 56 "dhcp4_parser.h" // lalr1.cc:379 # include # include // std::abort @@ -103,7 +103,7 @@ using namespace std; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -122,13 +122,6 @@ using namespace std; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif /* Debug traces. */ #ifndef PARSER4_DEBUG # if defined YYDEBUG @@ -142,9 +135,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER4_DEBUG */ -#line 14 "dhcp4_parser.yy" // lalr1.cc:380 +#line 14 "dhcp4_parser.yy" // lalr1.cc:379 namespace isc { namespace dhcp { -#line 148 "dhcp4_parser.h" // lalr1.cc:380 +#line 141 "dhcp4_parser.h" // lalr1.cc:379 @@ -161,8 +154,7 @@ namespace isc { namespace dhcp { /// Empty construction. variant () - : yybuffer_ () - , yytypeid_ (YY_NULLPTR) + : yytypeid_ (YY_NULLPTR) {} /// Construct and fill. @@ -188,7 +180,7 @@ namespace isc { namespace dhcp { YYASSERT (!yytypeid_); YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (); + return *new (yyas_ ()) T; } /// Instantiate a \a T in here from \a t. @@ -207,7 +199,6 @@ namespace isc { namespace dhcp { T& as () { - YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); YYASSERT (sizeof (T) <= S); return *yyas_ (); @@ -218,7 +209,6 @@ namespace isc { namespace dhcp { const T& as () const { - YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); YYASSERT (sizeof (T) <= S); return *yyas_ (); @@ -561,15 +551,15 @@ namespace isc { namespace dhcp { basic_symbol (typename Base::kind_type t, const location_type& l); - basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l); - basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const bool v, const location_type& l); - basic_symbol (typename Base::kind_type t, const double& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const double v, const location_type& l); - basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l); - basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l); + basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l); /// Constructor for symbols with semantic value. @@ -1364,7 +1354,7 @@ namespace isc { namespace dhcp { /// \param yyvalue the value to check static bool yy_table_value_is_error_ (int yyvalue); - static const short yypact_ninf_; + static const short int yypact_ninf_; static const signed char yytable_ninf_; /// Convert a scanner token number \a t to a symbol number. @@ -1373,32 +1363,32 @@ namespace isc { namespace dhcp { // Tables. // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing // STATE-NUM. - static const short yypact_[]; + static const short int yypact_[]; // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. // Performed when YYTABLE does not specify something else to do. Zero // means the default is an error. - static const unsigned short yydefact_[]; + static const unsigned short int yydefact_[]; // YYPGOTO[NTERM-NUM]. - static const short yypgoto_[]; + static const short int yypgoto_[]; // YYDEFGOTO[NTERM-NUM]. - static const short yydefgoto_[]; + static const short int yydefgoto_[]; // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If // positive, shift that token. If negative, reduce the rule whose // number is the opposite. If YYTABLE_NINF, syntax error. - static const unsigned short yytable_[]; + static const unsigned short int yytable_[]; - static const short yycheck_[]; + static const short int yycheck_[]; // YYSTOS[STATE-NUM] -- The (internal number of the) accessing // symbol of state STATE-NUM. - static const unsigned short yystos_[]; + static const unsigned short int yystos_[]; // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. - static const unsigned short yyr1_[]; + static const unsigned short int yyr1_[]; // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. static const unsigned char yyr2_[]; @@ -1412,7 +1402,7 @@ namespace isc { namespace dhcp { static const char* const yytname_[]; #if PARSER4_DEBUG // YYRLINE[YYN] -- Source line where rule number YYN was defined. - static const unsigned short yyrline_[]; + static const unsigned short int yyrline_[]; /// Report on the debug stream that the rule \a r is going to be reduced. virtual void yy_reduce_print_ (int r); /// Print the state stack on the debug stream. @@ -1477,7 +1467,7 @@ namespace isc { namespace dhcp { typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); - /// Copy construct (for efficiency). + /// 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); @@ -1600,7 +1590,6 @@ namespace isc { namespace dhcp { template Dhcp4Parser::basic_symbol::basic_symbol () : value () - , location () {} template @@ -1691,39 +1680,40 @@ namespace isc { namespace dhcp { template Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const location_type& l) : Base (t) + , value () , location (l) {} template - Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l) + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l) : Base (t) , value (v) , location (l) {} template - Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l) + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l) : Base (t) , value (v) , location (l) {} template - Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const double& v, const location_type& l) + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const double v, const location_type& l) : Base (t) , value (v) , location (l) {} template - Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l) + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l) : Base (t) , value (v) , location (l) {} template - Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l) + Dhcp4Parser::basic_symbol::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l) : Base (t) , value (v) , location (l) @@ -1880,7 +1870,7 @@ namespace isc { namespace dhcp { // YYTOKNUM[NUM] -- (External) token number corresponding to the // (internal) symbol number NUM (which must be that of a token). */ static - const unsigned short + const unsigned short int yytoken_number_[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -2907,9 +2897,9 @@ namespace isc { namespace dhcp { } -#line 14 "dhcp4_parser.yy" // lalr1.cc:380 +#line 14 "dhcp4_parser.yy" // lalr1.cc:379 } } // isc::dhcp -#line 2913 "dhcp4_parser.h" // lalr1.cc:380 +#line 2903 "dhcp4_parser.h" // lalr1.cc:379 diff --git a/src/bin/dhcp4/location.hh b/src/bin/dhcp4/location.hh index ed2552c423..c65175175f 100644 --- a/src/bin/dhcp4/location.hh +++ b/src/bin/dhcp4/location.hh @@ -1,4 +1,5 @@ -// A Bison parser, made by GNU Bison 3.1. +// Generated 201811071039 +// A Bison parser, made by GNU Bison 3.0.5. // Locations for Bison parsers in C++ @@ -40,9 +41,9 @@ # include "position.hh" -#line 14 "dhcp4_parser.yy" // location.cc:290 +#line 14 "dhcp4_parser.yy" // location.cc:292 namespace isc { namespace dhcp { -#line 46 "location.hh" // location.cc:290 +#line 46 "location.hh" // location.cc:292 /// Abstract a location. class location { @@ -167,7 +168,7 @@ namespace isc { namespace dhcp { ** Avoid duplicate information. */ template - std::basic_ostream& + inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const location& loc) { unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; @@ -183,7 +184,7 @@ namespace isc { namespace dhcp { return ostr; } -#line 14 "dhcp4_parser.yy" // location.cc:290 +#line 14 "dhcp4_parser.yy" // location.cc:292 } } // isc::dhcp -#line 189 "location.hh" // location.cc:290 +#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 ff5d2773d7..4e28619465 100644 --- a/src/bin/dhcp4/position.hh +++ b/src/bin/dhcp4/position.hh @@ -1,4 +1,5 @@ -// A Bison parser, made by GNU Bison 3.1. +// Generated 201811071039 +// A Bison parser, made by GNU Bison 3.0.5. // Positions for Bison parsers in C++ @@ -50,9 +51,9 @@ # endif # endif -#line 14 "dhcp4_parser.yy" // location.cc:290 +#line 14 "dhcp4_parser.yy" // location.cc:292 namespace isc { namespace dhcp { -#line 56 "position.hh" // location.cc:290 +#line 56 "position.hh" // location.cc:292 /// Abstract a position. class position { @@ -104,10 +105,12 @@ namespace isc { namespace dhcp { unsigned column; private: - /// Compute max(min, lhs+rhs). - static unsigned add_ (unsigned lhs, int rhs, int min) + /// Compute max(min, lhs+rhs) (provided min <= lhs). + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return static_cast(std::max(min, static_cast(lhs) + rhs)); + return (0 < rhs || -static_cast(rhs) < lhs + ? rhs + lhs + : min); } }; @@ -163,7 +166,7 @@ namespace isc { namespace dhcp { ** \param pos a reference to the position to redirect */ template - std::basic_ostream& + inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const position& pos) { if (pos.filename) @@ -171,7 +174,7 @@ namespace isc { namespace dhcp { return ostr << pos.line << '.' << pos.column; } -#line 14 "dhcp4_parser.yy" // location.cc:290 +#line 14 "dhcp4_parser.yy" // location.cc:292 } } // isc::dhcp -#line 177 "position.hh" // location.cc:290 +#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 fb85286ef1..f04c05d29d 100644 --- a/src/bin/dhcp4/stack.hh +++ b/src/bin/dhcp4/stack.hh @@ -1,4 +1,5 @@ -// A Bison parser, made by GNU Bison 3.1. +// Generated 201811071039 +// A Bison parser, made by GNU Bison 3.0.5. // Stack handling for Bison parsers in C++ @@ -40,9 +41,9 @@ # 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 @@ -51,14 +52,14 @@ namespace isc { namespace dhcp { // Hide our reversed order. typedef typename S::reverse_iterator iterator; typedef typename S::const_reverse_iterator const_iterator; - typedef typename S::size_type size_type; stack () + : seq_ () { seq_.reserve (200); } - stack (size_type n) + stack (unsigned n) : seq_ (n) {} @@ -66,7 +67,7 @@ namespace isc { namespace dhcp { /// /// Index 0 returns the topmost element. T& - operator[] (size_type i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } @@ -75,7 +76,7 @@ namespace isc { namespace dhcp { /// /// Index 0 returns the topmost element. const T& - operator[] (size_type i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -91,7 +92,7 @@ namespace isc { namespace dhcp { } void - pop (size_type n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -103,7 +104,7 @@ namespace isc { namespace dhcp { seq_.clear (); } - size_type + typename S::size_type size () const { return seq_.size (); @@ -133,25 +134,24 @@ namespace isc { namespace dhcp { class slice { public: - typedef typename S::size_type size_type; - slice (const S& stack, size_type range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} const T& - operator[] (size_type i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - size_type 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