38 #define yylex d2_parser_lex 46 #line 34 "d2_parser.yy" // lalr1.cc:438 50 #line 51 "d2_parser.cc" // lalr1.cc:438 54 # if defined YYENABLE_NLS && YYENABLE_NLS 57 # define YY_(msgid) dgettext ("bison-runtime", msgid) 61 # define YY_(msgid) msgid 67 # if defined __GNUC__ && !defined __EXCEPTIONS 68 # define YY_EXCEPTIONS 0 70 # define YY_EXCEPTIONS 1 74 #define YYRHSLOC(Rhs, K) ((Rhs)[K].location) 79 # ifndef YYLLOC_DEFAULT 80 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 84 (Current).begin = YYRHSLOC (Rhs, 1).begin; \ 85 (Current).end = YYRHSLOC (Rhs, N).end; \ 89 (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ 96 #define YYUSE(E) ((void) (E)) 102 # define YYCDEBUG if (yydebug_) (*yycdebug_) 104 # define YY_SYMBOL_PRINT(Title, Symbol) \ 108 *yycdebug_ << Title << ' '; \ 109 yy_print_ (*yycdebug_, Symbol); \ 110 *yycdebug_ << '\n'; \ 114 # define YY_REDUCE_PRINT(Rule) \ 117 yy_reduce_print_ (Rule); \ 120 # define YY_STACK_PRINT() \ 126 #else // !D2_PARSER_DEBUG 128 # define YYCDEBUG if (false) std::cerr 129 # define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) 130 # define YY_REDUCE_PRINT(Rule) static_cast<void> (0) 131 # define YY_STACK_PRINT() static_cast<void> (0) 133 #endif // !D2_PARSER_DEBUG 135 #define yyerrok (yyerrstatus_ = 0) 136 #define yyclearin (yyla.clear ()) 138 #define YYACCEPT goto yyacceptlab 139 #define YYABORT goto yyabortlab 140 #define YYERROR goto yyerrorlab 141 #define YYRECOVERING() (!!yyerrstatus_) 143 #line 14 "d2_parser.yy" // lalr1.cc:513 144 namespace isc {
namespace d2 {
145 #line 146 "d2_parser.cc" // lalr1.cc:513 153 D2Parser::yytnamerr_ (
const char *yystr)
157 std::string yyr =
"";
158 char const *yyp = yystr;
165 goto do_not_strip_quotes;
169 goto do_not_strip_quotes;
178 do_not_strip_quotes: ;
190 yycdebug_ (&std::cerr),
206 D2Parser::by_state::by_state ()
207 : state (empty_state)
210 D2Parser::by_state::by_state (
const by_state& other)
211 : state (other.state)
215 D2Parser::by_state::clear ()
221 D2Parser::by_state::move (by_state& that)
227 D2Parser::by_state::by_state (state_type s)
232 D2Parser::by_state::type_get ()
const 234 if (state == empty_state)
237 return yystos_[state];
240 D2Parser::stack_symbol_type::stack_symbol_type ()
243 D2Parser::stack_symbol_type::stack_symbol_type (
YY_RVREF (stack_symbol_type) that)
246 switch (that.type_get ())
255 value.YY_MOVE_OR_COPY<
bool > (
YY_MOVE (that.value));
259 value.YY_MOVE_OR_COPY<
double > (
YY_MOVE (that.value));
263 value.YY_MOVE_OR_COPY< int64_t > (
YY_MOVE (that.value));
267 value.YY_MOVE_OR_COPY< std::string > (
YY_MOVE (that.value));
274 #if 201103L <= YY_CPLUSPLUS 276 that.state = empty_state;
280 D2Parser::stack_symbol_type::stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) that)
281 : super_type (s,
YY_MOVE (that.location))
283 switch (that.type_get ())
292 value.move<
bool > (
YY_MOVE (that.value));
296 value.move<
double > (
YY_MOVE (that.value));
300 value.move< int64_t > (
YY_MOVE (that.value));
304 value.move< std::string > (
YY_MOVE (that.value));
315 #if YY_CPLUSPLUS < 201103L 316 D2Parser::stack_symbol_type&
317 D2Parser::stack_symbol_type::operator= (stack_symbol_type& that)
320 switch (that.type_get ())
329 value.move<
bool > (that.value);
333 value.move<
double > (that.value);
337 value.move< int64_t > (that.value);
341 value.move< std::string > (that.value);
348 location = that.location;
350 that.state = empty_state;
355 template <
typename Base>
357 D2Parser::yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const 364 template <
typename Base>
366 D2Parser::yy_print_ (std::ostream& yyo,
367 const basic_symbol<Base>& yysym)
const 369 std::ostream& yyoutput = yyo;
376 yyo << (yytype < yyntokens_ ?
"token" :
"nterm")
377 <<
' ' << yytname_[yytype] <<
" (" 378 << yysym.location <<
": ";
383 #line 111 "d2_parser.yy" // lalr1.cc:672 384 { yyoutput << yysym.value.template as< std::string > (); }
385 #line 386 "d2_parser.cc" // lalr1.cc:672 390 #line 111 "d2_parser.yy" // lalr1.cc:672 391 { yyoutput << yysym.value.template as< int64_t > (); }
392 #line 393 "d2_parser.cc" // lalr1.cc:672 397 #line 111 "d2_parser.yy" // lalr1.cc:672 398 { yyoutput << yysym.value.template as< double > (); }
399 #line 400 "d2_parser.cc" // lalr1.cc:672 404 #line 111 "d2_parser.yy" // lalr1.cc:672 405 { yyoutput << yysym.value.template as< bool > (); }
406 #line 407 "d2_parser.cc" // lalr1.cc:672 411 #line 111 "d2_parser.yy" // lalr1.cc:672 412 { yyoutput << yysym.value.template as< ElementPtr > (); }
413 #line 414 "d2_parser.cc" // lalr1.cc:672 418 #line 111 "d2_parser.yy" // lalr1.cc:672 419 { yyoutput << yysym.value.template as< ElementPtr > (); }
420 #line 421 "d2_parser.cc" // lalr1.cc:672 425 #line 111 "d2_parser.yy" // lalr1.cc:672 426 { yyoutput << yysym.value.template as< ElementPtr > (); }
427 #line 428 "d2_parser.cc" // lalr1.cc:672 439 D2Parser::yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym)
447 D2Parser::yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym)
449 #if 201103L <= YY_CPLUSPLUS 450 yypush_ (m, stack_symbol_type (s, std::move (sym)));
452 stack_symbol_type ss (s, sym);
458 D2Parser::yypop_ (
int n)
488 #endif // D2_PARSER_DEBUG 491 D2Parser::yy_lr_goto_state_ (state_type yystate,
int yysym)
493 int yyr = yypgoto_[yysym - yyntokens_] + yystate;
494 if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
495 return yytable_[yyr];
497 return yydefgoto_[yysym - yyntokens_];
501 D2Parser::yy_pact_value_is_default_ (
int yyvalue)
503 return yyvalue == yypact_ninf_;
507 D2Parser::yy_table_value_is_error_ (
int yyvalue)
509 return yyvalue == yytable_ninf_;
528 int yyerrstatus_ = 0;
534 stack_symbol_type yyerror_range[3];
541 #endif // YY_EXCEPTIONS 551 yypush_ (YY_NULLPTR, 0,
YY_MOVE (yyla));
555 YYCDEBUG <<
"Entering state " << yystack_[0].state <<
'\n';
558 if (yystack_[0].state == yyfinal_)
566 yyn = yypact_[yystack_[0].state];
567 if (yy_pact_value_is_default_ (yyn))
576 #endif // YY_EXCEPTIONS 579 yyla.
move (yylookahead);
587 #endif // YY_EXCEPTIONS 593 yyn += yyla.type_get ();
594 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
601 if (yy_table_value_is_error_ (yyn))
612 yypush_ (
"Shifting", yyn,
YY_MOVE (yyla));
619 yyn = yydefact_[yystack_[0].state];
630 stack_symbol_type yylhs;
631 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
644 yylhs.value.emplace<
bool > ();
648 yylhs.value.emplace<
double > ();
652 yylhs.value.emplace< int64_t > ();
656 yylhs.value.emplace< std::string > ();
668 yyerror_range[1].location = yylhs.location;
675 #endif // YY_EXCEPTIONS 680 #line 120 "d2_parser.yy" // lalr1.cc:907 682 #line 683 "d2_parser.cc" // lalr1.cc:907 686 #line 121 "d2_parser.yy" // lalr1.cc:907 688 #line 689 "d2_parser.cc" // lalr1.cc:907 692 #line 122 "d2_parser.yy" // lalr1.cc:907 694 #line 695 "d2_parser.cc" // lalr1.cc:907 698 #line 123 "d2_parser.yy" // lalr1.cc:907 700 #line 701 "d2_parser.cc" // lalr1.cc:907 704 #line 124 "d2_parser.yy" // lalr1.cc:907 706 #line 707 "d2_parser.cc" // lalr1.cc:907 710 #line 125 "d2_parser.yy" // lalr1.cc:907 712 #line 713 "d2_parser.cc" // lalr1.cc:907 716 #line 126 "d2_parser.yy" // lalr1.cc:907 718 #line 719 "d2_parser.cc" // lalr1.cc:907 722 #line 127 "d2_parser.yy" // lalr1.cc:907 724 #line 725 "d2_parser.cc" // lalr1.cc:907 728 #line 128 "d2_parser.yy" // lalr1.cc:907 730 #line 731 "d2_parser.cc" // lalr1.cc:907 734 #line 136 "d2_parser.yy" // lalr1.cc:907 736 #line 737 "d2_parser.cc" // lalr1.cc:907 740 #line 137 "d2_parser.yy" // lalr1.cc:907 742 #line 743 "d2_parser.cc" // lalr1.cc:907 746 #line 138 "d2_parser.yy" // lalr1.cc:907 748 #line 749 "d2_parser.cc" // lalr1.cc:907 752 #line 139 "d2_parser.yy" // lalr1.cc:907 754 #line 755 "d2_parser.cc" // lalr1.cc:907 758 #line 140 "d2_parser.yy" // lalr1.cc:907 760 #line 761 "d2_parser.cc" // lalr1.cc:907 764 #line 141 "d2_parser.yy" // lalr1.cc:907 766 #line 767 "d2_parser.cc" // lalr1.cc:907 770 #line 142 "d2_parser.yy" // lalr1.cc:907 772 #line 773 "d2_parser.cc" // lalr1.cc:907 776 #line 145 "d2_parser.yy" // lalr1.cc:907 781 #line 782 "d2_parser.cc" // lalr1.cc:907 785 #line 150 "d2_parser.yy" // lalr1.cc:907 792 #line 793 "d2_parser.cc" // lalr1.cc:907 796 #line 155 "d2_parser.yy" // lalr1.cc:907 802 #line 803 "d2_parser.cc" // lalr1.cc:907 806 #line 161 "d2_parser.yy" // lalr1.cc:907 808 #line 809 "d2_parser.cc" // lalr1.cc:907 812 #line 168 "d2_parser.yy" // lalr1.cc:907 815 ctx.
stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as<
ElementPtr > ());
817 #line 818 "d2_parser.cc" // lalr1.cc:907 821 #line 172 "d2_parser.yy" // lalr1.cc:907 825 ctx.
stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as<
ElementPtr > ());
827 #line 828 "d2_parser.cc" // lalr1.cc:907 831 #line 179 "d2_parser.yy" // lalr1.cc:907 836 #line 837 "d2_parser.cc" // lalr1.cc:907 840 #line 182 "d2_parser.yy" // lalr1.cc:907 844 #line 845 "d2_parser.cc" // lalr1.cc:907 848 #line 190 "d2_parser.yy" // lalr1.cc:907 853 #line 854 "d2_parser.cc" // lalr1.cc:907 857 #line 194 "d2_parser.yy" // lalr1.cc:907 862 #line 863 "d2_parser.cc" // lalr1.cc:907 866 #line 205 "d2_parser.yy" // lalr1.cc:907 869 const std::string& keyword = yystack_[1].value.as< std::string > ();
870 error(yystack_[1].location,
871 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
873 #line 874 "d2_parser.cc" // lalr1.cc:907 877 #line 215 "d2_parser.yy" // lalr1.cc:907 884 #line 885 "d2_parser.cc" // lalr1.cc:907 888 #line 220 "d2_parser.yy" // lalr1.cc:907 894 #line 895 "d2_parser.cc" // lalr1.cc:907 898 #line 242 "d2_parser.yy" // lalr1.cc:907 901 ctx.
stack_.back()->set(
"DhcpDdns", m);
905 #line 906 "d2_parser.cc" // lalr1.cc:907 909 #line 247 "d2_parser.yy" // lalr1.cc:907 914 #line 915 "d2_parser.cc" // lalr1.cc:907 918 #line 252 "d2_parser.yy" // lalr1.cc:907 924 #line 925 "d2_parser.cc" // lalr1.cc:907 928 #line 256 "d2_parser.yy" // lalr1.cc:907 932 #line 933 "d2_parser.cc" // lalr1.cc:907 936 #line 278 "d2_parser.yy" // lalr1.cc:907 940 #line 941 "d2_parser.cc" // lalr1.cc:907 944 #line 280 "d2_parser.yy" // lalr1.cc:907 947 ctx.
stack_.back()->set(
"ip-address", s);
950 #line 951 "d2_parser.cc" // lalr1.cc:907 954 #line 286 "d2_parser.yy" // lalr1.cc:907 956 if (yystack_[0].value.as< int64_t > () <= 0 || yystack_[0].value.as< int64_t > () >= 65536 ) {
957 error(yystack_[0].location,
"port must be greater than zero but less than 65536");
960 ctx.
stack_.back()->set(
"port", i);
962 #line 963 "d2_parser.cc" // lalr1.cc:907 966 #line 294 "d2_parser.yy" // lalr1.cc:907 968 if (yystack_[0].value.as< int64_t > () <= 0) {
969 error(yystack_[0].location,
"dns-server-timeout must be greater than zero");
972 ctx.
stack_.back()->set(
"dns-server-timeout", i);
975 #line 976 "d2_parser.cc" // lalr1.cc:907 979 #line 303 "d2_parser.yy" // lalr1.cc:907 983 #line 984 "d2_parser.cc" // lalr1.cc:907 987 #line 305 "d2_parser.yy" // lalr1.cc:907 989 ctx.
stack_.back()->set(
"ncr-protocol", yystack_[0].value.as<
ElementPtr > ());
992 #line 993 "d2_parser.cc" // lalr1.cc:907 996 #line 311 "d2_parser.yy" // lalr1.cc:907 998 #line 999 "d2_parser.cc" // lalr1.cc:907 1002 #line 312 "d2_parser.yy" // lalr1.cc:907 1004 #line 1005 "d2_parser.cc" // lalr1.cc:907 1008 #line 315 "d2_parser.yy" // lalr1.cc:907 1012 #line 1013 "d2_parser.cc" // lalr1.cc:907 1016 #line 317 "d2_parser.yy" // lalr1.cc:907 1019 ctx.
stack_.back()->set(
"ncr-format", json);
1022 #line 1023 "d2_parser.cc" // lalr1.cc:907 1026 #line 323 "d2_parser.yy" // lalr1.cc:907 1030 #line 1031 "d2_parser.cc" // lalr1.cc:907 1034 #line 325 "d2_parser.yy" // lalr1.cc:907 1043 if ((old->size() != 1) || !old->contains(
"comment")) {
1044 std::stringstream msg;
1045 msg <<
"duplicate user-context entries (previous at " 1046 << old->getPosition().str() <<
")";
1047 error(yystack_[3].location, msg.str());
1050 user_context->set(
"comment", old->get(
"comment"));
1054 parent->set(
"user-context", user_context);
1057 #line 1058 "d2_parser.cc" // lalr1.cc:907 1061 #line 348 "d2_parser.yy" // lalr1.cc:907 1065 #line 1066 "d2_parser.cc" // lalr1.cc:907 1069 #line 350 "d2_parser.yy" // lalr1.cc:907 1074 user_context->set(
"comment", comment);
1080 if (old->contains(
"comment")) {
1081 std::stringstream msg;
1082 msg <<
"duplicate user-context/comment entries (previous at " 1083 << old->getPosition().str() <<
")";
1084 error(yystack_[3].location, msg.str());
1087 merge(user_context, old);
1091 parent->set(
"user-context", user_context);
1094 #line 1095 "d2_parser.cc" // lalr1.cc:907 1098 #line 375 "d2_parser.yy" // lalr1.cc:907 1101 ctx.
stack_.back()->set(
"forward-ddns", m);
1105 #line 1106 "d2_parser.cc" // lalr1.cc:907 1109 #line 380 "d2_parser.yy" // lalr1.cc:907 1114 #line 1115 "d2_parser.cc" // lalr1.cc:907 1118 #line 385 "d2_parser.yy" // lalr1.cc:907 1121 ctx.
stack_.back()->set(
"reverse-ddns", m);
1125 #line 1126 "d2_parser.cc" // lalr1.cc:907 1129 #line 390 "d2_parser.yy" // lalr1.cc:907 1134 #line 1135 "d2_parser.cc" // lalr1.cc:907 1138 #line 409 "d2_parser.yy" // lalr1.cc:907 1141 ctx.
stack_.back()->set(
"ddns-domains", l);
1145 #line 1146 "d2_parser.cc" // lalr1.cc:907 1149 #line 414 "d2_parser.yy" // lalr1.cc:907 1154 #line 1155 "d2_parser.cc" // lalr1.cc:907 1158 #line 419 "d2_parser.yy" // lalr1.cc:907 1163 #line 1164 "d2_parser.cc" // lalr1.cc:907 1167 #line 422 "d2_parser.yy" // lalr1.cc:907 1171 #line 1172 "d2_parser.cc" // lalr1.cc:907 1175 #line 434 "d2_parser.yy" // lalr1.cc:907 1178 ctx.
stack_.back()->add(m);
1181 #line 1182 "d2_parser.cc" // lalr1.cc:907 1185 #line 438 "d2_parser.yy" // lalr1.cc:907 1189 #line 1190 "d2_parser.cc" // lalr1.cc:907 1193 #line 442 "d2_parser.yy" // lalr1.cc:907 1198 #line 1199 "d2_parser.cc" // lalr1.cc:907 1202 #line 445 "d2_parser.yy" // lalr1.cc:907 1206 #line 1207 "d2_parser.cc" // lalr1.cc:907 1210 #line 462 "d2_parser.yy" // lalr1.cc:907 1214 #line 1215 "d2_parser.cc" // lalr1.cc:907 1218 #line 464 "d2_parser.yy" // lalr1.cc:907 1220 if (yystack_[0].value.as< std::string > () ==
"") {
1221 error(yystack_[1].location,
"Ddns domain name cannot be blank");
1225 ctx.
stack_.back()->set(
"name", name);
1228 #line 1229 "d2_parser.cc" // lalr1.cc:907 1232 #line 474 "d2_parser.yy" // lalr1.cc:907 1236 #line 1237 "d2_parser.cc" // lalr1.cc:907 1240 #line 476 "d2_parser.yy" // lalr1.cc:907 1244 ctx.
stack_.back()->set(
"key-name", name);
1247 #line 1248 "d2_parser.cc" // lalr1.cc:907 1251 #line 486 "d2_parser.yy" // lalr1.cc:907 1254 ctx.
stack_.back()->set(
"dns-servers", l);
1258 #line 1259 "d2_parser.cc" // lalr1.cc:907 1262 #line 491 "d2_parser.yy" // lalr1.cc:907 1267 #line 1268 "d2_parser.cc" // lalr1.cc:907 1271 #line 496 "d2_parser.yy" // lalr1.cc:907 1276 #line 1277 "d2_parser.cc" // lalr1.cc:907 1280 #line 499 "d2_parser.yy" // lalr1.cc:907 1284 #line 1285 "d2_parser.cc" // lalr1.cc:907 1288 #line 507 "d2_parser.yy" // lalr1.cc:907 1291 ctx.
stack_.back()->add(m);
1294 #line 1295 "d2_parser.cc" // lalr1.cc:907 1298 #line 511 "d2_parser.yy" // lalr1.cc:907 1302 #line 1303 "d2_parser.cc" // lalr1.cc:907 1306 #line 515 "d2_parser.yy" // lalr1.cc:907 1311 #line 1312 "d2_parser.cc" // lalr1.cc:907 1315 #line 518 "d2_parser.yy" // lalr1.cc:907 1319 #line 1320 "d2_parser.cc" // lalr1.cc:907 1323 #line 534 "d2_parser.yy" // lalr1.cc:907 1327 #line 1328 "d2_parser.cc" // lalr1.cc:907 1331 #line 536 "d2_parser.yy" // lalr1.cc:907 1333 if (yystack_[0].value.as< std::string > () !=
"") {
1334 error(yystack_[1].location,
"hostname is not yet supported");
1338 ctx.
stack_.back()->set(
"hostname", name);
1341 #line 1342 "d2_parser.cc" // lalr1.cc:907 1345 #line 546 "d2_parser.yy" // lalr1.cc:907 1349 #line 1350 "d2_parser.cc" // lalr1.cc:907 1353 #line 548 "d2_parser.yy" // lalr1.cc:907 1356 ctx.
stack_.back()->set(
"ip-address", s);
1359 #line 1360 "d2_parser.cc" // lalr1.cc:907 1363 #line 554 "d2_parser.yy" // lalr1.cc:907 1365 if (yystack_[0].value.as< int64_t > () <= 0 || yystack_[0].value.as< int64_t > () >= 65536 ) {
1366 error(yystack_[0].location,
"port must be greater than zero but less than 65536");
1369 ctx.
stack_.back()->set(
"port", i);
1371 #line 1372 "d2_parser.cc" // lalr1.cc:907 1375 #line 568 "d2_parser.yy" // lalr1.cc:907 1378 ctx.
stack_.back()->set(
"tsig-keys", l);
1382 #line 1383 "d2_parser.cc" // lalr1.cc:907 1386 #line 573 "d2_parser.yy" // lalr1.cc:907 1391 #line 1392 "d2_parser.cc" // lalr1.cc:907 1395 #line 578 "d2_parser.yy" // lalr1.cc:907 1400 #line 1401 "d2_parser.cc" // lalr1.cc:907 1404 #line 581 "d2_parser.yy" // lalr1.cc:907 1408 #line 1409 "d2_parser.cc" // lalr1.cc:907 1412 #line 593 "d2_parser.yy" // lalr1.cc:907 1415 ctx.
stack_.back()->add(m);
1418 #line 1419 "d2_parser.cc" // lalr1.cc:907 1422 #line 597 "d2_parser.yy" // lalr1.cc:907 1426 #line 1427 "d2_parser.cc" // lalr1.cc:907 1430 #line 601 "d2_parser.yy" // lalr1.cc:907 1436 #line 1437 "d2_parser.cc" // lalr1.cc:907 1440 #line 605 "d2_parser.yy" // lalr1.cc:907 1444 #line 1445 "d2_parser.cc" // lalr1.cc:907 1448 #line 623 "d2_parser.yy" // lalr1.cc:907 1452 #line 1453 "d2_parser.cc" // lalr1.cc:907 1456 #line 625 "d2_parser.yy" // lalr1.cc:907 1458 if (yystack_[0].value.as< std::string > () ==
"") {
1459 error(yystack_[1].location,
"TSIG key name cannot be blank");
1463 ctx.
stack_.back()->set(
"name", name);
1466 #line 1467 "d2_parser.cc" // lalr1.cc:907 1470 #line 635 "d2_parser.yy" // lalr1.cc:907 1474 #line 1475 "d2_parser.cc" // lalr1.cc:907 1478 #line 637 "d2_parser.yy" // lalr1.cc:907 1480 if (yystack_[0].value.as< std::string > () ==
"") {
1481 error(yystack_[1].location,
"TSIG key algorithm cannot be blank");
1484 ctx.
stack_.back()->set(
"algorithm", elem);
1487 #line 1488 "d2_parser.cc" // lalr1.cc:907 1491 #line 646 "d2_parser.yy" // lalr1.cc:907 1493 if (yystack_[0].value.as< int64_t > () < 0 || (yystack_[0].value.as< int64_t > () > 0 && (yystack_[0].value.as< int64_t > () % 8 != 0))) {
1494 error(yystack_[0].location,
"TSIG key digest-bits must either be zero or a positive, multiple of eight");
1497 ctx.
stack_.back()->set(
"digest-bits", elem);
1499 #line 1500 "d2_parser.cc" // lalr1.cc:907 1503 #line 654 "d2_parser.yy" // lalr1.cc:907 1507 #line 1508 "d2_parser.cc" // lalr1.cc:907 1511 #line 656 "d2_parser.yy" // lalr1.cc:907 1513 if (yystack_[0].value.as< std::string > () ==
"") {
1514 error(yystack_[1].location,
"TSIG key secret cannot be blank");
1517 ctx.
stack_.back()->set(
"secret", elem);
1520 #line 1521 "d2_parser.cc" // lalr1.cc:907 1524 #line 669 "d2_parser.yy" // lalr1.cc:907 1528 #line 1529 "d2_parser.cc" // lalr1.cc:907 1532 #line 671 "d2_parser.yy" // lalr1.cc:907 1537 #line 1538 "d2_parser.cc" // lalr1.cc:907 1541 #line 676 "d2_parser.yy" // lalr1.cc:907 1545 #line 1546 "d2_parser.cc" // lalr1.cc:907 1549 #line 678 "d2_parser.yy" // lalr1.cc:907 1554 #line 1555 "d2_parser.cc" // lalr1.cc:907 1558 #line 683 "d2_parser.yy" // lalr1.cc:907 1562 #line 1563 "d2_parser.cc" // lalr1.cc:907 1566 #line 685 "d2_parser.yy" // lalr1.cc:907 1568 ctx.
stack_.back()->set(
"Control-agent", yystack_[0].value.as<
ElementPtr > ());
1571 #line 1572 "d2_parser.cc" // lalr1.cc:907 1575 #line 695 "d2_parser.yy" // lalr1.cc:907 1578 ctx.
stack_.back()->set(
"Logging", m);
1582 #line 1583 "d2_parser.cc" // lalr1.cc:907 1586 #line 700 "d2_parser.yy" // lalr1.cc:907 1591 #line 1592 "d2_parser.cc" // lalr1.cc:907 1595 #line 717 "d2_parser.yy" // lalr1.cc:907 1598 ctx.
stack_.back()->set(
"loggers", l);
1602 #line 1603 "d2_parser.cc" // lalr1.cc:907 1606 #line 722 "d2_parser.yy" // lalr1.cc:907 1611 #line 1612 "d2_parser.cc" // lalr1.cc:907 1615 #line 734 "d2_parser.yy" // lalr1.cc:907 1618 ctx.
stack_.back()->add(l);
1621 #line 1622 "d2_parser.cc" // lalr1.cc:907 1625 #line 738 "d2_parser.yy" // lalr1.cc:907 1629 #line 1630 "d2_parser.cc" // lalr1.cc:907 1633 #line 755 "d2_parser.yy" // lalr1.cc:907 1637 #line 1638 "d2_parser.cc" // lalr1.cc:907 1641 #line 757 "d2_parser.yy" // lalr1.cc:907 1644 ctx.
stack_.back()->set(
"name", name);
1647 #line 1648 "d2_parser.cc" // lalr1.cc:907 1651 #line 763 "d2_parser.yy" // lalr1.cc:907 1654 ctx.
stack_.back()->set(
"debuglevel", dl);
1656 #line 1657 "d2_parser.cc" // lalr1.cc:907 1660 #line 767 "d2_parser.yy" // lalr1.cc:907 1664 #line 1665 "d2_parser.cc" // lalr1.cc:907 1668 #line 769 "d2_parser.yy" // lalr1.cc:907 1671 ctx.
stack_.back()->set(
"severity", sev);
1674 #line 1675 "d2_parser.cc" // lalr1.cc:907 1678 #line 775 "d2_parser.yy" // lalr1.cc:907 1681 ctx.
stack_.back()->set(
"output_options", l);
1685 #line 1686 "d2_parser.cc" // lalr1.cc:907 1689 #line 780 "d2_parser.yy" // lalr1.cc:907 1694 #line 1695 "d2_parser.cc" // lalr1.cc:907 1698 #line 789 "d2_parser.yy" // lalr1.cc:907 1701 ctx.
stack_.back()->add(m);
1704 #line 1705 "d2_parser.cc" // lalr1.cc:907 1708 #line 793 "d2_parser.yy" // lalr1.cc:907 1712 #line 1713 "d2_parser.cc" // lalr1.cc:907 1716 #line 807 "d2_parser.yy" // lalr1.cc:907 1720 #line 1721 "d2_parser.cc" // lalr1.cc:907 1724 #line 809 "d2_parser.yy" // lalr1.cc:907 1727 ctx.
stack_.back()->set(
"output", sev);
1730 #line 1731 "d2_parser.cc" // lalr1.cc:907 1734 #line 815 "d2_parser.yy" // lalr1.cc:907 1737 ctx.
stack_.back()->set(
"flush", flush);
1739 #line 1740 "d2_parser.cc" // lalr1.cc:907 1743 #line 820 "d2_parser.yy" // lalr1.cc:907 1746 ctx.
stack_.back()->set(
"maxsize", maxsize);
1748 #line 1749 "d2_parser.cc" // lalr1.cc:907 1752 #line 825 "d2_parser.yy" // lalr1.cc:907 1755 ctx.
stack_.back()->set(
"maxver", maxver);
1757 #line 1758 "d2_parser.cc" // lalr1.cc:907 1761 #line 1762 "d2_parser.cc" // lalr1.cc:907 1772 #endif // YY_EXCEPTIONS 1779 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
1791 error (yyla.
location, yysyntax_error_ (yystack_[0].state, yyla));
1795 yyerror_range[1].location = yyla.
location;
1796 if (yyerrstatus_ == 3)
1802 if (yyla.type_get () == yyeof_)
1804 else if (!yyla.
empty ())
1806 yy_destroy_ (
"Error: discarding", yyla);
1837 stack_symbol_type error_token;
1840 yyn = yypact_[yystack_[0].state];
1841 if (!yy_pact_value_is_default_ (yyn))
1844 if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
1846 yyn = yytable_[yyn];
1853 if (yystack_.size () == 1)
1856 yyerror_range[1].location = yystack_[0].location;
1857 yy_destroy_ (
"Error: popping", yystack_[0]);
1862 yyerror_range[2].location = yyla.
location;
1866 error_token.state = yyn;
1867 yypush_ (
"Shifting",
YY_MOVE (error_token));
1883 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
1888 while (1 < yystack_.size ())
1890 yy_destroy_ (
"Cleanup: popping", yystack_[0]);
1899 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack\n";
1903 yy_destroy_ (YY_NULLPTR, yyla);
1905 while (1 < yystack_.
size ())
1907 yy_destroy_ (YY_NULLPTR, yystack_[0]);
1912 #endif // YY_EXCEPTIONS 1923 D2Parser::yysyntax_error_ (state_type yystate,
const symbol_type& yyla)
const 1929 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1931 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1960 int yytoken = yyla.type_get ();
1961 yyarg[yycount++] = yytname_[yytoken];
1962 int yyn = yypact_[yystate];
1963 if (!yy_pact_value_is_default_ (yyn))
1968 int yyxbegin = yyn < 0 ? -yyn : 0;
1970 int yychecklim = yylast_ - yyn + 1;
1971 int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
1972 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
1973 if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
1974 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
1976 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1982 yyarg[yycount++] = yytname_[yyx];
1987 char const* yyformat = YY_NULLPTR;
1990 #define YYCASE_(N, S) \ 1996 YYCASE_ (1,
YY_(
"syntax error, unexpected %s"));
1997 YYCASE_ (2,
YY_(
"syntax error, unexpected %s, expecting %s"));
1998 YYCASE_ (3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
1999 YYCASE_ (4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
2000 YYCASE_ (5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2007 for (
char const* yyp = yyformat; *yyp; ++yyp)
2008 if (yyp[0] ==
'%' && yyp[1] ==
's' && yyi < yycount)
2010 yyres += yytnamerr_ (yyarg[yyi++]);
2019 const signed char D2Parser::yypact_ninf_ = -90;
2021 const signed char D2Parser::yytable_ninf_ = -1;
2024 D2Parser::yypact_[] =
2026 47, -90, -90, -90, -90, -90, -90, -90, -90, -90,
2027 12, 2, 1, 23, 33, 11, 38, 58, 64, 73,
2028 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
2029 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
2030 -90, -90, -90, -90, -90, -90, -90, -90, 2, -25,
2031 8, 9, 15, 96, 37, 115, 21, 116, -90, 124,
2032 113, 127, 130, 137, -90, -90, -90, -90, -90, 146,
2033 -90, 19, -90, -90, -90, -90, -90, -90, -90, 148,
2034 150, -90, -90, -90, -90, -90, -90, -90, -90, 46,
2035 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
2036 -90, -90, 152, -90, -90, -90, -90, -90, 76, -90,
2037 -90, -90, -90, -90, -90, 151, 155, -90, -90, -90,
2038 -90, -90, -90, -90, 77, -90, -90, -90, -90, -90,
2039 153, 157, -90, -90, 161, -90, -90, -90, -90, 78,
2040 -90, -90, -90, -90, -90, 118, -90, -90, 2, 2,
2041 -90, 108, 162, 163, 164, 165, 166, -90, 8, -90,
2042 167, 119, 120, 168, 171, 172, 173, 174, 175, 176,
2043 9, -90, 177, 128, 179, 180, 15, -90, 15, -90,
2044 96, 181, 182, 183, 37, -90, 37, -90, 115, 184,
2045 135, 186, 21, -90, 21, 116, -90, -90, -90, 187,
2046 2, 2, 2, 185, 188, -90, 140, -90, -90, 70,
2047 178, 189, 141, 190, 195, 198, -90, 154, -90, 156,
2048 158, -90, 79, -90, 159, 199, 160, -90, 97, -90,
2049 169, -90, 170, -90, 98, -90, 2, -90, -90, -90,
2050 9, 191, -90, -90, -90, -90, -90, -90, -90, -90,
2051 -12, -12, 96, -90, -90, -90, -90, -90, 116, -90,
2052 -90, -90, -90, -90, -90, 99, -90, 101, -90, -90,
2053 -90, -90, 109, -90, -90, -90, 110, 200, 126, -90,
2054 201, 191, -90, 204, -12, -90, -90, -90, -90, 205,
2055 -90, 209, -90, 208, 115, -90, 143, -90, 210, 30,
2056 208, -90, -90, -90, -90, 213, -90, -90, -90, -90,
2057 111, -90, -90, -90, -90, -90, -90, 214, 215, 192,
2058 216, 30, -90, 194, 219, -90, 197, -90, -90, 218,
2059 -90, -90, 145, -90, 34, 218, -90, -90, 217, 223,
2060 224, 112, -90, -90, -90, -90, -90, -90, 225, 196,
2061 202, 203, 34, -90, 206, -90, -90, -90, -90, -90
2065 D2Parser::yydefact_[] =
2067 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 1, 35, 28, 24, 23, 20, 21, 22, 27, 3,
2070 25, 26, 42, 5, 54, 7, 150, 9, 142, 11,
2071 103, 13, 95, 15, 125, 17, 119, 19, 37, 31,
2072 0, 0, 0, 144, 0, 97, 0, 0, 39, 0,
2073 38, 0, 0, 32, 168, 170, 172, 52, 174, 0,
2074 51, 0, 44, 49, 46, 48, 50, 47, 69, 0,
2075 0, 73, 77, 79, 81, 83, 85, 140, 68, 0,
2076 56, 58, 59, 60, 61, 62, 66, 67, 63, 64,
2077 65, 163, 0, 166, 161, 160, 158, 159, 0, 152,
2078 154, 155, 156, 157, 148, 0, 145, 146, 115, 117,
2079 113, 112, 110, 111, 0, 105, 107, 108, 109, 101,
2080 0, 98, 99, 137, 0, 135, 134, 132, 133, 0,
2081 127, 129, 130, 131, 123, 0, 121, 36, 0, 0,
2082 29, 0, 0, 0, 0, 0, 0, 41, 0, 43,
2083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 0, 55, 0, 0, 0, 0, 0, 151, 0, 143,
2085 0, 0, 0, 0, 0, 104, 0, 96, 0, 0,
2086 0, 0, 0, 126, 0, 0, 120, 40, 33, 0,
2087 0, 0, 0, 0, 0, 45, 0, 71, 72, 0,
2088 0, 0, 0, 0, 0, 0, 57, 0, 165, 0,
2089 0, 153, 0, 147, 0, 0, 0, 106, 0, 100,
2090 0, 139, 0, 128, 0, 122, 0, 169, 171, 173,
2091 0, 0, 70, 75, 76, 74, 78, 30, 80, 82,
2092 87, 87, 144, 164, 167, 162, 149, 116, 0, 114,
2093 102, 138, 136, 124, 34, 0, 179, 0, 176, 178,
2094 93, 92, 0, 88, 89, 91, 0, 0, 0, 53,
2095 0, 0, 175, 0, 0, 84, 86, 141, 118, 0,
2096 177, 0, 90, 0, 97, 183, 0, 181, 0, 0,
2097 0, 180, 94, 194, 199, 0, 197, 193, 191, 192,
2098 0, 185, 187, 189, 190, 188, 182, 0, 0, 0,
2099 0, 0, 184, 0, 0, 196, 0, 186, 195, 0,
2100 198, 203, 0, 201, 0, 0, 200, 211, 0, 0,
2101 0, 0, 205, 207, 208, 209, 210, 202, 0, 0,
2102 0, 0, 0, 204, 0, 213, 214, 215, 206, 212
2106 D2Parser::yypgoto_[] =
2108 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
2109 -90, -38, -90, 20, -90, -90, -90, -90, -90, -90,
2110 -90, -90, -50, -90, -90, -90, 72, -90, -90, -90,
2111 -90, -8, 63, -90, -90, -90, -90, -90, -90, -90,
2112 -90, -90, -51, -90, -39, -90, -90, -90, -90, -90,
2113 -16, -90, -48, -90, -90, -90, -90, -57, -90, 50,
2114 -90, -90, -90, 53, 56, -90, -90, -90, -90, -90,
2115 -90, -90, -90, -17, 48, -90, -90, -90, 51, 52,
2116 -90, -90, -90, -90, -90, -90, -90, -90, -90, -10,
2117 -90, 71, -90, -90, -90, 75, 82, -90, -90, -90,
2118 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
2119 -90, -90, -90, -27, -90, -90, -90, -45, -90, -90,
2120 -60, -90, -90, -90, -90, -90, -90, -90, -90, -73,
2121 -90, -90, -89, -90, -90, -90, -90, -90
2125 D2Parser::yydefgoto_[] =
2127 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18,
2128 19, 28, 29, 30, 49, 248, 62, 63, 31, 48,
2129 59, 60, 88, 33, 50, 71, 72, 73, 155, 35,
2130 51, 89, 90, 91, 160, 92, 93, 94, 163, 245,
2131 95, 164, 96, 165, 97, 166, 98, 167, 99, 168,
2132 272, 273, 274, 275, 283, 43, 55, 130, 131, 132,
2133 186, 41, 54, 124, 125, 126, 183, 127, 181, 128,
2134 182, 47, 57, 145, 146, 194, 45, 56, 139, 140,
2135 141, 191, 142, 189, 143, 100, 169, 39, 53, 115,
2136 116, 117, 178, 37, 52, 108, 109, 110, 175, 111,
2137 172, 112, 113, 174, 74, 152, 75, 153, 76, 154,
2138 77, 156, 267, 268, 269, 280, 296, 297, 299, 310,
2139 311, 312, 317, 313, 314, 320, 315, 318, 332, 333,
2140 334, 341, 342, 343, 348, 344, 345, 346
2143 const unsigned short 2144 D2Parser::yytable_[] =
2146 70, 106, 105, 122, 121, 137, 136, 21, 32, 22,
2147 58, 23, 20, 107, 270, 123, 38, 138, 64, 65,
2148 66, 67, 158, 78, 79, 80, 81, 159, 61, 82,
2149 34, 83, 84, 85, 86, 133, 134, 83, 84, 87,
2150 36, 69, 68, 83, 84, 40, 101, 102, 103, 170,
2151 135, 104, 83, 84, 171, 24, 25, 26, 27, 83,
2152 84, 69, 69, 42, 118, 119, 303, 304, 69, 305,
2153 306, 44, 337, 120, 69, 338, 339, 340, 46, 176,
2154 184, 192, 176, 69, 177, 185, 193, 256, 243, 244,
2155 69, 1, 2, 3, 4, 5, 6, 7, 8, 9,
2156 184, 192, 170, 114, 281, 260, 263, 279, 70, 282,
2157 197, 198, 284, 284, 321, 352, 148, 285, 286, 322,
2158 353, 195, 129, 144, 196, 106, 105, 106, 105, 195,
2159 147, 149, 288, 122, 121, 122, 121, 107, 150, 107,
2160 151, 137, 136, 137, 136, 123, 300, 123, 335, 301,
2161 157, 336, 161, 138, 162, 138, 173, 179, 180, 187,
2162 188, 199, 237, 238, 239, 190, 200, 201, 202, 203,
2163 204, 206, 209, 207, 208, 210, 211, 212, 213, 214,
2164 215, 217, 218, 219, 220, 224, 225, 226, 230, 231,
2165 232, 236, 240, 242, 249, 241, 22, 250, 264, 246,
2166 271, 271, 251, 252, 258, 289, 287, 253, 291, 254,
2167 293, 255, 257, 259, 294, 295, 302, 319, 323, 324,
2168 326, 349, 261, 262, 329, 331, 266, 350, 351, 354,
2169 205, 247, 265, 216, 271, 276, 292, 298, 229, 228,
2170 227, 278, 277, 235, 233, 234, 325, 328, 308, 307,
2171 330, 223, 355, 222, 290, 316, 356, 357, 221, 359,
2172 309, 327, 347, 358, 0, 0, 0, 0, 0, 0,
2173 308, 307, 0, 0, 0, 0, 0, 0, 0, 0,
2178 D2Parser::yycheck_[] =
2180 50, 52, 52, 54, 54, 56, 56, 5, 7, 7,
2181 48, 9, 0, 52, 26, 54, 5, 56, 10, 11,
2182 12, 13, 3, 14, 15, 16, 17, 8, 53, 20,
2183 7, 22, 23, 24, 25, 14, 15, 22, 23, 30,
2184 7, 53, 34, 22, 23, 7, 31, 32, 33, 3,
2185 29, 36, 22, 23, 8, 53, 54, 55, 56, 22,
2186 23, 53, 53, 5, 27, 28, 36, 37, 53, 39,
2187 40, 7, 38, 36, 53, 41, 42, 43, 5, 3,
2188 3, 3, 3, 53, 8, 8, 8, 8, 18, 19,
2189 53, 44, 45, 46, 47, 48, 49, 50, 51, 52,
2190 3, 3, 3, 7, 3, 8, 8, 8, 158, 8,
2191 148, 149, 3, 3, 3, 3, 3, 8, 8, 8,
2192 8, 3, 7, 7, 6, 176, 176, 178, 178, 3,
2193 6, 4, 6, 184, 184, 186, 186, 176, 8, 178,
2194 3, 192, 192, 194, 194, 184, 3, 186, 3, 6,
2195 4, 6, 4, 192, 4, 194, 4, 6, 3, 6,
2196 3, 53, 200, 201, 202, 4, 4, 4, 4, 4,
2197 4, 4, 4, 54, 54, 4, 4, 4, 4, 4,
2198 4, 4, 54, 4, 4, 4, 4, 4, 4, 54,
2199 4, 4, 7, 53, 53, 7, 7, 7, 236, 21,
2200 250, 251, 7, 5, 5, 4, 6, 53, 4, 53,
2201 5, 53, 53, 53, 5, 7, 6, 4, 4, 4,
2202 4, 4, 53, 53, 5, 7, 35, 4, 4, 4,
2203 158, 211, 240, 170, 284, 251, 284, 294, 188, 186,
2204 184, 258, 252, 195, 192, 194, 54, 53, 299, 299,
2205 53, 180, 56, 178, 281, 300, 54, 54, 176, 53,
2206 299, 321, 335, 352, -1, -1, -1, -1, -1, -1,
2207 321, 321, -1, -1, -1, -1, -1, -1, -1, -1,
2212 D2Parser::yystos_[] =
2214 0, 44, 45, 46, 47, 48, 49, 50, 51, 52,
2215 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
2216 0, 5, 7, 9, 53, 54, 55, 56, 68, 69,
2217 70, 75, 7, 80, 7, 86, 7, 150, 5, 144,
2218 7, 118, 5, 112, 7, 133, 5, 128, 76, 71,
2219 81, 87, 151, 145, 119, 113, 134, 129, 68, 77,
2220 78, 53, 73, 74, 10, 11, 12, 13, 34, 53,
2221 79, 82, 83, 84, 161, 163, 165, 167, 14, 15,
2222 16, 17, 20, 22, 23, 24, 25, 30, 79, 88,
2223 89, 90, 92, 93, 94, 97, 99, 101, 103, 105,
2224 142, 31, 32, 33, 36, 79, 99, 101, 152, 153,
2225 154, 156, 158, 159, 7, 146, 147, 148, 27, 28,
2226 36, 79, 99, 101, 120, 121, 122, 124, 126, 7,
2227 114, 115, 116, 14, 15, 29, 79, 99, 101, 135,
2228 136, 137, 139, 141, 7, 130, 131, 6, 3, 4,
2229 8, 3, 162, 164, 166, 85, 168, 4, 3, 8,
2230 91, 4, 4, 95, 98, 100, 102, 104, 106, 143,
2231 3, 8, 157, 4, 160, 155, 3, 8, 149, 6,
2232 3, 125, 127, 123, 3, 8, 117, 6, 3, 140,
2233 4, 138, 3, 8, 132, 3, 6, 68, 68, 53,
2234 4, 4, 4, 4, 4, 83, 4, 54, 54, 4,
2235 4, 4, 4, 4, 4, 4, 89, 4, 54, 4,
2236 4, 153, 152, 148, 4, 4, 4, 121, 120, 116,
2237 4, 54, 4, 136, 135, 131, 4, 68, 68, 68,
2238 7, 7, 53, 18, 19, 96, 21, 70, 72, 53,
2239 7, 7, 5, 53, 53, 53, 8, 53, 5, 53,
2240 8, 53, 53, 8, 68, 88, 35, 169, 170, 171,
2241 26, 79, 107, 108, 109, 110, 107, 146, 130, 8,
2242 172, 3, 8, 111, 3, 8, 8, 6, 6, 4,
2243 170, 4, 109, 5, 5, 7, 173, 174, 114, 175,
2244 3, 6, 6, 36, 37, 39, 40, 79, 99, 101,
2245 176, 177, 178, 180, 181, 183, 174, 179, 184, 4,
2246 182, 3, 8, 4, 4, 54, 4, 177, 53, 5,
2247 53, 7, 185, 186, 187, 3, 6, 38, 41, 42,
2248 43, 188, 189, 190, 192, 193, 194, 186, 191, 4,
2249 4, 4, 3, 8, 4, 56, 54, 54, 189, 53
2255 0, 57, 59, 58, 60, 58, 61, 58, 62, 58,
2256 63, 58, 64, 58, 65, 58, 66, 58, 67, 58,
2257 68, 68, 68, 68, 68, 68, 68, 69, 71, 70,
2258 72, 73, 73, 74, 74, 76, 75, 77, 77, 78,
2259 78, 79, 81, 80, 82, 82, 83, 83, 83, 83,
2260 83, 83, 85, 84, 87, 86, 88, 88, 89, 89,
2261 89, 89, 89, 89, 89, 89, 89, 89, 89, 91,
2262 90, 92, 93, 95, 94, 96, 96, 98, 97, 100,
2263 99, 102, 101, 104, 103, 106, 105, 107, 107, 108,
2264 108, 109, 109, 111, 110, 113, 112, 114, 114, 115,
2265 115, 117, 116, 119, 118, 120, 120, 121, 121, 121,
2266 121, 121, 121, 123, 122, 125, 124, 127, 126, 129,
2267 128, 130, 130, 132, 131, 134, 133, 135, 135, 136,
2268 136, 136, 136, 136, 136, 138, 137, 140, 139, 141,
2269 143, 142, 145, 144, 146, 146, 147, 147, 149, 148,
2270 151, 150, 152, 152, 153, 153, 153, 153, 153, 153,
2271 153, 155, 154, 157, 156, 158, 160, 159, 162, 161,
2272 164, 163, 166, 165, 168, 167, 169, 169, 170, 172,
2273 171, 173, 173, 175, 174, 176, 176, 177, 177, 177,
2274 177, 177, 177, 177, 179, 178, 180, 182, 181, 184,
2275 183, 185, 185, 187, 186, 188, 188, 189, 189, 189,
2276 189, 191, 190, 192, 193, 194
2282 0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
2283 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
2284 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
2285 1, 0, 1, 3, 5, 0, 4, 0, 1, 1,
2286 3, 2, 0, 4, 1, 3, 1, 1, 1, 1,
2287 1, 1, 0, 6, 0, 4, 1, 3, 1, 1,
2288 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2289 4, 3, 3, 0, 4, 1, 1, 0, 4, 0,
2290 4, 0, 4, 0, 6, 0, 6, 0, 1, 1,
2291 3, 1, 1, 0, 6, 0, 4, 0, 1, 1,
2292 3, 0, 4, 0, 4, 1, 3, 1, 1, 1,
2293 1, 1, 1, 0, 4, 0, 4, 0, 6, 0,
2294 4, 1, 3, 0, 4, 0, 4, 1, 3, 1,
2295 1, 1, 1, 1, 1, 0, 4, 0, 4, 3,
2296 0, 6, 0, 4, 0, 1, 1, 3, 0, 4,
2297 0, 4, 1, 3, 1, 1, 1, 1, 1, 1,
2298 1, 0, 4, 0, 4, 3, 0, 4, 0, 4,
2299 0, 4, 0, 4, 0, 6, 1, 3, 1, 0,
2300 6, 1, 3, 0, 4, 1, 3, 1, 1, 1,
2301 1, 1, 1, 1, 0, 4, 3, 0, 4, 0,
2302 6, 1, 3, 0, 4, 1, 3, 1, 1, 1,
2311 const D2Parser::yytname_[] =
2313 "\"end of file\"",
"error",
"$undefined",
"\",\"",
"\":\"",
"\"[\"",
2314 "\"]\"",
"\"{\"",
"\"}\"",
"\"null\"",
"\"Dhcp6\"",
"\"Dhcp4\"",
2315 "\"Control-agent\"",
"\"DhcpDdns\"",
"\"ip-address\"",
"\"port\"",
2316 "\"dns-server-timeout\"",
"\"ncr-protocol\"",
"\"UDP\"",
"\"TCP\"",
2317 "\"ncr-format\"",
"\"JSON\"",
"\"user-context\"",
"\"comment\"",
2318 "\"forward-ddns\"",
"\"reverse-ddns\"",
"\"ddns-domains\"",
2319 "\"key-name\"",
"\"dns-servers\"",
"\"hostname\"",
"\"tsig-keys\"",
2320 "\"algorithm\"",
"\"digest-bits\"",
"\"secret\"",
"\"Logging\"",
2321 "\"loggers\"",
"\"name\"",
"\"output_options\"",
"\"output\"",
2322 "\"debuglevel\"",
"\"severity\"",
"\"flush\"",
"\"maxsize\"",
2323 "\"maxver\"",
"TOPLEVEL_JSON",
"TOPLEVEL_DHCPDDNS",
"SUB_DHCPDDNS",
2324 "SUB_TSIG_KEY",
"SUB_TSIG_KEYS",
"SUB_DDNS_DOMAIN",
"SUB_DDNS_DOMAINS",
2325 "SUB_DNS_SERVER",
"SUB_DNS_SERVERS",
"\"constant string\"",
2326 "\"integer\"",
"\"floating point\"",
"\"boolean\"",
"$accept",
"start",
2327 "$@1",
"$@2",
"$@3",
"$@4",
"$@5",
"$@6",
"$@7",
"$@8",
"$@9",
"value",
2328 "sub_json",
"map2",
"$@10",
"map_value",
"map_content",
"not_empty_map",
2329 "list_generic",
"$@11",
"list_content",
"not_empty_list",
2330 "unknown_map_entry",
"syntax_map",
"$@12",
"global_objects",
2331 "global_object",
"dhcpddns_object",
"$@13",
"sub_dhcpddns",
"$@14",
2332 "dhcpddns_params",
"dhcpddns_param",
"ip_address",
"$@15",
"port",
2333 "dns_server_timeout",
"ncr_protocol",
"$@16",
"ncr_protocol_value",
2334 "ncr_format",
"$@17",
"user_context",
"$@18",
"comment",
"$@19",
2335 "forward_ddns",
"$@20",
"reverse_ddns",
"$@21",
"ddns_mgr_params",
2336 "not_empty_ddns_mgr_params",
"ddns_mgr_param",
"ddns_domains",
"$@22",
2337 "sub_ddns_domains",
"$@23",
"ddns_domain_list",
2338 "not_empty_ddns_domain_list",
"ddns_domain",
"$@24",
"sub_ddns_domain",
2339 "$@25",
"ddns_domain_params",
"ddns_domain_param",
"ddns_domain_name",
2340 "$@26",
"ddns_domain_key_name",
"$@27",
"dns_servers",
"$@28",
2341 "sub_dns_servers",
"$@29",
"dns_server_list",
"dns_server",
"$@30",
2342 "sub_dns_server",
"$@31",
"dns_server_params",
"dns_server_param",
2343 "dns_server_hostname",
"$@32",
"dns_server_ip_address",
"$@33",
2344 "dns_server_port",
"tsig_keys",
"$@34",
"sub_tsig_keys",
"$@35",
2345 "tsig_keys_list",
"not_empty_tsig_keys_list",
"tsig_key",
"$@36",
2346 "sub_tsig_key",
"$@37",
"tsig_key_params",
"tsig_key_param",
2347 "tsig_key_name",
"$@38",
"tsig_key_algorithm",
"$@39",
2348 "tsig_key_digest_bits",
"tsig_key_secret",
"$@40",
"dhcp6_json_object",
2349 "$@41",
"dhcp4_json_object",
"$@42",
"control_agent_json_object",
"$@43",
2350 "logging_object",
"$@44",
"logging_params",
"logging_param",
"loggers",
2351 "$@45",
"loggers_entries",
"logger_entry",
"$@46",
"logger_params",
2352 "logger_param",
"name",
"$@47",
"debuglevel",
"severity",
"$@48",
2353 "output_options_list",
"$@49",
"output_options_list_content",
2354 "output_entry",
"$@50",
"output_params_list",
"output_params",
"output",
2355 "$@51",
"flush",
"maxsize",
"maxver", YY_NULLPTR
2359 const unsigned short 2360 D2Parser::yyrline_[] =
2362 0, 120, 120, 120, 121, 121, 122, 122, 123, 123,
2363 124, 124, 125, 125, 126, 126, 127, 127, 128, 128,
2364 136, 137, 138, 139, 140, 141, 142, 145, 150, 150,
2365 161, 164, 165, 168, 172, 179, 179, 186, 187, 190,
2366 194, 205, 215, 215, 227, 228, 232, 233, 234, 235,
2367 236, 237, 242, 242, 252, 252, 260, 261, 265, 266,
2368 267, 268, 269, 270, 271, 272, 273, 274, 275, 278,
2369 278, 286, 294, 303, 303, 311, 312, 315, 315, 323,
2370 323, 348, 348, 375, 375, 385, 385, 395, 396, 399,
2371 400, 403, 404, 409, 409, 419, 419, 426, 427, 430,
2372 431, 434, 434, 442, 442, 449, 450, 453, 454, 455,
2373 456, 457, 458, 462, 462, 474, 474, 486, 486, 496,
2374 496, 503, 504, 507, 507, 515, 515, 522, 523, 526,
2375 527, 528, 529, 530, 531, 534, 534, 546, 546, 554,
2376 568, 568, 578, 578, 585, 586, 589, 590, 593, 593,
2377 601, 601, 610, 611, 614, 615, 616, 617, 618, 619,
2378 620, 623, 623, 635, 635, 646, 654, 654, 669, 669,
2379 676, 676, 683, 683, 695, 695, 708, 709, 713, 717,
2380 717, 729, 730, 734, 734, 742, 743, 746, 747, 748,
2381 749, 750, 751, 752, 755, 755, 763, 767, 767, 775,
2382 775, 785, 786, 789, 789, 797, 798, 801, 802, 803,
2383 804, 807, 807, 815, 820, 825
2388 D2Parser::yystack_print_ ()
2390 *yycdebug_ <<
"Stack now";
2392 i = yystack_.
begin (),
2393 i_end = yystack_.
end ();
2395 *yycdebug_ <<
' ' << i->state;
2401 D2Parser::yy_reduce_print_ (
int yyrule)
2403 unsigned yylno = yyrline_[yyrule];
2404 int yynrhs = yyr2_[yyrule];
2406 *yycdebug_ <<
"Reducing stack by rule " << yyrule - 1
2407 <<
" (line " << yylno <<
"):\n";
2409 for (
int yyi = 0; yyi < yynrhs; yyi++)
2411 yystack_[(yynrhs) - (yyi + 1)]);
2413 #endif // D2_PARSER_DEBUG 2416 #line 14 "d2_parser.yy" // lalr1.cc:1218 2418 #line 2419 "d2_parser.cc" // lalr1.cc:1218 2419 #line 830 "d2_parser.yy" // lalr1.cc:1219 2424 const std::string& what)
2426 ctx.
error(loc, what);
Used while parsing a list of tsig-keys.
Define the isc::d2::parser class.
Used while parsing Logging/loggers/output_options structures.
Syntax errors thrown from user actions.
Used while parsing content of a dns-server.
virtual int parse()
Parse.
Used while parsing content of DhcpDdns/tsig-keys/algorithm.
void set_debug_level(debug_level_type l)
Set the current debugging level.
Evaluation context, an interface to the expression evaluation.
This one is used in pure JSON mode.
bool empty() const
Whether empty.
D2Parser(isc::d2::D2ParserContext &ctx_yyarg)
Build a parser object.
int debug_level_type
Type for debugging levels.
#define YY_MOVE_REF(Type)
boost::shared_ptr< Element > ElementPtr
Used while parsing content of a tsig-key.
void clear()
Destroy contents, and record that is empty.
Used while parsing Logging/loggers structures.
#define YY_REDUCE_PRINT(Rule)
void set_debug_stream(std::ostream &)
Set the current debugging stream.
debug_level_type debug_level() const YY_ATTRIBUTE_PURE
The current debugging level.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
std::ostream & debug_stream() const YY_ATTRIBUTE_PURE
The current debugging stream.
Used while parsing content of a ddns-domain.
Used while parsing content of DhcpDdns/reverse-ddns.
void leave()
Leave a syntactic context.
Used while parsing content of Logging.
Used while parsing DhcpDdns/ncr-protocol.
#define YY_SYMBOL_PRINT(Title, Symbol)
Notes: IntElement type is changed to int64_t.
#define YYLLOC_DEFAULT(Current, Rhs, N)
boost::shared_ptr< const Element > ConstElementPtr
Used while parsing DhcpDdns/ncr-format.
std::vector< stack_symbol_type > ::const_reverse_iterator const_iterator
void push(YY_MOVE_REF(T) t)
Steal the contents of t.
Defines the logger used by the top-level component of kea-dhcp-ddns.
void enter(const ParserContext &ctx)
Enter a new syntactic context.
Used while parsing content of DhcpDdns.
Present a slice of the top of a stack.
void merge(ElementPtr element, ConstElementPtr other)
Merges the data from other into element.
Used while parsing a list of ddns-domains.
std::vector< isc::data::ElementPtr > stack_
JSON elements being parsed.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
int symbol_number_type
Symbol type: an internal symbol number.
ParserContext ctx_
Current syntactic context.
const_iterator end() const
const_iterator begin() const
location_type location
The location.
isc::data::Element::Position loc2pos(isc::d2::location &loc)
Converts bison's position to one understood by isc::data::Element.
location location_type
Symbol locations.
void error(const isc::d2::location &loc, const std::string &what)
Error handler.
const std::string contextName()
Get the syntax context name.