39 #define yylex agent_lex
47 #line 33 "agent_parser.yy"
51 #line 52 "agent_parser.cc"
55 # if defined YYENABLE_NLS && YYENABLE_NLS
58 # define YY_(msgid) dgettext ("bison-runtime", msgid)
62 # define YY_(msgid) msgid
69 # if defined __GNUC__ && !defined __EXCEPTIONS
70 # define YY_EXCEPTIONS 0
72 # define YY_EXCEPTIONS 1
76 #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
81 # ifndef YYLLOC_DEFAULT
82 # define YYLLOC_DEFAULT(Current, Rhs, N) \
86 (Current).begin = YYRHSLOC (Rhs, 1).begin; \
87 (Current).end = YYRHSLOC (Rhs, N).end; \
91 (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
101 # define YYCDEBUG if (yydebug_) (*yycdebug_)
103 # define YY_SYMBOL_PRINT(Title, Symbol) \
107 *yycdebug_ << Title << ' '; \
108 yy_print_ (*yycdebug_, Symbol); \
109 *yycdebug_ << '\n'; \
113 # define YY_REDUCE_PRINT(Rule) \
116 yy_reduce_print_ (Rule); \
119 # define YY_STACK_PRINT() \
122 yy_stack_print_ (); \
125 #else // !AGENT_DEBUG
127 # define YYCDEBUG if (false) std::cerr
128 # define YY_SYMBOL_PRINT(Title, Symbol) YY_USE (Symbol)
129 # define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
130 # define YY_STACK_PRINT() static_cast<void> (0)
132 #endif // !AGENT_DEBUG
134 #define yyerrok (yyerrstatus_ = 0)
135 #define yyclearin (yyla.clear ())
137 #define YYACCEPT goto yyacceptlab
138 #define YYABORT goto yyabortlab
139 #define YYERROR goto yyerrorlab
140 #define YYRECOVERING() (!!yyerrstatus_)
142 #line 14 "agent_parser.yy"
143 namespace isc {
namespace agent {
144 #line 145 "agent_parser.cc"
150 yycdebug_ (&std::cerr),
171 : state (empty_state)
174 AgentParser::by_state::by_state (
const by_state& that)
YY_NOEXCEPT
185 AgentParser::by_state::move (by_state& that)
191 AgentParser::by_state::by_state (state_type s)
YY_NOEXCEPT
198 if (state == empty_state)
204 AgentParser::stack_symbol_type::stack_symbol_type ()
207 AgentParser::stack_symbol_type::stack_symbol_type (
YY_RVREF (stack_symbol_type) that)
210 switch (that.kind ())
220 value.YY_MOVE_OR_COPY<
bool > (
YY_MOVE (that.value));
224 value.YY_MOVE_OR_COPY<
double > (
YY_MOVE (that.value));
228 value.YY_MOVE_OR_COPY< int64_t > (
YY_MOVE (that.value));
232 value.YY_MOVE_OR_COPY< std::string > (
YY_MOVE (that.value));
239 #if 201103L <= YY_CPLUSPLUS
241 that.state = empty_state;
245 AgentParser::stack_symbol_type::stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) that)
246 : super_type (s,
YY_MOVE (that.location))
248 switch (that.kind ())
258 value.move<
bool > (
YY_MOVE (that.value));
262 value.move<
double > (
YY_MOVE (that.value));
266 value.move< int64_t > (
YY_MOVE (that.value));
270 value.move< std::string > (
YY_MOVE (that.value));
281 #if YY_CPLUSPLUS < 201103L
282 AgentParser::stack_symbol_type&
283 AgentParser::stack_symbol_type::operator= (
const stack_symbol_type& that)
286 switch (that.kind ())
296 value.copy<
bool > (that.value);
300 value.copy<
double > (that.value);
304 value.copy< int64_t > (that.value);
308 value.copy< std::string > (that.value);
315 location = that.location;
319 AgentParser::stack_symbol_type&
320 AgentParser::stack_symbol_type::operator= (stack_symbol_type& that)
323 switch (that.kind ())
333 value.move<
bool > (that.value);
337 value.move<
double > (that.value);
341 value.move< int64_t > (that.value);
345 value.move< std::string > (that.value);
352 location = that.location;
354 that.state = empty_state;
359 template <
typename Base>
361 AgentParser::yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const
368 template <
typename Base>
370 AgentParser::yy_print_ (std::ostream& yyo,
const basic_symbol<Base>& yysym)
const
372 std::ostream& yyoutput = yyo;
375 yyo <<
"empty symbol";
379 yyo << (yykind <
YYNTOKENS ?
"token" :
"nterm")
380 <<
' ' << yysym.name () <<
" ("
381 << yysym.location <<
": ";
385 #line 113 "agent_parser.yy"
386 { yyoutput << yysym.value.template as < std::string > (); }
387 #line 388 "agent_parser.cc"
391 #line 113 "agent_parser.yy"
392 { yyoutput << yysym.value.template as < int64_t > (); }
393 #line 394 "agent_parser.cc"
397 #line 113 "agent_parser.yy"
398 { yyoutput << yysym.value.template as < double > (); }
399 #line 400 "agent_parser.cc"
403 #line 113 "agent_parser.yy"
404 { yyoutput << yysym.value.template as < bool > (); }
405 #line 406 "agent_parser.cc"
409 #line 113 "agent_parser.yy"
410 { yyoutput << yysym.value.template as < ElementPtr > (); }
411 #line 412 "agent_parser.cc"
415 #line 113 "agent_parser.yy"
416 { yyoutput << yysym.value.template as < ElementPtr > (); }
417 #line 418 "agent_parser.cc"
421 #line 113 "agent_parser.yy"
422 { yyoutput << yysym.value.template as < ElementPtr > (); }
423 #line 424 "agent_parser.cc"
427 #line 113 "agent_parser.yy"
428 { yyoutput << yysym.value.template as < ElementPtr > (); }
429 #line 430 "agent_parser.cc"
441 AgentParser::yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym)
449 AgentParser::yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym)
451 #if 201103L <= YY_CPLUSPLUS
452 yypush_ (m, stack_symbol_type (s, std::move (sym)));
454 stack_symbol_type ss (s, sym);
460 AgentParser::yypop_ (
int n)
490 #endif // AGENT_DEBUG
492 AgentParser::state_type
493 AgentParser::yy_lr_goto_state_ (state_type yystate,
int yysym)
495 int yyr = yypgoto_[yysym -
YYNTOKENS] + yystate;
496 if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
497 return yytable_[yyr];
503 AgentParser::yy_pact_value_is_default_ (
int yyvalue)
505 return yyvalue == yypact_ninf_;
509 AgentParser::yy_table_value_is_error_ (
int yyvalue)
511 return yyvalue == yytable_ninf_;
529 int yyerrstatus_ = 0;
535 stack_symbol_type yyerror_range[3];
542 #endif // YY_EXCEPTIONS
552 yypush_ (YY_NULLPTR, 0,
YY_MOVE (yyla));
558 YYCDEBUG <<
"Entering state " << int (yystack_[0].state) <<
'\n';
562 if (yystack_[0].state == yyfinal_)
573 yyn = yypact_[+yystack_[0].state];
574 if (yy_pact_value_is_default_ (yyn))
583 #endif // YY_EXCEPTIONS
586 yyla.
move (yylookahead);
591 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
595 #endif // YY_EXCEPTIONS
612 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.
kind ())
621 if (yy_table_value_is_error_ (yyn))
632 yypush_ (
"Shifting", state_type (yyn),
YY_MOVE (yyla));
640 yyn = yydefact_[+yystack_[0].state];
652 stack_symbol_type yylhs;
653 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
667 yylhs.value.emplace<
bool > ();
671 yylhs.value.emplace<
double > ();
675 yylhs.value.emplace< int64_t > ();
679 yylhs.value.emplace< std::string > ();
689 stack_type::slice range (yystack_, yylen);
691 yyerror_range[1].location = yylhs.location;
698 #endif // YY_EXCEPTIONS
703 #line 124 "agent_parser.yy"
705 #line 706 "agent_parser.cc"
709 #line 125 "agent_parser.yy"
711 #line 712 "agent_parser.cc"
715 #line 126 "agent_parser.yy"
717 #line 718 "agent_parser.cc"
721 #line 134 "agent_parser.yy"
727 #line 728 "agent_parser.cc"
731 #line 138 "agent_parser.yy"
735 #line 736 "agent_parser.cc"
739 #line 145 "agent_parser.yy"
744 #line 745 "agent_parser.cc"
748 #line 151 "agent_parser.yy"
750 #line 751 "agent_parser.cc"
754 #line 152 "agent_parser.yy"
756 #line 757 "agent_parser.cc"
760 #line 153 "agent_parser.yy"
762 #line 763 "agent_parser.cc"
766 #line 154 "agent_parser.yy"
768 #line 769 "agent_parser.cc"
772 #line 155 "agent_parser.yy"
774 #line 775 "agent_parser.cc"
778 #line 156 "agent_parser.yy"
780 #line 781 "agent_parser.cc"
784 #line 157 "agent_parser.yy"
786 #line 787 "agent_parser.cc"
790 #line 161 "agent_parser.yy"
797 #line 798 "agent_parser.cc"
801 #line 166 "agent_parser.yy"
807 #line 808 "agent_parser.cc"
811 #line 172 "agent_parser.yy"
813 #line 814 "agent_parser.cc"
817 #line 186 "agent_parser.yy"
820 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
821 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
823 #line 824 "agent_parser.cc"
827 #line 191 "agent_parser.yy"
831 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
832 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
834 #line 835 "agent_parser.cc"
838 #line 199 "agent_parser.yy"
843 #line 844 "agent_parser.cc"
847 #line 202 "agent_parser.yy"
850 #line 851 "agent_parser.cc"
854 #line 209 "agent_parser.yy"
859 #line 860 "agent_parser.cc"
863 #line 213 "agent_parser.yy"
868 #line 869 "agent_parser.cc"
872 #line 226 "agent_parser.yy"
875 const std::string& keyword = yystack_[1].value.as < std::string > ();
876 error(yystack_[1].location,
877 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
879 #line 880 "agent_parser.cc"
883 #line 234 "agent_parser.yy"
890 #line 891 "agent_parser.cc"
894 #line 239 "agent_parser.yy"
900 #line 901 "agent_parser.cc"
904 #line 246 "agent_parser.yy"
911 ctx.
unique(
"Control-agent", ctx.
loc2pos(yystack_[0].location));
913 ctx.
stack_.back()->set(
"Control-agent", m);
917 #line 918 "agent_parser.cc"
921 #line 257 "agent_parser.yy"
928 #line 929 "agent_parser.cc"
932 #line 285 "agent_parser.yy"
937 #line 938 "agent_parser.cc"
941 #line 288 "agent_parser.yy"
944 ctx.
stack_.back()->set(
"http-host", host);
947 #line 948 "agent_parser.cc"
951 #line 294 "agent_parser.yy"
955 ctx.
stack_.back()->set(
"http-port", prf);
957 #line 958 "agent_parser.cc"
961 #line 300 "agent_parser.yy"
963 ctx.
unique(
"trust-anchor", ctx.
loc2pos(yystack_[0].location));
966 #line 967 "agent_parser.cc"
970 #line 303 "agent_parser.yy"
973 ctx.
stack_.back()->set(
"trust-anchor", ca);
976 #line 977 "agent_parser.cc"
980 #line 309 "agent_parser.yy"
985 #line 986 "agent_parser.cc"
989 #line 312 "agent_parser.yy"
992 ctx.
stack_.back()->set(
"cert-file", cert);
995 #line 996 "agent_parser.cc"
999 #line 318 "agent_parser.yy"
1004 #line 1005 "agent_parser.cc"
1008 #line 321 "agent_parser.yy"
1011 ctx.
stack_.back()->set(
"key-file", key);
1014 #line 1015 "agent_parser.cc"
1018 #line 327 "agent_parser.yy"
1020 ctx.
unique(
"cert-required", ctx.
loc2pos(yystack_[2].location));
1022 ctx.
stack_.back()->set(
"cert-required", req);
1024 #line 1025 "agent_parser.cc"
1028 #line 333 "agent_parser.yy"
1032 #line 1033 "agent_parser.cc"
1036 #line 335 "agent_parser.yy"
1045 if ((old->size() != 1) || !old->contains(
"comment")) {
1046 std::stringstream msg;
1047 msg <<
"duplicate user-context entries (previous at "
1048 << old->getPosition().str() <<
")";
1049 error(yystack_[3].location, msg.str());
1052 user_context->set(
"comment", old->get(
"comment"));
1056 parent->set(
"user-context", user_context);
1059 #line 1060 "agent_parser.cc"
1063 #line 358 "agent_parser.yy"
1067 #line 1068 "agent_parser.cc"
1071 #line 360 "agent_parser.yy"
1076 user_context->set(
"comment", comment);
1082 if (old->contains(
"comment")) {
1083 std::stringstream msg;
1084 msg <<
"duplicate user-context/comment entries (previous at "
1085 << old->getPosition().str() <<
")";
1086 error(yystack_[3].location, msg.str());
1089 merge(user_context, old);
1093 parent->set(
"user-context", user_context);
1096 #line 1097 "agent_parser.cc"
1100 #line 386 "agent_parser.yy"
1102 ctx.
unique(
"hooks-libraries", ctx.
loc2pos(yystack_[0].location));
1104 ctx.
stack_.back()->set(
"hooks-libraries", l);
1108 #line 1109 "agent_parser.cc"
1112 #line 392 "agent_parser.yy"
1117 #line 1118 "agent_parser.cc"
1121 #line 405 "agent_parser.yy"
1124 ctx.
stack_.back()->add(m);
1127 #line 1128 "agent_parser.cc"
1131 #line 409 "agent_parser.yy"
1135 #line 1136 "agent_parser.cc"
1139 #line 422 "agent_parser.yy"
1144 #line 1145 "agent_parser.cc"
1148 #line 425 "agent_parser.yy"
1151 ctx.
stack_.back()->set(
"library", lib);
1154 #line 1155 "agent_parser.cc"
1158 #line 431 "agent_parser.yy"
1160 ctx.
unique(
"parameters", ctx.
loc2pos(yystack_[0].location));
1163 #line 1164 "agent_parser.cc"
1167 #line 434 "agent_parser.yy"
1169 ctx.
stack_.back()->set(
"parameters", yystack_[0].value.as <
ElementPtr > ());
1172 #line 1173 "agent_parser.cc"
1176 #line 442 "agent_parser.yy"
1178 ctx.
unique(
"control-sockets", ctx.
loc2pos(yystack_[2].location));
1180 ctx.
stack_.back()->set(
"control-sockets", m);
1184 #line 1185 "agent_parser.cc"
1188 #line 448 "agent_parser.yy"
1193 #line 1194 "agent_parser.cc"
1197 #line 469 "agent_parser.yy"
1201 ctx.
stack_.back()->set(
"dhcp4", m);
1205 #line 1206 "agent_parser.cc"
1209 #line 475 "agent_parser.yy"
1214 #line 1215 "agent_parser.cc"
1218 #line 481 "agent_parser.yy"
1222 ctx.
stack_.back()->set(
"dhcp6", m);
1226 #line 1227 "agent_parser.cc"
1230 #line 487 "agent_parser.yy"
1235 #line 1236 "agent_parser.cc"
1239 #line 493 "agent_parser.yy"
1243 ctx.
stack_.back()->set(
"d2", m);
1247 #line 1248 "agent_parser.cc"
1251 #line 499 "agent_parser.yy"
1256 #line 1257 "agent_parser.cc"
1260 #line 518 "agent_parser.yy"
1262 ctx.
unique(
"socket-name", ctx.
loc2pos(yystack_[0].location));
1265 #line 1266 "agent_parser.cc"
1269 #line 521 "agent_parser.yy"
1272 ctx.
stack_.back()->set(
"socket-name", name);
1275 #line 1276 "agent_parser.cc"
1279 #line 528 "agent_parser.yy"
1281 ctx.
unique(
"socket-type", ctx.
loc2pos(yystack_[0].location));
1284 #line 1285 "agent_parser.cc"
1288 #line 531 "agent_parser.yy"
1290 ctx.
stack_.back()->set(
"socket-type", yystack_[0].value.as <
ElementPtr > ());
1293 #line 1294 "agent_parser.cc"
1297 #line 537 "agent_parser.yy"
1299 #line 1300 "agent_parser.cc"
1303 #line 544 "agent_parser.yy"
1305 ctx.
unique(
"authentication", ctx.
loc2pos(yystack_[0].location));
1307 ctx.
stack_.back()->set(
"authentication", m);
1311 #line 1312 "agent_parser.cc"
1315 #line 550 "agent_parser.yy"
1322 #line 1323 "agent_parser.cc"
1326 #line 569 "agent_parser.yy"
1331 #line 1332 "agent_parser.cc"
1335 #line 572 "agent_parser.yy"
1340 #line 1341 "agent_parser.cc"
1344 #line 577 "agent_parser.yy"
1346 #line 1347 "agent_parser.cc"
1350 #line 580 "agent_parser.yy"
1355 #line 1356 "agent_parser.cc"
1359 #line 583 "agent_parser.yy"
1362 ctx.
stack_.back()->set(
"realm", realm);
1365 #line 1366 "agent_parser.cc"
1369 #line 589 "agent_parser.yy"
1373 ctx.
stack_.back()->set(
"clients", l);
1377 #line 1378 "agent_parser.cc"
1381 #line 595 "agent_parser.yy"
1386 #line 1387 "agent_parser.cc"
1390 #line 608 "agent_parser.yy"
1393 ctx.
stack_.back()->add(m);
1396 #line 1397 "agent_parser.cc"
1400 #line 612 "agent_parser.yy"
1404 #line 1405 "agent_parser.cc"
1408 #line 627 "agent_parser.yy"
1413 #line 1414 "agent_parser.cc"
1417 #line 630 "agent_parser.yy"
1420 ctx.
stack_.back()->set(
"user", user);
1423 #line 1424 "agent_parser.cc"
1427 #line 636 "agent_parser.yy"
1432 #line 1433 "agent_parser.cc"
1436 #line 639 "agent_parser.yy"
1439 ctx.
stack_.back()->set(
"password", password);
1442 #line 1443 "agent_parser.cc"
1446 #line 649 "agent_parser.yy"
1450 ctx.
stack_.back()->set(
"loggers", l);
1454 #line 1455 "agent_parser.cc"
1458 #line 655 "agent_parser.yy"
1463 #line 1464 "agent_parser.cc"
1467 #line 667 "agent_parser.yy"
1470 ctx.
stack_.back()->add(l);
1473 #line 1474 "agent_parser.cc"
1477 #line 671 "agent_parser.yy"
1481 #line 1482 "agent_parser.cc"
1485 #line 688 "agent_parser.yy"
1490 #line 1491 "agent_parser.cc"
1494 #line 691 "agent_parser.yy"
1497 ctx.
stack_.back()->set(
"name", name);
1500 #line 1501 "agent_parser.cc"
1504 #line 697 "agent_parser.yy"
1506 ctx.
unique(
"debuglevel", ctx.
loc2pos(yystack_[2].location));
1508 ctx.
stack_.back()->set(
"debuglevel", dl);
1510 #line 1511 "agent_parser.cc"
1514 #line 703 "agent_parser.yy"
1519 #line 1520 "agent_parser.cc"
1523 #line 706 "agent_parser.yy"
1526 ctx.
stack_.back()->set(
"severity", sev);
1529 #line 1530 "agent_parser.cc"
1533 #line 712 "agent_parser.yy"
1535 ctx.
unique(
"output_options", ctx.
loc2pos(yystack_[0].location));
1537 ctx.
stack_.back()->set(
"output_options", l);
1541 #line 1542 "agent_parser.cc"
1545 #line 718 "agent_parser.yy"
1550 #line 1551 "agent_parser.cc"
1554 #line 727 "agent_parser.yy"
1557 ctx.
stack_.back()->add(m);
1560 #line 1561 "agent_parser.cc"
1564 #line 731 "agent_parser.yy"
1568 #line 1569 "agent_parser.cc"
1572 #line 746 "agent_parser.yy"
1577 #line 1578 "agent_parser.cc"
1581 #line 749 "agent_parser.yy"
1584 ctx.
stack_.back()->set(
"output", sev);
1587 #line 1588 "agent_parser.cc"
1591 #line 755 "agent_parser.yy"
1595 ctx.
stack_.back()->set(
"flush", flush);
1597 #line 1598 "agent_parser.cc"
1601 #line 761 "agent_parser.yy"
1605 ctx.
stack_.back()->set(
"maxsize", maxsize);
1607 #line 1608 "agent_parser.cc"
1611 #line 767 "agent_parser.yy"
1615 ctx.
stack_.back()->set(
"maxver", maxver);
1617 #line 1618 "agent_parser.cc"
1621 #line 773 "agent_parser.yy"
1626 #line 1627 "agent_parser.cc"
1630 #line 776 "agent_parser.yy"
1633 ctx.
stack_.back()->set(
"pattern", sev);
1636 #line 1637 "agent_parser.cc"
1640 #line 1641 "agent_parser.cc"
1649 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
1653 #endif // YY_EXCEPTIONS
1659 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
1673 std::string msg = yysyntax_error_ (yyctx);
1678 yyerror_range[1].location = yyla.
location;
1679 if (yyerrstatus_ == 3)
1687 else if (!yyla.
empty ())
1689 yy_destroy_ (
"Error: discarding", yyla);
1723 yyn = yypact_[+yystack_[0].state];
1724 if (!yy_pact_value_is_default_ (yyn))
1727 if (0 <= yyn && yyn <= yylast_
1730 yyn = yytable_[yyn];
1737 if (yystack_.size () == 1)
1740 yyerror_range[1].location = yystack_[0].location;
1741 yy_destroy_ (
"Error: popping", yystack_[0]);
1746 stack_symbol_type error_token;
1748 yyerror_range[2].location = yyla.
location;
1752 error_token.state = state_type (yyn);
1753 yypush_ (
"Shifting",
YY_MOVE (error_token));
1779 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
1785 while (1 < yystack_.size ())
1787 yy_destroy_ (
"Cleanup: popping", yystack_[0]);
1796 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack\n";
1800 yy_destroy_ (YY_NULLPTR, yyla);
1802 while (1 < yystack_.size ())
1804 yy_destroy_ (YY_NULLPTR, yystack_[0]);
1809 #endif // YY_EXCEPTIONS
1824 AgentParser::yytnamerr_ (
const char *yystr)
1829 char const *yyp = yystr;
1836 goto do_not_strip_quotes;
1840 goto do_not_strip_quotes;
1852 do_not_strip_quotes: ;
1861 return yytnamerr_ (yytname_[yysymbol]);
1868 : yyparser_ (yyparser)
1878 int yyn = yypact_[+yyparser_.yystack_[0].state];
1879 if (!yy_pact_value_is_default_ (yyn))
1884 int yyxbegin = yyn < 0 ? -yyn : 0;
1886 int yychecklim = yylast_ - yyn + 1;
1888 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
1890 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
1894 else if (yycount == yyargn)
1901 if (yyarg && yycount == 0 && 0 < yyargn)
1909 AgentParser::yy_syntax_error_arguments_ (
const context& yyctx,
1940 yyarg[0] = yyctx.
token ();
1941 int yyn = yyctx.
expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
1949 AgentParser::yysyntax_error_ (
const context& yyctx)
const
1952 enum { YYARGS_MAX = 5 };
1955 int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
1957 char const* yyformat = YY_NULLPTR;
1960 #define YYCASE_(N, S) \
1966 YYCASE_ (1,
YY_(
"syntax error, unexpected %s"));
1967 YYCASE_ (2,
YY_(
"syntax error, unexpected %s, expecting %s"));
1968 YYCASE_ (3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
1969 YYCASE_ (4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
1970 YYCASE_ (5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1976 std::ptrdiff_t yyi = 0;
1977 for (
char const* yyp = yyformat; *yyp; ++yyp)
1978 if (yyp[0] ==
'%' && yyp[1] ==
's' && yyi < yycount)
1989 const short AgentParser::yypact_ninf_ = -165;
1991 const signed char AgentParser::yytable_ninf_ = -1;
1994 AgentParser::yypact_[] =
1996 71, -165, -165, -165, 14, 0, -3, 37, -165, -165,
1997 -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1998 -165, -165, -165, -165, 0, -4, 44, 4, -165, 49,
1999 72, 86, 90, 106, -165, 102, -165, 109, -165, -165,
2000 -165, -165, -165, -165, 110, 111, -165, -165, 116, -165,
2001 5, -165, -165, -165, -165, -165, -165, -165, -165, -165,
2002 -165, -165, -165, -165, -165, 0, 0, -165, 76, 117,
2003 -165, 122, 78, 126, 127, 131, 133, 134, 135, 89,
2004 136, 138, 140, -165, 4, -165, -165, -165, 141, 139,
2005 91, -165, 142, 99, 143, 103, 107, 108, -165, -165,
2006 146, 148, -165, 0, 4, -165, -165, -165, -165, 54,
2007 -165, -165, -165, -17, 147, 151, -165, 28, -165, -165,
2008 -165, -165, -165, -165, 53, -165, -165, -165, -165, -165,
2009 -165, -165, -165, 61, -165, -165, -165, -165, -165, 149,
2010 144, -165, -165, 40, -165, -165, 155, 156, 157, 54,
2011 -165, 158, 159, 160, -17, -165, -14, -165, 147, 25,
2012 151, -165, 150, 119, 161, -165, 162, 163, 164, -165,
2013 -165, -165, -165, 68, -165, -165, -165, -165, -165, -165,
2014 168, -165, -165, -165, -165, 88, -165, -165, -165, -165,
2015 -165, -165, -165, -165, -165, 166, 11, 11, 11, 170,
2016 171, -12, -165, 172, 173, 115, 174, 25, -165, -165,
2017 177, 176, -165, -165, -165, -165, -165, -165, 94, -165,
2018 -165, -165, 96, 97, 137, 142, -165, 145, 179, -165,
2019 152, -165, 67, -165, 166, 181, 183, 11, -165, -165,
2020 -165, -165, -165, -165, 182, -165, -165, -165, -165, -165,
2021 -165, 98, -165, -165, -165, -165, 153, 165, -165, -165,
2022 105, -165, 184, 186, 67, -165, -165, -165, -165, 50,
2023 182, -165, 154, 167, -165, -165, 187, 188, 189, -165,
2024 104, -165, -165, -165, -165, -165, -165, -165, -165, -165,
2025 191, 169, 175, 178, 192, 50, -165, 180, -165, -165,
2026 -165, 185, -165, -165, -165
2030 AgentParser::yydefact_[] =
2032 0, 2, 4, 6, 0, 0, 0, 0, 1, 25,
2033 18, 15, 14, 11, 12, 13, 3, 10, 16, 17,
2034 32, 5, 8, 7, 27, 21, 0, 0, 29, 0,
2035 28, 0, 0, 22, 34, 0, 51, 0, 61, 63,
2036 108, 54, 56, 58, 0, 0, 65, 142, 0, 50,
2037 0, 36, 38, 39, 40, 41, 42, 43, 48, 49,
2038 46, 45, 44, 47, 26, 0, 0, 19, 0, 0,
2039 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 31, 0, 9, 30, 23, 0, 0,
2041 0, 53, 0, 0, 0, 0, 0, 0, 60, 82,
2042 0, 0, 37, 0, 0, 52, 20, 62, 64, 0,
2043 55, 57, 59, 0, 67, 0, 24, 0, 118, 121,
2044 123, 117, 116, 115, 0, 110, 112, 113, 114, 90,
2045 92, 94, 89, 0, 84, 86, 87, 88, 71, 0,
2046 68, 69, 146, 0, 144, 35, 0, 0, 0, 0,
2047 109, 0, 0, 0, 0, 83, 0, 66, 0, 0,
2048 0, 143, 0, 0, 0, 111, 0, 0, 0, 85,
2049 78, 80, 75, 0, 73, 76, 77, 70, 157, 162,
2050 0, 160, 156, 154, 155, 0, 148, 150, 152, 153,
2051 151, 145, 120, 119, 122, 125, 0, 0, 0, 0,
2052 0, 0, 72, 0, 0, 0, 0, 0, 147, 129,
2053 0, 126, 127, 103, 105, 102, 100, 101, 0, 96,
2054 98, 99, 0, 0, 0, 0, 74, 0, 0, 159,
2055 0, 149, 0, 124, 0, 0, 0, 0, 91, 93,
2056 95, 79, 81, 158, 0, 161, 138, 140, 137, 135,
2057 136, 0, 131, 133, 134, 128, 0, 0, 97, 166,
2058 0, 164, 0, 0, 0, 130, 104, 107, 106, 0,
2059 0, 163, 0, 0, 132, 175, 0, 0, 0, 180,
2060 0, 168, 170, 171, 172, 173, 174, 165, 139, 141,
2061 0, 0, 0, 0, 0, 0, 167, 0, 177, 178,
2062 179, 0, 169, 176, 181
2066 AgentParser::yypgoto_[] =
2068 -165, -165, -165, -165, -165, -165, -165, -165, -18, -89,
2069 -165, -21, -165, -165, -165, -165, -165, -165, -27, -165,
2070 -165, -165, -165, 95, 114, -165, -165, -165, -165, -165,
2071 -165, -165, -165, -165, -165, -26, -165, -25, -165, -165,
2072 -165, -165, -165, 42, -165, -165, 7, -165, -165, -165,
2073 -165, -165, -165, -165, 55, -165, -165, -165, -165, -165,
2074 -165, -164, -24, -165, -165, -165, -165, -165, -165, -165,
2075 -165, 62, -165, -165, -165, -165, -165, -165, -165, -165,
2076 -165, -22, -165, -165, -54, -165, -165, -165, -165, -165,
2077 -165, -165, 57, -165, -165, 8, -165, -165, -165, -165,
2078 -165, -165, -165, -165, -56, -165, -165, -77, -165, -165,
2079 -165, -165, -165, -165, -165
2083 AgentParser::yydefgoto_[] =
2085 0, 4, 5, 6, 7, 23, 27, 16, 17, 18,
2086 25, 107, 32, 33, 19, 24, 29, 30, 215, 21,
2087 26, 35, 69, 50, 51, 52, 71, 53, 54, 76,
2088 55, 77, 56, 78, 57, 216, 73, 217, 74, 60,
2089 81, 139, 140, 141, 156, 173, 174, 175, 199, 176,
2090 200, 61, 113, 133, 134, 135, 151, 136, 152, 137,
2091 153, 218, 219, 220, 235, 221, 236, 268, 62, 75,
2092 124, 125, 126, 146, 193, 127, 147, 128, 148, 210,
2093 211, 212, 232, 251, 252, 253, 262, 254, 263, 63,
2094 82, 143, 144, 159, 185, 186, 187, 203, 188, 189,
2095 206, 190, 204, 260, 261, 269, 280, 281, 282, 290,
2096 283, 284, 285, 286, 294
2100 AgentParser::yytable_[] =
2102 49, 58, 59, 106, 20, 9, 28, 10, 84, 11,
2103 129, 130, 131, 85, 8, 36, 37, 38, 39, 40,
2104 170, 171, 170, 171, 38, 39, 41, 42, 43, 44,
2105 45, 84, 48, 222, 223, 48, 145, 46, 38, 39,
2106 47, 213, 214, 160, 22, 31, 161, 86, 87, 12,
2107 13, 14, 15, 48, 34, 64, 149, 49, 58, 59,
2108 48, 150, 178, 179, 154, 180, 181, 38, 39, 155,
2109 118, 201, 119, 120, 48, 65, 202, 49, 58, 59,
2110 38, 39, 121, 122, 123, 116, 132, 246, 247, 275,
2111 66, 207, 276, 277, 278, 279, 208, 237, 67, 237,
2112 237, 264, 238, 48, 239, 240, 265, 295, 270, 68,
2113 70, 271, 296, 72, 79, 80, 48, 1, 2, 3,
2114 83, 89, 121, 122, 123, 88, 90, 132, 91, 172,
2115 92, 93, 182, 183, 184, 94, 106, 95, 96, 97,
2116 105, 98, 100, 99, 101, 103, 104, 158, 108, 10,
2117 109, 114, 110, 115, 138, 157, 111, 112, 142, 162,
2118 163, 164, 166, 167, 168, 229, 195, 192, 194, 196,
2119 197, 198, 205, 209, 224, 225, 227, 228, 230, 234,
2120 182, 183, 184, 233, 244, 256, 241, 257, 272, 259,
2121 273, 291, 292, 293, 243, 297, 301, 267, 102, 117,
2122 177, 245, 266, 288, 242, 248, 249, 250, 226, 169,
2123 274, 165, 255, 258, 287, 231, 289, 191, 302, 0,
2124 0, 298, 0, 0, 0, 299, 0, 0, 300, 303,
2125 0, 0, 0, 0, 304, 0, 0, 248, 249, 250
2129 AgentParser::yycheck_[] =
2131 27, 27, 27, 92, 7, 5, 24, 7, 3, 9,
2132 27, 28, 29, 8, 0, 11, 12, 13, 14, 15,
2133 34, 35, 34, 35, 13, 14, 22, 23, 24, 25,
2134 26, 3, 49, 197, 198, 49, 8, 33, 13, 14,
2135 36, 30, 31, 3, 7, 49, 6, 65, 66, 49,
2136 50, 51, 52, 49, 10, 6, 3, 84, 84, 84,
2137 49, 8, 37, 38, 3, 40, 41, 13, 14, 8,
2138 16, 3, 18, 19, 49, 3, 8, 104, 104, 104,
2139 13, 14, 109, 109, 109, 103, 113, 20, 21, 39,
2140 4, 3, 42, 43, 44, 45, 8, 3, 8, 3,
2141 3, 3, 8, 49, 8, 8, 8, 3, 3, 3,
2142 8, 6, 8, 4, 4, 4, 49, 46, 47, 48,
2143 4, 4, 149, 149, 149, 49, 4, 154, 50, 156,
2144 4, 4, 159, 159, 159, 4, 225, 4, 4, 4,
2145 49, 52, 4, 7, 4, 4, 7, 3, 49, 7,
2146 7, 5, 49, 5, 7, 6, 49, 49, 7, 4,
2147 4, 4, 4, 4, 4, 50, 5, 17, 49, 7,
2148 7, 7, 4, 7, 4, 4, 4, 4, 4, 3,
2149 207, 207, 207, 6, 5, 4, 49, 4, 4, 7,
2150 4, 4, 4, 4, 49, 4, 4, 32, 84, 104,
2151 158, 49, 49, 49, 225, 232, 232, 232, 201, 154,
2152 264, 149, 234, 237, 270, 207, 49, 160, 295, -1,
2153 -1, 52, -1, -1, -1, 50, -1, -1, 50, 49,
2154 -1, -1, -1, -1, 49, -1, -1, 264, 264, 264
2158 AgentParser::yystos_[] =
2160 0, 46, 47, 48, 54, 55, 56, 57, 0, 5,
2161 7, 9, 49, 50, 51, 52, 60, 61, 62, 67,
2162 7, 72, 7, 58, 68, 63, 73, 59, 61, 69,
2163 70, 49, 65, 66, 10, 74, 11, 12, 13, 14,
2164 15, 22, 23, 24, 25, 26, 33, 36, 49, 71,
2165 76, 77, 78, 80, 81, 83, 85, 87, 88, 90,
2166 92, 104, 121, 142, 6, 3, 4, 8, 3, 75,
2167 8, 79, 4, 89, 91, 122, 82, 84, 86, 4,
2168 4, 93, 143, 4, 3, 8, 61, 61, 49, 4,
2169 4, 50, 4, 4, 4, 4, 4, 4, 52, 7,
2170 4, 4, 77, 4, 7, 49, 62, 64, 49, 7,
2171 49, 49, 49, 105, 5, 5, 61, 76, 16, 18,
2172 19, 71, 88, 90, 123, 124, 125, 128, 130, 27,
2173 28, 29, 71, 106, 107, 108, 110, 112, 7, 94,
2174 95, 96, 7, 144, 145, 8, 126, 129, 131, 3,
2175 8, 109, 111, 113, 3, 8, 97, 6, 3, 146,
2176 3, 6, 4, 4, 4, 124, 4, 4, 4, 107,
2177 34, 35, 71, 98, 99, 100, 102, 96, 37, 38,
2178 40, 41, 71, 88, 90, 147, 148, 149, 151, 152,
2179 154, 145, 17, 127, 49, 5, 7, 7, 7, 101,
2180 103, 3, 8, 150, 155, 4, 153, 3, 8, 7,
2181 132, 133, 134, 30, 31, 71, 88, 90, 114, 115,
2182 116, 118, 114, 114, 4, 4, 99, 4, 4, 50,
2183 4, 148, 135, 6, 3, 117, 119, 3, 8, 8,
2184 8, 49, 64, 49, 5, 49, 20, 21, 71, 88,
2185 90, 136, 137, 138, 140, 134, 4, 4, 115, 7,
2186 156, 157, 139, 141, 3, 8, 49, 32, 120, 158,
2187 3, 6, 4, 4, 137, 39, 42, 43, 44, 45,
2188 159, 160, 161, 163, 164, 165, 166, 157, 49, 49,
2189 162, 4, 4, 4, 167, 3, 8, 4, 52, 50,
2194 AgentParser::yyr1_[] =
2196 0, 53, 55, 54, 56, 54, 57, 54, 59, 58,
2197 60, 61, 61, 61, 61, 61, 61, 61, 63, 62,
2198 64, 65, 65, 66, 66, 68, 67, 69, 69, 70,
2199 70, 71, 73, 72, 75, 74, 76, 76, 77, 77,
2200 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
2201 77, 79, 78, 80, 82, 81, 84, 83, 86, 85,
2202 87, 89, 88, 91, 90, 93, 92, 94, 94, 95,
2203 95, 97, 96, 98, 98, 98, 99, 99, 101, 100,
2204 103, 102, 105, 104, 106, 106, 107, 107, 107, 107,
2205 109, 108, 111, 110, 113, 112, 114, 114, 115, 115,
2206 115, 115, 115, 117, 116, 119, 118, 120, 122, 121,
2207 123, 123, 124, 124, 124, 124, 124, 124, 126, 125,
2208 127, 129, 128, 131, 130, 132, 132, 133, 133, 135,
2209 134, 136, 136, 137, 137, 137, 137, 137, 139, 138,
2210 141, 140, 143, 142, 144, 144, 146, 145, 147, 147,
2211 148, 148, 148, 148, 148, 148, 148, 150, 149, 151,
2212 153, 152, 155, 154, 156, 156, 158, 157, 159, 159,
2213 160, 160, 160, 160, 160, 162, 161, 163, 164, 165,
2218 AgentParser::yyr2_[] =
2220 0, 2, 0, 3, 0, 3, 0, 3, 0, 4,
2221 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
2222 1, 0, 1, 3, 5, 0, 4, 0, 1, 1,
2223 3, 2, 0, 4, 0, 6, 1, 3, 1, 1,
2224 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2225 1, 0, 4, 3, 0, 4, 0, 4, 0, 4,
2226 3, 0, 4, 0, 4, 0, 6, 0, 1, 1,
2227 3, 0, 4, 1, 3, 1, 1, 1, 0, 4,
2228 0, 4, 0, 6, 1, 3, 1, 1, 1, 1,
2229 0, 6, 0, 6, 0, 6, 1, 3, 1, 1,
2230 1, 1, 1, 0, 4, 0, 4, 1, 0, 6,
2231 1, 3, 1, 1, 1, 1, 1, 1, 0, 4,
2232 1, 0, 4, 0, 6, 0, 1, 1, 3, 0,
2233 4, 1, 3, 1, 1, 1, 1, 1, 0, 4,
2234 0, 4, 0, 6, 1, 3, 0, 4, 1, 3,
2235 1, 1, 1, 1, 1, 1, 1, 0, 4, 3,
2236 0, 4, 0, 6, 1, 3, 0, 4, 1, 3,
2237 1, 1, 1, 1, 1, 0, 4, 3, 3, 3,
2242 #if AGENT_DEBUG || 1
2246 const AgentParser::yytname_[] =
2248 "\"end of file\"",
"error",
"\"invalid token\"",
"\",\"",
"\":\"",
2249 "\"[\"",
"\"]\"",
"\"{\"",
"\"}\"",
"\"null\"",
"\"Control-agent\"",
2250 "\"http-host\"",
"\"http-port\"",
"\"user-context\"",
"\"comment\"",
2251 "\"authentication\"",
"\"type\"",
"\"basic\"",
"\"realm\"",
2252 "\"clients\"",
"\"user\"",
"\"password\"",
"\"trust-anchor\"",
2253 "\"cert-file\"",
"\"key-file\"",
"\"cert-required\"",
2254 "\"control-sockets\"",
"\"dhcp4\"",
"\"dhcp6\"",
"\"d2\"",
2255 "\"socket-name\"",
"\"socket-type\"",
"\"unix\"",
"\"hooks-libraries\"",
2256 "\"library\"",
"\"parameters\"",
"\"loggers\"",
"\"name\"",
2257 "\"output_options\"",
"\"output\"",
"\"debuglevel\"",
"\"severity\"",
2258 "\"flush\"",
"\"maxsize\"",
"\"maxver\"",
"\"pattern\"",
"START_JSON",
2259 "START_AGENT",
"START_SUB_AGENT",
"\"constant string\"",
"\"integer\"",
2260 "\"floating point\"",
"\"boolean\"",
"$accept",
"start",
"$@1",
"$@2",
2261 "$@3",
"sub_agent",
"$@4",
"json",
"value",
"map",
"$@5",
"map_value",
2262 "map_content",
"not_empty_map",
"list_generic",
"$@6",
"list_content",
2263 "not_empty_list",
"unknown_map_entry",
"agent_syntax_map",
"$@7",
2264 "global_object",
"$@8",
"global_params",
"global_param",
"http_host",
2265 "$@9",
"http_port",
"trust_anchor",
"$@10",
"cert_file",
"$@11",
2266 "key_file",
"$@12",
"cert_required",
"user_context",
"$@13",
"comment",
2267 "$@14",
"hooks_libraries",
"$@15",
"hooks_libraries_list",
2268 "not_empty_hooks_libraries_list",
"hooks_library",
"$@16",
2269 "hooks_params",
"hooks_param",
"library",
"$@17",
"parameters",
"$@18",
2270 "control_sockets",
"$@19",
"control_sockets_params",
"control_socket",
2271 "dhcp4_server_socket",
"$@20",
"dhcp6_server_socket",
"$@21",
2272 "d2_server_socket",
"$@22",
"control_socket_params",
2273 "control_socket_param",
"socket_name",
"$@23",
"socket_type",
"$@24",
2274 "socket_type_value",
"authentication",
"$@25",
"auth_params",
2275 "auth_param",
"auth_type",
"$@26",
"auth_type_value",
"realm",
"$@27",
2276 "clients",
"$@28",
"clients_list",
"not_empty_clients_list",
2277 "basic_auth",
"$@29",
"clients_params",
"clients_param",
"user",
"$@30",
2278 "password",
"$@31",
"loggers",
"$@32",
"loggers_entries",
"logger_entry",
2279 "$@33",
"logger_params",
"logger_param",
"name",
"$@34",
"debuglevel",
2280 "severity",
"$@35",
"output_options_list",
"$@36",
2281 "output_options_list_content",
"output_entry",
"$@37",
2282 "output_params_list",
"output_params",
"output",
"$@38",
"flush",
2283 "maxsize",
"maxver",
"pattern",
"$@39", YY_NULLPTR
2290 AgentParser::yyrline_[] =
2292 0, 124, 124, 124, 125, 125, 126, 126, 134, 134,
2293 145, 151, 152, 153, 154, 155, 156, 157, 161, 161,
2294 172, 177, 178, 186, 191, 199, 199, 205, 206, 209,
2295 213, 226, 234, 234, 246, 246, 264, 265, 270, 271,
2296 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
2297 282, 285, 285, 294, 300, 300, 309, 309, 318, 318,
2298 327, 333, 333, 358, 358, 386, 386, 397, 398, 401,
2299 402, 405, 405, 413, 414, 415, 418, 419, 422, 422,
2300 431, 431, 442, 442, 456, 457, 462, 463, 464, 465,
2301 469, 469, 481, 481, 493, 493, 505, 506, 510, 511,
2302 512, 513, 514, 518, 518, 528, 528, 537, 544, 544,
2303 557, 558, 561, 562, 563, 564, 565, 566, 569, 569,
2304 577, 580, 580, 589, 589, 600, 601, 604, 605, 608,
2305 608, 616, 617, 620, 621, 622, 623, 624, 627, 627,
2306 636, 636, 649, 649, 662, 663, 667, 667, 675, 676,
2307 679, 680, 681, 682, 683, 684, 685, 688, 688, 697,
2308 703, 703, 712, 712, 723, 724, 727, 727, 735, 736,
2309 739, 740, 741, 742, 743, 746, 746, 755, 761, 767,
2314 AgentParser::yy_stack_print_ ()
const
2316 *yycdebug_ <<
"Stack now";
2317 for (stack_type::const_iterator
2318 i = yystack_.begin (),
2319 i_end = yystack_.end ();
2321 *yycdebug_ <<
' ' <<
int (i->state);
2326 AgentParser::yy_reduce_print_ (
int yyrule)
const
2328 int yylno = yyrline_[yyrule];
2329 int yynrhs = yyr2_[yyrule];
2331 *yycdebug_ <<
"Reducing stack by rule " << yyrule - 1
2332 <<
" (line " << yylno <<
"):\n";
2334 for (
int yyi = 0; yyi < yynrhs; yyi++)
2336 yystack_[(yynrhs) - (yyi + 1)]);
2338 #endif // AGENT_DEBUG
2341 #line 14 "agent_parser.yy"
2343 #line 2344 "agent_parser.cc"
2345 #line 782 "agent_parser.yy"
2350 const std::string& what)
2352 ctx.error(loc, what);
void move(basic_symbol &s)
Destructive move, s is emptied into this.
Used while parsing Control-agent/Authentication/type.
Used while parsing content of Agent.
void unique(const std::string &name, isc::data::Element::Position loc)
Check if a parameter is already present.
void enter(const LexerContext &ctx)
Enter a new syntactic context.
#define YY_CAST(Type, Val)
LexerContext ctx_
Current syntactic context.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
#define YY_REDUCE_PRINT(Rule)
Used while parsing Control-agent/control-socket/*-server/socket-type.
#define YY_MOVE_REF(Type)
#define YY_SYMBOL_PRINT(Title, Symbol)
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
boost::shared_ptr< Element > ElementPtr
Syntax errors thrown from user actions.
std::vector< isc::data::ElementPtr > stack_
JSON elements being parsed.
Used while parsing Control-agent/loggers structures.
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.
location_type location
The location.
isc::data::Element::Position loc2pos(isc::agent::location &loc)
Converts bison's position to one understandable by isc::data::Element.
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...
Notes: IntElement type is changed to int64_t.
const std::string contextName()
Get the syntactic context name.
symbol_kind_type kind() const YY_NOEXCEPT
The (internal) type number (corresponding to type).
boost::shared_ptr< const Element > ConstElementPtr
debug_level_type debug_level() const YY_ATTRIBUTE_PURE
The current debugging level.
void set_debug_level(debug_level_type l)
Set the current debugging level.
void leave()
Leave a syntactic context.
symbol_kind_type kind_
The symbol kind.
static const symbol_kind_type YYNTOKENS
The number of tokens.
Used while parsing Control-agent/loggers/output_options structures.
virtual int parse()
Parse.
#define YYLLOC_DEFAULT(Current, Rhs, N)
This one is used in pure JSON mode.
std::ostream & debug_stream() const YY_ATTRIBUTE_PURE
The current debugging stream.
Defines the logger used by the top-level component of kea-dhcp-ddns.
void set_debug_stream(std::ostream &)
Set the current debugging stream.
static std::string symbol_name(symbol_kind_type yysymbol)
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
~syntax_error() YY_NOEXCEPT YY_NOTHROW
const symbol_type & lookahead() const YY_NOEXCEPT
void merge(ElementPtr element, ConstElementPtr other)
Merges the data from other into element.
Define the isc::agent::parser class.
void clear() YY_NOEXCEPT
Destroy contents, and record that is empty.
int debug_level_type
Type for debugging levels.
Used while parsing Control-agent/hooks-libraries.
location location_type
Symbol locations.
"External" symbols: returned by the scanner.
bool empty() const YY_NOEXCEPT
Whether empty.
Used while parsing Control-agent/control-sockets.
Used while parsing Control-agent/Authentication.
AgentParser(isc::agent::ParserContext &ctx_yyarg)
Build a parser object.
Used while parsing Control-agent/Authentication/clients.
Parser context is a wrapper around flex/bison instances dedicated to Control-agent config file parser...
context(const AgentParser &yyparser, const symbol_type &yyla)
Used while parsing Control-agent/control-socket/*-server.
symbol_kind_type token() const YY_NOEXCEPT