39#define yylex d2_parser_lex
47#line 34 "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 ())
224 value.YY_MOVE_OR_COPY<
bool > (
YY_MOVE (that.value));
228 value.YY_MOVE_OR_COPY<
double > (
YY_MOVE (that.value));
232 value.YY_MOVE_OR_COPY< int64_t > (
YY_MOVE (that.value));
236 value.YY_MOVE_OR_COPY< std::string > (
YY_MOVE (that.value));
243#if 201103L <= YY_CPLUSPLUS
245 that.state = empty_state;
249 D2Parser::stack_symbol_type::stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) that)
250 : super_type (s,
YY_MOVE (that.location))
252 switch (that.kind ())
261 value.move<
bool > (
YY_MOVE (that.value));
265 value.move<
double > (
YY_MOVE (that.value));
269 value.move< int64_t > (
YY_MOVE (that.value));
273 value.move< std::string > (
YY_MOVE (that.value));
284#if YY_CPLUSPLUS < 201103L
285 D2Parser::stack_symbol_type&
286 D2Parser::stack_symbol_type::operator= (
const stack_symbol_type& that)
289 switch (that.kind ())
298 value.copy<
bool > (that.value);
302 value.copy<
double > (that.value);
306 value.copy< int64_t > (that.value);
310 value.copy< std::string > (that.value);
317 location = that.location;
321 D2Parser::stack_symbol_type&
322 D2Parser::stack_symbol_type::operator= (stack_symbol_type& that)
325 switch (that.kind ())
334 value.move<
bool > (that.value);
338 value.move<
double > (that.value);
342 value.move< int64_t > (that.value);
346 value.move< std::string > (that.value);
353 location = that.location;
355 that.state = empty_state;
360 template <
typename Base>
362 D2Parser::yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const
369 template <
typename Base>
371 D2Parser::yy_print_ (std::ostream& yyo,
const basic_symbol<Base>& yysym)
const
373 std::ostream& yyoutput = yyo;
376 yyo <<
"empty symbol";
380 yyo << (yykind <
YYNTOKENS ?
"token" :
"nterm")
381 <<
' ' << yysym.name () <<
" ("
382 << yysym.location <<
": ";
386#line 122 "d2_parser.yy"
387 { yyoutput << yysym.value.template as < std::string > (); }
388#line 389 "d2_parser.cc"
392#line 122 "d2_parser.yy"
393 { yyoutput << yysym.value.template as < int64_t > (); }
394#line 395 "d2_parser.cc"
398#line 122 "d2_parser.yy"
399 { yyoutput << yysym.value.template as < double > (); }
400#line 401 "d2_parser.cc"
404#line 122 "d2_parser.yy"
405 { yyoutput << yysym.value.template as < bool > (); }
406#line 407 "d2_parser.cc"
410#line 122 "d2_parser.yy"
411 { yyoutput << yysym.value.template as < ElementPtr > (); }
412#line 413 "d2_parser.cc"
416#line 122 "d2_parser.yy"
417 { yyoutput << yysym.value.template as < ElementPtr > (); }
418#line 419 "d2_parser.cc"
422#line 122 "d2_parser.yy"
423 { yyoutput << yysym.value.template as < ElementPtr > (); }
424#line 425 "d2_parser.cc"
436 D2Parser::yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym)
444 D2Parser::yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym)
446#if 201103L <= YY_CPLUSPLUS
447 yypush_ (m, stack_symbol_type (s, std::move (sym)));
449 stack_symbol_type ss (s, sym);
462 D2Parser::debug_stream ()
const
468 D2Parser::set_debug_stream (std::ostream& o)
474 D2Parser::debug_level_type
475 D2Parser::debug_level ()
const
481 D2Parser::set_debug_level (debug_level_type l)
488 D2Parser::yy_lr_goto_state_ (state_type yystate,
int yysym)
490 int yyr = yypgoto_[yysym -
YYNTOKENS] + yystate;
491 if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
492 return yytable_[yyr];
498 D2Parser::yy_pact_value_is_default_ (
int yyvalue)
YY_NOEXCEPT
500 return yyvalue == yypact_ninf_;
504 D2Parser::yy_table_value_is_error_ (
int yyvalue)
YY_NOEXCEPT
506 return yyvalue == yytable_ninf_;
524 int yyerrstatus_ = 0;
530 stack_symbol_type yyerror_range[3];
547 yypush_ (YY_NULLPTR, 0,
YY_MOVE (yyla));
553 YYCDEBUG <<
"Entering state " << int (yystack_[0].state) <<
'\n';
557 if (yystack_[0].state == yyfinal_)
568 yyn = yypact_[+yystack_[0].state];
569 if (yy_pact_value_is_default_ (yyn))
581 yyla.
move (yylookahead);
586 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
607 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
616 if (yy_table_value_is_error_ (yyn))
627 yypush_ (
"Shifting", state_type (yyn),
YY_MOVE (yyla));
635 yyn = yydefact_[+yystack_[0].state];
647 stack_symbol_type yylhs;
648 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
661 yylhs.value.emplace<
bool > ();
665 yylhs.value.emplace<
double > ();
669 yylhs.value.emplace< int64_t > ();
673 yylhs.value.emplace< std::string > ();
685 yyerror_range[1].location = yylhs.location;
697#line 131 "d2_parser.yy"
699#line 700 "d2_parser.cc"
703#line 132 "d2_parser.yy"
705#line 706 "d2_parser.cc"
709#line 133 "d2_parser.yy"
711#line 712 "d2_parser.cc"
715#line 134 "d2_parser.yy"
717#line 718 "d2_parser.cc"
721#line 135 "d2_parser.yy"
723#line 724 "d2_parser.cc"
727#line 136 "d2_parser.yy"
729#line 730 "d2_parser.cc"
733#line 137 "d2_parser.yy"
735#line 736 "d2_parser.cc"
739#line 138 "d2_parser.yy"
741#line 742 "d2_parser.cc"
745#line 139 "d2_parser.yy"
747#line 748 "d2_parser.cc"
751#line 140 "d2_parser.yy"
753#line 754 "d2_parser.cc"
757#line 148 "d2_parser.yy"
759#line 760 "d2_parser.cc"
763#line 149 "d2_parser.yy"
765#line 766 "d2_parser.cc"
769#line 150 "d2_parser.yy"
771#line 772 "d2_parser.cc"
775#line 151 "d2_parser.yy"
777#line 778 "d2_parser.cc"
781#line 152 "d2_parser.yy"
783#line 784 "d2_parser.cc"
787#line 153 "d2_parser.yy"
789#line 790 "d2_parser.cc"
793#line 154 "d2_parser.yy"
795#line 796 "d2_parser.cc"
799#line 157 "d2_parser.yy"
804#line 805 "d2_parser.cc"
808#line 162 "d2_parser.yy"
815#line 816 "d2_parser.cc"
819#line 167 "d2_parser.yy"
825#line 826 "d2_parser.cc"
829#line 173 "d2_parser.yy"
831#line 832 "d2_parser.cc"
835#line 180 "d2_parser.yy"
838 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
839 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
841#line 842 "d2_parser.cc"
845#line 185 "d2_parser.yy"
849 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
850 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
852#line 853 "d2_parser.cc"
856#line 191 "d2_parser.yy"
860#line 861 "d2_parser.cc"
864#line 196 "d2_parser.yy"
869#line 870 "d2_parser.cc"
873#line 199 "d2_parser.yy"
877#line 878 "d2_parser.cc"
881#line 207 "d2_parser.yy"
886#line 887 "d2_parser.cc"
890#line 211 "d2_parser.yy"
895#line 896 "d2_parser.cc"
899#line 215 "d2_parser.yy"
903#line 904 "d2_parser.cc"
907#line 225 "d2_parser.yy"
910 const std::string& keyword = yystack_[1].value.as < std::string > ();
911 error(yystack_[1].location,
912 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
914#line 915 "d2_parser.cc"
918#line 234 "d2_parser.yy"
925#line 926 "d2_parser.cc"
929#line 239 "d2_parser.yy"
935#line 936 "d2_parser.cc"
939#line 247 "d2_parser.yy"
943 ctx.
stack_.back()->set(
"DhcpDdns", m);
947#line 948 "d2_parser.cc"
951#line 253 "d2_parser.yy"
956#line 957 "d2_parser.cc"
960#line 260 "d2_parser.yy"
964#line 965 "d2_parser.cc"
968#line 264 "d2_parser.yy"
974#line 975 "d2_parser.cc"
978#line 268 "d2_parser.yy"
982#line 983 "d2_parser.cc"
986#line 274 "d2_parser.yy"
990#line 991 "d2_parser.cc"
994#line 296 "d2_parser.yy"
999#line 1000 "d2_parser.cc"
1003#line 299 "d2_parser.yy"
1006 ctx.
stack_.back()->set(
"ip-address", s);
1009#line 1010 "d2_parser.cc"
1013#line 305 "d2_parser.yy"
1016 if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
1017 error(yystack_[0].location,
"port must be greater than zero but less than 65536");
1020 ctx.
stack_.back()->set(
"port", i);
1022#line 1023 "d2_parser.cc"
1026#line 314 "d2_parser.yy"
1028 ctx.
unique(
"dns-server-timeout", ctx.
loc2pos(yystack_[2].location));
1029 if (yystack_[0].value.as < int64_t > () <= 0) {
1030 error(yystack_[0].location,
"dns-server-timeout must be greater than zero");
1033 ctx.
stack_.back()->set(
"dns-server-timeout", i);
1036#line 1037 "d2_parser.cc"
1040#line 324 "d2_parser.yy"
1042 ctx.
unique(
"ncr-protocol", ctx.
loc2pos(yystack_[0].location));
1045#line 1046 "d2_parser.cc"
1049#line 327 "d2_parser.yy"
1051 ctx.
stack_.back()->set(
"ncr-protocol", yystack_[0].value.as <
ElementPtr > ());
1054#line 1055 "d2_parser.cc"
1058#line 333 "d2_parser.yy"
1060#line 1061 "d2_parser.cc"
1064#line 334 "d2_parser.yy"
1066#line 1067 "d2_parser.cc"
1070#line 337 "d2_parser.yy"
1072 ctx.
unique(
"ncr-format", ctx.
loc2pos(yystack_[0].location));
1075#line 1076 "d2_parser.cc"
1079#line 340 "d2_parser.yy"
1082 ctx.
stack_.back()->set(
"ncr-format", json);
1085#line 1086 "d2_parser.cc"
1089#line 346 "d2_parser.yy"
1093#line 1094 "d2_parser.cc"
1097#line 348 "d2_parser.yy"
1106 if ((old->size() != 1) || !old->contains(
"comment")) {
1107 std::stringstream msg;
1108 msg <<
"duplicate user-context entries (previous at "
1109 << old->getPosition().str() <<
")";
1110 error(yystack_[3].location, msg.str());
1113 user_context->set(
"comment", old->get(
"comment"));
1117 parent->set(
"user-context", user_context);
1120#line 1121 "d2_parser.cc"
1124#line 371 "d2_parser.yy"
1128#line 1129 "d2_parser.cc"
1132#line 373 "d2_parser.yy"
1137 user_context->set(
"comment", comment);
1143 if (old->contains(
"comment")) {
1144 std::stringstream msg;
1145 msg <<
"duplicate user-context/comment entries (previous at "
1146 << old->getPosition().str() <<
")";
1147 error(yystack_[3].location, msg.str());
1150 merge(user_context, old);
1154 parent->set(
"user-context", user_context);
1157#line 1158 "d2_parser.cc"
1161#line 398 "d2_parser.yy"
1163 ctx.
unique(
"forward-ddns", ctx.
loc2pos(yystack_[0].location));
1165 ctx.
stack_.back()->set(
"forward-ddns", m);
1169#line 1170 "d2_parser.cc"
1173#line 404 "d2_parser.yy"
1178#line 1179 "d2_parser.cc"
1182#line 409 "d2_parser.yy"
1184 ctx.
unique(
"reverse-ddns", ctx.
loc2pos(yystack_[0].location));
1186 ctx.
stack_.back()->set(
"reverse-ddns", m);
1190#line 1191 "d2_parser.cc"
1194#line 415 "d2_parser.yy"
1199#line 1200 "d2_parser.cc"
1203#line 426 "d2_parser.yy"
1207#line 1208 "d2_parser.cc"
1211#line 437 "d2_parser.yy"
1213 ctx.
unique(
"ddns-domains", ctx.
loc2pos(yystack_[0].location));
1215 ctx.
stack_.back()->set(
"ddns-domains", l);
1219#line 1220 "d2_parser.cc"
1223#line 443 "d2_parser.yy"
1228#line 1229 "d2_parser.cc"
1232#line 448 "d2_parser.yy"
1237#line 1238 "d2_parser.cc"
1241#line 451 "d2_parser.yy"
1245#line 1246 "d2_parser.cc"
1249#line 461 "d2_parser.yy"
1253#line 1254 "d2_parser.cc"
1257#line 466 "d2_parser.yy"
1260 ctx.
stack_.back()->add(m);
1263#line 1264 "d2_parser.cc"
1267#line 470 "d2_parser.yy"
1271#line 1272 "d2_parser.cc"
1275#line 474 "d2_parser.yy"
1280#line 1281 "d2_parser.cc"
1284#line 477 "d2_parser.yy"
1288#line 1289 "d2_parser.cc"
1292#line 483 "d2_parser.yy"
1296#line 1297 "d2_parser.cc"
1300#line 497 "d2_parser.yy"
1305#line 1306 "d2_parser.cc"
1309#line 500 "d2_parser.yy"
1311 if (yystack_[0].value.as < std::string > () ==
"") {
1312 error(yystack_[1].location,
"Ddns domain name cannot be blank");
1316 ctx.
stack_.back()->set(
"name", name);
1319#line 1320 "d2_parser.cc"
1323#line 510 "d2_parser.yy"
1328#line 1329 "d2_parser.cc"
1332#line 513 "d2_parser.yy"
1336 ctx.
stack_.back()->set(
"key-name", name);
1339#line 1340 "d2_parser.cc"
1343#line 523 "d2_parser.yy"
1345 ctx.
unique(
"dns-servers", ctx.
loc2pos(yystack_[0].location));
1347 ctx.
stack_.back()->set(
"dns-servers", l);
1351#line 1352 "d2_parser.cc"
1355#line 529 "d2_parser.yy"
1360#line 1361 "d2_parser.cc"
1364#line 534 "d2_parser.yy"
1369#line 1370 "d2_parser.cc"
1373#line 537 "d2_parser.yy"
1377#line 1378 "d2_parser.cc"
1381#line 543 "d2_parser.yy"
1385#line 1386 "d2_parser.cc"
1389#line 548 "d2_parser.yy"
1392 ctx.
stack_.back()->add(m);
1395#line 1396 "d2_parser.cc"
1399#line 552 "d2_parser.yy"
1403#line 1404 "d2_parser.cc"
1407#line 556 "d2_parser.yy"
1412#line 1413 "d2_parser.cc"
1416#line 559 "d2_parser.yy"
1420#line 1421 "d2_parser.cc"
1424#line 565 "d2_parser.yy"
1428#line 1429 "d2_parser.cc"
1432#line 579 "d2_parser.yy"
1437#line 1438 "d2_parser.cc"
1441#line 582 "d2_parser.yy"
1443 if (yystack_[0].value.as < std::string > () !=
"") {
1444 error(yystack_[1].location,
"hostname is not yet supported");
1448 ctx.
stack_.back()->set(
"hostname", name);
1451#line 1452 "d2_parser.cc"
1455#line 592 "d2_parser.yy"
1457 ctx.
unique(
"ip-address", ctx.
loc2pos(yystack_[0].location));
1460#line 1461 "d2_parser.cc"
1464#line 595 "d2_parser.yy"
1467 ctx.
stack_.back()->set(
"ip-address", s);
1470#line 1471 "d2_parser.cc"
1474#line 601 "d2_parser.yy"
1477 if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
1478 error(yystack_[0].location,
"port must be greater than zero but less than 65536");
1481 ctx.
stack_.back()->set(
"port", i);
1483#line 1484 "d2_parser.cc"
1487#line 616 "d2_parser.yy"
1491 ctx.
stack_.back()->set(
"tsig-keys", l);
1495#line 1496 "d2_parser.cc"
1499#line 622 "d2_parser.yy"
1504#line 1505 "d2_parser.cc"
1508#line 627 "d2_parser.yy"
1513#line 1514 "d2_parser.cc"
1517#line 630 "d2_parser.yy"
1521#line 1522 "d2_parser.cc"
1525#line 640 "d2_parser.yy"
1529#line 1530 "d2_parser.cc"
1533#line 645 "d2_parser.yy"
1536 ctx.
stack_.back()->add(m);
1539#line 1540 "d2_parser.cc"
1543#line 649 "d2_parser.yy"
1547#line 1548 "d2_parser.cc"
1551#line 653 "d2_parser.yy"
1557#line 1558 "d2_parser.cc"
1561#line 657 "d2_parser.yy"
1565#line 1566 "d2_parser.cc"
1569#line 664 "d2_parser.yy"
1573#line 1574 "d2_parser.cc"
1577#line 679 "d2_parser.yy"
1582#line 1583 "d2_parser.cc"
1586#line 682 "d2_parser.yy"
1588 if (yystack_[0].value.as < std::string > () ==
"") {
1589 error(yystack_[1].location,
"TSIG key name cannot be blank");
1593 ctx.
stack_.back()->set(
"name", name);
1596#line 1597 "d2_parser.cc"
1600#line 692 "d2_parser.yy"
1605#line 1606 "d2_parser.cc"
1609#line 695 "d2_parser.yy"
1611 if (yystack_[0].value.as < std::string > () ==
"") {
1612 error(yystack_[1].location,
"TSIG key algorithm cannot be blank");
1615 ctx.
stack_.back()->set(
"algorithm", elem);
1618#line 1619 "d2_parser.cc"
1622#line 704 "d2_parser.yy"
1624 ctx.
unique(
"digest-bits", ctx.
loc2pos(yystack_[2].location));
1625 if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0 && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
1626 error(yystack_[0].location,
"TSIG key digest-bits must either be zero or a positive, multiple of eight");
1629 ctx.
stack_.back()->set(
"digest-bits", elem);
1631#line 1632 "d2_parser.cc"
1635#line 713 "d2_parser.yy"
1638 ctx.
unique(
"secret-file", ctx.
loc2pos(yystack_[0].location));
1641#line 1642 "d2_parser.cc"
1645#line 717 "d2_parser.yy"
1647 if (yystack_[0].value.as < std::string > () ==
"") {
1648 error(yystack_[1].location,
"TSIG key secret cannot be blank");
1651 ctx.
stack_.back()->set(
"secret", elem);
1654#line 1655 "d2_parser.cc"
1658#line 726 "d2_parser.yy"
1661 ctx.
unique(
"secret-file", ctx.
loc2pos(yystack_[0].location));
1664#line 1665 "d2_parser.cc"
1668#line 730 "d2_parser.yy"
1670 if (yystack_[0].value.as < std::string > () ==
"") {
1671 error(yystack_[1].location,
"TSIG key secret file name cannot be blank");
1674 ctx.
stack_.back()->set(
"secret-file", elem);
1677#line 1678 "d2_parser.cc"
1681#line 744 "d2_parser.yy"
1683 ctx.
unique(
"control-socket", ctx.
loc2pos(yystack_[0].location));
1685 ctx.
stack_.back()->set(
"control-socket", m);
1689#line 1690 "d2_parser.cc"
1693#line 750 "d2_parser.yy"
1698#line 1699 "d2_parser.cc"
1702#line 757 "d2_parser.yy"
1706#line 1707 "d2_parser.cc"
1710#line 769 "d2_parser.yy"
1712 ctx.
unique(
"socket-type", ctx.
loc2pos(yystack_[0].location));
1715#line 1716 "d2_parser.cc"
1719#line 772 "d2_parser.yy"
1722 ctx.
stack_.back()->set(
"socket-type", stype);
1725#line 1726 "d2_parser.cc"
1729#line 778 "d2_parser.yy"
1731 ctx.
unique(
"socket-name", ctx.
loc2pos(yystack_[0].location));
1734#line 1735 "d2_parser.cc"
1738#line 781 "d2_parser.yy"
1741 ctx.
stack_.back()->set(
"socket-name", name);
1744#line 1745 "d2_parser.cc"
1748#line 789 "d2_parser.yy"
1750 ctx.
unique(
"hooks-libraries", ctx.
loc2pos(yystack_[0].location));
1752 ctx.
stack_.back()->set(
"hooks-libraries", l);
1756#line 1757 "d2_parser.cc"
1760#line 795 "d2_parser.yy"
1765#line 1766 "d2_parser.cc"
1769#line 806 "d2_parser.yy"
1773#line 1774 "d2_parser.cc"
1777#line 811 "d2_parser.yy"
1780 ctx.
stack_.back()->add(m);
1783#line 1784 "d2_parser.cc"
1787#line 815 "d2_parser.yy"
1793#line 1794 "d2_parser.cc"
1797#line 821 "d2_parser.yy"
1803#line 1804 "d2_parser.cc"
1807#line 825 "d2_parser.yy"
1813#line 1814 "d2_parser.cc"
1817#line 833 "d2_parser.yy"
1821#line 1822 "d2_parser.cc"
1825#line 843 "d2_parser.yy"
1830#line 1831 "d2_parser.cc"
1834#line 846 "d2_parser.yy"
1837 ctx.
stack_.back()->set(
"library", lib);
1840#line 1841 "d2_parser.cc"
1844#line 852 "d2_parser.yy"
1846 ctx.
unique(
"parameters", ctx.
loc2pos(yystack_[0].location));
1849#line 1850 "d2_parser.cc"
1853#line 855 "d2_parser.yy"
1855 ctx.
stack_.back()->set(
"parameters", yystack_[0].value.as <
ElementPtr > ());
1858#line 1859 "d2_parser.cc"
1862#line 862 "d2_parser.yy"
1866 ctx.
stack_.back()->set(
"loggers", l);
1870#line 1871 "d2_parser.cc"
1874#line 868 "d2_parser.yy"
1879#line 1880 "d2_parser.cc"
1883#line 877 "d2_parser.yy"
1887#line 1888 "d2_parser.cc"
1891#line 883 "d2_parser.yy"
1894 ctx.
stack_.back()->add(l);
1897#line 1898 "d2_parser.cc"
1901#line 887 "d2_parser.yy"
1905#line 1906 "d2_parser.cc"
1909#line 893 "d2_parser.yy"
1913#line 1914 "d2_parser.cc"
1917#line 907 "d2_parser.yy"
1922#line 1923 "d2_parser.cc"
1926#line 910 "d2_parser.yy"
1929 ctx.
stack_.back()->set(
"name", name);
1932#line 1933 "d2_parser.cc"
1936#line 916 "d2_parser.yy"
1938 ctx.
unique(
"debuglevel", ctx.
loc2pos(yystack_[2].location));
1940 ctx.
stack_.back()->set(
"debuglevel", dl);
1942#line 1943 "d2_parser.cc"
1946#line 922 "d2_parser.yy"
1951#line 1952 "d2_parser.cc"
1955#line 925 "d2_parser.yy"
1958 ctx.
stack_.back()->set(
"severity", sev);
1961#line 1962 "d2_parser.cc"
1965#line 931 "d2_parser.yy"
1967 ctx.
unique(
"output-options", ctx.
loc2pos(yystack_[0].location));
1969 ctx.
stack_.back()->set(
"output-options", l);
1973#line 1974 "d2_parser.cc"
1977#line 937 "d2_parser.yy"
1982#line 1983 "d2_parser.cc"
1986#line 944 "d2_parser.yy"
1990#line 1991 "d2_parser.cc"
1994#line 949 "d2_parser.yy"
1997 ctx.
stack_.back()->add(m);
2000#line 2001 "d2_parser.cc"
2004#line 953 "d2_parser.yy"
2008#line 2009 "d2_parser.cc"
2012#line 959 "d2_parser.yy"
2016#line 2017 "d2_parser.cc"
2020#line 971 "d2_parser.yy"
2025#line 2026 "d2_parser.cc"
2029#line 974 "d2_parser.yy"
2032 ctx.
stack_.back()->set(
"output", sev);
2035#line 2036 "d2_parser.cc"
2039#line 980 "d2_parser.yy"
2043 ctx.
stack_.back()->set(
"flush", flush);
2045#line 2046 "d2_parser.cc"
2049#line 986 "d2_parser.yy"
2053 ctx.
stack_.back()->set(
"maxsize", maxsize);
2055#line 2056 "d2_parser.cc"
2059#line 992 "d2_parser.yy"
2063 ctx.
stack_.back()->set(
"maxver", maxver);
2065#line 2066 "d2_parser.cc"
2069#line 998 "d2_parser.yy"
2074#line 2075 "d2_parser.cc"
2078#line 1001 "d2_parser.yy"
2081 ctx.
stack_.back()->set(
"pattern", sev);
2084#line 2085 "d2_parser.cc"
2088#line 2089 "d2_parser.cc"
2097 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
2107 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
2121 std::string msg = yysyntax_error_ (yyctx);
2126 yyerror_range[1].location = yyla.
location;
2127 if (yyerrstatus_ == 3)
2135 else if (!yyla.
empty ())
2137 yy_destroy_ (
"Error: discarding", yyla);
2171 yyn = yypact_[+yystack_[0].state];
2172 if (!yy_pact_value_is_default_ (yyn))
2175 if (0 <= yyn && yyn <= yylast_
2178 yyn = yytable_[yyn];
2185 if (yystack_.size () == 1)
2188 yyerror_range[1].location = yystack_[0].location;
2189 yy_destroy_ (
"Error: popping", yystack_[0]);
2194 stack_symbol_type error_token;
2196 yyerror_range[2].location = yyla.
location;
2200 error_token.state = state_type (yyn);
2201 yypush_ (
"Shifting",
YY_MOVE (error_token));
2227 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
2233 while (1 < yystack_.size ())
2235 yy_destroy_ (
"Cleanup: popping", yystack_[0]);
2244 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack\n";
2248 yy_destroy_ (YY_NULLPTR, yyla);
2250 while (1 < yystack_.size ())
2252 yy_destroy_ (YY_NULLPTR, yystack_[0]);
2272 D2Parser::yytnamerr_ (
const char *yystr)
2277 char const *yyp = yystr;
2284 goto do_not_strip_quotes;
2288 goto do_not_strip_quotes;
2300 do_not_strip_quotes: ;
2309 return yytnamerr_ (yytname_[yysymbol]);
2316 : yyparser_ (yyparser)
2326 const int yyn = yypact_[+yyparser_.yystack_[0].state];
2327 if (!yy_pact_value_is_default_ (yyn))
2332 const int yyxbegin = yyn < 0 ? -yyn : 0;
2334 const int yychecklim = yylast_ - yyn + 1;
2336 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
2338 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
2342 else if (yycount == yyargn)
2349 if (yyarg && yycount == 0 && 0 < yyargn)
2360 D2Parser::yy_syntax_error_arguments_ (
const context& yyctx,
2391 yyarg[0] = yyctx.
token ();
2392 int yyn = yyctx.
expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2400 D2Parser::yysyntax_error_ (
const context& yyctx)
const
2403 enum { YYARGS_MAX = 5 };
2406 int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
2408 char const* yyformat = YY_NULLPTR;
2411#define YYCASE_(N, S) \
2417 YYCASE_ (1,
YY_(
"syntax error, unexpected %s"));
2418 YYCASE_ (2,
YY_(
"syntax error, unexpected %s, expecting %s"));
2419 YYCASE_ (3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
2420 YYCASE_ (4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
2421 YYCASE_ (5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2427 std::ptrdiff_t yyi = 0;
2428 for (
char const* yyp = yyformat; *yyp; ++yyp)
2429 if (yyp[0] ==
'%' && yyp[1] ==
's' && yyi < yycount)
2440 const short D2Parser::yypact_ninf_ = -215;
2442 const signed char D2Parser::yytable_ninf_ = -1;
2445 D2Parser::yypact_[] =
2447 53, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2448 -215, 10, 8, 1, 16, 18, 27, 33, 42, 57,
2449 44, 65, -215, -215, -215, -215, -215, -215, -215, -215,
2450 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2451 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2452 -215, -215, 8, 23, 77, 7, 32, 82, 59, 105,
2453 24, 106, 22, -215, 123, 111, 133, 128, 141, -215,
2454 30, -215, -215, 142, 164, -215, -215, -215, -215, -215,
2455 -215, -215, -215, -215, -215, 174, -215, 38, -215, -215,
2456 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2457 -215, -215, -215, 175, -215, -215, -215, -215, -215, -215,
2458 67, -215, -215, -215, -215, -215, -215, -215, 150, 177,
2459 -215, -215, -215, -215, -215, -215, -215, 85, -215, -215,
2460 -215, -215, -215, 176, 178, -215, -215, 179, -215, -215,
2461 -215, -215, -215, 108, -215, -215, -215, -215, -215, 132,
2462 -215, -215, -215, -215, 112, -215, -215, -215, -215, 8,
2463 8, -215, 109, 180, -215, -215, 181, 127, 129, 183,
2464 185, 186, 187, 188, 189, 190, 191, 192, 193, -215,
2465 7, -215, 194, 140, 196, 197, 198, 32, -215, 32,
2466 -215, 82, 199, 200, 201, 59, -215, 59, -215, 105,
2467 202, 156, 205, 24, -215, 24, 106, -215, 209, 210,
2468 -6, -215, -215, -215, 212, 211, 159, -215, -215, 40,
2469 203, 213, 165, 217, 218, 214, 219, 222, 223, -215,
2470 172, -215, 173, 182, 184, -215, 118, -215, 195, 224,
2471 207, -215, 119, -215, 208, -215, 215, -215, 120, -215,
2472 220, 213, -215, 8, 7, -215, -215, -215, -215, -215,
2473 -215, -215, -215, -1, -1, 82, 66, 225, 226, -215,
2474 -215, -215, -215, -215, -215, 106, -215, -215, -215, -215,
2475 -215, -215, -215, -215, 122, -215, -215, 152, -215, -215,
2476 -215, 154, 228, -215, -215, -215, -215, -215, 155, -215,
2477 -215, -215, -215, 229, 233, -215, -215, 169, -215, 170,
2478 -215, 234, -1, -215, -215, -215, 235, 237, 66, -215,
2479 22, -215, 225, 34, 226, -215, -215, 232, -215, 227,
2480 230, -215, 161, -215, -215, -215, 239, -215, -215, -215,
2481 -215, 162, -215, -215, -215, -215, -215, -215, 105, -215,
2482 -215, -215, 240, 241, 216, 242, 34, -215, 243, 231,
2483 245, -215, 236, -215, -215, -215, 244, -215, -215, 171,
2484 -215, 50, 244, -215, -215, 248, 250, 251, -215, 163,
2485 -215, -215, -215, -215, -215, -215, -215, 253, 221, 238,
2486 246, 254, 50, -215, 249, -215, -215, -215, 252, -215,
2491 D2Parser::yydefact_[] =
2493 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
2494 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2495 0, 0, 1, 38, 30, 26, 25, 22, 23, 24,
2496 29, 3, 27, 28, 46, 5, 52, 7, 159, 9,
2497 150, 11, 107, 13, 98, 15, 131, 17, 124, 19,
2498 204, 21, 40, 33, 0, 0, 0, 152, 0, 100,
2499 0, 0, 0, 42, 0, 41, 0, 0, 34, 48,
2500 0, 50, 71, 0, 0, 75, 79, 81, 83, 85,
2501 87, 148, 181, 195, 216, 0, 70, 0, 54, 57,
2502 58, 59, 60, 61, 68, 69, 62, 63, 64, 65,
2503 66, 67, 174, 0, 177, 179, 172, 171, 169, 170,
2504 0, 161, 164, 165, 166, 167, 168, 157, 0, 153,
2505 154, 120, 122, 118, 117, 115, 116, 0, 109, 112,
2506 113, 114, 105, 0, 101, 102, 145, 0, 143, 142,
2507 140, 141, 139, 0, 133, 136, 137, 138, 129, 0,
2508 126, 212, 214, 209, 0, 206, 210, 211, 39, 44,
2509 0, 31, 37, 0, 51, 47, 0, 0, 0, 0,
2510 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
2511 56, 53, 0, 0, 0, 0, 0, 163, 160, 0,
2512 151, 156, 0, 0, 0, 111, 108, 0, 99, 104,
2513 0, 0, 0, 135, 132, 0, 128, 125, 0, 0,
2514 208, 205, 43, 35, 0, 0, 0, 73, 74, 0,
2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
2516 0, 176, 0, 0, 0, 162, 0, 155, 0, 0,
2517 0, 110, 0, 103, 0, 147, 0, 134, 0, 127,
2518 0, 0, 207, 0, 0, 72, 77, 78, 76, 80,
2519 32, 82, 84, 89, 89, 152, 0, 197, 0, 175,
2520 178, 180, 173, 158, 121, 0, 119, 106, 146, 144,
2521 130, 213, 215, 36, 0, 96, 95, 0, 90, 91,
2522 94, 0, 0, 191, 193, 190, 188, 189, 0, 183,
2523 186, 187, 202, 0, 198, 199, 221, 0, 218, 0,
2524 49, 0, 93, 86, 88, 149, 0, 0, 185, 182,
2525 0, 196, 201, 0, 220, 217, 123, 0, 92, 0,
2526 0, 184, 0, 200, 233, 238, 0, 236, 232, 230,
2527 231, 0, 223, 226, 228, 229, 227, 219, 100, 192,
2528 194, 203, 0, 0, 0, 0, 225, 222, 0, 0,
2529 0, 235, 0, 224, 97, 234, 0, 237, 243, 0,
2530 240, 0, 242, 239, 253, 0, 0, 0, 258, 0,
2531 245, 248, 249, 250, 251, 252, 241, 0, 0, 0,
2532 0, 0, 247, 244, 0, 255, 256, 257, 0, 246,
2537 D2Parser::yypgoto_[] =
2539 -215, -215, -215, -215, -215, -215, -215, -215, -215, -215,
2540 -215, -215, -41, -215, -214, -215, -4, -215, -215, -215,
2541 -215, -215, -215, -56, -215, -215, -215, -215, -215, -215,
2542 -215, 5, 68, -215, -215, -215, -215, -215, -215, -215,
2543 -215, -215, -55, -215, -44, -215, -215, -215, -215, -215,
2544 -3, -215, -52, -215, -215, -215, -215, -79, -215, 71,
2545 -215, -215, -215, 74, 81, -215, -215, -51, -215, -215,
2546 -215, -215, -215, 2, 75, -215, -215, -215, 78, 69,
2547 -215, -215, -215, -215, -215, -215, -215, -215, -215, 15,
2548 -215, 93, -215, -215, -215, 97, 100, -215, -215, -215,
2549 -215, -215, -215, -215, -215, -215, -215, -215, -215, -28,
2550 -215, -215, -215, -215, -215, -215, -215, -215, -31, -215,
2551 -215, -215, -27, 86, -215, -215, -215, -215, -215, -215,
2552 -215, -32, -215, -215, -61, -215, -215, -215, -215, -215,
2553 -215, -215, -215, -74, -215, -215, -93, -215, -215, -215,
2554 -215, -215, -215, -215
2558 D2Parser::yydefgoto_[] =
2560 0, 11, 12, 13, 14, 15, 16, 17, 18, 19,
2561 20, 21, 30, 31, 32, 53, 261, 67, 68, 33,
2562 52, 64, 65, 86, 35, 54, 70, 163, 71, 37,
2563 55, 87, 88, 89, 166, 90, 91, 92, 169, 258,
2564 93, 170, 94, 171, 95, 172, 96, 173, 97, 174,
2565 287, 288, 289, 290, 311, 45, 59, 133, 134, 135,
2566 197, 43, 58, 127, 128, 129, 194, 130, 192, 131,
2567 193, 49, 61, 149, 150, 205, 47, 60, 143, 144,
2568 145, 202, 146, 200, 147, 98, 175, 41, 57, 118,
2569 119, 120, 189, 39, 56, 110, 111, 112, 186, 113,
2570 182, 114, 115, 184, 116, 185, 99, 176, 298, 299,
2571 300, 316, 301, 317, 100, 177, 303, 304, 305, 320,
2572 51, 62, 154, 155, 156, 208, 157, 209, 101, 178,
2573 307, 308, 323, 341, 342, 343, 352, 344, 345, 355,
2574 346, 353, 369, 370, 371, 379, 380, 381, 387, 382,
2579 D2Parser::yytable_[] =
2581 107, 108, 124, 125, 139, 140, 153, 260, 34, 142,
2582 22, 63, 109, 23, 126, 24, 141, 25, 72, 73,
2583 74, 75, 285, 36, 76, 38, 77, 78, 79, 80,
2584 151, 152, 40, 164, 81, 136, 137, 260, 165, 82,
2585 42, 180, 83, 77, 78, 84, 181, 44, 121, 48,
2586 138, 77, 78, 77, 78, 256, 257, 85, 151, 152,
2587 102, 103, 104, 105, 46, 85, 26, 27, 28, 29,
2588 187, 106, 50, 334, 335, 188, 336, 337, 77, 78,
2589 85, 66, 85, 121, 122, 77, 78, 69, 195, 117,
2590 85, 374, 85, 196, 375, 376, 377, 378, 123, 293,
2591 294, 1, 2, 3, 4, 5, 6, 7, 8, 9,
2592 10, 203, 132, 148, 159, 210, 204, 85, 212, 213,
2593 211, 187, 195, 203, 85, 180, 273, 277, 280, 158,
2594 310, 107, 108, 107, 108, 206, 161, 160, 207, 124,
2595 125, 124, 125, 109, 162, 109, 167, 139, 140, 139,
2596 140, 126, 142, 126, 142, 312, 190, 312, 318, 141,
2597 313, 141, 314, 319, 210, 356, 392, 214, 168, 351,
2598 357, 393, 324, 206, 372, 325, 326, 373, 179, 183,
2599 191, 199, 198, 201, 215, 216, 217, 219, 218, 220,
2600 221, 222, 223, 224, 225, 226, 227, 228, 230, 231,
2601 232, 233, 234, 238, 239, 240, 244, 286, 286, 246,
2602 295, 296, 283, 250, 251, 245, 253, 255, 254, 265,
2603 24, 259, 297, 262, 263, 264, 266, 267, 268, 275,
2604 269, 270, 302, 306, 315, 321, 322, 348, 327, 329,
2605 271, 330, 272, 354, 359, 360, 362, 282, 229, 364,
2606 366, 368, 388, 274, 389, 390, 286, 394, 398, 284,
2607 328, 291, 295, 296, 153, 276, 278, 338, 339, 358,
2608 243, 242, 247, 279, 297, 361, 241, 309, 281, 340,
2609 292, 249, 395, 248, 237, 349, 236, 235, 350, 365,
2610 331, 333, 347, 332, 367, 363, 252, 396, 386, 399,
2611 338, 339, 0, 0, 0, 397, 0, 400, 0, 0,
2616 D2Parser::yycheck_[] =
2618 56, 56, 58, 58, 60, 60, 62, 221, 7, 60,
2619 0, 52, 56, 5, 58, 7, 60, 9, 11, 12,
2620 13, 14, 23, 7, 17, 7, 19, 20, 21, 22,
2621 36, 37, 5, 3, 27, 11, 12, 251, 8, 32,
2622 7, 3, 35, 19, 20, 38, 8, 5, 24, 5,
2623 26, 19, 20, 19, 20, 15, 16, 58, 36, 37,
2624 28, 29, 30, 31, 7, 58, 58, 59, 60, 61,
2625 3, 39, 7, 39, 40, 8, 42, 43, 19, 20,
2626 58, 58, 58, 24, 25, 19, 20, 10, 3, 7,
2627 58, 41, 58, 8, 44, 45, 46, 47, 39, 33,
2628 34, 48, 49, 50, 51, 52, 53, 54, 55, 56,
2629 57, 3, 7, 7, 3, 3, 8, 58, 159, 160,
2630 8, 3, 3, 3, 58, 3, 8, 8, 8, 6,
2631 8, 187, 187, 189, 189, 3, 8, 4, 6, 195,
2632 195, 197, 197, 187, 3, 189, 4, 203, 203, 205,
2633 205, 195, 203, 197, 205, 3, 6, 3, 3, 203,
2634 8, 205, 8, 8, 3, 3, 3, 58, 4, 8,
2635 8, 8, 3, 3, 3, 6, 6, 6, 4, 4,
2636 3, 3, 6, 4, 4, 4, 59, 4, 59, 4,
2637 4, 4, 4, 4, 4, 4, 4, 4, 4, 59,
2638 4, 4, 4, 4, 4, 4, 4, 263, 264, 4,
2639 266, 266, 253, 4, 4, 59, 4, 58, 7, 5,
2640 7, 18, 266, 58, 7, 7, 7, 5, 5, 5,
2641 58, 58, 7, 7, 6, 6, 3, 5, 4, 4,
2642 58, 4, 58, 4, 4, 4, 4, 251, 180, 6,
2643 5, 7, 4, 58, 4, 4, 312, 4, 4, 254,
2644 312, 264, 318, 318, 320, 58, 58, 323, 323, 348,
2645 199, 197, 203, 58, 318, 59, 195, 275, 58, 323,
2646 265, 206, 61, 205, 191, 58, 189, 187, 58, 58,
2647 318, 322, 324, 320, 58, 356, 210, 59, 372, 392,
2648 356, 356, -1, -1, -1, 59, -1, 58, -1, -1,
2653 D2Parser::yystos_[] =
2655 0, 48, 49, 50, 51, 52, 53, 54, 55, 56,
2656 57, 63, 64, 65, 66, 67, 68, 69, 70, 71,
2657 72, 73, 0, 5, 7, 9, 58, 59, 60, 61,
2658 74, 75, 76, 81, 7, 86, 7, 91, 7, 155,
2659 5, 149, 7, 123, 5, 117, 7, 138, 5, 133,
2660 7, 182, 82, 77, 87, 92, 156, 150, 124, 118,
2661 139, 134, 183, 74, 83, 84, 58, 79, 80, 10,
2662 88, 90, 11, 12, 13, 14, 17, 19, 20, 21,
2663 22, 27, 32, 35, 38, 58, 85, 93, 94, 95,
2664 97, 98, 99, 102, 104, 106, 108, 110, 147, 168,
2665 176, 190, 28, 29, 30, 31, 39, 85, 104, 106,
2666 157, 158, 159, 161, 163, 164, 166, 7, 151, 152,
2667 153, 24, 25, 39, 85, 104, 106, 125, 126, 127,
2668 129, 131, 7, 119, 120, 121, 11, 12, 26, 85,
2669 104, 106, 129, 140, 141, 142, 144, 146, 7, 135,
2670 136, 36, 37, 85, 184, 185, 186, 188, 6, 3,
2671 4, 8, 3, 89, 3, 8, 96, 4, 4, 100,
2672 103, 105, 107, 109, 111, 148, 169, 177, 191, 4,
2673 3, 8, 162, 4, 165, 167, 160, 3, 8, 154,
2674 6, 3, 130, 132, 128, 3, 8, 122, 6, 3,
2675 145, 4, 143, 3, 8, 137, 3, 6, 187, 189,
2676 3, 8, 74, 74, 58, 4, 4, 59, 59, 4,
2677 4, 4, 4, 4, 4, 4, 4, 4, 4, 94,
2678 4, 59, 4, 4, 4, 158, 157, 153, 4, 4,
2679 4, 126, 125, 121, 4, 59, 4, 141, 140, 136,
2680 4, 4, 185, 4, 7, 58, 15, 16, 101, 18,
2681 76, 78, 58, 7, 7, 5, 7, 5, 5, 58,
2682 58, 58, 58, 8, 58, 5, 58, 8, 58, 58,
2683 8, 58, 78, 74, 93, 23, 85, 112, 113, 114,
2684 115, 112, 151, 33, 34, 85, 104, 106, 170, 171,
2685 172, 174, 7, 178, 179, 180, 7, 192, 193, 135,
2686 8, 116, 3, 8, 8, 6, 173, 175, 3, 8,
2687 181, 6, 3, 194, 3, 6, 6, 4, 114, 4,
2688 4, 171, 184, 180, 39, 40, 42, 43, 85, 104,
2689 106, 195, 196, 197, 199, 200, 202, 193, 5, 58,
2690 58, 8, 198, 203, 4, 201, 3, 8, 119, 4,
2691 4, 59, 4, 196, 6, 58, 5, 58, 7, 204,
2692 205, 206, 3, 6, 41, 44, 45, 46, 47, 207,
2693 208, 209, 211, 212, 213, 214, 205, 210, 4, 4,
2694 4, 215, 3, 8, 4, 61, 59, 59, 4, 208,
2701 0, 62, 64, 63, 65, 63, 66, 63, 67, 63,
2702 68, 63, 69, 63, 70, 63, 71, 63, 72, 63,
2703 73, 63, 74, 74, 74, 74, 74, 74, 74, 75,
2704 77, 76, 78, 79, 79, 80, 80, 80, 82, 81,
2705 83, 83, 84, 84, 84, 85, 87, 86, 89, 88,
2706 88, 90, 92, 91, 93, 93, 93, 94, 94, 94,
2707 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
2708 94, 96, 95, 97, 98, 100, 99, 101, 101, 103,
2709 102, 105, 104, 107, 106, 109, 108, 111, 110, 112,
2710 112, 113, 113, 113, 114, 114, 116, 115, 118, 117,
2711 119, 119, 120, 120, 120, 122, 121, 124, 123, 125,
2712 125, 125, 126, 126, 126, 126, 126, 126, 128, 127,
2713 130, 129, 132, 131, 134, 133, 135, 135, 135, 137,
2714 136, 139, 138, 140, 140, 140, 141, 141, 141, 141,
2715 141, 141, 141, 143, 142, 145, 144, 146, 148, 147,
2716 150, 149, 151, 151, 152, 152, 152, 154, 153, 156,
2717 155, 157, 157, 157, 158, 158, 158, 158, 158, 158,
2718 158, 158, 160, 159, 162, 161, 163, 165, 164, 167,
2719 166, 169, 168, 170, 170, 170, 171, 171, 171, 171,
2720 171, 173, 172, 175, 174, 177, 176, 178, 178, 179,
2721 179, 179, 181, 180, 183, 182, 184, 184, 184, 184,
2722 185, 185, 187, 186, 189, 188, 191, 190, 192, 192,
2723 192, 194, 193, 195, 195, 195, 196, 196, 196, 196,
2724 196, 196, 196, 198, 197, 199, 201, 200, 203, 202,
2725 204, 204, 204, 206, 205, 207, 207, 207, 208, 208,
2726 208, 208, 208, 210, 209, 211, 212, 213, 215, 214
2732 0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
2733 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
2734 0, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2735 0, 4, 1, 0, 1, 3, 5, 2, 0, 4,
2736 0, 1, 1, 3, 2, 2, 0, 4, 0, 6,
2737 1, 2, 0, 4, 1, 3, 2, 1, 1, 1,
2738 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2739 1, 0, 4, 3, 3, 0, 4, 1, 1, 0,
2740 4, 0, 4, 0, 4, 0, 6, 0, 6, 0,
2741 1, 1, 3, 2, 1, 1, 0, 6, 0, 4,
2742 0, 1, 1, 3, 2, 0, 4, 0, 4, 1,
2743 3, 2, 1, 1, 1, 1, 1, 1, 0, 4,
2744 0, 4, 0, 6, 0, 4, 1, 3, 2, 0,
2745 4, 0, 4, 1, 3, 2, 1, 1, 1, 1,
2746 1, 1, 1, 0, 4, 0, 4, 3, 0, 6,
2747 0, 4, 0, 1, 1, 3, 2, 0, 4, 0,
2748 4, 1, 3, 2, 1, 1, 1, 1, 1, 1,
2749 1, 1, 0, 4, 0, 4, 3, 0, 4, 0,
2750 4, 0, 6, 1, 3, 2, 1, 1, 1, 1,
2751 1, 0, 4, 0, 4, 0, 6, 0, 1, 1,
2752 3, 2, 0, 4, 0, 4, 1, 3, 2, 1,
2753 1, 1, 0, 4, 0, 4, 0, 6, 1, 3,
2754 2, 0, 4, 1, 3, 2, 1, 1, 1, 1,
2755 1, 1, 1, 0, 4, 3, 0, 4, 0, 6,
2756 1, 3, 2, 0, 4, 1, 3, 2, 1, 1,
2757 1, 1, 1, 0, 4, 3, 3, 3, 0, 4
2761#if D2_PARSER_DEBUG || 1
2765 const D2Parser::yytname_[] =
2767 "\"end of file\"",
"error",
"\"invalid token\"",
"\",\"",
"\":\"",
2768 "\"[\"",
"\"]\"",
"\"{\"",
"\"}\"",
"\"null\"",
"\"DhcpDdns\"",
2769 "\"ip-address\"",
"\"port\"",
"\"dns-server-timeout\"",
2770 "\"ncr-protocol\"",
"\"UDP\"",
"\"TCP\"",
"\"ncr-format\"",
"\"JSON\"",
2771 "\"user-context\"",
"\"comment\"",
"\"forward-ddns\"",
2772 "\"reverse-ddns\"",
"\"ddns-domains\"",
"\"key-name\"",
2773 "\"dns-servers\"",
"\"hostname\"",
"\"tsig-keys\"",
"\"algorithm\"",
2774 "\"digest-bits\"",
"\"secret\"",
"\"secret-file\"",
"\"control-socket\"",
2775 "\"socket-type\"",
"\"socket-name\"",
"\"hooks-libraries\"",
2776 "\"library\"",
"\"parameters\"",
"\"loggers\"",
"\"name\"",
2777 "\"output-options\"",
"\"output\"",
"\"debuglevel\"",
"\"severity\"",
2778 "\"flush\"",
"\"maxsize\"",
"\"maxver\"",
"\"pattern\"",
"TOPLEVEL_JSON",
2779 "TOPLEVEL_DHCPDDNS",
"SUB_DHCPDDNS",
"SUB_TSIG_KEY",
"SUB_TSIG_KEYS",
2780 "SUB_DDNS_DOMAIN",
"SUB_DDNS_DOMAINS",
"SUB_DNS_SERVER",
2781 "SUB_DNS_SERVERS",
"SUB_HOOKS_LIBRARY",
"\"constant string\"",
2782 "\"integer\"",
"\"floating point\"",
"\"boolean\"",
"$accept",
"start",
2783 "$@1",
"$@2",
"$@3",
"$@4",
"$@5",
"$@6",
"$@7",
"$@8",
"$@9",
"$@10",
2784 "value",
"sub_json",
"map2",
"$@11",
"map_value",
"map_content",
2785 "not_empty_map",
"list_generic",
"$@12",
"list_content",
2786 "not_empty_list",
"unknown_map_entry",
"syntax_map",
"$@13",
2787 "global_object",
"$@14",
"global_object_comma",
"sub_dhcpddns",
"$@15",
2788 "dhcpddns_params",
"dhcpddns_param",
"ip_address",
"$@16",
"port",
2789 "dns_server_timeout",
"ncr_protocol",
"$@17",
"ncr_protocol_value",
2790 "ncr_format",
"$@18",
"user_context",
"$@19",
"comment",
"$@20",
2791 "forward_ddns",
"$@21",
"reverse_ddns",
"$@22",
"ddns_mgr_params",
2792 "not_empty_ddns_mgr_params",
"ddns_mgr_param",
"ddns_domains",
"$@23",
2793 "sub_ddns_domains",
"$@24",
"ddns_domain_list",
2794 "not_empty_ddns_domain_list",
"ddns_domain",
"$@25",
"sub_ddns_domain",
2795 "$@26",
"ddns_domain_params",
"ddns_domain_param",
"ddns_domain_name",
2796 "$@27",
"ddns_key_name",
"$@28",
"dns_servers",
"$@29",
2797 "sub_dns_servers",
"$@30",
"dns_server_list",
"dns_server",
"$@31",
2798 "sub_dns_server",
"$@32",
"dns_server_params",
"dns_server_param",
2799 "dns_server_hostname",
"$@33",
"dns_server_ip_address",
"$@34",
2800 "dns_server_port",
"tsig_keys",
"$@35",
"sub_tsig_keys",
"$@36",
2801 "tsig_keys_list",
"not_empty_tsig_keys_list",
"tsig_key",
"$@37",
2802 "sub_tsig_key",
"$@38",
"tsig_key_params",
"tsig_key_param",
2803 "tsig_key_name",
"$@39",
"tsig_key_algorithm",
"$@40",
2804 "tsig_key_digest_bits",
"tsig_key_secret",
"$@41",
2805 "tsig_key_secret_file",
"$@42",
"control_socket",
"$@43",
2806 "control_socket_params",
"control_socket_param",
"control_socket_type",
2807 "$@44",
"control_socket_name",
"$@45",
"hooks_libraries",
"$@46",
2808 "hooks_libraries_list",
"not_empty_hooks_libraries_list",
2809 "hooks_library",
"$@47",
"sub_hooks_library",
"$@48",
"hooks_params",
2810 "hooks_param",
"library",
"$@49",
"parameters",
"$@50",
"loggers",
2811 "$@51",
"loggers_entries",
"logger_entry",
"$@52",
"logger_params",
2812 "logger_param",
"name",
"$@53",
"debuglevel",
"severity",
"$@54",
2813 "output_options_list",
"$@55",
"output_options_list_content",
2814 "output_entry",
"$@56",
"output_params_list",
"output_params",
"output",
2815 "$@57",
"flush",
"maxsize",
"maxver",
"pattern",
"$@58", YY_NULLPTR
2822 D2Parser::yyrline_[] =
2824 0, 131, 131, 131, 132, 132, 133, 133, 134, 134,
2825 135, 135, 136, 136, 137, 137, 138, 138, 139, 139,
2826 140, 140, 148, 149, 150, 151, 152, 153, 154, 157,
2827 162, 162, 173, 176, 177, 180, 185, 191, 196, 196,
2828 203, 204, 207, 211, 215, 225, 234, 234, 247, 247,
2829 257, 260, 264, 264, 272, 273, 274, 280, 281, 282,
2830 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
2831 293, 296, 296, 305, 314, 324, 324, 333, 334, 337,
2832 337, 346, 346, 371, 371, 398, 398, 409, 409, 420,
2833 421, 424, 425, 426, 431, 432, 437, 437, 448, 448,
2834 455, 456, 459, 460, 461, 466, 466, 474, 474, 481,
2835 482, 483, 488, 489, 490, 491, 492, 493, 497, 497,
2836 510, 510, 523, 523, 534, 534, 541, 542, 543, 548,
2837 548, 556, 556, 563, 564, 565, 570, 571, 572, 573,
2838 574, 575, 576, 579, 579, 592, 592, 601, 616, 616,
2839 627, 627, 634, 635, 638, 639, 640, 645, 645, 653,
2840 653, 662, 663, 664, 669, 670, 671, 672, 673, 674,
2841 675, 676, 679, 679, 692, 692, 704, 713, 713, 726,
2842 726, 744, 744, 755, 756, 757, 762, 763, 764, 765,
2843 766, 769, 769, 778, 778, 789, 789, 800, 801, 804,
2844 805, 806, 811, 811, 821, 821, 831, 832, 833, 836,
2845 839, 840, 843, 843, 852, 852, 862, 862, 875, 876,
2846 877, 883, 883, 891, 892, 893, 898, 899, 900, 901,
2847 902, 903, 904, 907, 907, 916, 922, 922, 931, 931,
2848 942, 943, 944, 949, 949, 957, 958, 959, 964, 965,
2849 966, 967, 968, 971, 971, 980, 986, 992, 998, 998
2853 D2Parser::yy_stack_print_ ()
const
2855 *yycdebug_ <<
"Stack now";
2856 for (stack_type::const_iterator
2857 i = yystack_.begin (),
2858 i_end = yystack_.end ();
2860 *yycdebug_ <<
' ' << int (i->state);
2865 D2Parser::yy_reduce_print_ (
int yyrule)
const
2867 int yylno = yyrline_[yyrule];
2868 int yynrhs = yyr2_[yyrule];
2870 *yycdebug_ <<
"Reducing stack by rule " << yyrule - 1
2871 <<
" (line " << yylno <<
"):\n";
2873 for (
int yyi = 0; yyi < yynrhs; yyi++)
2875 yystack_[(yynrhs) - (yyi + 1)]);
2880#line 14 "d2_parser.yy"
2882#line 2883 "d2_parser.cc"
2884#line 1007 "d2_parser.yy"
2889 const std::string& what)
2891 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.
@ DDNS_DOMAIN
Used while parsing a list of ddns-domains.
@ DNS_SERVERS
Used while parsing content of a control-socket.
@ DDNS_DOMAINS
Used while parsing content of a dns-server.
@ NCR_FORMAT
Used while parsing DhcpDdns/ncr-format.
@ NCR_PROTOCOL
Used while parsing DhcpDdns/ncr-protocol.
@ NO_KEYWORD
This one is used in pure JSON mode.
@ DHCPDDNS
Used while parsing content of a tsig-key.
@ OUTPUT_OPTIONS
Used while parsing DhcpDdns/loggers/output-options structures.
@ FORWARD_DDNS
Used while parsing content of DhcpDdns/reverse-ddns.
@ TSIG_KEY
Used while parsing a list of tsig-keys.
@ REVERSE_DDNS
Used while parsing content of a ddns-domain.
@ LOGGERS
Used while parsing DhcpDdns/loggers structures.
@ HOOKS_LIBRARIES
Used while parsing DhcpDdns/hooks-libraries.
@ TSIG_KEYS
Used while parsing content of DhcpDdns/tsig-keys/algorithm.
@ CONFIG
Used while parsing content of DhcpDdns.
const std::string contextName()
Get the syntax context name.
void leave()
Leave a syntactic context.
void warnAboutExtraCommas(const isc::d2::location &loc)
Warning for extra commas.
void unique(const std::string &name, isc::data::Element::Position loc)
Check if a parameter is already present.
ParserContext ctx_
Current syntactic context.
void require(const std::string &name, isc::data::Element::Position open_loc, isc::data::Element::Position close_loc)
Check if a required parameter is present.
std::vector< isc::data::ElementPtr > stack_
JSON elements being parsed.
void enter(const ParserContext &ctx)
Enter a new syntactic context.
isc::data::Element::Position loc2pos(isc::d2::location &loc)
Converts bison's position to one understood by isc::data::Element.
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.
Present a slice of the top of a stack.
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.
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.
"External" symbols: returned by the scanner.
Syntax errors thrown from user actions.
~syntax_error() YY_NOEXCEPT YY_NOTHROW