-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
// Unqualified %code blocks.
-#line 33 "agent_parser.yy" // lalr1.cc:435
+#line 33 "agent_parser.yy"
#include <agent/parser_context.h>
-#line 51 "agent_parser.cc" // lalr1.cc:435
+#line 51 "agent_parser.cc"
#ifndef YY_
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "agent_parser.yy" // lalr1.cc:510
+#line 14 "agent_parser.yy"
namespace isc { namespace agent {
-#line 146 "agent_parser.cc" // lalr1.cc:510
+#line 146 "agent_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
switch (yytype)
{
case 41: // "constant string"
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 392 "agent_parser.cc" // lalr1.cc:676
+#line 393 "agent_parser.cc"
break;
case 42: // "integer"
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
-#line 398 "agent_parser.cc" // lalr1.cc:676
+#line 399 "agent_parser.cc"
break;
case 43: // "floating point"
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
-#line 404 "agent_parser.cc" // lalr1.cc:676
+#line 405 "agent_parser.cc"
break;
case 44: // "boolean"
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
-#line 410 "agent_parser.cc" // lalr1.cc:676
+#line 411 "agent_parser.cc"
break;
case 53: // value
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 416 "agent_parser.cc" // lalr1.cc:676
+#line 417 "agent_parser.cc"
break;
case 56: // map_value
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 422 "agent_parser.cc" // lalr1.cc:676
+#line 423 "agent_parser.cc"
break;
case 107: // socket_type_value
-#line 103 "agent_parser.yy" // lalr1.cc:676
+#line 103 "agent_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 428 "agent_parser.cc" // lalr1.cc:676
+#line 429 "agent_parser.cc"
break;
default:
switch (yyn)
{
case 2:
-#line 114 "agent_parser.yy" // lalr1.cc:919
+#line 114 "agent_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORDS; }
-#line 690 "agent_parser.cc" // lalr1.cc:919
+#line 691 "agent_parser.cc"
break;
case 4:
-#line 115 "agent_parser.yy" // lalr1.cc:919
+#line 115 "agent_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 696 "agent_parser.cc" // lalr1.cc:919
+#line 697 "agent_parser.cc"
break;
case 6:
-#line 116 "agent_parser.yy" // lalr1.cc:919
+#line 116 "agent_parser.yy"
{ ctx.ctx_ = ctx.AGENT; }
-#line 702 "agent_parser.cc" // lalr1.cc:919
+#line 703 "agent_parser.cc"
break;
case 8:
-#line 124 "agent_parser.yy" // lalr1.cc:919
+#line 124 "agent_parser.yy"
{
// Parse the Control-agent map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 712 "agent_parser.cc" // lalr1.cc:919
+#line 713 "agent_parser.cc"
break;
case 9:
-#line 128 "agent_parser.yy" // lalr1.cc:919
+#line 128 "agent_parser.yy"
{
// parsing completed
}
-#line 720 "agent_parser.cc" // lalr1.cc:919
+#line 721 "agent_parser.cc"
break;
case 10:
-#line 135 "agent_parser.yy" // lalr1.cc:919
+#line 135 "agent_parser.yy"
{
// Push back the JSON value on the stack
ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 729 "agent_parser.cc" // lalr1.cc:919
+#line 730 "agent_parser.cc"
break;
case 11:
-#line 141 "agent_parser.yy" // lalr1.cc:919
+#line 141 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 735 "agent_parser.cc" // lalr1.cc:919
+#line 736 "agent_parser.cc"
break;
case 12:
-#line 142 "agent_parser.yy" // lalr1.cc:919
+#line 142 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 741 "agent_parser.cc" // lalr1.cc:919
+#line 742 "agent_parser.cc"
break;
case 13:
-#line 143 "agent_parser.yy" // lalr1.cc:919
+#line 143 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 747 "agent_parser.cc" // lalr1.cc:919
+#line 748 "agent_parser.cc"
break;
case 14:
-#line 144 "agent_parser.yy" // lalr1.cc:919
+#line 144 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 753 "agent_parser.cc" // lalr1.cc:919
+#line 754 "agent_parser.cc"
break;
case 15:
-#line 145 "agent_parser.yy" // lalr1.cc:919
+#line 145 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 759 "agent_parser.cc" // lalr1.cc:919
+#line 760 "agent_parser.cc"
break;
case 16:
-#line 146 "agent_parser.yy" // lalr1.cc:919
+#line 146 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 765 "agent_parser.cc" // lalr1.cc:919
+#line 766 "agent_parser.cc"
break;
case 17:
-#line 147 "agent_parser.yy" // lalr1.cc:919
+#line 147 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 771 "agent_parser.cc" // lalr1.cc:919
+#line 772 "agent_parser.cc"
break;
case 18:
-#line 151 "agent_parser.yy" // lalr1.cc:919
+#line 151 "agent_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 782 "agent_parser.cc" // lalr1.cc:919
+#line 783 "agent_parser.cc"
break;
case 19:
-#line 156 "agent_parser.yy" // lalr1.cc:919
+#line 156 "agent_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 792 "agent_parser.cc" // lalr1.cc:919
+#line 793 "agent_parser.cc"
break;
case 20:
-#line 162 "agent_parser.yy" // lalr1.cc:919
+#line 162 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 798 "agent_parser.cc" // lalr1.cc:919
+#line 799 "agent_parser.cc"
break;
case 23:
-#line 176 "agent_parser.yy" // lalr1.cc:919
+#line 176 "agent_parser.yy"
{
// map containing a single entry
ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 807 "agent_parser.cc" // lalr1.cc:919
+#line 808 "agent_parser.cc"
break;
case 24:
-#line 180 "agent_parser.yy" // lalr1.cc:919
+#line 180 "agent_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 817 "agent_parser.cc" // lalr1.cc:919
+#line 818 "agent_parser.cc"
break;
case 25:
-#line 187 "agent_parser.yy" // lalr1.cc:919
+#line 187 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 826 "agent_parser.cc" // lalr1.cc:919
+#line 827 "agent_parser.cc"
break;
case 26:
-#line 190 "agent_parser.yy" // lalr1.cc:919
+#line 190 "agent_parser.yy"
{
}
-#line 833 "agent_parser.cc" // lalr1.cc:919
+#line 834 "agent_parser.cc"
break;
case 29:
-#line 197 "agent_parser.yy" // lalr1.cc:919
+#line 197 "agent_parser.yy"
{
// List consisting of a single element.
ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 842 "agent_parser.cc" // lalr1.cc:919
+#line 843 "agent_parser.cc"
break;
case 30:
-#line 201 "agent_parser.yy" // lalr1.cc:919
+#line 201 "agent_parser.yy"
{
// List ending with , and a value.
ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 851 "agent_parser.cc" // lalr1.cc:919
+#line 852 "agent_parser.cc"
break;
case 31:
-#line 214 "agent_parser.yy" // lalr1.cc:919
+#line 214 "agent_parser.yy"
{
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 862 "agent_parser.cc" // lalr1.cc:919
+#line 863 "agent_parser.cc"
break;
case 32:
-#line 223 "agent_parser.yy" // lalr1.cc:919
+#line 223 "agent_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 873 "agent_parser.cc" // lalr1.cc:919
+#line 874 "agent_parser.cc"
break;
case 33:
-#line 228 "agent_parser.yy" // lalr1.cc:919
+#line 228 "agent_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 883 "agent_parser.cc" // lalr1.cc:919
+#line 884 "agent_parser.cc"
break;
case 42:
-#line 249 "agent_parser.yy" // lalr1.cc:919
+#line 249 "agent_parser.yy"
{
// Let's create a MapElement that will represent it, add it to the
ctx.stack_.push_back(m);
ctx.enter(ctx.AGENT);
}
-#line 899 "agent_parser.cc" // lalr1.cc:919
+#line 900 "agent_parser.cc"
break;
case 43:
-#line 259 "agent_parser.yy" // lalr1.cc:919
+#line 259 "agent_parser.yy"
{
// Ok, we're done with parsing control-agent. Let's take the map
// off the stack.
ctx.stack_.pop_back();
ctx.leave();
}
-#line 910 "agent_parser.cc" // lalr1.cc:919
+#line 911 "agent_parser.cc"
break;
case 54:
-#line 282 "agent_parser.yy" // lalr1.cc:919
+#line 282 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 918 "agent_parser.cc" // lalr1.cc:919
+#line 919 "agent_parser.cc"
break;
case 55:
-#line 284 "agent_parser.yy" // lalr1.cc:919
+#line 284 "agent_parser.yy"
{
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 928 "agent_parser.cc" // lalr1.cc:919
+#line 929 "agent_parser.cc"
break;
case 56:
-#line 290 "agent_parser.yy" // lalr1.cc:919
+#line 290 "agent_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("http-port", prf);
}
-#line 937 "agent_parser.cc" // lalr1.cc:919
+#line 938 "agent_parser.cc"
break;
case 57:
-#line 295 "agent_parser.yy" // lalr1.cc:919
+#line 295 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 945 "agent_parser.cc" // lalr1.cc:919
+#line 946 "agent_parser.cc"
break;
case 58:
-#line 297 "agent_parser.yy" // lalr1.cc:919
+#line 297 "agent_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
parent->set("user-context", user_context);
ctx.leave();
}
-#line 972 "agent_parser.cc" // lalr1.cc:919
+#line 973 "agent_parser.cc"
break;
case 59:
-#line 320 "agent_parser.yy" // lalr1.cc:919
+#line 320 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 980 "agent_parser.cc" // lalr1.cc:919
+#line 981 "agent_parser.cc"
break;
case 60:
-#line 322 "agent_parser.yy" // lalr1.cc:919
+#line 322 "agent_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
parent->set("user-context", user_context);
ctx.leave();
}
-#line 1009 "agent_parser.cc" // lalr1.cc:919
+#line 1010 "agent_parser.cc"
break;
case 61:
-#line 348 "agent_parser.yy" // lalr1.cc:919
+#line 348 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 1020 "agent_parser.cc" // lalr1.cc:919
+#line 1021 "agent_parser.cc"
break;
case 62:
-#line 353 "agent_parser.yy" // lalr1.cc:919
+#line 353 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1029 "agent_parser.cc" // lalr1.cc:919
+#line 1030 "agent_parser.cc"
break;
case 67:
-#line 366 "agent_parser.yy" // lalr1.cc:919
+#line 366 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1039 "agent_parser.cc" // lalr1.cc:919
+#line 1040 "agent_parser.cc"
break;
case 68:
-#line 370 "agent_parser.yy" // lalr1.cc:919
+#line 370 "agent_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1047 "agent_parser.cc" // lalr1.cc:919
+#line 1048 "agent_parser.cc"
break;
case 74:
-#line 383 "agent_parser.yy" // lalr1.cc:919
+#line 383 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1055 "agent_parser.cc" // lalr1.cc:919
+#line 1056 "agent_parser.cc"
break;
case 75:
-#line 385 "agent_parser.yy" // lalr1.cc:919
+#line 385 "agent_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1065 "agent_parser.cc" // lalr1.cc:919
+#line 1066 "agent_parser.cc"
break;
case 76:
-#line 391 "agent_parser.yy" // lalr1.cc:919
+#line 391 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1073 "agent_parser.cc" // lalr1.cc:919
+#line 1074 "agent_parser.cc"
break;
case 77:
-#line 393 "agent_parser.yy" // lalr1.cc:919
+#line 393 "agent_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1082 "agent_parser.cc" // lalr1.cc:919
+#line 1083 "agent_parser.cc"
break;
case 78:
-#line 401 "agent_parser.yy" // lalr1.cc:919
+#line 401 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
ctx.stack_.back()->set("control-sockets", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKETS);
}
-#line 1093 "agent_parser.cc" // lalr1.cc:919
+#line 1094 "agent_parser.cc"
break;
case 79:
-#line 406 "agent_parser.yy" // lalr1.cc:919
+#line 406 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1102 "agent_parser.cc" // lalr1.cc:919
+#line 1103 "agent_parser.cc"
break;
case 86:
-#line 427 "agent_parser.yy" // lalr1.cc:919
+#line 427 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1113 "agent_parser.cc" // lalr1.cc:919
+#line 1114 "agent_parser.cc"
break;
case 87:
-#line 432 "agent_parser.yy" // lalr1.cc:919
+#line 432 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1122 "agent_parser.cc" // lalr1.cc:919
+#line 1123 "agent_parser.cc"
break;
case 88:
-#line 438 "agent_parser.yy" // lalr1.cc:919
+#line 438 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp6", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1133 "agent_parser.cc" // lalr1.cc:919
+#line 1134 "agent_parser.cc"
break;
case 89:
-#line 443 "agent_parser.yy" // lalr1.cc:919
+#line 443 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1142 "agent_parser.cc" // lalr1.cc:919
+#line 1143 "agent_parser.cc"
break;
case 90:
-#line 449 "agent_parser.yy" // lalr1.cc:919
+#line 449 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("d2", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1153 "agent_parser.cc" // lalr1.cc:919
+#line 1154 "agent_parser.cc"
break;
case 91:
-#line 454 "agent_parser.yy" // lalr1.cc:919
+#line 454 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1162 "agent_parser.cc" // lalr1.cc:919
+#line 1163 "agent_parser.cc"
break;
case 99:
-#line 473 "agent_parser.yy" // lalr1.cc:919
+#line 473 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1170 "agent_parser.cc" // lalr1.cc:919
+#line 1171 "agent_parser.cc"
break;
case 100:
-#line 475 "agent_parser.yy" // lalr1.cc:919
+#line 475 "agent_parser.yy"
{
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 1180 "agent_parser.cc" // lalr1.cc:919
+#line 1181 "agent_parser.cc"
break;
case 101:
-#line 482 "agent_parser.yy" // lalr1.cc:919
+#line 482 "agent_parser.yy"
{
ctx.enter(ctx.SOCKET_TYPE);
}
-#line 1188 "agent_parser.cc" // lalr1.cc:919
+#line 1189 "agent_parser.cc"
break;
case 102:
-#line 484 "agent_parser.yy" // lalr1.cc:919
+#line 484 "agent_parser.yy"
{
ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1197 "agent_parser.cc" // lalr1.cc:919
+#line 1198 "agent_parser.cc"
break;
case 103:
-#line 490 "agent_parser.yy" // lalr1.cc:919
+#line 490 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1203 "agent_parser.cc" // lalr1.cc:919
+#line 1204 "agent_parser.cc"
break;
case 104:
-#line 496 "agent_parser.yy" // lalr1.cc:919
+#line 496 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1211 "agent_parser.cc" // lalr1.cc:919
+#line 1212 "agent_parser.cc"
break;
case 105:
-#line 498 "agent_parser.yy" // lalr1.cc:919
+#line 498 "agent_parser.yy"
{
ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1220 "agent_parser.cc" // lalr1.cc:919
+#line 1221 "agent_parser.cc"
break;
case 106:
-#line 503 "agent_parser.yy" // lalr1.cc:919
+#line 503 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1228 "agent_parser.cc" // lalr1.cc:919
+#line 1229 "agent_parser.cc"
break;
case 107:
-#line 505 "agent_parser.yy" // lalr1.cc:919
+#line 505 "agent_parser.yy"
{
ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1237 "agent_parser.cc" // lalr1.cc:919
+#line 1238 "agent_parser.cc"
break;
case 108:
-#line 510 "agent_parser.yy" // lalr1.cc:919
+#line 510 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1245 "agent_parser.cc" // lalr1.cc:919
+#line 1246 "agent_parser.cc"
break;
case 109:
-#line 512 "agent_parser.yy" // lalr1.cc:919
+#line 512 "agent_parser.yy"
{
ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1254 "agent_parser.cc" // lalr1.cc:919
+#line 1255 "agent_parser.cc"
break;
case 110:
-#line 522 "agent_parser.yy" // lalr1.cc:919
+#line 522 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 1265 "agent_parser.cc" // lalr1.cc:919
+#line 1266 "agent_parser.cc"
break;
case 111:
-#line 527 "agent_parser.yy" // lalr1.cc:919
+#line 527 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1274 "agent_parser.cc" // lalr1.cc:919
+#line 1275 "agent_parser.cc"
break;
case 115:
-#line 544 "agent_parser.yy" // lalr1.cc:919
+#line 544 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 1285 "agent_parser.cc" // lalr1.cc:919
+#line 1286 "agent_parser.cc"
break;
case 116:
-#line 549 "agent_parser.yy" // lalr1.cc:919
+#line 549 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1294 "agent_parser.cc" // lalr1.cc:919
+#line 1295 "agent_parser.cc"
break;
case 119:
-#line 561 "agent_parser.yy" // lalr1.cc:919
+#line 561 "agent_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 1304 "agent_parser.cc" // lalr1.cc:919
+#line 1305 "agent_parser.cc"
break;
case 120:
-#line 565 "agent_parser.yy" // lalr1.cc:919
+#line 565 "agent_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1312 "agent_parser.cc" // lalr1.cc:919
+#line 1313 "agent_parser.cc"
break;
case 130:
-#line 582 "agent_parser.yy" // lalr1.cc:919
+#line 582 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1320 "agent_parser.cc" // lalr1.cc:919
+#line 1321 "agent_parser.cc"
break;
case 131:
-#line 584 "agent_parser.yy" // lalr1.cc:919
+#line 584 "agent_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1330 "agent_parser.cc" // lalr1.cc:919
+#line 1331 "agent_parser.cc"
break;
case 132:
-#line 590 "agent_parser.yy" // lalr1.cc:919
+#line 590 "agent_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 1339 "agent_parser.cc" // lalr1.cc:919
+#line 1340 "agent_parser.cc"
break;
case 133:
-#line 595 "agent_parser.yy" // lalr1.cc:919
+#line 595 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1347 "agent_parser.cc" // lalr1.cc:919
+#line 1348 "agent_parser.cc"
break;
case 134:
-#line 597 "agent_parser.yy" // lalr1.cc:919
+#line 597 "agent_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 1357 "agent_parser.cc" // lalr1.cc:919
+#line 1358 "agent_parser.cc"
break;
case 135:
-#line 603 "agent_parser.yy" // lalr1.cc:919
+#line 603 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 1368 "agent_parser.cc" // lalr1.cc:919
+#line 1369 "agent_parser.cc"
break;
case 136:
-#line 608 "agent_parser.yy" // lalr1.cc:919
+#line 608 "agent_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1377 "agent_parser.cc" // lalr1.cc:919
+#line 1378 "agent_parser.cc"
break;
case 139:
-#line 617 "agent_parser.yy" // lalr1.cc:919
+#line 617 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1387 "agent_parser.cc" // lalr1.cc:919
+#line 1388 "agent_parser.cc"
break;
case 140:
-#line 621 "agent_parser.yy" // lalr1.cc:919
+#line 621 "agent_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1395 "agent_parser.cc" // lalr1.cc:919
+#line 1396 "agent_parser.cc"
break;
case 147:
-#line 635 "agent_parser.yy" // lalr1.cc:919
+#line 635 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1403 "agent_parser.cc" // lalr1.cc:919
+#line 1404 "agent_parser.cc"
break;
case 148:
-#line 637 "agent_parser.yy" // lalr1.cc:919
+#line 637 "agent_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 1413 "agent_parser.cc" // lalr1.cc:919
+#line 1414 "agent_parser.cc"
break;
case 149:
-#line 643 "agent_parser.yy" // lalr1.cc:919
+#line 643 "agent_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 1422 "agent_parser.cc" // lalr1.cc:919
+#line 1423 "agent_parser.cc"
break;
case 150:
-#line 648 "agent_parser.yy" // lalr1.cc:919
+#line 648 "agent_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 1431 "agent_parser.cc" // lalr1.cc:919
+#line 1432 "agent_parser.cc"
break;
case 151:
-#line 653 "agent_parser.yy" // lalr1.cc:919
+#line 653 "agent_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 1440 "agent_parser.cc" // lalr1.cc:919
+#line 1441 "agent_parser.cc"
break;
-#line 1444 "agent_parser.cc" // lalr1.cc:919
+#line 1445 "agent_parser.cc"
+
default:
break;
}
#endif // AGENT_DEBUG
-#line 14 "agent_parser.yy" // lalr1.cc:1242
+#line 14 "agent_parser.yy"
} } // isc::agent
-#line 2025 "agent_parser.cc" // lalr1.cc:1242
-#line 658 "agent_parser.yy" // lalr1.cc:1243
+#line 2027 "agent_parser.cc"
+
+#line 658 "agent_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
#ifndef YY_AGENT_AGENT_PARSER_H_INCLUDED
# define YY_AGENT_AGENT_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "agent_parser.yy" // lalr1.cc:401
+#line 17 "agent_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 59 "agent_parser.h" // lalr1.cc:401
+#line 59 "agent_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# endif /* ! defined YYDEBUG */
#endif /* ! defined AGENT_DEBUG */
-#line 14 "agent_parser.yy" // lalr1.cc:401
+#line 14 "agent_parser.yy"
namespace isc { namespace agent {
-#line 183 "agent_parser.h" // lalr1.cc:401
+#line 183 "agent_parser.h"
+
return token_type (yytoken_number_[type]);
}
-#line 14 "agent_parser.yy" // lalr1.cc:401
+#line 14 "agent_parser.yy"
} } // isc::agent
-#line 2036 "agent_parser.h" // lalr1.cc:401
+#line 2037 "agent_parser.h"
+
-// Generated 201905221354
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
# endif
# endif
-#line 14 "agent_parser.yy" // location.cc:339
+#line 14 "agent_parser.yy"
namespace isc { namespace agent {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "agent_parser.yy" // location.cc:339
+#line 14 "agent_parser.yy"
} } // isc::agent
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_AGENT_LOCATION_HH_INCLUDED
-// Generated 201905221354
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 201905221354
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
// Unqualified %code blocks.
-#line 34 "d2_parser.yy" // lalr1.cc:435
+#line 34 "d2_parser.yy"
#include <d2/parser_context.h>
-#line 51 "d2_parser.cc" // lalr1.cc:435
+#line 51 "d2_parser.cc"
#ifndef YY_
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "d2_parser.yy" // lalr1.cc:510
+#line 14 "d2_parser.yy"
namespace isc { namespace d2 {
-#line 146 "d2_parser.cc" // lalr1.cc:510
+#line 146 "d2_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
switch (yytype)
{
case 56: // "constant string"
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 392 "d2_parser.cc" // lalr1.cc:676
+#line 393 "d2_parser.cc"
break;
case 57: // "integer"
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
-#line 398 "d2_parser.cc" // lalr1.cc:676
+#line 399 "d2_parser.cc"
break;
case 58: // "floating point"
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
-#line 404 "d2_parser.cc" // lalr1.cc:676
+#line 405 "d2_parser.cc"
break;
case 59: // "boolean"
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
-#line 410 "d2_parser.cc" // lalr1.cc:676
+#line 411 "d2_parser.cc"
break;
case 71: // value
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 416 "d2_parser.cc" // lalr1.cc:676
+#line 417 "d2_parser.cc"
break;
case 75: // map_value
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 422 "d2_parser.cc" // lalr1.cc:676
+#line 423 "d2_parser.cc"
break;
case 99: // ncr_protocol_value
-#line 115 "d2_parser.yy" // lalr1.cc:676
+#line 115 "d2_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 428 "d2_parser.cc" // lalr1.cc:676
+#line 429 "d2_parser.cc"
break;
default:
switch (yyn)
{
case 2:
-#line 124 "d2_parser.yy" // lalr1.cc:919
+#line 124 "d2_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 690 "d2_parser.cc" // lalr1.cc:919
+#line 691 "d2_parser.cc"
break;
case 4:
-#line 125 "d2_parser.yy" // lalr1.cc:919
+#line 125 "d2_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 696 "d2_parser.cc" // lalr1.cc:919
+#line 697 "d2_parser.cc"
break;
case 6:
-#line 126 "d2_parser.yy" // lalr1.cc:919
+#line 126 "d2_parser.yy"
{ ctx.ctx_ = ctx.DHCPDDNS; }
-#line 702 "d2_parser.cc" // lalr1.cc:919
+#line 703 "d2_parser.cc"
break;
case 8:
-#line 127 "d2_parser.yy" // lalr1.cc:919
+#line 127 "d2_parser.yy"
{ ctx.ctx_ = ctx.TSIG_KEY; }
-#line 708 "d2_parser.cc" // lalr1.cc:919
+#line 709 "d2_parser.cc"
break;
case 10:
-#line 128 "d2_parser.yy" // lalr1.cc:919
+#line 128 "d2_parser.yy"
{ ctx.ctx_ = ctx.TSIG_KEYS; }
-#line 714 "d2_parser.cc" // lalr1.cc:919
+#line 715 "d2_parser.cc"
break;
case 12:
-#line 129 "d2_parser.yy" // lalr1.cc:919
+#line 129 "d2_parser.yy"
{ ctx.ctx_ = ctx.DDNS_DOMAIN; }
-#line 720 "d2_parser.cc" // lalr1.cc:919
+#line 721 "d2_parser.cc"
break;
case 14:
-#line 130 "d2_parser.yy" // lalr1.cc:919
+#line 130 "d2_parser.yy"
{ ctx.ctx_ = ctx.DDNS_DOMAINS; }
-#line 726 "d2_parser.cc" // lalr1.cc:919
+#line 727 "d2_parser.cc"
break;
case 16:
-#line 131 "d2_parser.yy" // lalr1.cc:919
+#line 131 "d2_parser.yy"
{ ctx.ctx_ = ctx.DNS_SERVERS; }
-#line 732 "d2_parser.cc" // lalr1.cc:919
+#line 733 "d2_parser.cc"
break;
case 18:
-#line 132 "d2_parser.yy" // lalr1.cc:919
+#line 132 "d2_parser.yy"
{ ctx.ctx_ = ctx.DNS_SERVERS; }
-#line 738 "d2_parser.cc" // lalr1.cc:919
+#line 739 "d2_parser.cc"
break;
case 20:
-#line 140 "d2_parser.yy" // lalr1.cc:919
+#line 140 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 744 "d2_parser.cc" // lalr1.cc:919
+#line 745 "d2_parser.cc"
break;
case 21:
-#line 141 "d2_parser.yy" // lalr1.cc:919
+#line 141 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 750 "d2_parser.cc" // lalr1.cc:919
+#line 751 "d2_parser.cc"
break;
case 22:
-#line 142 "d2_parser.yy" // lalr1.cc:919
+#line 142 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 756 "d2_parser.cc" // lalr1.cc:919
+#line 757 "d2_parser.cc"
break;
case 23:
-#line 143 "d2_parser.yy" // lalr1.cc:919
+#line 143 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 762 "d2_parser.cc" // lalr1.cc:919
+#line 763 "d2_parser.cc"
break;
case 24:
-#line 144 "d2_parser.yy" // lalr1.cc:919
+#line 144 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 768 "d2_parser.cc" // lalr1.cc:919
+#line 769 "d2_parser.cc"
break;
case 25:
-#line 145 "d2_parser.yy" // lalr1.cc:919
+#line 145 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 774 "d2_parser.cc" // lalr1.cc:919
+#line 775 "d2_parser.cc"
break;
case 26:
-#line 146 "d2_parser.yy" // lalr1.cc:919
+#line 146 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 780 "d2_parser.cc" // lalr1.cc:919
+#line 781 "d2_parser.cc"
break;
case 27:
-#line 149 "d2_parser.yy" // lalr1.cc:919
+#line 149 "d2_parser.yy"
{
// Push back the JSON value on the stack
ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 789 "d2_parser.cc" // lalr1.cc:919
+#line 790 "d2_parser.cc"
break;
case 28:
-#line 154 "d2_parser.yy" // lalr1.cc:919
+#line 154 "d2_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 800 "d2_parser.cc" // lalr1.cc:919
+#line 801 "d2_parser.cc"
break;
case 29:
-#line 159 "d2_parser.yy" // lalr1.cc:919
+#line 159 "d2_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 810 "d2_parser.cc" // lalr1.cc:919
+#line 811 "d2_parser.cc"
break;
case 30:
-#line 165 "d2_parser.yy" // lalr1.cc:919
+#line 165 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 816 "d2_parser.cc" // lalr1.cc:919
+#line 817 "d2_parser.cc"
break;
case 33:
-#line 172 "d2_parser.yy" // lalr1.cc:919
+#line 172 "d2_parser.yy"
{
// map containing a single entry
ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 825 "d2_parser.cc" // lalr1.cc:919
+#line 826 "d2_parser.cc"
break;
case 34:
-#line 176 "d2_parser.yy" // lalr1.cc:919
+#line 176 "d2_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 835 "d2_parser.cc" // lalr1.cc:919
+#line 836 "d2_parser.cc"
break;
case 35:
-#line 183 "d2_parser.yy" // lalr1.cc:919
+#line 183 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 844 "d2_parser.cc" // lalr1.cc:919
+#line 845 "d2_parser.cc"
break;
case 36:
-#line 186 "d2_parser.yy" // lalr1.cc:919
+#line 186 "d2_parser.yy"
{
// list parsing complete. Put any sanity checking here
}
-#line 852 "d2_parser.cc" // lalr1.cc:919
+#line 853 "d2_parser.cc"
break;
case 39:
-#line 194 "d2_parser.yy" // lalr1.cc:919
+#line 194 "d2_parser.yy"
{
// List consisting of a single element.
ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 861 "d2_parser.cc" // lalr1.cc:919
+#line 862 "d2_parser.cc"
break;
case 40:
-#line 198 "d2_parser.yy" // lalr1.cc:919
+#line 198 "d2_parser.yy"
{
// List ending with , and a value.
ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 870 "d2_parser.cc" // lalr1.cc:919
+#line 871 "d2_parser.cc"
break;
case 41:
-#line 209 "d2_parser.yy" // lalr1.cc:919
+#line 209 "d2_parser.yy"
{
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 881 "d2_parser.cc" // lalr1.cc:919
+#line 882 "d2_parser.cc"
break;
case 42:
-#line 219 "d2_parser.yy" // lalr1.cc:919
+#line 219 "d2_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 892 "d2_parser.cc" // lalr1.cc:919
+#line 893 "d2_parser.cc"
break;
case 43:
-#line 224 "d2_parser.yy" // lalr1.cc:919
+#line 224 "d2_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 902 "d2_parser.cc" // lalr1.cc:919
+#line 903 "d2_parser.cc"
break;
case 52:
-#line 246 "d2_parser.yy" // lalr1.cc:919
+#line 246 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("DhcpDdns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCPDDNS);
}
-#line 913 "d2_parser.cc" // lalr1.cc:919
+#line 914 "d2_parser.cc"
break;
case 53:
-#line 251 "d2_parser.yy" // lalr1.cc:919
+#line 251 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 922 "d2_parser.cc" // lalr1.cc:919
+#line 923 "d2_parser.cc"
break;
case 54:
-#line 256 "d2_parser.yy" // lalr1.cc:919
+#line 256 "d2_parser.yy"
{
// Parse the dhcpddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 932 "d2_parser.cc" // lalr1.cc:919
+#line 933 "d2_parser.cc"
break;
case 55:
-#line 260 "d2_parser.yy" // lalr1.cc:919
+#line 260 "d2_parser.yy"
{
// parsing completed
}
-#line 940 "d2_parser.cc" // lalr1.cc:919
+#line 941 "d2_parser.cc"
break;
case 71:
-#line 284 "d2_parser.yy" // lalr1.cc:919
+#line 284 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 948 "d2_parser.cc" // lalr1.cc:919
+#line 949 "d2_parser.cc"
break;
case 72:
-#line 286 "d2_parser.yy" // lalr1.cc:919
+#line 286 "d2_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", s);
ctx.leave();
}
-#line 958 "d2_parser.cc" // lalr1.cc:919
+#line 959 "d2_parser.cc"
break;
case 73:
-#line 292 "d2_parser.yy" // lalr1.cc:919
+#line 292 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
error(yystack_[0].location, "port must be greater than zero but less than 65536");
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", i);
}
-#line 970 "d2_parser.cc" // lalr1.cc:919
+#line 971 "d2_parser.cc"
break;
case 74:
-#line 300 "d2_parser.yy" // lalr1.cc:919
+#line 300 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () <= 0) {
error(yystack_[0].location, "dns-server-timeout must be greater than zero");
ctx.stack_.back()->set("dns-server-timeout", i);
}
}
-#line 983 "d2_parser.cc" // lalr1.cc:919
+#line 984 "d2_parser.cc"
break;
case 75:
-#line 309 "d2_parser.yy" // lalr1.cc:919
+#line 309 "d2_parser.yy"
{
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 991 "d2_parser.cc" // lalr1.cc:919
+#line 992 "d2_parser.cc"
break;
case 76:
-#line 311 "d2_parser.yy" // lalr1.cc:919
+#line 311 "d2_parser.yy"
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1000 "d2_parser.cc" // lalr1.cc:919
+#line 1001 "d2_parser.cc"
break;
case 77:
-#line 317 "d2_parser.yy" // lalr1.cc:919
+#line 317 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 1006 "d2_parser.cc" // lalr1.cc:919
+#line 1007 "d2_parser.cc"
break;
case 78:
-#line 318 "d2_parser.yy" // lalr1.cc:919
+#line 318 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 1012 "d2_parser.cc" // lalr1.cc:919
+#line 1013 "d2_parser.cc"
break;
case 79:
-#line 321 "d2_parser.yy" // lalr1.cc:919
+#line 321 "d2_parser.yy"
{
ctx.enter(ctx.NCR_FORMAT);
}
-#line 1020 "d2_parser.cc" // lalr1.cc:919
+#line 1021 "d2_parser.cc"
break;
case 80:
-#line 323 "d2_parser.yy" // lalr1.cc:919
+#line 323 "d2_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 1030 "d2_parser.cc" // lalr1.cc:919
+#line 1031 "d2_parser.cc"
break;
case 81:
-#line 329 "d2_parser.yy" // lalr1.cc:919
+#line 329 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1038 "d2_parser.cc" // lalr1.cc:919
+#line 1039 "d2_parser.cc"
break;
case 82:
-#line 331 "d2_parser.yy" // lalr1.cc:919
+#line 331 "d2_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
parent->set("user-context", user_context);
ctx.leave();
}
-#line 1065 "d2_parser.cc" // lalr1.cc:919
+#line 1066 "d2_parser.cc"
break;
case 83:
-#line 354 "d2_parser.yy" // lalr1.cc:919
+#line 354 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1073 "d2_parser.cc" // lalr1.cc:919
+#line 1074 "d2_parser.cc"
break;
case 84:
-#line 356 "d2_parser.yy" // lalr1.cc:919
+#line 356 "d2_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
parent->set("user-context", user_context);
ctx.leave();
}
-#line 1102 "d2_parser.cc" // lalr1.cc:919
+#line 1103 "d2_parser.cc"
break;
case 85:
-#line 381 "d2_parser.yy" // lalr1.cc:919
+#line 381 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("forward-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.FORWARD_DDNS);
}
-#line 1113 "d2_parser.cc" // lalr1.cc:919
+#line 1114 "d2_parser.cc"
break;
case 86:
-#line 386 "d2_parser.yy" // lalr1.cc:919
+#line 386 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1122 "d2_parser.cc" // lalr1.cc:919
+#line 1123 "d2_parser.cc"
break;
case 87:
-#line 391 "d2_parser.yy" // lalr1.cc:919
+#line 391 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reverse-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.REVERSE_DDNS);
}
-#line 1133 "d2_parser.cc" // lalr1.cc:919
+#line 1134 "d2_parser.cc"
break;
case 88:
-#line 396 "d2_parser.yy" // lalr1.cc:919
+#line 396 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1142 "d2_parser.cc" // lalr1.cc:919
+#line 1143 "d2_parser.cc"
break;
case 95:
-#line 415 "d2_parser.yy" // lalr1.cc:919
+#line 415 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-domains", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.DDNS_DOMAINS);
}
-#line 1153 "d2_parser.cc" // lalr1.cc:919
+#line 1154 "d2_parser.cc"
break;
case 96:
-#line 420 "d2_parser.yy" // lalr1.cc:919
+#line 420 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1162 "d2_parser.cc" // lalr1.cc:919
+#line 1163 "d2_parser.cc"
break;
case 97:
-#line 425 "d2_parser.yy" // lalr1.cc:919
+#line 425 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 1171 "d2_parser.cc" // lalr1.cc:919
+#line 1172 "d2_parser.cc"
break;
case 98:
-#line 428 "d2_parser.yy" // lalr1.cc:919
+#line 428 "d2_parser.yy"
{
// parsing completed
}
-#line 1179 "d2_parser.cc" // lalr1.cc:919
+#line 1180 "d2_parser.cc"
break;
case 103:
-#line 440 "d2_parser.yy" // lalr1.cc:919
+#line 440 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1189 "d2_parser.cc" // lalr1.cc:919
+#line 1190 "d2_parser.cc"
break;
case 104:
-#line 444 "d2_parser.yy" // lalr1.cc:919
+#line 444 "d2_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1197 "d2_parser.cc" // lalr1.cc:919
+#line 1198 "d2_parser.cc"
break;
case 105:
-#line 448 "d2_parser.yy" // lalr1.cc:919
+#line 448 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1206 "d2_parser.cc" // lalr1.cc:919
+#line 1207 "d2_parser.cc"
break;
case 106:
-#line 451 "d2_parser.yy" // lalr1.cc:919
+#line 451 "d2_parser.yy"
{
// parsing completed
}
-#line 1214 "d2_parser.cc" // lalr1.cc:919
+#line 1215 "d2_parser.cc"
break;
case 115:
-#line 468 "d2_parser.yy" // lalr1.cc:919
+#line 468 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1222 "d2_parser.cc" // lalr1.cc:919
+#line 1223 "d2_parser.cc"
break;
case 116:
-#line 470 "d2_parser.yy" // lalr1.cc:919
+#line 470 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
error(yystack_[1].location, "Ddns domain name cannot be blank");
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1236 "d2_parser.cc" // lalr1.cc:919
+#line 1237 "d2_parser.cc"
break;
case 117:
-#line 480 "d2_parser.yy" // lalr1.cc:919
+#line 480 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1244 "d2_parser.cc" // lalr1.cc:919
+#line 1245 "d2_parser.cc"
break;
case 118:
-#line 482 "d2_parser.yy" // lalr1.cc:919
+#line 482 "d2_parser.yy"
{
ElementPtr elem(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("key-name", name);
ctx.leave();
}
-#line 1255 "d2_parser.cc" // lalr1.cc:919
+#line 1256 "d2_parser.cc"
break;
case 119:
-#line 492 "d2_parser.yy" // lalr1.cc:919
+#line 492 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dns-servers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.DNS_SERVERS);
}
-#line 1266 "d2_parser.cc" // lalr1.cc:919
+#line 1267 "d2_parser.cc"
break;
case 120:
-#line 497 "d2_parser.yy" // lalr1.cc:919
+#line 497 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1275 "d2_parser.cc" // lalr1.cc:919
+#line 1276 "d2_parser.cc"
break;
case 121:
-#line 502 "d2_parser.yy" // lalr1.cc:919
+#line 502 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 1284 "d2_parser.cc" // lalr1.cc:919
+#line 1285 "d2_parser.cc"
break;
case 122:
-#line 505 "d2_parser.yy" // lalr1.cc:919
+#line 505 "d2_parser.yy"
{
// parsing completed
}
-#line 1292 "d2_parser.cc" // lalr1.cc:919
+#line 1293 "d2_parser.cc"
break;
case 125:
-#line 513 "d2_parser.yy" // lalr1.cc:919
+#line 513 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1302 "d2_parser.cc" // lalr1.cc:919
+#line 1303 "d2_parser.cc"
break;
case 126:
-#line 517 "d2_parser.yy" // lalr1.cc:919
+#line 517 "d2_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1310 "d2_parser.cc" // lalr1.cc:919
+#line 1311 "d2_parser.cc"
break;
case 127:
-#line 521 "d2_parser.yy" // lalr1.cc:919
+#line 521 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1319 "d2_parser.cc" // lalr1.cc:919
+#line 1320 "d2_parser.cc"
break;
case 128:
-#line 524 "d2_parser.yy" // lalr1.cc:919
+#line 524 "d2_parser.yy"
{
// parsing completed
}
-#line 1327 "d2_parser.cc" // lalr1.cc:919
+#line 1328 "d2_parser.cc"
break;
case 137:
-#line 540 "d2_parser.yy" // lalr1.cc:919
+#line 540 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1335 "d2_parser.cc" // lalr1.cc:919
+#line 1336 "d2_parser.cc"
break;
case 138:
-#line 542 "d2_parser.yy" // lalr1.cc:919
+#line 542 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () != "") {
error(yystack_[1].location, "hostname is not yet supported");
ctx.stack_.back()->set("hostname", name);
ctx.leave();
}
-#line 1349 "d2_parser.cc" // lalr1.cc:919
+#line 1350 "d2_parser.cc"
break;
case 139:
-#line 552 "d2_parser.yy" // lalr1.cc:919
+#line 552 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1357 "d2_parser.cc" // lalr1.cc:919
+#line 1358 "d2_parser.cc"
break;
case 140:
-#line 554 "d2_parser.yy" // lalr1.cc:919
+#line 554 "d2_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", s);
ctx.leave();
}
-#line 1367 "d2_parser.cc" // lalr1.cc:919
+#line 1368 "d2_parser.cc"
break;
case 141:
-#line 560 "d2_parser.yy" // lalr1.cc:919
+#line 560 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
error(yystack_[0].location, "port must be greater than zero but less than 65536");
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", i);
}
-#line 1379 "d2_parser.cc" // lalr1.cc:919
+#line 1380 "d2_parser.cc"
break;
case 142:
-#line 574 "d2_parser.yy" // lalr1.cc:919
+#line 574 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tsig-keys", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.TSIG_KEYS);
}
-#line 1390 "d2_parser.cc" // lalr1.cc:919
+#line 1391 "d2_parser.cc"
break;
case 143:
-#line 579 "d2_parser.yy" // lalr1.cc:919
+#line 579 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1399 "d2_parser.cc" // lalr1.cc:919
+#line 1400 "d2_parser.cc"
break;
case 144:
-#line 584 "d2_parser.yy" // lalr1.cc:919
+#line 584 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 1408 "d2_parser.cc" // lalr1.cc:919
+#line 1409 "d2_parser.cc"
break;
case 145:
-#line 587 "d2_parser.yy" // lalr1.cc:919
+#line 587 "d2_parser.yy"
{
// parsing completed
}
-#line 1416 "d2_parser.cc" // lalr1.cc:919
+#line 1417 "d2_parser.cc"
break;
case 150:
-#line 599 "d2_parser.yy" // lalr1.cc:919
+#line 599 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1426 "d2_parser.cc" // lalr1.cc:919
+#line 1427 "d2_parser.cc"
break;
case 151:
-#line 603 "d2_parser.yy" // lalr1.cc:919
+#line 603 "d2_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1434 "d2_parser.cc" // lalr1.cc:919
+#line 1435 "d2_parser.cc"
break;
case 152:
-#line 607 "d2_parser.yy" // lalr1.cc:919
+#line 607 "d2_parser.yy"
{
// Parse tsig key list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1444 "d2_parser.cc" // lalr1.cc:919
+#line 1445 "d2_parser.cc"
break;
case 153:
-#line 611 "d2_parser.yy" // lalr1.cc:919
+#line 611 "d2_parser.yy"
{
// parsing completed
}
-#line 1452 "d2_parser.cc" // lalr1.cc:919
+#line 1453 "d2_parser.cc"
break;
case 163:
-#line 629 "d2_parser.yy" // lalr1.cc:919
+#line 629 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1460 "d2_parser.cc" // lalr1.cc:919
+#line 1461 "d2_parser.cc"
break;
case 164:
-#line 631 "d2_parser.yy" // lalr1.cc:919
+#line 631 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
error(yystack_[1].location, "TSIG key name cannot be blank");
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1474 "d2_parser.cc" // lalr1.cc:919
+#line 1475 "d2_parser.cc"
break;
case 165:
-#line 641 "d2_parser.yy" // lalr1.cc:919
+#line 641 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1482 "d2_parser.cc" // lalr1.cc:919
+#line 1483 "d2_parser.cc"
break;
case 166:
-#line 643 "d2_parser.yy" // lalr1.cc:919
+#line 643 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
error(yystack_[1].location, "TSIG key algorithm cannot be blank");
ctx.stack_.back()->set("algorithm", elem);
ctx.leave();
}
-#line 1495 "d2_parser.cc" // lalr1.cc:919
+#line 1496 "d2_parser.cc"
break;
case 167:
-#line 652 "d2_parser.yy" // lalr1.cc:919
+#line 652 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0 && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
error(yystack_[0].location, "TSIG key digest-bits must either be zero or a positive, multiple of eight");
ElementPtr elem(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("digest-bits", elem);
}
-#line 1507 "d2_parser.cc" // lalr1.cc:919
+#line 1508 "d2_parser.cc"
break;
case 168:
-#line 660 "d2_parser.yy" // lalr1.cc:919
+#line 660 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1515 "d2_parser.cc" // lalr1.cc:919
+#line 1516 "d2_parser.cc"
break;
case 169:
-#line 662 "d2_parser.yy" // lalr1.cc:919
+#line 662 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
error(yystack_[1].location, "TSIG key secret cannot be blank");
ctx.stack_.back()->set("secret", elem);
ctx.leave();
}
-#line 1528 "d2_parser.cc" // lalr1.cc:919
+#line 1529 "d2_parser.cc"
break;
case 170:
-#line 676 "d2_parser.yy" // lalr1.cc:919
+#line 676 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 1539 "d2_parser.cc" // lalr1.cc:919
+#line 1540 "d2_parser.cc"
break;
case 171:
-#line 681 "d2_parser.yy" // lalr1.cc:919
+#line 681 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1548 "d2_parser.cc" // lalr1.cc:919
+#line 1549 "d2_parser.cc"
break;
case 179:
-#line 697 "d2_parser.yy" // lalr1.cc:919
+#line 697 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1556 "d2_parser.cc" // lalr1.cc:919
+#line 1557 "d2_parser.cc"
break;
case 180:
-#line 699 "d2_parser.yy" // lalr1.cc:919
+#line 699 "d2_parser.yy"
{
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 1566 "d2_parser.cc" // lalr1.cc:919
+#line 1567 "d2_parser.cc"
break;
case 181:
-#line 705 "d2_parser.yy" // lalr1.cc:919
+#line 705 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1574 "d2_parser.cc" // lalr1.cc:919
+#line 1575 "d2_parser.cc"
break;
case 182:
-#line 707 "d2_parser.yy" // lalr1.cc:919
+#line 707 "d2_parser.yy"
{
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 1584 "d2_parser.cc" // lalr1.cc:919
+#line 1585 "d2_parser.cc"
break;
case 183:
-#line 715 "d2_parser.yy" // lalr1.cc:919
+#line 715 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1592 "d2_parser.cc" // lalr1.cc:919
+#line 1593 "d2_parser.cc"
break;
case 184:
-#line 717 "d2_parser.yy" // lalr1.cc:919
+#line 717 "d2_parser.yy"
{
ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1601 "d2_parser.cc" // lalr1.cc:919
+#line 1602 "d2_parser.cc"
break;
case 185:
-#line 722 "d2_parser.yy" // lalr1.cc:919
+#line 722 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1609 "d2_parser.cc" // lalr1.cc:919
+#line 1610 "d2_parser.cc"
break;
case 186:
-#line 724 "d2_parser.yy" // lalr1.cc:919
+#line 724 "d2_parser.yy"
{
ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1618 "d2_parser.cc" // lalr1.cc:919
+#line 1619 "d2_parser.cc"
break;
case 187:
-#line 729 "d2_parser.yy" // lalr1.cc:919
+#line 729 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1626 "d2_parser.cc" // lalr1.cc:919
+#line 1627 "d2_parser.cc"
break;
case 188:
-#line 731 "d2_parser.yy" // lalr1.cc:919
+#line 731 "d2_parser.yy"
{
ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1635 "d2_parser.cc" // lalr1.cc:919
+#line 1636 "d2_parser.cc"
break;
case 189:
-#line 741 "d2_parser.yy" // lalr1.cc:919
+#line 741 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 1646 "d2_parser.cc" // lalr1.cc:919
+#line 1647 "d2_parser.cc"
break;
case 190:
-#line 746 "d2_parser.yy" // lalr1.cc:919
+#line 746 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1655 "d2_parser.cc" // lalr1.cc:919
+#line 1656 "d2_parser.cc"
break;
case 194:
-#line 763 "d2_parser.yy" // lalr1.cc:919
+#line 763 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 1666 "d2_parser.cc" // lalr1.cc:919
+#line 1667 "d2_parser.cc"
break;
case 195:
-#line 768 "d2_parser.yy" // lalr1.cc:919
+#line 768 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1675 "d2_parser.cc" // lalr1.cc:919
+#line 1676 "d2_parser.cc"
break;
case 198:
-#line 780 "d2_parser.yy" // lalr1.cc:919
+#line 780 "d2_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 1685 "d2_parser.cc" // lalr1.cc:919
+#line 1686 "d2_parser.cc"
break;
case 199:
-#line 784 "d2_parser.yy" // lalr1.cc:919
+#line 784 "d2_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1693 "d2_parser.cc" // lalr1.cc:919
+#line 1694 "d2_parser.cc"
break;
case 209:
-#line 801 "d2_parser.yy" // lalr1.cc:919
+#line 801 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1701 "d2_parser.cc" // lalr1.cc:919
+#line 1702 "d2_parser.cc"
break;
case 210:
-#line 803 "d2_parser.yy" // lalr1.cc:919
+#line 803 "d2_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1711 "d2_parser.cc" // lalr1.cc:919
+#line 1712 "d2_parser.cc"
break;
case 211:
-#line 809 "d2_parser.yy" // lalr1.cc:919
+#line 809 "d2_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 1720 "d2_parser.cc" // lalr1.cc:919
+#line 1721 "d2_parser.cc"
break;
case 212:
-#line 813 "d2_parser.yy" // lalr1.cc:919
+#line 813 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1728 "d2_parser.cc" // lalr1.cc:919
+#line 1729 "d2_parser.cc"
break;
case 213:
-#line 815 "d2_parser.yy" // lalr1.cc:919
+#line 815 "d2_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 1738 "d2_parser.cc" // lalr1.cc:919
+#line 1739 "d2_parser.cc"
break;
case 214:
-#line 821 "d2_parser.yy" // lalr1.cc:919
+#line 821 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 1749 "d2_parser.cc" // lalr1.cc:919
+#line 1750 "d2_parser.cc"
break;
case 215:
-#line 826 "d2_parser.yy" // lalr1.cc:919
+#line 826 "d2_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1758 "d2_parser.cc" // lalr1.cc:919
+#line 1759 "d2_parser.cc"
break;
case 218:
-#line 835 "d2_parser.yy" // lalr1.cc:919
+#line 835 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1768 "d2_parser.cc" // lalr1.cc:919
+#line 1769 "d2_parser.cc"
break;
case 219:
-#line 839 "d2_parser.yy" // lalr1.cc:919
+#line 839 "d2_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1776 "d2_parser.cc" // lalr1.cc:919
+#line 1777 "d2_parser.cc"
break;
case 226:
-#line 853 "d2_parser.yy" // lalr1.cc:919
+#line 853 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1784 "d2_parser.cc" // lalr1.cc:919
+#line 1785 "d2_parser.cc"
break;
case 227:
-#line 855 "d2_parser.yy" // lalr1.cc:919
+#line 855 "d2_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 1794 "d2_parser.cc" // lalr1.cc:919
+#line 1795 "d2_parser.cc"
break;
case 228:
-#line 861 "d2_parser.yy" // lalr1.cc:919
+#line 861 "d2_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 1803 "d2_parser.cc" // lalr1.cc:919
+#line 1804 "d2_parser.cc"
break;
case 229:
-#line 866 "d2_parser.yy" // lalr1.cc:919
+#line 866 "d2_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 1812 "d2_parser.cc" // lalr1.cc:919
+#line 1813 "d2_parser.cc"
break;
case 230:
-#line 871 "d2_parser.yy" // lalr1.cc:919
+#line 871 "d2_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 1821 "d2_parser.cc" // lalr1.cc:919
+#line 1822 "d2_parser.cc"
break;
-#line 1825 "d2_parser.cc" // lalr1.cc:919
+#line 1826 "d2_parser.cc"
+
default:
break;
}
#endif // D2_PARSER_DEBUG
-#line 14 "d2_parser.yy" // lalr1.cc:1242
+#line 14 "d2_parser.yy"
} } // isc::d2
-#line 2519 "d2_parser.cc" // lalr1.cc:1242
-#line 876 "d2_parser.yy" // lalr1.cc:1243
+#line 2521 "d2_parser.cc"
+
+#line 876 "d2_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
#ifndef YY_D2_PARSER_D2_PARSER_H_INCLUDED
# define YY_D2_PARSER_D2_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "d2_parser.yy" // lalr1.cc:401
+#line 17 "d2_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 60 "d2_parser.h" // lalr1.cc:401
+#line 60 "d2_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# endif /* ! defined YYDEBUG */
#endif /* ! defined D2_PARSER_DEBUG */
-#line 14 "d2_parser.yy" // lalr1.cc:401
+#line 14 "d2_parser.yy"
namespace isc { namespace d2 {
-#line 184 "d2_parser.h" // lalr1.cc:401
+#line 184 "d2_parser.h"
+
return token_type (yytoken_number_[type]);
}
-#line 14 "d2_parser.yy" // lalr1.cc:401
+#line 14 "d2_parser.yy"
} } // isc::d2
-#line 2280 "d2_parser.h" // lalr1.cc:401
+#line 2281 "d2_parser.h"
+
-// Generated 201905221354
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
# endif
# endif
-#line 14 "d2_parser.yy" // location.cc:339
+#line 14 "d2_parser.yy"
namespace isc { namespace d2 {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "d2_parser.yy" // location.cc:339
+#line 14 "d2_parser.yy"
} } // isc::d2
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_D2_PARSER_LOCATION_HH_INCLUDED
-// Generated 201905221354
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 201905221354
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// Generated 201906101912
+// Generated 201906181715
// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
-// Generated 201906101912
+// Generated 201906181715
// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
-// Generated 201906101912
+// Generated 201906181715
// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
-// Generated 201906110013
+// Generated 201906181715
// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
-// Generated 201906110013
+// Generated 201906181715
// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
-// Generated 201906110013
+// Generated 201906181715
// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
-// Generated 201905221355
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181715
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
# endif
# endif
-#line 14 "netconf_parser.yy" // location.cc:339
+#line 14 "netconf_parser.yy"
namespace isc { namespace netconf {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "netconf_parser.yy" // location.cc:339
+#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_NETCONF_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
// Unqualified %code blocks.
-#line 33 "netconf_parser.yy" // lalr1.cc:435
+#line 33 "netconf_parser.yy"
#include <netconf/parser_context.h>
-#line 51 "netconf_parser.cc" // lalr1.cc:435
+#line 51 "netconf_parser.cc"
#ifndef YY_
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "netconf_parser.yy" // lalr1.cc:510
+#line 14 "netconf_parser.yy"
namespace isc { namespace netconf {
-#line 146 "netconf_parser.cc" // lalr1.cc:510
+#line 146 "netconf_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
switch (yytype)
{
case 45: // "constant string"
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 392 "netconf_parser.cc" // lalr1.cc:676
+#line 393 "netconf_parser.cc"
break;
case 46: // "integer"
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
-#line 398 "netconf_parser.cc" // lalr1.cc:676
+#line 399 "netconf_parser.cc"
break;
case 47: // "floating point"
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
-#line 404 "netconf_parser.cc" // lalr1.cc:676
+#line 405 "netconf_parser.cc"
break;
case 48: // "boolean"
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
-#line 410 "netconf_parser.cc" // lalr1.cc:676
+#line 411 "netconf_parser.cc"
break;
case 57: // value
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 416 "netconf_parser.cc" // lalr1.cc:676
+#line 417 "netconf_parser.cc"
break;
case 60: // map_value
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 422 "netconf_parser.cc" // lalr1.cc:676
+#line 423 "netconf_parser.cc"
break;
case 119: // socket_type_value
-#line 107 "netconf_parser.yy" // lalr1.cc:676
+#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 428 "netconf_parser.cc" // lalr1.cc:676
+#line 429 "netconf_parser.cc"
break;
default:
switch (yyn)
{
case 2:
-#line 118 "netconf_parser.yy" // lalr1.cc:919
+#line 118 "netconf_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORDS; }
-#line 690 "netconf_parser.cc" // lalr1.cc:919
+#line 691 "netconf_parser.cc"
break;
case 4:
-#line 119 "netconf_parser.yy" // lalr1.cc:919
+#line 119 "netconf_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
-#line 696 "netconf_parser.cc" // lalr1.cc:919
+#line 697 "netconf_parser.cc"
break;
case 6:
-#line 120 "netconf_parser.yy" // lalr1.cc:919
+#line 120 "netconf_parser.yy"
{ ctx.ctx_ = ctx.NETCONF; }
-#line 702 "netconf_parser.cc" // lalr1.cc:919
+#line 703 "netconf_parser.cc"
break;
case 8:
-#line 128 "netconf_parser.yy" // lalr1.cc:919
+#line 128 "netconf_parser.yy"
{
// Parse the Netconf map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 712 "netconf_parser.cc" // lalr1.cc:919
+#line 713 "netconf_parser.cc"
break;
case 9:
-#line 132 "netconf_parser.yy" // lalr1.cc:919
+#line 132 "netconf_parser.yy"
{
// parsing completed
}
-#line 720 "netconf_parser.cc" // lalr1.cc:919
+#line 721 "netconf_parser.cc"
break;
case 10:
-#line 139 "netconf_parser.yy" // lalr1.cc:919
+#line 139 "netconf_parser.yy"
{
// Push back the JSON value on the stack
ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 729 "netconf_parser.cc" // lalr1.cc:919
+#line 730 "netconf_parser.cc"
break;
case 11:
-#line 145 "netconf_parser.yy" // lalr1.cc:919
+#line 145 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 735 "netconf_parser.cc" // lalr1.cc:919
+#line 736 "netconf_parser.cc"
break;
case 12:
-#line 146 "netconf_parser.yy" // lalr1.cc:919
+#line 146 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 741 "netconf_parser.cc" // lalr1.cc:919
+#line 742 "netconf_parser.cc"
break;
case 13:
-#line 147 "netconf_parser.yy" // lalr1.cc:919
+#line 147 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 747 "netconf_parser.cc" // lalr1.cc:919
+#line 748 "netconf_parser.cc"
break;
case 14:
-#line 148 "netconf_parser.yy" // lalr1.cc:919
+#line 148 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 753 "netconf_parser.cc" // lalr1.cc:919
+#line 754 "netconf_parser.cc"
break;
case 15:
-#line 149 "netconf_parser.yy" // lalr1.cc:919
+#line 149 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 759 "netconf_parser.cc" // lalr1.cc:919
+#line 760 "netconf_parser.cc"
break;
case 16:
-#line 150 "netconf_parser.yy" // lalr1.cc:919
+#line 150 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 765 "netconf_parser.cc" // lalr1.cc:919
+#line 766 "netconf_parser.cc"
break;
case 17:
-#line 151 "netconf_parser.yy" // lalr1.cc:919
+#line 151 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 771 "netconf_parser.cc" // lalr1.cc:919
+#line 772 "netconf_parser.cc"
break;
case 18:
-#line 155 "netconf_parser.yy" // lalr1.cc:919
+#line 155 "netconf_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 782 "netconf_parser.cc" // lalr1.cc:919
+#line 783 "netconf_parser.cc"
break;
case 19:
-#line 160 "netconf_parser.yy" // lalr1.cc:919
+#line 160 "netconf_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 792 "netconf_parser.cc" // lalr1.cc:919
+#line 793 "netconf_parser.cc"
break;
case 20:
-#line 166 "netconf_parser.yy" // lalr1.cc:919
+#line 166 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 798 "netconf_parser.cc" // lalr1.cc:919
+#line 799 "netconf_parser.cc"
break;
case 23:
-#line 180 "netconf_parser.yy" // lalr1.cc:919
+#line 180 "netconf_parser.yy"
{
// map containing a single entry
ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 807 "netconf_parser.cc" // lalr1.cc:919
+#line 808 "netconf_parser.cc"
break;
case 24:
-#line 184 "netconf_parser.yy" // lalr1.cc:919
+#line 184 "netconf_parser.yy"
{
// map consisting of a shorter map followed by
// comma and string:value
ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 817 "netconf_parser.cc" // lalr1.cc:919
+#line 818 "netconf_parser.cc"
break;
case 25:
-#line 191 "netconf_parser.yy" // lalr1.cc:919
+#line 191 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 826 "netconf_parser.cc" // lalr1.cc:919
+#line 827 "netconf_parser.cc"
break;
case 26:
-#line 194 "netconf_parser.yy" // lalr1.cc:919
+#line 194 "netconf_parser.yy"
{
}
-#line 833 "netconf_parser.cc" // lalr1.cc:919
+#line 834 "netconf_parser.cc"
break;
case 29:
-#line 201 "netconf_parser.yy" // lalr1.cc:919
+#line 201 "netconf_parser.yy"
{
// List consisting of a single element.
ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 842 "netconf_parser.cc" // lalr1.cc:919
+#line 843 "netconf_parser.cc"
break;
case 30:
-#line 205 "netconf_parser.yy" // lalr1.cc:919
+#line 205 "netconf_parser.yy"
{
// List ending with , and a value.
ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 851 "netconf_parser.cc" // lalr1.cc:919
+#line 852 "netconf_parser.cc"
break;
case 31:
-#line 218 "netconf_parser.yy" // lalr1.cc:919
+#line 218 "netconf_parser.yy"
{
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 862 "netconf_parser.cc" // lalr1.cc:919
+#line 863 "netconf_parser.cc"
break;
case 32:
-#line 226 "netconf_parser.yy" // lalr1.cc:919
+#line 226 "netconf_parser.yy"
{
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 873 "netconf_parser.cc" // lalr1.cc:919
+#line 874 "netconf_parser.cc"
break;
case 33:
-#line 231 "netconf_parser.yy" // lalr1.cc:919
+#line 231 "netconf_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 883 "netconf_parser.cc" // lalr1.cc:919
+#line 884 "netconf_parser.cc"
break;
case 38:
-#line 248 "netconf_parser.yy" // lalr1.cc:919
+#line 248 "netconf_parser.yy"
{
// Let's create a MapElement that will represent it, add it to the
ctx.stack_.push_back(m);
ctx.enter(ctx.NETCONF);
}
-#line 899 "netconf_parser.cc" // lalr1.cc:919
+#line 900 "netconf_parser.cc"
break;
case 39:
-#line 258 "netconf_parser.yy" // lalr1.cc:919
+#line 258 "netconf_parser.yy"
{
// Ok, we're done with parsing Netconf. Let's take the map
// off the stack.
ctx.stack_.pop_back();
ctx.leave();
}
-#line 910 "netconf_parser.cc" // lalr1.cc:919
+#line 911 "netconf_parser.cc"
break;
case 53:
-#line 286 "netconf_parser.yy" // lalr1.cc:919
+#line 286 "netconf_parser.yy"
{
ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-update", flag);
}
-#line 919 "netconf_parser.cc" // lalr1.cc:919
+#line 920 "netconf_parser.cc"
break;
case 54:
-#line 291 "netconf_parser.yy" // lalr1.cc:919
+#line 291 "netconf_parser.yy"
{
ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subscribe-changes", flag);
}
-#line 928 "netconf_parser.cc" // lalr1.cc:919
+#line 929 "netconf_parser.cc"
break;
case 55:
-#line 296 "netconf_parser.yy" // lalr1.cc:919
+#line 296 "netconf_parser.yy"
{
ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("validate-changes", flag);
}
-#line 937 "netconf_parser.cc" // lalr1.cc:919
+#line 938 "netconf_parser.cc"
break;
case 56:
-#line 301 "netconf_parser.yy" // lalr1.cc:919
+#line 301 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 945 "netconf_parser.cc" // lalr1.cc:919
+#line 946 "netconf_parser.cc"
break;
case 57:
-#line 303 "netconf_parser.yy" // lalr1.cc:919
+#line 303 "netconf_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
parent->set("user-context", user_context);
ctx.leave();
}
-#line 972 "netconf_parser.cc" // lalr1.cc:919
+#line 973 "netconf_parser.cc"
break;
case 58:
-#line 326 "netconf_parser.yy" // lalr1.cc:919
+#line 326 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 980 "netconf_parser.cc" // lalr1.cc:919
+#line 981 "netconf_parser.cc"
break;
case 59:
-#line 328 "netconf_parser.yy" // lalr1.cc:919
+#line 328 "netconf_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
parent->set("user-context", user_context);
ctx.leave();
}
-#line 1009 "netconf_parser.cc" // lalr1.cc:919
+#line 1010 "netconf_parser.cc"
break;
case 60:
-#line 354 "netconf_parser.yy" // lalr1.cc:919
+#line 354 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 1020 "netconf_parser.cc" // lalr1.cc:919
+#line 1021 "netconf_parser.cc"
break;
case 61:
-#line 359 "netconf_parser.yy" // lalr1.cc:919
+#line 359 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1029 "netconf_parser.cc" // lalr1.cc:919
+#line 1030 "netconf_parser.cc"
break;
case 66:
-#line 372 "netconf_parser.yy" // lalr1.cc:919
+#line 372 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1039 "netconf_parser.cc" // lalr1.cc:919
+#line 1040 "netconf_parser.cc"
break;
case 67:
-#line 376 "netconf_parser.yy" // lalr1.cc:919
+#line 376 "netconf_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1047 "netconf_parser.cc" // lalr1.cc:919
+#line 1048 "netconf_parser.cc"
break;
case 73:
-#line 389 "netconf_parser.yy" // lalr1.cc:919
+#line 389 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1055 "netconf_parser.cc" // lalr1.cc:919
+#line 1056 "netconf_parser.cc"
break;
case 74:
-#line 391 "netconf_parser.yy" // lalr1.cc:919
+#line 391 "netconf_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1065 "netconf_parser.cc" // lalr1.cc:919
+#line 1066 "netconf_parser.cc"
break;
case 75:
-#line 397 "netconf_parser.yy" // lalr1.cc:919
+#line 397 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1073 "netconf_parser.cc" // lalr1.cc:919
+#line 1074 "netconf_parser.cc"
break;
case 76:
-#line 399 "netconf_parser.yy" // lalr1.cc:919
+#line 399 "netconf_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1082 "netconf_parser.cc" // lalr1.cc:919
+#line 1083 "netconf_parser.cc"
break;
case 77:
-#line 407 "netconf_parser.yy" // lalr1.cc:919
+#line 407 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
ctx.stack_.back()->set("managed-servers", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.MANAGED_SERVERS);
}
-#line 1093 "netconf_parser.cc" // lalr1.cc:919
+#line 1094 "netconf_parser.cc"
break;
case 78:
-#line 412 "netconf_parser.yy" // lalr1.cc:919
+#line 412 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1102 "netconf_parser.cc" // lalr1.cc:919
+#line 1103 "netconf_parser.cc"
break;
case 88:
-#line 436 "netconf_parser.yy" // lalr1.cc:919
+#line 436 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1113 "netconf_parser.cc" // lalr1.cc:919
+#line 1114 "netconf_parser.cc"
break;
case 89:
-#line 441 "netconf_parser.yy" // lalr1.cc:919
+#line 441 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1122 "netconf_parser.cc" // lalr1.cc:919
+#line 1123 "netconf_parser.cc"
break;
case 90:
-#line 447 "netconf_parser.yy" // lalr1.cc:919
+#line 447 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp6", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1133 "netconf_parser.cc" // lalr1.cc:919
+#line 1134 "netconf_parser.cc"
break;
case 91:
-#line 452 "netconf_parser.yy" // lalr1.cc:919
+#line 452 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1142 "netconf_parser.cc" // lalr1.cc:919
+#line 1143 "netconf_parser.cc"
break;
case 92:
-#line 458 "netconf_parser.yy" // lalr1.cc:919
+#line 458 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("d2", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1153 "netconf_parser.cc" // lalr1.cc:919
+#line 1154 "netconf_parser.cc"
break;
case 93:
-#line 463 "netconf_parser.yy" // lalr1.cc:919
+#line 463 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1162 "netconf_parser.cc" // lalr1.cc:919
+#line 1163 "netconf_parser.cc"
break;
case 94:
-#line 469 "netconf_parser.yy" // lalr1.cc:919
+#line 469 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ca", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER);
}
-#line 1173 "netconf_parser.cc" // lalr1.cc:919
+#line 1174 "netconf_parser.cc"
break;
case 95:
-#line 474 "netconf_parser.yy" // lalr1.cc:919
+#line 474 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1182 "netconf_parser.cc" // lalr1.cc:919
+#line 1183 "netconf_parser.cc"
break;
case 106:
-#line 496 "netconf_parser.yy" // lalr1.cc:919
+#line 496 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1190 "netconf_parser.cc" // lalr1.cc:919
+#line 1191 "netconf_parser.cc"
break;
case 107:
-#line 498 "netconf_parser.yy" // lalr1.cc:919
+#line 498 "netconf_parser.yy"
{
ElementPtr model(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("model", model);
ctx.leave();
}
-#line 1200 "netconf_parser.cc" // lalr1.cc:919
+#line 1201 "netconf_parser.cc"
break;
case 108:
-#line 505 "netconf_parser.yy" // lalr1.cc:919
+#line 505 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 1211 "netconf_parser.cc" // lalr1.cc:919
+#line 1212 "netconf_parser.cc"
break;
case 109:
-#line 510 "netconf_parser.yy" // lalr1.cc:919
+#line 510 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1220 "netconf_parser.cc" // lalr1.cc:919
+#line 1221 "netconf_parser.cc"
break;
case 118:
-#line 528 "netconf_parser.yy" // lalr1.cc:919
+#line 528 "netconf_parser.yy"
{
ctx.enter(ctx.SOCKET_TYPE);
}
-#line 1228 "netconf_parser.cc" // lalr1.cc:919
+#line 1229 "netconf_parser.cc"
break;
case 119:
-#line 530 "netconf_parser.yy" // lalr1.cc:919
+#line 530 "netconf_parser.yy"
{
ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1237 "netconf_parser.cc" // lalr1.cc:919
+#line 1238 "netconf_parser.cc"
break;
case 120:
-#line 536 "netconf_parser.yy" // lalr1.cc:919
+#line 536 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1243 "netconf_parser.cc" // lalr1.cc:919
+#line 1244 "netconf_parser.cc"
break;
case 121:
-#line 537 "netconf_parser.yy" // lalr1.cc:919
+#line 537 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
-#line 1249 "netconf_parser.cc" // lalr1.cc:919
+#line 1250 "netconf_parser.cc"
break;
case 122:
-#line 538 "netconf_parser.yy" // lalr1.cc:919
+#line 538 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); }
-#line 1255 "netconf_parser.cc" // lalr1.cc:919
+#line 1256 "netconf_parser.cc"
break;
case 123:
-#line 541 "netconf_parser.yy" // lalr1.cc:919
+#line 541 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1263 "netconf_parser.cc" // lalr1.cc:919
+#line 1264 "netconf_parser.cc"
break;
case 124:
-#line 543 "netconf_parser.yy" // lalr1.cc:919
+#line 543 "netconf_parser.yy"
{
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 1273 "netconf_parser.cc" // lalr1.cc:919
+#line 1274 "netconf_parser.cc"
break;
case 125:
-#line 550 "netconf_parser.yy" // lalr1.cc:919
+#line 550 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1281 "netconf_parser.cc" // lalr1.cc:919
+#line 1282 "netconf_parser.cc"
break;
case 126:
-#line 552 "netconf_parser.yy" // lalr1.cc:919
+#line 552 "netconf_parser.yy"
{
ElementPtr url(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-url", url);
ctx.leave();
}
-#line 1291 "netconf_parser.cc" // lalr1.cc:919
+#line 1292 "netconf_parser.cc"
break;
case 127:
-#line 565 "netconf_parser.yy" // lalr1.cc:919
+#line 565 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 1302 "netconf_parser.cc" // lalr1.cc:919
+#line 1303 "netconf_parser.cc"
break;
case 128:
-#line 570 "netconf_parser.yy" // lalr1.cc:919
+#line 570 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1311 "netconf_parser.cc" // lalr1.cc:919
+#line 1312 "netconf_parser.cc"
break;
case 132:
-#line 587 "netconf_parser.yy" // lalr1.cc:919
+#line 587 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 1322 "netconf_parser.cc" // lalr1.cc:919
+#line 1323 "netconf_parser.cc"
break;
case 133:
-#line 592 "netconf_parser.yy" // lalr1.cc:919
+#line 592 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1331 "netconf_parser.cc" // lalr1.cc:919
+#line 1332 "netconf_parser.cc"
break;
case 136:
-#line 604 "netconf_parser.yy" // lalr1.cc:919
+#line 604 "netconf_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 1341 "netconf_parser.cc" // lalr1.cc:919
+#line 1342 "netconf_parser.cc"
break;
case 137:
-#line 608 "netconf_parser.yy" // lalr1.cc:919
+#line 608 "netconf_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1349 "netconf_parser.cc" // lalr1.cc:919
+#line 1350 "netconf_parser.cc"
break;
case 147:
-#line 625 "netconf_parser.yy" // lalr1.cc:919
+#line 625 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1357 "netconf_parser.cc" // lalr1.cc:919
+#line 1358 "netconf_parser.cc"
break;
case 148:
-#line 627 "netconf_parser.yy" // lalr1.cc:919
+#line 627 "netconf_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1367 "netconf_parser.cc" // lalr1.cc:919
+#line 1368 "netconf_parser.cc"
break;
case 149:
-#line 633 "netconf_parser.yy" // lalr1.cc:919
+#line 633 "netconf_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 1376 "netconf_parser.cc" // lalr1.cc:919
+#line 1377 "netconf_parser.cc"
break;
case 150:
-#line 638 "netconf_parser.yy" // lalr1.cc:919
+#line 638 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1384 "netconf_parser.cc" // lalr1.cc:919
+#line 1385 "netconf_parser.cc"
break;
case 151:
-#line 640 "netconf_parser.yy" // lalr1.cc:919
+#line 640 "netconf_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 1394 "netconf_parser.cc" // lalr1.cc:919
+#line 1395 "netconf_parser.cc"
break;
case 152:
-#line 646 "netconf_parser.yy" // lalr1.cc:919
+#line 646 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 1405 "netconf_parser.cc" // lalr1.cc:919
+#line 1406 "netconf_parser.cc"
break;
case 153:
-#line 651 "netconf_parser.yy" // lalr1.cc:919
+#line 651 "netconf_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1414 "netconf_parser.cc" // lalr1.cc:919
+#line 1415 "netconf_parser.cc"
break;
case 156:
-#line 660 "netconf_parser.yy" // lalr1.cc:919
+#line 660 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1424 "netconf_parser.cc" // lalr1.cc:919
+#line 1425 "netconf_parser.cc"
break;
case 157:
-#line 664 "netconf_parser.yy" // lalr1.cc:919
+#line 664 "netconf_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 1432 "netconf_parser.cc" // lalr1.cc:919
+#line 1433 "netconf_parser.cc"
break;
case 164:
-#line 678 "netconf_parser.yy" // lalr1.cc:919
+#line 678 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
}
-#line 1440 "netconf_parser.cc" // lalr1.cc:919
+#line 1441 "netconf_parser.cc"
break;
case 165:
-#line 680 "netconf_parser.yy" // lalr1.cc:919
+#line 680 "netconf_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 1450 "netconf_parser.cc" // lalr1.cc:919
+#line 1451 "netconf_parser.cc"
break;
case 166:
-#line 686 "netconf_parser.yy" // lalr1.cc:919
+#line 686 "netconf_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 1459 "netconf_parser.cc" // lalr1.cc:919
+#line 1460 "netconf_parser.cc"
break;
case 167:
-#line 691 "netconf_parser.yy" // lalr1.cc:919
+#line 691 "netconf_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 1468 "netconf_parser.cc" // lalr1.cc:919
+#line 1469 "netconf_parser.cc"
break;
case 168:
-#line 696 "netconf_parser.yy" // lalr1.cc:919
+#line 696 "netconf_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 1477 "netconf_parser.cc" // lalr1.cc:919
+#line 1478 "netconf_parser.cc"
break;
-#line 1481 "netconf_parser.cc" // lalr1.cc:919
+#line 1482 "netconf_parser.cc"
+
default:
break;
}
#endif // NETCONF_DEBUG
-#line 14 "netconf_parser.yy" // lalr1.cc:1242
+#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 2089 "netconf_parser.cc" // lalr1.cc:1242
-#line 701 "netconf_parser.yy" // lalr1.cc:1243
+#line 2091 "netconf_parser.cc"
+
+#line 701 "netconf_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
#ifndef YY_NETCONF_NETCONF_PARSER_H_INCLUDED
# define YY_NETCONF_NETCONF_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "netconf_parser.yy" // lalr1.cc:401
+#line 17 "netconf_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 59 "netconf_parser.h" // lalr1.cc:401
+#line 59 "netconf_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# endif /* ! defined YYDEBUG */
#endif /* ! defined NETCONF_DEBUG */
-#line 14 "netconf_parser.yy" // lalr1.cc:401
+#line 14 "netconf_parser.yy"
namespace isc { namespace netconf {
-#line 183 "netconf_parser.h" // lalr1.cc:401
+#line 183 "netconf_parser.h"
+
return token_type (yytoken_number_[type]);
}
-#line 14 "netconf_parser.yy" // lalr1.cc:401
+#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 2101 "netconf_parser.h" // lalr1.cc:401
+#line 2102 "netconf_parser.h"
+
-// Generated 201905221355
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181715
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 201905221355
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181715
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// Generated 201903111303
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Locations for Bison parsers in C++
# endif
# endif
-#line 14 "parser.yy" // location.cc:339
+#line 14 "parser.yy"
namespace isc { namespace eval {
-#line 60 "location.hh" // location.cc:339
+#line 60 "location.hh"
+
/// A point in a source file.
class position
{
return ostr;
}
-#line 14 "parser.yy" // location.cc:339
+#line 14 "parser.yy"
} } // isc::eval
-#line 322 "location.hh" // location.cc:339
+#line 323 "location.hh"
+
#endif // !YY_EVAL_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
// Unqualified %code blocks.
-#line 33 "parser.yy" // lalr1.cc:435
+#line 33 "parser.yy"
# include "eval_context.h"
-#line 51 "parser.cc" // lalr1.cc:435
+#line 51 "parser.cc"
#ifndef YY_
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "parser.yy" // lalr1.cc:510
+#line 14 "parser.yy"
namespace isc { namespace eval {
-#line 146 "parser.cc" // lalr1.cc:510
+#line 146 "parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
switch (yytype)
{
case 50: // "constant string"
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 449 "parser.cc" // lalr1.cc:676
+#line 450 "parser.cc"
break;
case 51: // "integer"
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 455 "parser.cc" // lalr1.cc:676
+#line 456 "parser.cc"
break;
case 52: // "constant hexstring"
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 461 "parser.cc" // lalr1.cc:676
+#line 462 "parser.cc"
break;
case 53: // "option name"
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 467 "parser.cc" // lalr1.cc:676
+#line 468 "parser.cc"
break;
case 54: // "ip address"
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
-#line 473 "parser.cc" // lalr1.cc:676
+#line 474 "parser.cc"
break;
case 60: // integer_expr
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < uint32_t > (); }
-#line 479 "parser.cc" // lalr1.cc:676
+#line 480 "parser.cc"
break;
case 61: // option_code
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < uint16_t > (); }
-#line 485 "parser.cc" // lalr1.cc:676
+#line 486 "parser.cc"
break;
case 62: // option_repr_type
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); }
-#line 491 "parser.cc" // lalr1.cc:676
+#line 492 "parser.cc"
break;
case 63: // nest_level
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < int8_t > (); }
-#line 497 "parser.cc" // lalr1.cc:676
+#line 498 "parser.cc"
break;
case 64: // pkt_metadata
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); }
-#line 503 "parser.cc" // lalr1.cc:676
+#line 504 "parser.cc"
break;
case 65: // enterprise_id
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < uint32_t > (); }
-#line 509 "parser.cc" // lalr1.cc:676
+#line 510 "parser.cc"
break;
case 66: // pkt4_field
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); }
-#line 515 "parser.cc" // lalr1.cc:676
+#line 516 "parser.cc"
break;
case 67: // pkt6_field
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); }
-#line 521 "parser.cc" // lalr1.cc:676
+#line 522 "parser.cc"
break;
case 68: // relay6_field
-#line 111 "parser.yy" // lalr1.cc:676
+#line 111 "parser.yy"
{ yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); }
-#line 527 "parser.cc" // lalr1.cc:676
+#line 528 "parser.cc"
break;
default:
switch (yyn)
{
case 6:
-#line 131 "parser.yy" // lalr1.cc:919
+#line 131 "parser.yy"
{
TokenPtr neg(new TokenNot());
ctx.expression.push_back(neg);
}
-#line 811 "parser.cc" // lalr1.cc:919
+#line 812 "parser.cc"
break;
case 7:
-#line 136 "parser.yy" // lalr1.cc:919
+#line 136 "parser.yy"
{
TokenPtr neg(new TokenAnd());
ctx.expression.push_back(neg);
}
-#line 820 "parser.cc" // lalr1.cc:919
+#line 821 "parser.cc"
break;
case 8:
-#line 141 "parser.yy" // lalr1.cc:919
+#line 141 "parser.yy"
{
TokenPtr neg(new TokenOr());
ctx.expression.push_back(neg);
}
-#line 829 "parser.cc" // lalr1.cc:919
+#line 830 "parser.cc"
break;
case 9:
-#line 146 "parser.yy" // lalr1.cc:919
+#line 146 "parser.yy"
{
TokenPtr eq(new TokenEqual());
ctx.expression.push_back(eq);
}
-#line 838 "parser.cc" // lalr1.cc:919
+#line 839 "parser.cc"
break;
case 10:
-#line 151 "parser.yy" // lalr1.cc:919
+#line 151 "parser.yy"
{
TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
ctx.expression.push_back(opt);
}
-#line 847 "parser.cc" // lalr1.cc:919
+#line 848 "parser.cc"
break;
case 11:
-#line 156 "parser.yy" // lalr1.cc:919
+#line 156 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V4:
error(yystack_[5].location, "relay4 can only be used in DHCPv4.");
}
}
-#line 871 "parser.cc" // lalr1.cc:919
+#line 872 "parser.cc"
break;
case 12:
-#line 176 "parser.yy" // lalr1.cc:919
+#line 176 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
error(yystack_[10].location, "relay6 can only be used in DHCPv6.");
}
}
-#line 889 "parser.cc" // lalr1.cc:919
+#line 890 "parser.cc"
break;
case 13:
-#line 190 "parser.yy" // lalr1.cc:919
+#line 190 "parser.yy"
{
// Expression: vendor-class[1234].exists
//
TokenPtr exist(new TokenVendorClass(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS));
ctx.expression.push_back(exist);
}
-#line 902 "parser.cc" // lalr1.cc:919
+#line 903 "parser.cc"
break;
case 14:
-#line 199 "parser.yy" // lalr1.cc:919
+#line 199 "parser.yy"
{
// Expression: vendor[1234].exists
//
TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS));
ctx.expression.push_back(exist);
}
-#line 915 "parser.cc" // lalr1.cc:919
+#line 916 "parser.cc"
break;
case 15:
-#line 208 "parser.yy" // lalr1.cc:919
+#line 208 "parser.yy"
{
// Expression vendor[1234].option[123].exists
//
TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), TokenOption::EXISTS, yystack_[3].value.as < uint16_t > ()));
ctx.expression.push_back(exist);
}
-#line 929 "parser.cc" // lalr1.cc:919
+#line 930 "parser.cc"
break;
case 16:
-#line 218 "parser.yy" // lalr1.cc:919
+#line 218 "parser.yy"
{
// Expression member('foo')
//
TokenPtr member(new TokenMember(cc));
ctx.expression.push_back(member);
}
-#line 948 "parser.cc" // lalr1.cc:919
+#line 949 "parser.cc"
break;
case 17:
-#line 235 "parser.yy" // lalr1.cc:919
+#line 235 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 957 "parser.cc" // lalr1.cc:919
+#line 958 "parser.cc"
break;
case 18:
-#line 240 "parser.yy" // lalr1.cc:919
+#line 240 "parser.yy"
{
TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(hex);
}
-#line 966 "parser.cc" // lalr1.cc:919
+#line 967 "parser.cc"
break;
case 19:
-#line 245 "parser.yy" // lalr1.cc:919
+#line 245 "parser.yy"
{
TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(ip);
}
-#line 975 "parser.cc" // lalr1.cc:919
+#line 976 "parser.cc"
break;
case 20:
-#line 250 "parser.yy" // lalr1.cc:919
+#line 250 "parser.yy"
{
TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
ctx.expression.push_back(opt);
}
-#line 984 "parser.cc" // lalr1.cc:919
+#line 985 "parser.cc"
break;
case 21:
-#line 255 "parser.yy" // lalr1.cc:919
+#line 255 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V4:
error(yystack_[5].location, "relay4 can only be used in DHCPv4.");
}
}
-#line 1008 "parser.cc" // lalr1.cc:919
+#line 1009 "parser.cc"
break;
case 22:
-#line 276 "parser.yy" // lalr1.cc:919
+#line 276 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
error(yystack_[10].location, "relay6 can only be used in DHCPv6.");
}
}
-#line 1026 "parser.cc" // lalr1.cc:919
+#line 1027 "parser.cc"
break;
case 23:
-#line 291 "parser.yy" // lalr1.cc:919
+#line 291 "parser.yy"
{
TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ()));
ctx.expression.push_back(pkt_metadata);
}
-#line 1035 "parser.cc" // lalr1.cc:919
+#line 1036 "parser.cc"
break;
case 24:
-#line 296 "parser.yy" // lalr1.cc:919
+#line 296 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V4:
error(yystack_[2].location, "pkt4 can only be used in DHCPv4.");
}
}
-#line 1053 "parser.cc" // lalr1.cc:919
+#line 1054 "parser.cc"
break;
case 25:
-#line 310 "parser.yy" // lalr1.cc:919
+#line 310 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
error(yystack_[2].location, "pkt6 can only be used in DHCPv6.");
}
}
-#line 1071 "parser.cc" // lalr1.cc:919
+#line 1072 "parser.cc"
break;
case 26:
-#line 324 "parser.yy" // lalr1.cc:919
+#line 324 "parser.yy"
{
switch (ctx.getUniverse()) {
case Option::V6:
error(yystack_[5].location, "relay6 can only be used in DHCPv6.");
}
}
-#line 1089 "parser.cc" // lalr1.cc:919
+#line 1090 "parser.cc"
break;
case 27:
-#line 339 "parser.yy" // lalr1.cc:919
+#line 339 "parser.yy"
{
TokenPtr sub(new TokenSubstring());
ctx.expression.push_back(sub);
}
-#line 1098 "parser.cc" // lalr1.cc:919
+#line 1099 "parser.cc"
break;
case 28:
-#line 344 "parser.yy" // lalr1.cc:919
+#line 344 "parser.yy"
{
TokenPtr conc(new TokenConcat());
ctx.expression.push_back(conc);
}
-#line 1107 "parser.cc" // lalr1.cc:919
+#line 1108 "parser.cc"
break;
case 29:
-#line 349 "parser.yy" // lalr1.cc:919
+#line 349 "parser.yy"
{
TokenPtr cond(new TokenIfElse());
ctx.expression.push_back(cond);
}
-#line 1116 "parser.cc" // lalr1.cc:919
+#line 1117 "parser.cc"
break;
case 30:
-#line 354 "parser.yy" // lalr1.cc:919
+#line 354 "parser.yy"
{
TokenPtr tohex(new TokenToHexString());
ctx.expression.push_back(tohex);
}
-#line 1125 "parser.cc" // lalr1.cc:919
+#line 1126 "parser.cc"
break;
case 31:
-#line 359 "parser.yy" // lalr1.cc:919
+#line 359 "parser.yy"
{
// expression: vendor.enterprise
//
TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID));
ctx.expression.push_back(vendor);
}
-#line 1138 "parser.cc" // lalr1.cc:919
+#line 1139 "parser.cc"
break;
case 32:
-#line 368 "parser.yy" // lalr1.cc:919
+#line 368 "parser.yy"
{
// expression: vendor-class.enterprise
//
TokenVendor::ENTERPRISE_ID));
ctx.expression.push_back(vendor);
}
-#line 1152 "parser.cc" // lalr1.cc:919
+#line 1153 "parser.cc"
break;
case 33:
-#line 378 "parser.yy" // lalr1.cc:919
+#line 378 "parser.yy"
{
// This token will search for vendor option with
// specified enterprise-id. If found, will search
TokenPtr opt(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), yystack_[0].value.as < TokenOption::RepresentationType > (), yystack_[3].value.as < uint16_t > ()));
ctx.expression.push_back(opt);
}
-#line 1165 "parser.cc" // lalr1.cc:919
+#line 1166 "parser.cc"
break;
case 34:
-#line 387 "parser.yy" // lalr1.cc:919
+#line 387 "parser.yy"
{
// expression: vendor-class[1234].data
//
TokenVendor::DATA, 0));
ctx.expression.push_back(vendor_class);
}
-#line 1182 "parser.cc" // lalr1.cc:919
+#line 1183 "parser.cc"
break;
case 35:
-#line 400 "parser.yy" // lalr1.cc:919
+#line 400 "parser.yy"
{
// expression: vendor-class[1234].data[5]
//
TokenVendor::DATA, index));
ctx.expression.push_back(vendor_class);
}
-#line 1199 "parser.cc" // lalr1.cc:919
+#line 1200 "parser.cc"
break;
case 36:
-#line 413 "parser.yy" // lalr1.cc:919
+#line 413 "parser.yy"
{
TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ()));
ctx.expression.push_back(integer);
}
-#line 1208 "parser.cc" // lalr1.cc:919
+#line 1209 "parser.cc"
break;
case 37:
-#line 420 "parser.yy" // lalr1.cc:919
+#line 420 "parser.yy"
{
yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1216 "parser.cc" // lalr1.cc:919
+#line 1217 "parser.cc"
break;
case 38:
-#line 426 "parser.yy" // lalr1.cc:919
+#line 426 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1224 "parser.cc" // lalr1.cc:919
+#line 1225 "parser.cc"
break;
case 39:
-#line 430 "parser.yy" // lalr1.cc:919
+#line 430 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1232 "parser.cc" // lalr1.cc:919
+#line 1233 "parser.cc"
break;
case 40:
-#line 436 "parser.yy" // lalr1.cc:919
+#line 436 "parser.yy"
{
yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
}
-#line 1240 "parser.cc" // lalr1.cc:919
+#line 1241 "parser.cc"
break;
case 41:
-#line 440 "parser.yy" // lalr1.cc:919
+#line 440 "parser.yy"
{
yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
}
-#line 1248 "parser.cc" // lalr1.cc:919
+#line 1249 "parser.cc"
break;
case 42:
-#line 446 "parser.yy" // lalr1.cc:919
+#line 446 "parser.yy"
{
yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1256 "parser.cc" // lalr1.cc:919
+#line 1257 "parser.cc"
break;
case 43:
-#line 455 "parser.yy" // lalr1.cc:919
+#line 455 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE;
}
-#line 1264 "parser.cc" // lalr1.cc:919
+#line 1265 "parser.cc"
break;
case 44:
-#line 459 "parser.yy" // lalr1.cc:919
+#line 459 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC;
}
-#line 1272 "parser.cc" // lalr1.cc:919
+#line 1273 "parser.cc"
break;
case 45:
-#line 463 "parser.yy" // lalr1.cc:919
+#line 463 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST;
}
-#line 1280 "parser.cc" // lalr1.cc:919
+#line 1281 "parser.cc"
break;
case 46:
-#line 467 "parser.yy" // lalr1.cc:919
+#line 467 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN;
}
-#line 1288 "parser.cc" // lalr1.cc:919
+#line 1289 "parser.cc"
break;
case 47:
-#line 473 "parser.yy" // lalr1.cc:919
+#line 473 "parser.yy"
{
yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
}
-#line 1296 "parser.cc" // lalr1.cc:919
+#line 1297 "parser.cc"
break;
case 48:
-#line 477 "parser.yy" // lalr1.cc:919
+#line 477 "parser.yy"
{
yylhs.value.as < uint32_t > () = 0;
}
-#line 1304 "parser.cc" // lalr1.cc:919
+#line 1305 "parser.cc"
break;
case 49:
-#line 483 "parser.yy" // lalr1.cc:919
+#line 483 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
}
-#line 1312 "parser.cc" // lalr1.cc:919
+#line 1313 "parser.cc"
break;
case 50:
-#line 487 "parser.yy" // lalr1.cc:919
+#line 487 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN;
}
-#line 1320 "parser.cc" // lalr1.cc:919
+#line 1321 "parser.cc"
break;
case 51:
-#line 491 "parser.yy" // lalr1.cc:919
+#line 491 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
}
-#line 1328 "parser.cc" // lalr1.cc:919
+#line 1329 "parser.cc"
break;
case 52:
-#line 495 "parser.yy" // lalr1.cc:919
+#line 495 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
}
-#line 1336 "parser.cc" // lalr1.cc:919
+#line 1337 "parser.cc"
break;
case 53:
-#line 499 "parser.yy" // lalr1.cc:919
+#line 499 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
}
-#line 1344 "parser.cc" // lalr1.cc:919
+#line 1345 "parser.cc"
break;
case 54:
-#line 503 "parser.yy" // lalr1.cc:919
+#line 503 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
}
-#line 1352 "parser.cc" // lalr1.cc:919
+#line 1353 "parser.cc"
break;
case 55:
-#line 507 "parser.yy" // lalr1.cc:919
+#line 507 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
}
-#line 1360 "parser.cc" // lalr1.cc:919
+#line 1361 "parser.cc"
break;
case 56:
-#line 511 "parser.yy" // lalr1.cc:919
+#line 511 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
}
-#line 1368 "parser.cc" // lalr1.cc:919
+#line 1369 "parser.cc"
break;
case 57:
-#line 515 "parser.yy" // lalr1.cc:919
+#line 515 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
}
-#line 1376 "parser.cc" // lalr1.cc:919
+#line 1377 "parser.cc"
break;
case 58:
-#line 521 "parser.yy" // lalr1.cc:919
+#line 521 "parser.yy"
{
yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
}
-#line 1384 "parser.cc" // lalr1.cc:919
+#line 1385 "parser.cc"
break;
case 59:
-#line 525 "parser.yy" // lalr1.cc:919
+#line 525 "parser.yy"
{
yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
}
-#line 1392 "parser.cc" // lalr1.cc:919
+#line 1393 "parser.cc"
break;
case 60:
-#line 531 "parser.yy" // lalr1.cc:919
+#line 531 "parser.yy"
{
yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
}
-#line 1400 "parser.cc" // lalr1.cc:919
+#line 1401 "parser.cc"
break;
case 61:
-#line 535 "parser.yy" // lalr1.cc:919
+#line 535 "parser.yy"
{
yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
}
-#line 1408 "parser.cc" // lalr1.cc:919
+#line 1409 "parser.cc"
break;
case 62:
-#line 541 "parser.yy" // lalr1.cc:919
+#line 541 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 1417 "parser.cc" // lalr1.cc:919
+#line 1418 "parser.cc"
break;
case 63:
-#line 548 "parser.yy" // lalr1.cc:919
+#line 548 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
ctx.expression.push_back(str);
}
-#line 1426 "parser.cc" // lalr1.cc:919
+#line 1427 "parser.cc"
break;
case 64:
-#line 553 "parser.yy" // lalr1.cc:919
+#line 553 "parser.yy"
{
TokenPtr str(new TokenString("all"));
ctx.expression.push_back(str);
}
-#line 1435 "parser.cc" // lalr1.cc:919
+#line 1436 "parser.cc"
break;
-#line 1439 "parser.cc" // lalr1.cc:919
+#line 1440 "parser.cc"
+
default:
break;
}
#endif // EVALDEBUG
-#line 14 "parser.yy" // lalr1.cc:1242
+#line 14 "parser.yy"
} } // isc::eval
-#line 1942 "parser.cc" // lalr1.cc:1242
-#line 559 "parser.yy" // lalr1.cc:1243
+#line 1944 "parser.cc"
+
+#line 559 "parser.yy"
void
isc::eval::EvalParser::error(const location_type& loc,
-// A Bison parser, made by GNU Bison 3.3.2.
+// A Bison parser, made by GNU Bison 3.4.1.
// Skeleton interface for Bison LALR(1) parsers in C++
#ifndef YY_EVAL_PARSER_H_INCLUDED
# define YY_EVAL_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "parser.yy" // lalr1.cc:401
+#line 17 "parser.yy"
#include <string>
#include <eval/token.h>
using namespace isc::dhcp;
using namespace isc::eval;
-#line 59 "parser.h" // lalr1.cc:401
+#line 59 "parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# endif /* ! defined YYDEBUG */
#endif /* ! defined EVALDEBUG */
-#line 14 "parser.yy" // lalr1.cc:401
+#line 14 "parser.yy"
namespace isc { namespace eval {
-#line 183 "parser.h" // lalr1.cc:401
+#line 183 "parser.h"
+
return token_type (yytoken_number_[type]);
}
-#line 14 "parser.yy" // lalr1.cc:401
+#line 14 "parser.yy"
} } // isc::eval
-#line 2302 "parser.h" // lalr1.cc:401
+#line 2303 "parser.h"
+
-// Generated 201903111303
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 201903111303
-// A Bison parser, made by GNU Bison 3.3.2.
+// Generated 201906181714
+// A Bison parser, made by GNU Bison 3.4.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.