39#define yylex d2_parser_lex
47#line 35 "d2_parser.yy"
52#if defined(__GNUC__) || defined(__clang__)
53#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
56#line 57 "d2_parser.cc"
60# if defined YYENABLE_NLS && YYENABLE_NLS
63# define YY_(msgid) dgettext ("bison-runtime", msgid)
67# define YY_(msgid) msgid
74# if defined __GNUC__ && !defined __EXCEPTIONS
75# define YY_EXCEPTIONS 0
77# define YY_EXCEPTIONS 1
81#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
86# ifndef YYLLOC_DEFAULT
87# define YYLLOC_DEFAULT(Current, Rhs, N) \
91 (Current).begin = YYRHSLOC (Rhs, 1).begin; \
92 (Current).end = YYRHSLOC (Rhs, N).end; \
96 (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
106# define YYCDEBUG if (yydebug_) (*yycdebug_)
108# define YY_SYMBOL_PRINT(Title, Symbol) \
112 *yycdebug_ << Title << ' '; \
113 yy_print_ (*yycdebug_, Symbol); \
114 *yycdebug_ << '\n'; \
118# define YY_REDUCE_PRINT(Rule) \
121 yy_reduce_print_ (Rule); \
124# define YY_STACK_PRINT() \
127 yy_stack_print_ (); \
132# define YYCDEBUG if (false) std::cerr
133# define YY_SYMBOL_PRINT(Title, Symbol) YY_USE (Symbol)
134# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
135# define YY_STACK_PRINT() static_cast<void> (0)
139#define yyerrok (yyerrstatus_ = 0)
140#define yyclearin (yyla.clear ())
142#define YYACCEPT goto yyacceptlab
143#define YYABORT goto yyabortlab
144#define YYERROR goto yyerrorlab
145#define YYRECOVERING() (!!yyerrstatus_)
147#line 14 "d2_parser.yy"
148namespace isc {
namespace d2 {
149#line 150 "d2_parser.cc"
155 yycdebug_ (&std::cerr),
176 : state (empty_state)
179 D2Parser::by_state::by_state (
const by_state& that)
YY_NOEXCEPT
190 D2Parser::by_state::move (by_state& that)
196 D2Parser::by_state::by_state (state_type s)
YY_NOEXCEPT
203 if (state == empty_state)
209 D2Parser::stack_symbol_type::stack_symbol_type ()
212 D2Parser::stack_symbol_type::stack_symbol_type (
YY_RVREF (stack_symbol_type) that)
215 switch (that.kind ())
217 case symbol_kind::S_value:
218 case symbol_kind::S_map_value:
219 case symbol_kind::S_ncr_protocol_value:
220 case symbol_kind::S_control_socket_type_value:
221 case symbol_kind::S_auth_type_value:
222 value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
225 case symbol_kind::S_BOOLEAN:
226 value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
229 case symbol_kind::S_FLOAT:
230 value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
233 case symbol_kind::S_INTEGER:
234 value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
237 case symbol_kind::S_STRING:
238 value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
247 that.state = empty_state;
252 : super_type (s,
YY_MOVE (that.location))
254 switch (that.kind ())
256 case symbol_kind::S_value:
257 case symbol_kind::S_map_value:
258 case symbol_kind::S_ncr_protocol_value:
259 case symbol_kind::S_control_socket_type_value:
260 case symbol_kind::S_auth_type_value:
261 value.move< ElementPtr > (YY_MOVE (that.value));
264 case symbol_kind::S_BOOLEAN:
265 value.move< bool > (YY_MOVE (that.value));
268 case symbol_kind::S_FLOAT:
269 value.move< double > (YY_MOVE (that.value));
272 case symbol_kind::S_INTEGER:
273 value.move< int64_t > (YY_MOVE (that.value));
276 case symbol_kind::S_STRING:
277 value.move< std::string > (YY_MOVE (that.value));
288#if YY_CPLUSPLUS < 201103L
289 D2Parser::stack_symbol_type&
290 D2Parser::stack_symbol_type::operator= (
const stack_symbol_type& that)
293 switch (that.kind ())
304 value.copy<
bool > (that.value);
308 value.copy<
double > (that.value);
312 value.copy< int64_t > (that.value);
316 value.copy< std::string > (that.value);
323 location = that.location;
327 D2Parser::stack_symbol_type&
328 D2Parser::stack_symbol_type::operator= (stack_symbol_type& that)
331 switch (that.kind ())
342 value.move<
bool > (that.value);
346 value.move<
double > (that.value);
350 value.move< int64_t > (that.value);
354 value.move< std::string > (that.value);
361 location = that.location;
363 that.state = empty_state;
368 template <
typename Base>
377 template <
typename Base>
381 std::ostream& yyoutput = yyo;
384 yyo <<
"empty symbol";
388 yyo << (yykind <
YYNTOKENS ?
"token" :
"nterm")
389 <<
' ' << yysym.name () <<
" ("
390 << yysym.location <<
": ";
394#line 145 "d2_parser.yy"
395 { yyoutput << yysym.value.template as < std::string > (); }
396#line 397 "d2_parser.cc"
400#line 145 "d2_parser.yy"
401 { yyoutput << yysym.value.template as < int64_t > (); }
402#line 403 "d2_parser.cc"
406#line 145 "d2_parser.yy"
407 { yyoutput << yysym.value.template as < double > (); }
408#line 409 "d2_parser.cc"
412#line 145 "d2_parser.yy"
413 { yyoutput << yysym.value.template as < bool > (); }
414#line 415 "d2_parser.cc"
418#line 145 "d2_parser.yy"
419 { yyoutput << yysym.value.template as < ElementPtr > (); }
420#line 421 "d2_parser.cc"
424#line 145 "d2_parser.yy"
425 { yyoutput << yysym.value.template as < ElementPtr > (); }
426#line 427 "d2_parser.cc"
430#line 145 "d2_parser.yy"
431 { yyoutput << yysym.value.template as < ElementPtr > (); }
432#line 433 "d2_parser.cc"
436#line 145 "d2_parser.yy"
437 { yyoutput << yysym.value.template as < ElementPtr > (); }
438#line 439 "d2_parser.cc"
442#line 145 "d2_parser.yy"
443 { yyoutput << yysym.value.template as < ElementPtr > (); }
444#line 445 "d2_parser.cc"
456 D2Parser::yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym)
466#if 201103L <= YY_CPLUSPLUS
467 yypush_ (m, stack_symbol_type (s, std::move (sym)));
469 stack_symbol_type ss (s, sym);
482 D2Parser::debug_stream ()
const
488 D2Parser::set_debug_stream (std::ostream& o)
494 D2Parser::debug_level_type
495 D2Parser::debug_level ()
const
501 D2Parser::set_debug_level (debug_level_type l)
508 D2Parser::yy_lr_goto_state_ (state_type yystate,
int yysym)
510 int yyr = yypgoto_[yysym -
YYNTOKENS] + yystate;
511 if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
512 return yytable_[yyr];
518 D2Parser::yy_pact_value_is_default_ (
int yyvalue)
YY_NOEXCEPT
520 return yyvalue == yypact_ninf_;
524 D2Parser::yy_table_value_is_error_ (
int yyvalue)
YY_NOEXCEPT
526 return yyvalue == yytable_ninf_;
544 int yyerrstatus_ = 0;
550 stack_symbol_type yyerror_range[3];
567 yypush_ (YY_NULLPTR, 0,
YY_MOVE (yyla));
573 YYCDEBUG <<
"Entering state " << int (yystack_[0].state) <<
'\n';
577 if (yystack_[0].state == yyfinal_)
588 yyn = yypact_[+yystack_[0].state];
589 if (yy_pact_value_is_default_ (yyn))
601 yyla.
move (yylookahead);
606 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
627 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.
kind ())
636 if (yy_table_value_is_error_ (yyn))
647 yypush_ (
"Shifting", state_type (yyn),
YY_MOVE (yyla));
655 yyn = yydefact_[+yystack_[0].state];
667 stack_symbol_type yylhs;
668 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
705 stack_type::slice range (yystack_, yylen);
719#line 154 "d2_parser.yy"
720 { ctx.ctx_ = ctx.NO_KEYWORD; }
721#line 722 "d2_parser.cc"
725#line 155 "d2_parser.yy"
726 { ctx.ctx_ = ctx.CONFIG; }
727#line 728 "d2_parser.cc"
731#line 156 "d2_parser.yy"
732 { ctx.ctx_ = ctx.DHCPDDNS; }
733#line 734 "d2_parser.cc"
737#line 157 "d2_parser.yy"
738 { ctx.ctx_ = ctx.TSIG_KEY; }
739#line 740 "d2_parser.cc"
743#line 158 "d2_parser.yy"
744 { ctx.ctx_ = ctx.TSIG_KEYS; }
745#line 746 "d2_parser.cc"
749#line 159 "d2_parser.yy"
750 { ctx.ctx_ = ctx.DDNS_DOMAIN; }
751#line 752 "d2_parser.cc"
755#line 160 "d2_parser.yy"
756 { ctx.ctx_ = ctx.DDNS_DOMAINS; }
757#line 758 "d2_parser.cc"
761#line 161 "d2_parser.yy"
762 { ctx.ctx_ = ctx.DNS_SERVERS; }
763#line 764 "d2_parser.cc"
767#line 162 "d2_parser.yy"
768 { ctx.ctx_ = ctx.DNS_SERVERS; }
769#line 770 "d2_parser.cc"
773#line 163 "d2_parser.yy"
774 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
775#line 776 "d2_parser.cc"
779#line 171 "d2_parser.yy"
781#line 782 "d2_parser.cc"
785#line 172 "d2_parser.yy"
787#line 788 "d2_parser.cc"
791#line 173 "d2_parser.yy"
793#line 794 "d2_parser.cc"
797#line 174 "d2_parser.yy"
799#line 800 "d2_parser.cc"
803#line 175 "d2_parser.yy"
805#line 806 "d2_parser.cc"
809#line 176 "d2_parser.yy"
811#line 812 "d2_parser.cc"
815#line 177 "d2_parser.yy"
817#line 818 "d2_parser.cc"
821#line 180 "d2_parser.yy"
824 ctx.stack_.push_back(yystack_[0].value.as <
ElementPtr > ());
826#line 827 "d2_parser.cc"
830#line 185 "d2_parser.yy"
835 ctx.stack_.push_back(m);
837#line 838 "d2_parser.cc"
841#line 190 "d2_parser.yy"
847#line 848 "d2_parser.cc"
851#line 196 "d2_parser.yy"
853#line 854 "d2_parser.cc"
857#line 203 "d2_parser.yy"
860 ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
861 ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
863#line 864 "d2_parser.cc"
867#line 208 "d2_parser.yy"
871 ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
872 ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
874#line 875 "d2_parser.cc"
878#line 214 "d2_parser.yy"
880 ctx.warnAboutExtraCommas(yystack_[0].location);
882#line 883 "d2_parser.cc"
886#line 219 "d2_parser.yy"
889 ctx.stack_.push_back(l);
891#line 892 "d2_parser.cc"
895#line 222 "d2_parser.yy"
899#line 900 "d2_parser.cc"
903#line 230 "d2_parser.yy"
906 ctx.stack_.back()->add(yystack_[0].value.as <
ElementPtr > ());
908#line 909 "d2_parser.cc"
912#line 234 "d2_parser.yy"
915 ctx.stack_.back()->add(yystack_[0].value.as <
ElementPtr > ());
917#line 918 "d2_parser.cc"
921#line 238 "d2_parser.yy"
923 ctx.warnAboutExtraCommas(yystack_[0].location);
925#line 926 "d2_parser.cc"
929#line 248 "d2_parser.yy"
931 const std::string& where = ctx.contextName();
932 const std::string& keyword = yystack_[1].value.as < std::string > ();
933 error(yystack_[1].location,
934 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
936#line 937 "d2_parser.cc"
940#line 257 "d2_parser.yy"
945 ctx.stack_.push_back(m);
947#line 948 "d2_parser.cc"
951#line 262 "d2_parser.yy"
957#line 958 "d2_parser.cc"
961#line 270 "d2_parser.yy"
963 ctx.unique(
"DhcpDdns", ctx.loc2pos(yystack_[0].location));
965 ctx.stack_.back()->set(
"DhcpDdns", m);
966 ctx.stack_.push_back(m);
967 ctx.enter(ctx.DHCPDDNS);
969#line 970 "d2_parser.cc"
973#line 276 "d2_parser.yy"
975 ctx.stack_.pop_back();
978#line 979 "d2_parser.cc"
982#line 283 "d2_parser.yy"
984 ctx.warnAboutExtraCommas(yystack_[0].location);
986#line 987 "d2_parser.cc"
990#line 287 "d2_parser.yy"
994 ctx.stack_.push_back(m);
996#line 997 "d2_parser.cc"
1000#line 291 "d2_parser.yy"
1004#line 1005 "d2_parser.cc"
1008#line 297 "d2_parser.yy"
1010 ctx.warnAboutExtraCommas(yystack_[0].location);
1012#line 1013 "d2_parser.cc"
1016#line 320 "d2_parser.yy"
1018 ctx.unique(
"ip-address", ctx.loc2pos(yystack_[0].location));
1019 ctx.enter(ctx.NO_KEYWORD);
1021#line 1022 "d2_parser.cc"
1025#line 323 "d2_parser.yy"
1028 ctx.stack_.back()->set(
"ip-address", s);
1031#line 1032 "d2_parser.cc"
1035#line 329 "d2_parser.yy"
1037 ctx.unique(
"port", ctx.loc2pos(yystack_[2].location));
1038 if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
1039 error(yystack_[0].location,
"port must be greater than zero but less than 65536");
1041 ElementPtr i(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1042 ctx.stack_.back()->set(
"port", i);
1044#line 1045 "d2_parser.cc"
1048#line 338 "d2_parser.yy"
1050 ctx.unique(
"dns-server-timeout", ctx.loc2pos(yystack_[2].location));
1051 if (yystack_[0].value.as < int64_t > () <= 0) {
1052 error(yystack_[0].location,
"dns-server-timeout must be greater than zero");
1054 ElementPtr i(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1055 ctx.stack_.back()->set(
"dns-server-timeout", i);
1058#line 1059 "d2_parser.cc"
1062#line 348 "d2_parser.yy"
1064 ctx.unique(
"ncr-protocol", ctx.loc2pos(yystack_[0].location));
1065 ctx.enter(ctx.NCR_PROTOCOL);
1067#line 1068 "d2_parser.cc"
1071#line 351 "d2_parser.yy"
1073 ctx.stack_.back()->set(
"ncr-protocol", yystack_[0].value.as <
ElementPtr > ());
1076#line 1077 "d2_parser.cc"
1080#line 357 "d2_parser.yy"
1082#line 1083 "d2_parser.cc"
1086#line 358 "d2_parser.yy"
1088#line 1089 "d2_parser.cc"
1092#line 361 "d2_parser.yy"
1094 ctx.unique(
"ncr-format", ctx.loc2pos(yystack_[0].location));
1095 ctx.enter(ctx.NCR_FORMAT);
1097#line 1098 "d2_parser.cc"
1101#line 364 "d2_parser.yy"
1104 ctx.stack_.back()->set(
"ncr-format", json);
1107#line 1108 "d2_parser.cc"
1111#line 370 "d2_parser.yy"
1113 ctx.enter(ctx.NO_KEYWORD);
1115#line 1116 "d2_parser.cc"
1119#line 372 "d2_parser.yy"
1128 if ((old->size() != 1) || !old->contains(
"comment")) {
1129 std::stringstream msg;
1130 msg <<
"duplicate user-context entries (previous at "
1131 << old->getPosition().str() <<
")";
1132 error(yystack_[3].location, msg.str());
1135 user_context->set(
"comment", old->get(
"comment"));
1139 parent->set(
"user-context", user_context);
1142#line 1143 "d2_parser.cc"
1146#line 395 "d2_parser.yy"
1148 ctx.enter(ctx.NO_KEYWORD);
1150#line 1151 "d2_parser.cc"
1154#line 397 "d2_parser.yy"
1158 ElementPtr comment(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1159 user_context->set(
"comment", comment);
1165 if (old->contains(
"comment")) {
1166 std::stringstream msg;
1167 msg <<
"duplicate user-context/comment entries (previous at "
1168 << old->getPosition().str() <<
")";
1169 error(yystack_[3].location, msg.str());
1172 merge(user_context, old);
1176 parent->set(
"user-context", user_context);
1179#line 1180 "d2_parser.cc"
1183#line 422 "d2_parser.yy"
1185 ctx.unique(
"forward-ddns", ctx.loc2pos(yystack_[0].location));
1187 ctx.stack_.back()->set(
"forward-ddns", m);
1188 ctx.stack_.push_back(m);
1189 ctx.enter(ctx.FORWARD_DDNS);
1191#line 1192 "d2_parser.cc"
1195#line 428 "d2_parser.yy"
1197 ctx.stack_.pop_back();
1200#line 1201 "d2_parser.cc"
1204#line 433 "d2_parser.yy"
1206 ctx.unique(
"reverse-ddns", ctx.loc2pos(yystack_[0].location));
1208 ctx.stack_.back()->set(
"reverse-ddns", m);
1209 ctx.stack_.push_back(m);
1210 ctx.enter(ctx.REVERSE_DDNS);
1212#line 1213 "d2_parser.cc"
1216#line 439 "d2_parser.yy"
1218 ctx.stack_.pop_back();
1221#line 1222 "d2_parser.cc"
1225#line 450 "d2_parser.yy"
1227 ctx.warnAboutExtraCommas(yystack_[0].location);
1229#line 1230 "d2_parser.cc"
1233#line 461 "d2_parser.yy"
1235 ctx.unique(
"ddns-domains", ctx.loc2pos(yystack_[0].location));
1237 ctx.stack_.back()->set(
"ddns-domains", l);
1238 ctx.stack_.push_back(l);
1239 ctx.enter(ctx.DDNS_DOMAINS);
1241#line 1242 "d2_parser.cc"
1245#line 467 "d2_parser.yy"
1247 ctx.stack_.pop_back();
1250#line 1251 "d2_parser.cc"
1254#line 472 "d2_parser.yy"
1257 ctx.stack_.push_back(l);
1259#line 1260 "d2_parser.cc"
1263#line 475 "d2_parser.yy"
1267#line 1268 "d2_parser.cc"
1271#line 485 "d2_parser.yy"
1273 ctx.warnAboutExtraCommas(yystack_[0].location);
1275#line 1276 "d2_parser.cc"
1279#line 490 "d2_parser.yy"
1282 ctx.stack_.back()->add(m);
1283 ctx.stack_.push_back(m);
1285#line 1286 "d2_parser.cc"
1289#line 494 "d2_parser.yy"
1291 ctx.stack_.pop_back();
1293#line 1294 "d2_parser.cc"
1297#line 498 "d2_parser.yy"
1300 ctx.stack_.push_back(m);
1302#line 1303 "d2_parser.cc"
1306#line 501 "d2_parser.yy"
1310#line 1311 "d2_parser.cc"
1314#line 507 "d2_parser.yy"
1316 ctx.warnAboutExtraCommas(yystack_[0].location);
1318#line 1319 "d2_parser.cc"
1322#line 521 "d2_parser.yy"
1324 ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
1325 ctx.enter(ctx.NO_KEYWORD);
1327#line 1328 "d2_parser.cc"
1331#line 524 "d2_parser.yy"
1333 if (yystack_[0].value.as < std::string > () ==
"") {
1334 error(yystack_[1].location,
"Ddns domain name cannot be blank");
1336 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1338 ctx.stack_.back()->set(
"name",
name);
1341#line 1342 "d2_parser.cc"
1345#line 534 "d2_parser.yy"
1347 ctx.unique(
"key-name", ctx.loc2pos(yystack_[0].location));
1348 ctx.enter(ctx.NO_KEYWORD);
1350#line 1351 "d2_parser.cc"
1354#line 537 "d2_parser.yy"
1356 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1358 ctx.stack_.back()->set(
"key-name",
name);
1361#line 1362 "d2_parser.cc"
1365#line 547 "d2_parser.yy"
1367 ctx.unique(
"dns-servers", ctx.loc2pos(yystack_[0].location));
1369 ctx.stack_.back()->set(
"dns-servers", l);
1370 ctx.stack_.push_back(l);
1371 ctx.enter(ctx.DNS_SERVERS);
1373#line 1374 "d2_parser.cc"
1377#line 553 "d2_parser.yy"
1379 ctx.stack_.pop_back();
1382#line 1383 "d2_parser.cc"
1386#line 558 "d2_parser.yy"
1389 ctx.stack_.push_back(l);
1391#line 1392 "d2_parser.cc"
1395#line 561 "d2_parser.yy"
1399#line 1400 "d2_parser.cc"
1403#line 567 "d2_parser.yy"
1405 ctx.warnAboutExtraCommas(yystack_[0].location);
1407#line 1408 "d2_parser.cc"
1411#line 572 "d2_parser.yy"
1414 ctx.stack_.back()->add(m);
1415 ctx.stack_.push_back(m);
1417#line 1418 "d2_parser.cc"
1421#line 576 "d2_parser.yy"
1423 ctx.stack_.pop_back();
1425#line 1426 "d2_parser.cc"
1429#line 580 "d2_parser.yy"
1432 ctx.stack_.push_back(m);
1434#line 1435 "d2_parser.cc"
1438#line 583 "d2_parser.yy"
1442#line 1443 "d2_parser.cc"
1446#line 589 "d2_parser.yy"
1448 ctx.warnAboutExtraCommas(yystack_[0].location);
1450#line 1451 "d2_parser.cc"
1454#line 603 "d2_parser.yy"
1456 ctx.unique(
"hostname", ctx.loc2pos(yystack_[0].location));
1457 ctx.enter(ctx.NO_KEYWORD);
1459#line 1460 "d2_parser.cc"
1463#line 606 "d2_parser.yy"
1465 if (yystack_[0].value.as < std::string > () !=
"") {
1466 error(yystack_[1].location,
"hostname is not yet supported");
1468 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1470 ctx.stack_.back()->set(
"hostname",
name);
1473#line 1474 "d2_parser.cc"
1477#line 616 "d2_parser.yy"
1479 ctx.unique(
"ip-address", ctx.loc2pos(yystack_[0].location));
1480 ctx.enter(ctx.NO_KEYWORD);
1482#line 1483 "d2_parser.cc"
1486#line 619 "d2_parser.yy"
1489 ctx.stack_.back()->set(
"ip-address", s);
1492#line 1493 "d2_parser.cc"
1496#line 625 "d2_parser.yy"
1498 ctx.unique(
"port", ctx.loc2pos(yystack_[2].location));
1499 if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
1500 error(yystack_[0].location,
"port must be greater than zero but less than 65536");
1502 ElementPtr i(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1503 ctx.stack_.back()->set(
"port", i);
1505#line 1506 "d2_parser.cc"
1509#line 640 "d2_parser.yy"
1511 ctx.unique(
"tsig-keys", ctx.loc2pos(yystack_[0].location));
1513 ctx.stack_.back()->set(
"tsig-keys", l);
1514 ctx.stack_.push_back(l);
1515 ctx.enter(ctx.TSIG_KEYS);
1517#line 1518 "d2_parser.cc"
1521#line 646 "d2_parser.yy"
1523 ctx.stack_.pop_back();
1526#line 1527 "d2_parser.cc"
1530#line 651 "d2_parser.yy"
1533 ctx.stack_.push_back(l);
1535#line 1536 "d2_parser.cc"
1539#line 654 "d2_parser.yy"
1543#line 1544 "d2_parser.cc"
1547#line 664 "d2_parser.yy"
1549 ctx.warnAboutExtraCommas(yystack_[0].location);
1551#line 1552 "d2_parser.cc"
1555#line 669 "d2_parser.yy"
1558 ctx.stack_.back()->add(m);
1559 ctx.stack_.push_back(m);
1561#line 1562 "d2_parser.cc"
1565#line 673 "d2_parser.yy"
1567 ctx.stack_.pop_back();
1569#line 1570 "d2_parser.cc"
1573#line 677 "d2_parser.yy"
1577 ctx.stack_.push_back(m);
1579#line 1580 "d2_parser.cc"
1583#line 681 "d2_parser.yy"
1587#line 1588 "d2_parser.cc"
1591#line 688 "d2_parser.yy"
1593 ctx.warnAboutExtraCommas(yystack_[0].location);
1595#line 1596 "d2_parser.cc"
1599#line 703 "d2_parser.yy"
1601 ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
1602 ctx.enter(ctx.NO_KEYWORD);
1604#line 1605 "d2_parser.cc"
1608#line 706 "d2_parser.yy"
1610 if (yystack_[0].value.as < std::string > () ==
"") {
1611 error(yystack_[1].location,
"TSIG key name cannot be blank");
1613 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1615 ctx.stack_.back()->set(
"name",
name);
1618#line 1619 "d2_parser.cc"
1622#line 716 "d2_parser.yy"
1624 ctx.unique(
"algorithm", ctx.loc2pos(yystack_[0].location));
1625 ctx.enter(ctx.NO_KEYWORD);
1627#line 1628 "d2_parser.cc"
1631#line 719 "d2_parser.yy"
1633 if (yystack_[0].value.as < std::string > () ==
"") {
1634 error(yystack_[1].location,
"TSIG key algorithm cannot be blank");
1636 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1637 ctx.stack_.back()->set(
"algorithm", elem);
1640#line 1641 "d2_parser.cc"
1644#line 728 "d2_parser.yy"
1646 ctx.unique(
"digest-bits", ctx.loc2pos(yystack_[2].location));
1647 if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0 && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
1648 error(yystack_[0].location,
"TSIG key digest-bits must either be zero or a positive, multiple of eight");
1650 ElementPtr elem(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1651 ctx.stack_.back()->set(
"digest-bits", elem);
1653#line 1654 "d2_parser.cc"
1657#line 737 "d2_parser.yy"
1659 ctx.unique(
"secret", ctx.loc2pos(yystack_[0].location));
1660 ctx.unique(
"secret-file", ctx.loc2pos(yystack_[0].location));
1661 ctx.enter(ctx.NO_KEYWORD);
1663#line 1664 "d2_parser.cc"
1667#line 741 "d2_parser.yy"
1669 if (yystack_[0].value.as < std::string > () ==
"") {
1670 error(yystack_[1].location,
"TSIG key secret cannot be blank");
1672 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1673 ctx.stack_.back()->set(
"secret", elem);
1676#line 1677 "d2_parser.cc"
1680#line 750 "d2_parser.yy"
1682 ctx.unique(
"secret", ctx.loc2pos(yystack_[0].location));
1683 ctx.unique(
"secret-file", ctx.loc2pos(yystack_[0].location));
1684 ctx.enter(ctx.NO_KEYWORD);
1686#line 1687 "d2_parser.cc"
1690#line 754 "d2_parser.yy"
1692 if (yystack_[0].value.as < std::string > () ==
"") {
1693 error(yystack_[1].location,
"TSIG key secret file name cannot be blank");
1695 ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1696 ctx.stack_.back()->set(
"secret-file", elem);
1699#line 1700 "d2_parser.cc"
1703#line 768 "d2_parser.yy"
1705 ctx.unique(
"control-socket", ctx.loc2pos(yystack_[0].location));
1706 ctx.unique(
"control-sockets", ctx.loc2pos(yystack_[0].location));
1708 ctx.stack_.back()->set(
"control-socket", m);
1709 ctx.stack_.push_back(m);
1710 ctx.enter(ctx.CONTROL_SOCKET);
1712#line 1713 "d2_parser.cc"
1716#line 775 "d2_parser.yy"
1718 ctx.stack_.pop_back();
1721#line 1722 "d2_parser.cc"
1725#line 780 "d2_parser.yy"
1727 ctx.unique(
"control-sockets", ctx.loc2pos(yystack_[0].location));
1728 ctx.unique(
"control-socket", ctx.loc2pos(yystack_[0].location));
1730 ctx.stack_.back()->set(
"control-sockets", l);
1731 ctx.stack_.push_back(l);
1732 ctx.enter(ctx.CONTROL_SOCKET);
1734#line 1735 "d2_parser.cc"
1738#line 787 "d2_parser.yy"
1740 ctx.stack_.pop_back();
1743#line 1744 "d2_parser.cc"
1747#line 798 "d2_parser.yy"
1749 ctx.warnAboutExtraCommas(yystack_[0].location);
1751#line 1752 "d2_parser.cc"
1755#line 803 "d2_parser.yy"
1758 ctx.stack_.back()->add(m);
1759 ctx.stack_.push_back(m);
1761#line 1762 "d2_parser.cc"
1765#line 807 "d2_parser.yy"
1767 ctx.stack_.pop_back();
1769#line 1770 "d2_parser.cc"
1773#line 813 "d2_parser.yy"
1775 ctx.warnAboutExtraCommas(yystack_[0].location);
1777#line 1778 "d2_parser.cc"
1781#line 832 "d2_parser.yy"
1783 ctx.unique(
"socket-type", ctx.loc2pos(yystack_[0].location));
1784 ctx.enter(ctx.CONTROL_SOCKET_TYPE);
1786#line 1787 "d2_parser.cc"
1790#line 835 "d2_parser.yy"
1792 ctx.stack_.back()->set(
"socket-type", yystack_[0].value.as <
ElementPtr > ());
1795#line 1796 "d2_parser.cc"
1799#line 841 "d2_parser.yy"
1801#line 1802 "d2_parser.cc"
1805#line 842 "d2_parser.yy"
1807#line 1808 "d2_parser.cc"
1811#line 843 "d2_parser.yy"
1813#line 1814 "d2_parser.cc"
1817#line 846 "d2_parser.yy"
1819 ctx.unique(
"socket-name", ctx.loc2pos(yystack_[0].location));
1820 ctx.unique(
"socket-address", ctx.loc2pos(yystack_[0].location));
1821 ctx.enter(ctx.NO_KEYWORD);
1823#line 1824 "d2_parser.cc"
1827#line 850 "d2_parser.yy"
1830 ctx.stack_.back()->set(
"socket-name",
name);
1833#line 1834 "d2_parser.cc"
1837#line 856 "d2_parser.yy"
1839 ctx.unique(
"socket-address", ctx.loc2pos(yystack_[0].location));
1840 ctx.unique(
"socket-name", ctx.loc2pos(yystack_[0].location));
1841 ctx.enter(ctx.NO_KEYWORD);
1843#line 1844 "d2_parser.cc"
1847#line 860 "d2_parser.yy"
1849 ElementPtr address(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1850 ctx.stack_.back()->set(
"socket-address", address);
1853#line 1854 "d2_parser.cc"
1857#line 866 "d2_parser.yy"
1859 ctx.unique(
"socket-port", ctx.loc2pos(yystack_[2].location));
1860 ElementPtr port(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1861 ctx.stack_.back()->set(
"socket-port", port);
1863#line 1864 "d2_parser.cc"
1867#line 872 "d2_parser.yy"
1869 ctx.unique(
"trust-anchor", ctx.loc2pos(yystack_[0].location));
1870 ctx.enter(ctx.NO_KEYWORD);
1872#line 1873 "d2_parser.cc"
1876#line 875 "d2_parser.yy"
1879 ctx.stack_.back()->set(
"trust-anchor", ca);
1882#line 1883 "d2_parser.cc"
1886#line 881 "d2_parser.yy"
1888 ctx.unique(
"cert-file", ctx.loc2pos(yystack_[0].location));
1889 ctx.enter(ctx.NO_KEYWORD);
1891#line 1892 "d2_parser.cc"
1895#line 884 "d2_parser.yy"
1897 ElementPtr cert(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1898 ctx.stack_.back()->set(
"cert-file", cert);
1901#line 1902 "d2_parser.cc"
1905#line 890 "d2_parser.yy"
1907 ctx.unique(
"key-file", ctx.loc2pos(yystack_[0].location));
1908 ctx.enter(ctx.NO_KEYWORD);
1910#line 1911 "d2_parser.cc"
1914#line 893 "d2_parser.yy"
1916 ElementPtr key(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1917 ctx.stack_.back()->set(
"key-file", key);
1920#line 1921 "d2_parser.cc"
1924#line 899 "d2_parser.yy"
1926 ctx.unique(
"cert-required", ctx.loc2pos(yystack_[2].location));
1927 ElementPtr req(
new BoolElement(yystack_[0].value.as <
bool > (), ctx.loc2pos(yystack_[0].location)));
1928 ctx.stack_.back()->set(
"cert-required", req);
1930#line 1931 "d2_parser.cc"
1934#line 907 "d2_parser.yy"
1936 ctx.unique(
"authentication", ctx.loc2pos(yystack_[0].location));
1938 ctx.stack_.back()->set(
"authentication", m);
1939 ctx.stack_.push_back(m);
1940 ctx.enter(ctx.AUTHENTICATION);
1942#line 1943 "d2_parser.cc"
1946#line 913 "d2_parser.yy"
1949 ctx.require(
"type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
1950 ctx.stack_.pop_back();
1953#line 1954 "d2_parser.cc"
1957#line 922 "d2_parser.yy"
1959 ctx.warnAboutExtraCommas(yystack_[0].location);
1961#line 1962 "d2_parser.cc"
1965#line 936 "d2_parser.yy"
1967 ctx.unique(
"type", ctx.loc2pos(yystack_[0].location));
1968 ctx.enter(ctx.AUTH_TYPE);
1970#line 1971 "d2_parser.cc"
1974#line 939 "d2_parser.yy"
1976 ctx.stack_.back()->set(
"type", yystack_[0].value.as <
ElementPtr > ());
1979#line 1980 "d2_parser.cc"
1983#line 944 "d2_parser.yy"
1985#line 1986 "d2_parser.cc"
1989#line 947 "d2_parser.yy"
1991 ctx.unique(
"realm", ctx.loc2pos(yystack_[0].location));
1992 ctx.enter(ctx.NO_KEYWORD);
1994#line 1995 "d2_parser.cc"
1998#line 950 "d2_parser.yy"
2000 ElementPtr realm(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2001 ctx.stack_.back()->set(
"realm", realm);
2004#line 2005 "d2_parser.cc"
2008#line 956 "d2_parser.yy"
2010 ctx.unique(
"directory", ctx.loc2pos(yystack_[0].location));
2011 ctx.enter(ctx.NO_KEYWORD);
2013#line 2014 "d2_parser.cc"
2017#line 959 "d2_parser.yy"
2019 ElementPtr directory(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2020 ctx.stack_.back()->set(
"directory", directory);
2023#line 2024 "d2_parser.cc"
2027#line 965 "d2_parser.yy"
2029 ctx.unique(
"clients", ctx.loc2pos(yystack_[0].location));
2031 ctx.stack_.back()->set(
"clients", l);
2032 ctx.stack_.push_back(l);
2033 ctx.enter(ctx.CLIENTS);
2035#line 2036 "d2_parser.cc"
2039#line 971 "d2_parser.yy"
2041 ctx.stack_.pop_back();
2044#line 2045 "d2_parser.cc"
2048#line 982 "d2_parser.yy"
2050 ctx.warnAboutExtraCommas(yystack_[0].location);
2052#line 2053 "d2_parser.cc"
2056#line 987 "d2_parser.yy"
2059 ctx.stack_.back()->add(m);
2060 ctx.stack_.push_back(m);
2062#line 2063 "d2_parser.cc"
2066#line 991 "d2_parser.yy"
2068 ctx.stack_.pop_back();
2070#line 2071 "d2_parser.cc"
2074#line 997 "d2_parser.yy"
2076 ctx.warnAboutExtraCommas(yystack_[0].location);
2078#line 2079 "d2_parser.cc"
2082#line 1011 "d2_parser.yy"
2084 ctx.unique(
"user", ctx.loc2pos(yystack_[0].location));
2085 ctx.enter(ctx.NO_KEYWORD);
2087#line 2088 "d2_parser.cc"
2091#line 1014 "d2_parser.yy"
2093 ElementPtr user(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2094 ctx.stack_.back()->set(
"user", user);
2097#line 2098 "d2_parser.cc"
2101#line 1020 "d2_parser.yy"
2103 ctx.unique(
"user-file", ctx.loc2pos(yystack_[0].location));
2104 ctx.enter(ctx.NO_KEYWORD);
2106#line 2107 "d2_parser.cc"
2110#line 1023 "d2_parser.yy"
2112 ElementPtr user(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2113 ctx.stack_.back()->set(
"user-file", user);
2116#line 2117 "d2_parser.cc"
2120#line 1029 "d2_parser.yy"
2122 ctx.unique(
"password", ctx.loc2pos(yystack_[0].location));
2123 ctx.enter(ctx.NO_KEYWORD);
2125#line 2126 "d2_parser.cc"
2129#line 1032 "d2_parser.yy"
2131 ElementPtr pwd(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2132 ctx.stack_.back()->set(
"password", pwd);
2135#line 2136 "d2_parser.cc"
2139#line 1038 "d2_parser.yy"
2141 ctx.unique(
"password-file", ctx.loc2pos(yystack_[0].location));
2142 ctx.enter(ctx.NO_KEYWORD);
2144#line 2145 "d2_parser.cc"
2148#line 1041 "d2_parser.yy"
2150 ElementPtr password(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2151 ctx.stack_.back()->set(
"password-file", password);
2154#line 2155 "d2_parser.cc"
2158#line 1049 "d2_parser.yy"
2160 ctx.unique(
"hooks-libraries", ctx.loc2pos(yystack_[0].location));
2162 ctx.stack_.back()->set(
"hooks-libraries", l);
2163 ctx.stack_.push_back(l);
2164 ctx.enter(ctx.HOOKS_LIBRARIES);
2166#line 2167 "d2_parser.cc"
2170#line 1055 "d2_parser.yy"
2172 ctx.stack_.pop_back();
2175#line 2176 "d2_parser.cc"
2179#line 1066 "d2_parser.yy"
2181 ctx.warnAboutExtraCommas(yystack_[0].location);
2183#line 2184 "d2_parser.cc"
2187#line 1071 "d2_parser.yy"
2190 ctx.stack_.back()->add(m);
2191 ctx.stack_.push_back(m);
2193#line 2194 "d2_parser.cc"
2197#line 1075 "d2_parser.yy"
2200 ctx.require(
"library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
2201 ctx.stack_.pop_back();
2203#line 2204 "d2_parser.cc"
2207#line 1081 "d2_parser.yy"
2211 ctx.stack_.push_back(m);
2213#line 2214 "d2_parser.cc"
2217#line 1085 "d2_parser.yy"
2220 ctx.require(
"library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
2223#line 2224 "d2_parser.cc"
2227#line 1093 "d2_parser.yy"
2229 ctx.warnAboutExtraCommas(yystack_[0].location);
2231#line 2232 "d2_parser.cc"
2235#line 1103 "d2_parser.yy"
2237 ctx.unique(
"library", ctx.loc2pos(yystack_[0].location));
2238 ctx.enter(ctx.NO_KEYWORD);
2240#line 2241 "d2_parser.cc"
2244#line 1106 "d2_parser.yy"
2246 ElementPtr lib(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2247 ctx.stack_.back()->set(
"library", lib);
2250#line 2251 "d2_parser.cc"
2254#line 1112 "d2_parser.yy"
2256 ctx.unique(
"parameters", ctx.loc2pos(yystack_[0].location));
2257 ctx.enter(ctx.NO_KEYWORD);
2259#line 2260 "d2_parser.cc"
2263#line 1115 "d2_parser.yy"
2265 ctx.stack_.back()->set(
"parameters", yystack_[0].value.as <
ElementPtr > ());
2268#line 2269 "d2_parser.cc"
2272#line 1122 "d2_parser.yy"
2274 ctx.unique(
"loggers", ctx.loc2pos(yystack_[0].location));
2276 ctx.stack_.back()->set(
"loggers", l);
2277 ctx.stack_.push_back(l);
2278 ctx.enter(ctx.LOGGERS);
2280#line 2281 "d2_parser.cc"
2284#line 1128 "d2_parser.yy"
2286 ctx.stack_.pop_back();
2289#line 2290 "d2_parser.cc"
2293#line 1137 "d2_parser.yy"
2295 ctx.warnAboutExtraCommas(yystack_[0].location);
2297#line 2298 "d2_parser.cc"
2301#line 1143 "d2_parser.yy"
2304 ctx.stack_.back()->add(l);
2305 ctx.stack_.push_back(l);
2307#line 2308 "d2_parser.cc"
2311#line 1147 "d2_parser.yy"
2313 ctx.stack_.pop_back();
2315#line 2316 "d2_parser.cc"
2319#line 1153 "d2_parser.yy"
2321 ctx.warnAboutExtraCommas(yystack_[0].location);
2323#line 2324 "d2_parser.cc"
2327#line 1167 "d2_parser.yy"
2329 ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
2330 ctx.enter(ctx.NO_KEYWORD);
2332#line 2333 "d2_parser.cc"
2336#line 1170 "d2_parser.yy"
2339 ctx.stack_.back()->set(
"name",
name);
2342#line 2343 "d2_parser.cc"
2346#line 1176 "d2_parser.yy"
2348 ctx.unique(
"debuglevel", ctx.loc2pos(yystack_[2].location));
2349 ElementPtr dl(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2350 ctx.stack_.back()->set(
"debuglevel", dl);
2352#line 2353 "d2_parser.cc"
2356#line 1182 "d2_parser.yy"
2358 ctx.unique(
"severity", ctx.loc2pos(yystack_[0].location));
2359 ctx.enter(ctx.NO_KEYWORD);
2361#line 2362 "d2_parser.cc"
2365#line 1185 "d2_parser.yy"
2367 ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2368 ctx.stack_.back()->set(
"severity", sev);
2371#line 2372 "d2_parser.cc"
2375#line 1191 "d2_parser.yy"
2377 ctx.unique(
"output-options", ctx.loc2pos(yystack_[0].location));
2379 ctx.stack_.back()->set(
"output-options", l);
2380 ctx.stack_.push_back(l);
2381 ctx.enter(ctx.OUTPUT_OPTIONS);
2383#line 2384 "d2_parser.cc"
2387#line 1197 "d2_parser.yy"
2389 ctx.stack_.pop_back();
2392#line 2393 "d2_parser.cc"
2396#line 1204 "d2_parser.yy"
2398 ctx.warnAboutExtraCommas(yystack_[0].location);
2400#line 2401 "d2_parser.cc"
2404#line 1209 "d2_parser.yy"
2407 ctx.stack_.back()->add(m);
2408 ctx.stack_.push_back(m);
2410#line 2411 "d2_parser.cc"
2414#line 1213 "d2_parser.yy"
2416 ctx.stack_.pop_back();
2418#line 2419 "d2_parser.cc"
2422#line 1219 "d2_parser.yy"
2424 ctx.warnAboutExtraCommas(yystack_[0].location);
2426#line 2427 "d2_parser.cc"
2430#line 1231 "d2_parser.yy"
2432 ctx.unique(
"output", ctx.loc2pos(yystack_[0].location));
2433 ctx.enter(ctx.NO_KEYWORD);
2435#line 2436 "d2_parser.cc"
2439#line 1234 "d2_parser.yy"
2441 ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2442 ctx.stack_.back()->set(
"output", sev);
2445#line 2446 "d2_parser.cc"
2449#line 1240 "d2_parser.yy"
2451 ctx.unique(
"flush", ctx.loc2pos(yystack_[2].location));
2452 ElementPtr flush(
new BoolElement(yystack_[0].value.as <
bool > (), ctx.loc2pos(yystack_[0].location)));
2453 ctx.stack_.back()->set(
"flush", flush);
2455#line 2456 "d2_parser.cc"
2459#line 1246 "d2_parser.yy"
2461 ctx.unique(
"maxsize", ctx.loc2pos(yystack_[2].location));
2462 ElementPtr maxsize(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2463 ctx.stack_.back()->set(
"maxsize", maxsize);
2465#line 2466 "d2_parser.cc"
2469#line 1252 "d2_parser.yy"
2471 ctx.unique(
"maxver", ctx.loc2pos(yystack_[2].location));
2472 ElementPtr maxver(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2473 ctx.stack_.back()->set(
"maxver", maxver);
2475#line 2476 "d2_parser.cc"
2479#line 1258 "d2_parser.yy"
2481 ctx.unique(
"pattern", ctx.loc2pos(yystack_[0].location));
2482 ctx.enter(ctx.NO_KEYWORD);
2484#line 2485 "d2_parser.cc"
2488#line 1261 "d2_parser.yy"
2490 ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2491 ctx.stack_.back()->set(
"pattern", sev);
2494#line 2495 "d2_parser.cc"
2498#line 2499 "d2_parser.cc"
2507 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
2517 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
2531 std::string msg = yysyntax_error_ (yyctx);
2537 if (yyerrstatus_ == 3)
2545 else if (!yyla.
empty ())
2547 yy_destroy_ (
"Error: discarding", yyla);
2581 yyn = yypact_[+yystack_[0].state];
2582 if (!yy_pact_value_is_default_ (yyn))
2585 if (0 <= yyn && yyn <= yylast_
2588 yyn = yytable_[yyn];
2595 if (yystack_.size () == 1)
2598 yyerror_range[1].
location = yystack_[0].location;
2599 yy_destroy_ (
"Error: popping", yystack_[0]);
2604 stack_symbol_type error_token;
2610 error_token.state = state_type (yyn);
2611 yypush_ (
"Shifting",
YY_MOVE (error_token));
2637 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
2643 while (1 < yystack_.size ())
2645 yy_destroy_ (
"Cleanup: popping", yystack_[0]);
2654 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack\n";
2658 yy_destroy_ (YY_NULLPTR, yyla);
2660 while (1 < yystack_.size ())
2662 yy_destroy_ (YY_NULLPTR, yystack_[0]);
2682 D2Parser::yytnamerr_ (
const char *yystr)
2687 char const *yyp = yystr;
2694 goto do_not_strip_quotes;
2698 goto do_not_strip_quotes;
2710 do_not_strip_quotes: ;
2719 return yytnamerr_ (yytname_[yysymbol]);
2726 : yyparser_ (yyparser)
2736 const int yyn = yypact_[+yyparser_.yystack_[0].state];
2737 if (!yy_pact_value_is_default_ (yyn))
2742 const int yyxbegin = yyn < 0 ? -yyn : 0;
2744 const int yychecklim = yylast_ - yyn + 1;
2746 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
2748 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
2752 else if (yycount == yyargn)
2759 if (yyarg && yycount == 0 && 0 < yyargn)
2770 D2Parser::yy_syntax_error_arguments_ (
const context& yyctx,
2801 yyarg[0] = yyctx.
token ();
2802 int yyn = yyctx.
expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2810 D2Parser::yysyntax_error_ (
const context& yyctx)
const
2813 enum { YYARGS_MAX = 5 };
2816 int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
2818 char const* yyformat = YY_NULLPTR;
2821#define YYCASE_(N, S) \
2827 YYCASE_ (1,
YY_(
"syntax error, unexpected %s"));
2828 YYCASE_ (2,
YY_(
"syntax error, unexpected %s, expecting %s"));
2829 YYCASE_ (3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
2830 YYCASE_ (4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
2831 YYCASE_ (5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2837 std::ptrdiff_t yyi = 0;
2838 for (
char const* yyp = yyformat; *yyp; ++yyp)
2839 if (yyp[0] ==
'%' && yyp[1] ==
's' && yyi < yycount)
2850 const short D2Parser::yypact_ninf_ = -215;
2852 const signed char D2Parser::yytable_ninf_ = -1;
2855 D2Parser::yypact_[] =
2857 99, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2858 -215, 33, 8, 0, 38, 42, 55, 73, 105, 96,
2859 107, 125, -215, -215, -215, -215, -215, -215, -215, -215,
2860 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2861 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2862 -215, -215, 8, 44, 129, 7, 47, 133, 141, 140,
2863 24, 142, -25, -215, 153, 160, 197, 194, 200, -215,
2864 22, -215, -215, 201, 202, -215, -215, -215, -215, -215,
2865 -215, -215, -215, -215, -215, -215, 203, -215, 39, -215,
2866 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2867 -215, -215, -215, -215, -215, 204, -215, -215, -215, -215,
2868 -215, -215, 43, -215, -215, -215, -215, -215, -215, -215,
2869 198, 206, -215, -215, -215, -215, -215, -215, -215, 65,
2870 -215, -215, -215, -215, -215, 207, 214, -215, -215, 216,
2871 -215, -215, -215, -215, -215, 71, -215, -215, -215, -215,
2872 -215, 58, -215, -215, -215, -215, 115, -215, -215, -215,
2873 -215, 8, 8, -215, 132, 217, -215, -215, 218, 139,
2874 144, 220, 221, 223, 224, 225, 226, 227, 228, 229,
2875 230, 231, -215, 7, -215, 232, 158, 234, 235, 236,
2876 47, -215, 47, -215, 133, 237, 238, 239, 141, -215,
2877 141, -215, 140, 240, 166, 242, 24, -215, 24, 142,
2878 -215, 243, 244, -34, -215, -215, -215, 245, 246, 172,
2879 -215, -215, 76, 233, 247, 179, 248, 249, 253, 252,
2880 255, 256, 257, -215, 189, -215, 190, 191, 192, -215,
2881 116, -215, 193, 258, 195, -215, 123, -215, 196, -215,
2882 199, -215, 130, -215, 205, 247, -215, 8, 7, -215,
2883 -215, -215, -215, -215, -215, -215, -215, -15, -15, 133,
2884 18, 259, 265, 268, -215, -215, -215, -215, -215, -215,
2885 142, -215, -215, -215, -215, -215, -215, -215, -215, 174,
2886 -215, -215, 175, -215, -215, -215, 176, 270, -215, -215,
2887 -215, 260, -215, -215, -215, -215, 261, -215, -215, -215,
2888 177, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2889 -215, -215, 272, 277, -215, -215, 275, 279, -215, -215,
2890 78, -215, 87, -215, 280, -15, -215, -215, -215, 281,
2891 282, 283, 173, 284, 285, 286, 287, 215, 18, -215,
2892 18, -215, 259, -25, -215, 265, 35, 268, -215, -215,
2893 293, -215, 162, 241, 250, -215, 292, 251, 254, 262,
2894 -215, -215, 178, -215, 184, -215, -215, -215, 298, -215,
2895 -215, -215, -215, 185, -215, -215, -215, -215, -215, -215,
2896 140, -215, -215, -215, -215, -215, -215, 63, -215, -215,
2897 -215, -215, -215, 299, 301, 264, 303, 35, -215, 302,
2898 -215, -215, -215, -215, -215, -215, -215, 186, -215, -215,
2899 -215, -215, -215, 266, 304, -215, 267, -215, -215, 306,
2900 307, 309, 310, 63, -215, -215, 308, -215, 273, 269,
2901 271, 312, -215, -215, 98, -215, -215, -215, -215, -215,
2902 311, 50, 308, -215, -215, 314, 318, -215, -215, 319,
2903 320, 321, -215, 187, -215, -215, -215, -215, -215, -215,
2904 -215, 80, -215, 311, 322, 274, 278, 288, 323, 50,
2905 -215, -215, -215, -215, -215, -215, -215, -215, 188, -215,
2906 -215, -215, -215, -215, -215, 276, -215, -215, -215, 290,
2907 -215, 326, 327, 329, 330, 80, -215, -215, -215, 291,
2908 294, 295, 296, -215, -215, -215, -215, -215
2912 D2Parser::yydefact_[] =
2914 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
2915 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2916 0, 0, 1, 38, 30, 26, 25, 22, 23, 24,
2917 29, 3, 27, 28, 46, 5, 52, 7, 160, 9,
2918 151, 11, 108, 13, 99, 15, 132, 17, 125, 19,
2919 280, 21, 40, 33, 0, 0, 0, 153, 0, 101,
2920 0, 0, 0, 42, 0, 41, 0, 0, 34, 48,
2921 0, 50, 72, 0, 0, 76, 80, 82, 84, 86,
2922 88, 149, 182, 184, 271, 292, 0, 71, 0, 54,
2923 57, 58, 59, 60, 61, 69, 70, 62, 63, 64,
2924 65, 66, 67, 68, 175, 0, 178, 180, 173, 172,
2925 170, 171, 0, 162, 165, 166, 167, 168, 169, 158,
2926 0, 154, 155, 121, 123, 119, 118, 116, 117, 0,
2927 110, 113, 114, 115, 106, 0, 102, 103, 146, 0,
2928 144, 143, 141, 142, 140, 0, 134, 137, 138, 139,
2929 130, 0, 127, 288, 290, 285, 0, 282, 286, 287,
2930 39, 44, 0, 31, 37, 0, 51, 47, 0, 0,
2931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2932 0, 0, 45, 56, 53, 0, 0, 0, 0, 0,
2933 164, 161, 0, 152, 157, 0, 0, 0, 112, 109,
2934 0, 100, 105, 0, 0, 0, 136, 133, 0, 129,
2935 126, 0, 0, 284, 281, 43, 35, 0, 0, 0,
2936 74, 75, 0, 0, 0, 0, 0, 0, 0, 0,
2937 0, 0, 0, 55, 0, 177, 0, 0, 0, 163,
2938 0, 156, 0, 0, 0, 111, 0, 104, 0, 148,
2939 0, 135, 0, 128, 0, 0, 283, 0, 0, 73,
2940 78, 79, 77, 81, 32, 83, 85, 90, 90, 153,
2941 0, 186, 273, 0, 176, 179, 181, 174, 159, 122,
2942 0, 120, 107, 147, 145, 131, 289, 291, 36, 0,
2943 97, 96, 0, 91, 92, 95, 0, 0, 208, 213,
2944 215, 0, 225, 218, 220, 222, 0, 207, 205, 206,
2945 0, 193, 196, 197, 198, 199, 201, 202, 203, 204,
2946 200, 191, 0, 187, 188, 278, 0, 274, 275, 297,
2947 0, 294, 0, 49, 0, 94, 87, 89, 150, 0,
2948 0, 0, 0, 0, 0, 0, 0, 0, 195, 183,
2949 0, 185, 190, 0, 272, 277, 0, 296, 293, 124,
2950 0, 93, 0, 0, 0, 217, 0, 0, 0, 0,
2951 224, 194, 0, 189, 0, 276, 309, 314, 0, 312,
2952 308, 306, 307, 0, 299, 302, 304, 305, 303, 295,
2953 101, 210, 211, 212, 209, 214, 216, 0, 219, 221,
2954 223, 192, 279, 0, 0, 0, 0, 301, 298, 0,
2955 237, 240, 242, 244, 236, 235, 234, 0, 227, 230,
2956 231, 232, 233, 0, 0, 311, 0, 300, 98, 0,
2957 0, 0, 0, 229, 226, 310, 0, 313, 0, 0,
2958 0, 0, 228, 319, 0, 316, 239, 238, 241, 243,
2959 246, 0, 318, 315, 251, 0, 247, 248, 329, 0,
2960 0, 0, 334, 0, 321, 324, 325, 326, 327, 328,
2961 317, 0, 245, 250, 0, 0, 0, 0, 0, 323,
2962 320, 263, 265, 267, 269, 262, 260, 261, 0, 253,
2963 256, 257, 258, 259, 249, 0, 331, 332, 333, 0,
2964 322, 0, 0, 0, 0, 255, 252, 330, 335, 0,
2965 0, 0, 0, 254, 264, 266, 268, 270
2969 D2Parser::yypgoto_[] =
2971 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2972 -215, -215, -41, -215, -214, -215, 67, -215, -215, -215,
2973 -215, -215, -215, -56, -215, -215, -215, -215, -215, -215,
2974 -215, 77, 154, -215, -215, -215, -215, -215, -215, -215,
2975 -215, -215, -55, -215, -44, -215, -215, -215, -215, -215,
2976 68, -215, 3, -215, -215, -215, -215, -42, -215, 137,
2977 -215, -215, -215, 146, 152, -215, -215, -51, -215, -215,
2978 -215, -215, -215, 79, 147, -215, -215, -215, 150, 155,
2979 -215, -215, -215, -215, -215, -215, -215, -215, -215, 91,
2980 -215, 168, -215, -215, -215, 183, 180, -215, -215, -215,
2981 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2982 -215, -215, 12, -215, 15, 23, -215, -215, -215, -215,
2983 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2984 -215, -215, -215, -215, -67, -215, -215, -215, -215, -215,
2985 -215, -215, -215, -215, -215, -215, -97, -215, -215, -126,
2986 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2987 -215, -215, 25, -215, -215, -215, 28, 169, -215, -215,
2988 -215, -215, -215, -215, -215, 26, -215, -215, -23, -215,
2989 -215, -215, -215, -215, -215, -215, -215, -66, -215, -215,
2990 -94, -215, -215, -215, -215, -215, -215, -215
2994 D2Parser::yydefgoto_[] =
2996 0, 11, 12, 13, 14, 15, 16, 17, 18, 19,
2997 20, 21, 30, 31, 32, 53, 265, 67, 68, 33,
2998 52, 64, 65, 87, 35, 54, 70, 165, 71, 37,
2999 55, 88, 89, 90, 168, 91, 92, 93, 171, 262,
3000 94, 172, 95, 173, 96, 174, 97, 175, 98, 176,
3001 292, 293, 294, 295, 334, 45, 59, 135, 136, 137,
3002 200, 43, 58, 129, 130, 131, 197, 132, 195, 133,
3003 196, 49, 61, 151, 152, 208, 47, 60, 145, 146,
3004 147, 205, 148, 203, 149, 99, 177, 41, 57, 120,
3005 121, 122, 192, 39, 56, 112, 113, 114, 189, 115,
3006 185, 116, 117, 187, 118, 188, 100, 178, 101, 179,
3007 322, 323, 324, 350, 310, 311, 312, 339, 394, 313,
3008 340, 314, 341, 315, 316, 344, 317, 345, 318, 346,
3009 319, 320, 343, 417, 418, 419, 429, 447, 420, 430,
3010 421, 431, 422, 432, 455, 456, 457, 471, 488, 489,
3011 490, 501, 491, 502, 492, 503, 493, 504, 102, 180,
3012 326, 327, 328, 353, 51, 62, 156, 157, 158, 211,
3013 159, 212, 103, 181, 330, 331, 356, 383, 384, 385,
3014 403, 386, 387, 406, 388, 404, 444, 445, 451, 463,
3015 464, 465, 474, 466, 467, 468, 469, 478
3019 D2Parser::yytable_[] =
3021 109, 110, 126, 127, 141, 142, 155, 34, 290, 144,
3022 264, 63, 111, 23, 128, 24, 143, 25, 72, 73,
3023 74, 75, 153, 154, 76, 166, 77, 78, 79, 80,
3024 167, 153, 154, 22, 81, 138, 139, 77, 78, 82,
3025 83, 264, 183, 77, 78, 36, 190, 184, 123, 38,
3026 140, 191, 298, 86, 77, 78, 299, 300, 301, 302,
3027 40, 209, 84, 86, 210, 85, 77, 78, 198, 303,
3028 304, 305, 306, 199, 206, 104, 105, 106, 107, 207,
3029 42, 357, 77, 78, 358, 86, 26, 27, 28, 29,
3030 209, 260, 261, 359, 376, 377, 86, 378, 379, 77,
3031 78, 452, 86, 46, 453, 410, 108, 411, 412, 413,
3032 44, 458, 48, 86, 459, 460, 461, 462, 213, 190,
3033 215, 216, 66, 214, 278, 86, 198, 481, 482, 483,
3034 484, 282, 50, 206, 109, 110, 109, 110, 285, 69,
3035 119, 86, 126, 127, 126, 127, 111, 134, 111, 150,
3036 141, 142, 141, 142, 128, 144, 128, 144, 86, 160,
3037 77, 78, 143, 161, 143, 123, 124, 1, 2, 3,
3038 4, 5, 6, 7, 8, 9, 10, 183, 335, 335,
3039 348, 348, 333, 336, 337, 349, 401, 213, 407, 433,
3040 479, 505, 402, 408, 434, 480, 506, 391, 392, 393,
3041 125, 162, 163, 164, 193, 169, 170, 182, 186, 194,
3042 217, 291, 291, 201, 307, 308, 288, 202, 220, 86,
3043 204, 218, 219, 221, 222, 223, 309, 224, 225, 226,
3044 227, 228, 229, 230, 231, 232, 234, 235, 236, 237,
3045 238, 242, 243, 244, 248, 249, 250, 254, 255, 257,
3046 259, 263, 365, 258, 24, 267, 268, 266, 269, 270,
3047 271, 272, 273, 280, 342, 347, 321, 274, 275, 276,
3048 277, 279, 325, 281, 283, 329, 338, 284, 351, 291,
3049 352, 354, 355, 286, 360, 362, 363, 364, 366, 367,
3050 368, 369, 307, 308, 307, 308, 370, 155, 390, 397,
3051 380, 381, 405, 423, 309, 424, 309, 426, 428, 436,
3052 438, 439, 382, 440, 441, 443, 446, 450, 454, 395,
3053 472, 473, 287, 475, 476, 477, 495, 499, 396, 398,
3054 509, 510, 399, 511, 512, 289, 296, 233, 361, 247,
3055 400, 414, 415, 425, 435, 437, 246, 448, 409, 449,
3056 245, 380, 381, 416, 507, 496, 253, 497, 252, 332,
3057 297, 251, 241, 382, 373, 372, 442, 498, 508, 514,
3058 239, 371, 515, 516, 517, 240, 494, 414, 415, 513,
3059 375, 374, 256, 389, 427, 500, 470, 0, 0, 416,
3060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3062 0, 0, 0, 0, 0, 485, 486, 0, 0, 0,
3063 0, 0, 0, 0, 0, 0, 0, 487, 0, 0,
3064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3065 0, 0, 0, 0, 0, 0, 0, 0, 0, 485,
3066 486, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3071 D2Parser::yycheck_[] =
3073 56, 56, 58, 58, 60, 60, 62, 7, 23, 60,
3074 224, 52, 56, 5, 58, 7, 60, 9, 11, 12,
3075 13, 14, 56, 57, 17, 3, 19, 20, 21, 22,
3076 8, 56, 57, 0, 27, 11, 12, 19, 20, 32,
3077 33, 255, 3, 19, 20, 7, 3, 8, 24, 7,
3078 26, 8, 34, 78, 19, 20, 38, 39, 40, 41,
3079 5, 3, 55, 78, 6, 58, 19, 20, 3, 51,
3080 52, 53, 54, 8, 3, 28, 29, 30, 31, 8,
3081 7, 3, 19, 20, 6, 78, 78, 79, 80, 81,
3082 3, 15, 16, 6, 59, 60, 78, 62, 63, 19,
3083 20, 3, 78, 7, 6, 42, 59, 44, 45, 46,
3084 5, 61, 5, 78, 64, 65, 66, 67, 3, 3,
3085 161, 162, 78, 8, 8, 78, 3, 47, 48, 49,
3086 50, 8, 7, 3, 190, 190, 192, 192, 8, 10,
3087 7, 78, 198, 198, 200, 200, 190, 7, 192, 7,
3088 206, 206, 208, 208, 198, 206, 200, 208, 78, 6,
3089 19, 20, 206, 3, 208, 24, 25, 68, 69, 70,
3090 71, 72, 73, 74, 75, 76, 77, 3, 3, 3,
3091 3, 3, 8, 8, 8, 8, 8, 3, 3, 3,
3092 3, 3, 8, 8, 8, 8, 8, 35, 36, 37,
3093 59, 4, 8, 3, 6, 4, 4, 4, 4, 3,
3094 78, 267, 268, 6, 270, 270, 257, 3, 79, 78,
3095 4, 4, 4, 79, 4, 4, 270, 4, 4, 4,
3096 4, 4, 4, 4, 4, 4, 4, 79, 4, 4,
3097 4, 4, 4, 4, 4, 79, 4, 4, 4, 4,
3098 78, 18, 79, 7, 7, 7, 7, 78, 5, 7,
3099 5, 5, 5, 5, 4, 4, 7, 78, 78, 78,
3100 78, 78, 7, 78, 78, 7, 6, 78, 6, 335,
3101 3, 6, 3, 78, 4, 4, 4, 4, 4, 4,
3102 4, 4, 348, 348, 350, 350, 81, 353, 5, 7,
3103 356, 356, 4, 4, 348, 4, 350, 4, 6, 5,
3104 4, 4, 356, 4, 4, 7, 43, 5, 7, 78,
3105 6, 3, 255, 4, 4, 4, 4, 4, 78, 78,
3106 4, 4, 78, 4, 4, 258, 268, 183, 335, 202,
3107 78, 397, 397, 79, 78, 78, 200, 78, 390, 78,
3108 198, 407, 407, 397, 78, 81, 209, 79, 208, 280,
3109 269, 206, 194, 407, 352, 350, 433, 79, 78, 78,
3110 190, 348, 78, 78, 78, 192, 473, 433, 433, 505,
3111 355, 353, 213, 357, 407, 479, 452, -1, -1, 433,
3112 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3114 -1, -1, -1, -1, -1, 471, 471, -1, -1, -1,
3115 -1, -1, -1, -1, -1, -1, -1, 471, -1, -1,
3116 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3117 -1, -1, -1, -1, -1, -1, -1, -1, -1, 505,
3118 505, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3123 D2Parser::yystos_[] =
3125 0, 68, 69, 70, 71, 72, 73, 74, 75, 76,
3126 77, 83, 84, 85, 86, 87, 88, 89, 90, 91,
3127 92, 93, 0, 5, 7, 9, 78, 79, 80, 81,
3128 94, 95, 96, 101, 7, 106, 7, 111, 7, 175,
3129 5, 169, 7, 143, 5, 137, 7, 158, 5, 153,
3130 7, 246, 102, 97, 107, 112, 176, 170, 144, 138,
3131 159, 154, 247, 94, 103, 104, 78, 99, 100, 10,
3132 108, 110, 11, 12, 13, 14, 17, 19, 20, 21,
3133 22, 27, 32, 33, 55, 58, 78, 105, 113, 114,
3134 115, 117, 118, 119, 122, 124, 126, 128, 130, 167,
3135 188, 190, 240, 254, 28, 29, 30, 31, 59, 105,
3136 124, 126, 177, 178, 179, 181, 183, 184, 186, 7,
3137 171, 172, 173, 24, 25, 59, 105, 124, 126, 145,
3138 146, 147, 149, 151, 7, 139, 140, 141, 11, 12,
3139 26, 105, 124, 126, 149, 160, 161, 162, 164, 166,
3140 7, 155, 156, 56, 57, 105, 248, 249, 250, 252,
3141 6, 3, 4, 8, 3, 109, 3, 8, 116, 4,
3142 4, 120, 123, 125, 127, 129, 131, 168, 189, 191,
3143 241, 255, 4, 3, 8, 182, 4, 185, 187, 180,
3144 3, 8, 174, 6, 3, 150, 152, 148, 3, 8,
3145 142, 6, 3, 165, 4, 163, 3, 8, 157, 3,
3146 6, 251, 253, 3, 8, 94, 94, 78, 4, 4,
3147 79, 79, 4, 4, 4, 4, 4, 4, 4, 4,
3148 4, 4, 4, 114, 4, 79, 4, 4, 4, 178,
3149 177, 173, 4, 4, 4, 146, 145, 141, 4, 79,
3150 4, 161, 160, 156, 4, 4, 249, 4, 7, 78,
3151 15, 16, 121, 18, 96, 98, 78, 7, 7, 5,
3152 7, 5, 5, 5, 78, 78, 78, 78, 8, 78,
3153 5, 78, 8, 78, 78, 8, 78, 98, 94, 113,
3154 23, 105, 132, 133, 134, 135, 132, 171, 34, 38,
3155 39, 40, 41, 51, 52, 53, 54, 105, 124, 126,
3156 196, 197, 198, 201, 203, 205, 206, 208, 210, 212,
3157 213, 7, 192, 193, 194, 7, 242, 243, 244, 7,
3158 256, 257, 155, 8, 136, 3, 8, 8, 6, 199,
3159 202, 204, 4, 214, 207, 209, 211, 4, 3, 8,
3160 195, 6, 3, 245, 6, 3, 258, 3, 6, 6,
3161 4, 134, 4, 4, 4, 79, 4, 4, 4, 4,
3162 81, 197, 196, 194, 248, 244, 59, 60, 62, 63,
3163 105, 124, 126, 259, 260, 261, 263, 264, 266, 257,
3164 5, 35, 36, 37, 200, 78, 78, 7, 78, 78,
3165 78, 8, 8, 262, 267, 4, 265, 3, 8, 139,
3166 42, 44, 45, 46, 105, 124, 126, 215, 216, 217,
3167 220, 222, 224, 4, 4, 79, 4, 260, 6, 218,
3168 221, 223, 225, 3, 8, 78, 5, 78, 4, 4,
3169 4, 4, 216, 7, 268, 269, 43, 219, 78, 78,
3170 5, 270, 3, 6, 7, 226, 227, 228, 61, 64,
3171 65, 66, 67, 271, 272, 273, 275, 276, 277, 278,
3172 269, 229, 6, 3, 274, 4, 4, 4, 279, 3,
3173 8, 47, 48, 49, 50, 105, 124, 126, 230, 231,
3174 232, 234, 236, 238, 228, 4, 81, 79, 79, 4,
3175 272, 233, 235, 237, 239, 3, 8, 78, 78, 4,
3176 4, 4, 4, 231, 78, 78, 78, 78
3182 0, 82, 84, 83, 85, 83, 86, 83, 87, 83,
3183 88, 83, 89, 83, 90, 83, 91, 83, 92, 83,
3184 93, 83, 94, 94, 94, 94, 94, 94, 94, 95,
3185 97, 96, 98, 99, 99, 100, 100, 100, 102, 101,
3186 103, 103, 104, 104, 104, 105, 107, 106, 109, 108,
3187 108, 110, 112, 111, 113, 113, 113, 114, 114, 114,
3188 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
3189 114, 114, 116, 115, 117, 118, 120, 119, 121, 121,
3190 123, 122, 125, 124, 127, 126, 129, 128, 131, 130,
3191 132, 132, 133, 133, 133, 134, 134, 136, 135, 138,
3192 137, 139, 139, 140, 140, 140, 142, 141, 144, 143,
3193 145, 145, 145, 146, 146, 146, 146, 146, 146, 148,
3194 147, 150, 149, 152, 151, 154, 153, 155, 155, 155,
3195 157, 156, 159, 158, 160, 160, 160, 161, 161, 161,
3196 161, 161, 161, 161, 163, 162, 165, 164, 166, 168,
3197 167, 170, 169, 171, 171, 172, 172, 172, 174, 173,
3198 176, 175, 177, 177, 177, 178, 178, 178, 178, 178,
3199 178, 178, 178, 180, 179, 182, 181, 183, 185, 184,
3200 187, 186, 189, 188, 191, 190, 192, 192, 193, 193,
3201 193, 195, 194, 196, 196, 196, 197, 197, 197, 197,
3202 197, 197, 197, 197, 197, 197, 197, 197, 199, 198,
3203 200, 200, 200, 202, 201, 204, 203, 205, 207, 206,
3204 209, 208, 211, 210, 212, 214, 213, 215, 215, 215,
3205 216, 216, 216, 216, 216, 216, 216, 218, 217, 219,
3206 221, 220, 223, 222, 225, 224, 226, 226, 227, 227,
3207 227, 229, 228, 230, 230, 230, 231, 231, 231, 231,
3208 231, 231, 231, 233, 232, 235, 234, 237, 236, 239,
3209 238, 241, 240, 242, 242, 243, 243, 243, 245, 244,
3210 247, 246, 248, 248, 248, 248, 249, 249, 251, 250,
3211 253, 252, 255, 254, 256, 256, 256, 258, 257, 259,
3212 259, 259, 260, 260, 260, 260, 260, 260, 260, 262,
3213 261, 263, 265, 264, 267, 266, 268, 268, 268, 270,
3214 269, 271, 271, 271, 272, 272, 272, 272, 272, 274,
3215 273, 275, 276, 277, 279, 278
3221 0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
3222 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
3223 0, 3, 1, 1, 1, 1, 1, 1, 1, 1,
3224 0, 4, 1, 0, 1, 3, 5, 2, 0, 4,
3225 0, 1, 1, 3, 2, 2, 0, 4, 0, 6,
3226 1, 2, 0, 4, 1, 3, 2, 1, 1, 1,
3227 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3228 1, 1, 0, 4, 3, 3, 0, 4, 1, 1,
3229 0, 4, 0, 4, 0, 4, 0, 6, 0, 6,
3230 0, 1, 1, 3, 2, 1, 1, 0, 6, 0,
3231 4, 0, 1, 1, 3, 2, 0, 4, 0, 4,
3232 1, 3, 2, 1, 1, 1, 1, 1, 1, 0,
3233 4, 0, 4, 0, 6, 0, 4, 1, 3, 2,
3234 0, 4, 0, 4, 1, 3, 2, 1, 1, 1,
3235 1, 1, 1, 1, 0, 4, 0, 4, 3, 0,
3236 6, 0, 4, 0, 1, 1, 3, 2, 0, 4,
3237 0, 4, 1, 3, 2, 1, 1, 1, 1, 1,
3238 1, 1, 1, 0, 4, 0, 4, 3, 0, 4,
3239 0, 4, 0, 6, 0, 6, 0, 1, 1, 3,
3240 2, 0, 4, 1, 3, 2, 1, 1, 1, 1,
3241 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
3242 1, 1, 1, 0, 4, 0, 4, 3, 0, 4,
3243 0, 4, 0, 4, 3, 0, 6, 1, 3, 2,
3244 1, 1, 1, 1, 1, 1, 1, 0, 4, 1,
3245 0, 4, 0, 4, 0, 6, 0, 1, 1, 3,
3246 2, 0, 4, 1, 3, 2, 1, 1, 1, 1,
3247 1, 1, 1, 0, 4, 0, 4, 0, 4, 0,
3248 4, 0, 6, 0, 1, 1, 3, 2, 0, 4,
3249 0, 4, 1, 3, 2, 1, 1, 1, 0, 4,
3250 0, 4, 0, 6, 1, 3, 2, 0, 4, 1,
3251 3, 2, 1, 1, 1, 1, 1, 1, 1, 0,
3252 4, 3, 0, 4, 0, 6, 1, 3, 2, 0,
3253 4, 1, 3, 2, 1, 1, 1, 1, 1, 0,
3258#if D2_PARSER_DEBUG || 1
3262 const D2Parser::yytname_[] =
3264 "\"end of file\"",
"error",
"\"invalid token\"",
"\",\"",
"\":\"",
3265 "\"[\"",
"\"]\"",
"\"{\"",
"\"}\"",
"\"null\"",
"\"DhcpDdns\"",
3266 "\"ip-address\"",
"\"port\"",
"\"dns-server-timeout\"",
3267 "\"ncr-protocol\"",
"\"UDP\"",
"\"TCP\"",
"\"ncr-format\"",
"\"JSON\"",
3268 "\"user-context\"",
"\"comment\"",
"\"forward-ddns\"",
3269 "\"reverse-ddns\"",
"\"ddns-domains\"",
"\"key-name\"",
3270 "\"dns-servers\"",
"\"hostname\"",
"\"tsig-keys\"",
"\"algorithm\"",
3271 "\"digest-bits\"",
"\"secret\"",
"\"secret-file\"",
"\"control-socket\"",
3272 "\"control-sockets\"",
"\"socket-type\"",
"\"unix\"",
"\"http\"",
3273 "\"https\"",
"\"socket-name\"",
"\"socket-address\"",
"\"socket-port\"",
3274 "\"authentication\"",
"\"type\"",
"\"basic\"",
"\"realm\"",
3275 "\"directory\"",
"\"clients\"",
"\"user\"",
"\"user-file\"",
3276 "\"password\"",
"\"password-file\"",
"\"trust-anchor\"",
"\"cert-file\"",
3277 "\"key-file\"",
"\"cert-required\"",
"\"hooks-libraries\"",
3278 "\"library\"",
"\"parameters\"",
"\"loggers\"",
"\"name\"",
3279 "\"output-options\"",
"\"output\"",
"\"debuglevel\"",
"\"severity\"",
3280 "\"flush\"",
"\"maxsize\"",
"\"maxver\"",
"\"pattern\"",
"TOPLEVEL_JSON",
3281 "TOPLEVEL_DHCPDDNS",
"SUB_DHCPDDNS",
"SUB_TSIG_KEY",
"SUB_TSIG_KEYS",
3282 "SUB_DDNS_DOMAIN",
"SUB_DDNS_DOMAINS",
"SUB_DNS_SERVER",
3283 "SUB_DNS_SERVERS",
"SUB_HOOKS_LIBRARY",
"\"constant string\"",
3284 "\"integer\"",
"\"floating point\"",
"\"boolean\"",
"$accept",
"start",
3285 "$@1",
"$@2",
"$@3",
"$@4",
"$@5",
"$@6",
"$@7",
"$@8",
"$@9",
"$@10",
3286 "value",
"sub_json",
"map2",
"$@11",
"map_value",
"map_content",
3287 "not_empty_map",
"list_generic",
"$@12",
"list_content",
3288 "not_empty_list",
"unknown_map_entry",
"syntax_map",
"$@13",
3289 "global_object",
"$@14",
"global_object_comma",
"sub_dhcpddns",
"$@15",
3290 "dhcpddns_params",
"dhcpddns_param",
"ip_address",
"$@16",
"port",
3291 "dns_server_timeout",
"ncr_protocol",
"$@17",
"ncr_protocol_value",
3292 "ncr_format",
"$@18",
"user_context",
"$@19",
"comment",
"$@20",
3293 "forward_ddns",
"$@21",
"reverse_ddns",
"$@22",
"ddns_mgr_params",
3294 "not_empty_ddns_mgr_params",
"ddns_mgr_param",
"ddns_domains",
"$@23",
3295 "sub_ddns_domains",
"$@24",
"ddns_domain_list",
3296 "not_empty_ddns_domain_list",
"ddns_domain",
"$@25",
"sub_ddns_domain",
3297 "$@26",
"ddns_domain_params",
"ddns_domain_param",
"ddns_domain_name",
3298 "$@27",
"ddns_key_name",
"$@28",
"dns_servers",
"$@29",
3299 "sub_dns_servers",
"$@30",
"dns_server_list",
"dns_server",
"$@31",
3300 "sub_dns_server",
"$@32",
"dns_server_params",
"dns_server_param",
3301 "dns_server_hostname",
"$@33",
"dns_server_ip_address",
"$@34",
3302 "dns_server_port",
"tsig_keys",
"$@35",
"sub_tsig_keys",
"$@36",
3303 "tsig_keys_list",
"not_empty_tsig_keys_list",
"tsig_key",
"$@37",
3304 "sub_tsig_key",
"$@38",
"tsig_key_params",
"tsig_key_param",
3305 "tsig_key_name",
"$@39",
"tsig_key_algorithm",
"$@40",
3306 "tsig_key_digest_bits",
"tsig_key_secret",
"$@41",
3307 "tsig_key_secret_file",
"$@42",
"control_socket",
"$@43",
3308 "control_sockets",
"$@44",
"control_socket_list",
3309 "not_empty_control_socket_list",
"control_socket_entry",
"$@45",
3310 "control_socket_params",
"control_socket_param",
"control_socket_type",
3311 "$@46",
"control_socket_type_value",
"control_socket_name",
"$@47",
3312 "control_socket_address",
"$@48",
"control_socket_port",
"trust_anchor",
3313 "$@49",
"cert_file",
"$@50",
"key_file",
"$@51",
"cert_required",
3314 "authentication",
"$@52",
"auth_params",
"auth_param",
"auth_type",
3315 "$@53",
"auth_type_value",
"realm",
"$@54",
"directory",
"$@55",
3316 "clients",
"$@56",
"clients_list",
"not_empty_clients_list",
3317 "basic_auth",
"$@57",
"clients_params",
"clients_param",
"user",
"$@58",
3318 "user_file",
"$@59",
"password",
"$@60",
"password_file",
"$@61",
3319 "hooks_libraries",
"$@62",
"hooks_libraries_list",
3320 "not_empty_hooks_libraries_list",
"hooks_library",
"$@63",
3321 "sub_hooks_library",
"$@64",
"hooks_params",
"hooks_param",
"library",
3322 "$@65",
"parameters",
"$@66",
"loggers",
"$@67",
"loggers_entries",
3323 "logger_entry",
"$@68",
"logger_params",
"logger_param",
"name",
"$@69",
3324 "debuglevel",
"severity",
"$@70",
"output_options_list",
"$@71",
3325 "output_options_list_content",
"output_entry",
"$@72",
3326 "output_params_list",
"output_params",
"output",
"$@73",
"flush",
3327 "maxsize",
"maxver",
"pattern",
"$@74", YY_NULLPTR
3334 D2Parser::yyrline_[] =
3336 0, 154, 154, 154, 155, 155, 156, 156, 157, 157,
3337 158, 158, 159, 159, 160, 160, 161, 161, 162, 162,
3338 163, 163, 171, 172, 173, 174, 175, 176, 177, 180,
3339 185, 185, 196, 199, 200, 203, 208, 214, 219, 219,
3340 226, 227, 230, 234, 238, 248, 257, 257, 270, 270,
3341 280, 283, 287, 287, 295, 296, 297, 303, 304, 305,
3342 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
3343 316, 317, 320, 320, 329, 338, 348, 348, 357, 358,
3344 361, 361, 370, 370, 395, 395, 422, 422, 433, 433,
3345 444, 445, 448, 449, 450, 455, 456, 461, 461, 472,
3346 472, 479, 480, 483, 484, 485, 490, 490, 498, 498,
3347 505, 506, 507, 512, 513, 514, 515, 516, 517, 521,
3348 521, 534, 534, 547, 547, 558, 558, 565, 566, 567,
3349 572, 572, 580, 580, 587, 588, 589, 594, 595, 596,
3350 597, 598, 599, 600, 603, 603, 616, 616, 625, 640,
3351 640, 651, 651, 658, 659, 662, 663, 664, 669, 669,
3352 677, 677, 686, 687, 688, 693, 694, 695, 696, 697,
3353 698, 699, 700, 703, 703, 716, 716, 728, 737, 737,
3354 750, 750, 768, 768, 780, 780, 792, 793, 796, 797,
3355 798, 803, 803, 811, 812, 813, 818, 819, 820, 821,
3356 822, 823, 824, 825, 826, 827, 828, 829, 832, 832,
3357 841, 842, 843, 846, 846, 856, 856, 866, 872, 872,
3358 881, 881, 890, 890, 899, 907, 907, 920, 921, 922,
3359 927, 928, 929, 930, 931, 932, 933, 936, 936, 944,
3360 947, 947, 956, 956, 965, 965, 976, 977, 980, 981,
3361 982, 987, 987, 995, 996, 997, 1002, 1003, 1004, 1005,
3362 1006, 1007, 1008, 1011, 1011, 1020, 1020, 1029, 1029, 1038,
3363 1038, 1049, 1049, 1060, 1061, 1064, 1065, 1066, 1071, 1071,
3364 1081, 1081, 1091, 1092, 1093, 1096, 1099, 1100, 1103, 1103,
3365 1112, 1112, 1122, 1122, 1135, 1136, 1137, 1143, 1143, 1151,
3366 1152, 1153, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1167,
3367 1167, 1176, 1182, 1182, 1191, 1191, 1202, 1203, 1204, 1209,
3368 1209, 1217, 1218, 1219, 1224, 1225, 1226, 1227, 1228, 1231,
3369 1231, 1240, 1246, 1252, 1258, 1258
3373 D2Parser::yy_stack_print_ ()
const
3375 *yycdebug_ <<
"Stack now";
3376 for (stack_type::const_iterator
3377 i = yystack_.begin (),
3378 i_end = yystack_.end ();
3380 *yycdebug_ <<
' ' << int (i->state);
3385 D2Parser::yy_reduce_print_ (
int yyrule)
const
3387 int yylno = yyrline_[yyrule];
3388 int yynrhs = yyr2_[yyrule];
3390 *yycdebug_ <<
"Reducing stack by rule " << yyrule - 1
3391 <<
" (line " << yylno <<
"):\n";
3393 for (
int yyi = 0; yyi < yynrhs; yyi++)
3395 yystack_[(yynrhs) - (yyi + 1)]);
3400#line 14 "d2_parser.yy"
3402#line 3403 "d2_parser.cc"
3404#line 1267 "d2_parser.yy"
3409 const std::string& what)
3411 ctx.error(loc, what);
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define YY_REDUCE_PRINT(Rule)
#define YY_SYMBOL_PRINT(Title, Symbol)
#define YY_CAST(Type, Val)
#define YY_MOVE_REF(Type)
Evaluation context, an interface to the expression evaluation.
context(const D2Parser &yyparser, const symbol_type &yyla)
const symbol_type & lookahead() const YY_NOEXCEPT
symbol_kind_type token() const YY_NOEXCEPT
int expected_tokens(symbol_kind_type yyarg[], int yyargn) const
Put in YYARG at most YYARGN of the expected tokens, and return the number of tokens stored in YYARG.
T & emplace()
Instantiate an empty T in here.
T & as() YY_NOEXCEPT
Accessor to a built T.
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
D2Parser(isc::d2::D2ParserContext &ctx_yyarg)
Build a parser object.
location location_type
Symbol locations.
static const symbol_kind_type YYNTOKENS
The number of tokens.
virtual int parse()
Parse.
static std::string symbol_name(symbol_kind_type yysymbol)
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
Notes: IntElement type is changed to int64_t.
Define the isc::d2::parser class.
void merge(ElementPtr element, ConstElementPtr other)
Merges the data from other into element.
boost::shared_ptr< const Element > ConstElementPtr
boost::shared_ptr< Element > ElementPtr
Defines the logger used by the top-level component of kea-lfc.
value_type value
The semantic value.
bool empty() const YY_NOEXCEPT
Whether empty.
location_type location
The location.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
void clear() YY_NOEXCEPT
Destroy contents, and record that is empty.
symbol_kind_type kind() const YY_NOEXCEPT
The (internal) type number (corresponding to type).
symbol_kind_type kind_
The symbol kind.
@ S_control_socket_type_value
"External" symbols: returned by the scanner.
Syntax errors thrown from user actions.
~syntax_error() YY_NOEXCEPT YY_NOTHROW