39#define yylex netconf_lex
47#line 36 "netconf_parser.yy"
52#if defined(__GNUC__) || defined(__clang__)
53#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
56#line 57 "netconf_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 "netconf_parser.yy"
148namespace isc {
namespace netconf {
149#line 150 "netconf_parser.cc"
155 yycdebug_ (&std::cerr),
176 : state (empty_state)
179 NetconfParser::by_state::by_state (
const by_state& that)
YY_NOEXCEPT
190 NetconfParser::by_state::move (by_state& that)
196 NetconfParser::by_state::by_state (state_type s)
YY_NOEXCEPT
203 if (state == empty_state)
209 NetconfParser::stack_symbol_type::stack_symbol_type ()
212 NetconfParser::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<
string > (
YY_MOVE (that.value));
243#if 201103L <= YY_CPLUSPLUS
245 that.state = empty_state;
249 NetconfParser::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<
string > (
YY_MOVE (that.value));
284#if YY_CPLUSPLUS < 201103L
285 NetconfParser::stack_symbol_type&
286 NetconfParser::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<
string > (that.value);
317 location = that.location;
321 NetconfParser::stack_symbol_type&
322 NetconfParser::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<
string > (that.value);
353 location = that.location;
355 that.state = empty_state;
360 template <
typename Base>
362 NetconfParser::yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const
369 template <
typename Base>
371 NetconfParser::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 115 "netconf_parser.yy"
387 { yyoutput << yysym.value.template as < string > (); }
388#line 389 "netconf_parser.cc"
392#line 115 "netconf_parser.yy"
393 { yyoutput << yysym.value.template as < int64_t > (); }
394#line 395 "netconf_parser.cc"
398#line 115 "netconf_parser.yy"
399 { yyoutput << yysym.value.template as < double > (); }
400#line 401 "netconf_parser.cc"
404#line 115 "netconf_parser.yy"
405 { yyoutput << yysym.value.template as < bool > (); }
406#line 407 "netconf_parser.cc"
410#line 115 "netconf_parser.yy"
411 { yyoutput << yysym.value.template as < ElementPtr > (); }
412#line 413 "netconf_parser.cc"
416#line 115 "netconf_parser.yy"
417 { yyoutput << yysym.value.template as < ElementPtr > (); }
418#line 419 "netconf_parser.cc"
422#line 115 "netconf_parser.yy"
423 { yyoutput << yysym.value.template as < ElementPtr > (); }
424#line 425 "netconf_parser.cc"
436 NetconfParser::yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym)
444 NetconfParser::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 NetconfParser::debug_stream ()
const
468 NetconfParser::set_debug_stream (std::ostream& o)
474 NetconfParser::debug_level_type
475 NetconfParser::debug_level ()
const
481 NetconfParser::set_debug_level (debug_level_type l)
487 NetconfParser::state_type
488 NetconfParser::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 NetconfParser::yy_pact_value_is_default_ (
int yyvalue)
YY_NOEXCEPT
500 return yyvalue == yypact_ninf_;
504 NetconfParser::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<
string > ();
685 yyerror_range[1].location = yylhs.location;
697#line 126 "netconf_parser.yy"
699#line 700 "netconf_parser.cc"
703#line 127 "netconf_parser.yy"
705#line 706 "netconf_parser.cc"
709#line 128 "netconf_parser.yy"
711#line 712 "netconf_parser.cc"
715#line 136 "netconf_parser.yy"
721#line 722 "netconf_parser.cc"
725#line 140 "netconf_parser.yy"
729#line 730 "netconf_parser.cc"
733#line 147 "netconf_parser.yy"
738#line 739 "netconf_parser.cc"
742#line 153 "netconf_parser.yy"
744#line 745 "netconf_parser.cc"
748#line 154 "netconf_parser.yy"
750#line 751 "netconf_parser.cc"
754#line 155 "netconf_parser.yy"
756#line 757 "netconf_parser.cc"
760#line 156 "netconf_parser.yy"
762#line 763 "netconf_parser.cc"
766#line 157 "netconf_parser.yy"
768#line 769 "netconf_parser.cc"
772#line 158 "netconf_parser.yy"
774#line 775 "netconf_parser.cc"
778#line 159 "netconf_parser.yy"
780#line 781 "netconf_parser.cc"
784#line 163 "netconf_parser.yy"
791#line 792 "netconf_parser.cc"
795#line 168 "netconf_parser.yy"
801#line 802 "netconf_parser.cc"
805#line 174 "netconf_parser.yy"
807#line 808 "netconf_parser.cc"
811#line 188 "netconf_parser.yy"
814 ctx.
unique(yystack_[2].value.as <
string > (), ctx.
loc2pos(yystack_[2].location));
815 ctx.
stack_.back()->set(yystack_[2].value.as <
string > (), yystack_[0].value.as <
ElementPtr > ());
817#line 818 "netconf_parser.cc"
821#line 193 "netconf_parser.yy"
825 ctx.
unique(yystack_[2].value.as <
string > (), ctx.
loc2pos(yystack_[2].location));
826 ctx.
stack_.back()->set(yystack_[2].value.as <
string > (), yystack_[0].value.as <
ElementPtr > ());
828#line 829 "netconf_parser.cc"
832#line 199 "netconf_parser.yy"
836#line 837 "netconf_parser.cc"
840#line 204 "netconf_parser.yy"
845#line 846 "netconf_parser.cc"
849#line 207 "netconf_parser.yy"
852#line 853 "netconf_parser.cc"
856#line 214 "netconf_parser.yy"
861#line 862 "netconf_parser.cc"
865#line 218 "netconf_parser.yy"
870#line 871 "netconf_parser.cc"
874#line 222 "netconf_parser.yy"
878#line 879 "netconf_parser.cc"
882#line 234 "netconf_parser.yy"
885 const string& keyword = yystack_[1].value.as <
string > ();
886 error(yystack_[1].location,
887 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
889#line 890 "netconf_parser.cc"
893#line 242 "netconf_parser.yy"
900#line 901 "netconf_parser.cc"
904#line 247 "netconf_parser.yy"
910#line 911 "netconf_parser.cc"
914#line 254 "netconf_parser.yy"
924 ctx.
stack_.back()->set(
"Netconf", m);
928#line 929 "netconf_parser.cc"
932#line 266 "netconf_parser.yy"
939#line 940 "netconf_parser.cc"
943#line 275 "netconf_parser.yy"
947#line 948 "netconf_parser.cc"
951#line 286 "netconf_parser.yy"
955#line 956 "netconf_parser.cc"
959#line 304 "netconf_parser.yy"
961 ctx.
unique(
"boot-update", ctx.
loc2pos(yystack_[2].location));
963 ctx.
stack_.back()->set(
"boot-update", flag);
965#line 966 "netconf_parser.cc"
969#line 310 "netconf_parser.yy"
971 ctx.
unique(
"subscribe-changes", ctx.
loc2pos(yystack_[2].location));
973 ctx.
stack_.back()->set(
"subscribe-changes", flag);
975#line 976 "netconf_parser.cc"
979#line 316 "netconf_parser.yy"
981 ctx.
unique(
"validate-changes", ctx.
loc2pos(yystack_[2].location));
983 ctx.
stack_.back()->set(
"validate-changes", flag);
985#line 986 "netconf_parser.cc"
989#line 322 "netconf_parser.yy"
993#line 994 "netconf_parser.cc"
997#line 324 "netconf_parser.yy"
1006 if ((old->size() != 1) || !old->contains(
"comment")) {
1008 msg <<
"duplicate user-context entries (previous at "
1009 << old->getPosition().str() <<
")";
1010 error(yystack_[3].location, msg.str());
1013 user_context->set(
"comment", old->get(
"comment"));
1017 parent->set(
"user-context", user_context);
1020#line 1021 "netconf_parser.cc"
1024#line 347 "netconf_parser.yy"
1028#line 1029 "netconf_parser.cc"
1032#line 349 "netconf_parser.yy"
1037 user_context->set(
"comment", comment);
1043 if (old->contains(
"comment")) {
1045 msg <<
"duplicate user-context/comment entries (previous at "
1046 << old->getPosition().str() <<
")";
1047 error(yystack_[3].location, msg.str());
1050 merge(user_context, old);
1054 parent->set(
"user-context", user_context);
1057#line 1058 "netconf_parser.cc"
1061#line 375 "netconf_parser.yy"
1063 ctx.
unique(
"hooks-libraries", ctx.
loc2pos(yystack_[0].location));
1065 ctx.
stack_.back()->set(
"hooks-libraries", l);
1069#line 1070 "netconf_parser.cc"
1073#line 381 "netconf_parser.yy"
1078#line 1079 "netconf_parser.cc"
1082#line 392 "netconf_parser.yy"
1086#line 1087 "netconf_parser.cc"
1090#line 397 "netconf_parser.yy"
1093 ctx.
stack_.back()->add(m);
1096#line 1097 "netconf_parser.cc"
1100#line 401 "netconf_parser.yy"
1104#line 1105 "netconf_parser.cc"
1108#line 407 "netconf_parser.yy"
1112#line 1113 "netconf_parser.cc"
1116#line 417 "netconf_parser.yy"
1121#line 1122 "netconf_parser.cc"
1125#line 420 "netconf_parser.yy"
1128 ctx.
stack_.back()->set(
"library", lib);
1131#line 1132 "netconf_parser.cc"
1135#line 426 "netconf_parser.yy"
1137 ctx.
unique(
"parameters", ctx.
loc2pos(yystack_[0].location));
1140#line 1141 "netconf_parser.cc"
1144#line 429 "netconf_parser.yy"
1146 ctx.
stack_.back()->set(
"parameters", yystack_[0].value.as <
ElementPtr > ());
1149#line 1150 "netconf_parser.cc"
1153#line 437 "netconf_parser.yy"
1155 ctx.
unique(
"managed-servers", ctx.
loc2pos(yystack_[2].location));
1157 ctx.
stack_.back()->set(
"managed-servers", m);
1161#line 1162 "netconf_parser.cc"
1165#line 443 "netconf_parser.yy"
1170#line 1171 "netconf_parser.cc"
1174#line 454 "netconf_parser.yy"
1178#line 1179 "netconf_parser.cc"
1182#line 470 "netconf_parser.yy"
1186 ctx.
stack_.back()->set(
"dhcp4", m);
1190#line 1191 "netconf_parser.cc"
1194#line 476 "netconf_parser.yy"
1199#line 1200 "netconf_parser.cc"
1203#line 482 "netconf_parser.yy"
1207 ctx.
stack_.back()->set(
"dhcp6", m);
1211#line 1212 "netconf_parser.cc"
1215#line 488 "netconf_parser.yy"
1220#line 1221 "netconf_parser.cc"
1224#line 494 "netconf_parser.yy"
1228 ctx.
stack_.back()->set(
"d2", m);
1232#line 1233 "netconf_parser.cc"
1236#line 500 "netconf_parser.yy"
1241#line 1242 "netconf_parser.cc"
1245#line 506 "netconf_parser.yy"
1249 ctx.
stack_.back()->set(
"ca", m);
1253#line 1254 "netconf_parser.cc"
1257#line 512 "netconf_parser.yy"
1262#line 1263 "netconf_parser.cc"
1266#line 520 "netconf_parser.yy"
1270#line 1271 "netconf_parser.cc"
1274#line 537 "netconf_parser.yy"
1279#line 1280 "netconf_parser.cc"
1283#line 540 "netconf_parser.yy"
1286 ctx.
stack_.back()->set(
"model", model);
1289#line 1290 "netconf_parser.cc"
1293#line 547 "netconf_parser.yy"
1295 ctx.
unique(
"control-socket", ctx.
loc2pos(yystack_[0].location));
1297 ctx.
stack_.back()->set(
"control-socket", m);
1301#line 1302 "netconf_parser.cc"
1305#line 553 "netconf_parser.yy"
1310#line 1311 "netconf_parser.cc"
1314#line 561 "netconf_parser.yy"
1318#line 1319 "netconf_parser.cc"
1322#line 574 "netconf_parser.yy"
1324 ctx.
unique(
"socket-type", ctx.
loc2pos(yystack_[0].location));
1327#line 1328 "netconf_parser.cc"
1331#line 577 "netconf_parser.yy"
1333 ctx.
stack_.back()->set(
"socket-type", yystack_[0].value.as <
ElementPtr > ());
1336#line 1337 "netconf_parser.cc"
1340#line 583 "netconf_parser.yy"
1342#line 1343 "netconf_parser.cc"
1346#line 584 "netconf_parser.yy"
1348#line 1349 "netconf_parser.cc"
1352#line 585 "netconf_parser.yy"
1354#line 1355 "netconf_parser.cc"
1358#line 588 "netconf_parser.yy"
1360 ctx.
unique(
"socket-name", ctx.
loc2pos(yystack_[0].location));
1363#line 1364 "netconf_parser.cc"
1367#line 591 "netconf_parser.yy"
1370 ctx.
stack_.back()->set(
"socket-name", name);
1373#line 1374 "netconf_parser.cc"
1377#line 598 "netconf_parser.yy"
1379 ctx.
unique(
"socket-url", ctx.
loc2pos(yystack_[0].location));
1382#line 1383 "netconf_parser.cc"
1386#line 601 "netconf_parser.yy"
1389 ctx.
stack_.back()->set(
"socket-url", url);
1392#line 1393 "netconf_parser.cc"
1396#line 611 "netconf_parser.yy"
1400 ctx.
stack_.back()->set(
"loggers", l);
1404#line 1405 "netconf_parser.cc"
1408#line 617 "netconf_parser.yy"
1413#line 1414 "netconf_parser.cc"
1417#line 626 "netconf_parser.yy"
1421#line 1422 "netconf_parser.cc"
1425#line 632 "netconf_parser.yy"
1428 ctx.
stack_.back()->add(l);
1431#line 1432 "netconf_parser.cc"
1435#line 636 "netconf_parser.yy"
1439#line 1440 "netconf_parser.cc"
1443#line 642 "netconf_parser.yy"
1447#line 1448 "netconf_parser.cc"
1451#line 656 "netconf_parser.yy"
1456#line 1457 "netconf_parser.cc"
1460#line 659 "netconf_parser.yy"
1463 ctx.
stack_.back()->set(
"name", name);
1466#line 1467 "netconf_parser.cc"
1470#line 665 "netconf_parser.yy"
1472 ctx.
unique(
"debuglevel", ctx.
loc2pos(yystack_[2].location));
1474 ctx.
stack_.back()->set(
"debuglevel", dl);
1476#line 1477 "netconf_parser.cc"
1480#line 671 "netconf_parser.yy"
1485#line 1486 "netconf_parser.cc"
1489#line 674 "netconf_parser.yy"
1492 ctx.
stack_.back()->set(
"severity", sev);
1495#line 1496 "netconf_parser.cc"
1499#line 680 "netconf_parser.yy"
1501 ctx.
unique(
"output-options", ctx.
loc2pos(yystack_[0].location));
1503 ctx.
stack_.back()->set(
"output-options", l);
1507#line 1508 "netconf_parser.cc"
1511#line 686 "netconf_parser.yy"
1516#line 1517 "netconf_parser.cc"
1520#line 693 "netconf_parser.yy"
1524#line 1525 "netconf_parser.cc"
1528#line 698 "netconf_parser.yy"
1531 ctx.
stack_.back()->add(m);
1534#line 1535 "netconf_parser.cc"
1538#line 702 "netconf_parser.yy"
1542#line 1543 "netconf_parser.cc"
1546#line 708 "netconf_parser.yy"
1550#line 1551 "netconf_parser.cc"
1554#line 720 "netconf_parser.yy"
1559#line 1560 "netconf_parser.cc"
1563#line 723 "netconf_parser.yy"
1566 ctx.
stack_.back()->set(
"output", sev);
1569#line 1570 "netconf_parser.cc"
1573#line 729 "netconf_parser.yy"
1577 ctx.
stack_.back()->set(
"flush", flush);
1579#line 1580 "netconf_parser.cc"
1583#line 735 "netconf_parser.yy"
1587 ctx.
stack_.back()->set(
"maxsize", maxsize);
1589#line 1590 "netconf_parser.cc"
1593#line 741 "netconf_parser.yy"
1597 ctx.
stack_.back()->set(
"maxver", maxver);
1599#line 1600 "netconf_parser.cc"
1603#line 747 "netconf_parser.yy"
1608#line 1609 "netconf_parser.cc"
1612#line 750 "netconf_parser.yy"
1615 ctx.
stack_.back()->set(
"pattern", sev);
1618#line 1619 "netconf_parser.cc"
1622#line 1623 "netconf_parser.cc"
1631 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
1641 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
1655 std::string msg = yysyntax_error_ (yyctx);
1660 yyerror_range[1].location = yyla.location;
1661 if (yyerrstatus_ == 3)
1669 else if (!yyla.empty ())
1671 yy_destroy_ (
"Error: discarding", yyla);
1705 yyn = yypact_[+yystack_[0].state];
1706 if (!yy_pact_value_is_default_ (yyn))
1709 if (0 <= yyn && yyn <= yylast_
1712 yyn = yytable_[yyn];
1719 if (yystack_.size () == 1)
1722 yyerror_range[1].location = yystack_[0].location;
1723 yy_destroy_ (
"Error: popping", yystack_[0]);
1728 stack_symbol_type error_token;
1730 yyerror_range[2].location = yyla.location;
1734 error_token.state = state_type (yyn);
1735 yypush_ (
"Shifting",
YY_MOVE (error_token));
1761 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
1767 while (1 < yystack_.size ())
1769 yy_destroy_ (
"Cleanup: popping", yystack_[0]);
1778 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack\n";
1782 yy_destroy_ (YY_NULLPTR, yyla);
1784 while (1 < yystack_.size ())
1786 yy_destroy_ (YY_NULLPTR, yystack_[0]);
1797 error (yyexc.location, yyexc.what ());
1806 NetconfParser::yytnamerr_ (
const char *yystr)
1811 char const *yyp = yystr;
1818 goto do_not_strip_quotes;
1822 goto do_not_strip_quotes;
1834 do_not_strip_quotes: ;
1843 return yytnamerr_ (yytname_[yysymbol]);
1850 : yyparser_ (yyparser)
1860 const int yyn = yypact_[+yyparser_.yystack_[0].state];
1861 if (!yy_pact_value_is_default_ (yyn))
1866 const int yyxbegin = yyn < 0 ? -yyn : 0;
1868 const int yychecklim = yylast_ - yyn + 1;
1870 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
1872 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
1876 else if (yycount == yyargn)
1883 if (yyarg && yycount == 0 && 0 < yyargn)
1894 NetconfParser::yy_syntax_error_arguments_ (
const context& yyctx,
1922 if (!yyctx.lookahead ().empty ())
1925 yyarg[0] = yyctx.token ();
1926 int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
1934 NetconfParser::yysyntax_error_ (
const context& yyctx)
const
1937 enum { YYARGS_MAX = 5 };
1940 int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
1942 char const* yyformat = YY_NULLPTR;
1945#define YYCASE_(N, S) \
1951 YYCASE_ (1,
YY_(
"syntax error, unexpected %s"));
1952 YYCASE_ (2,
YY_(
"syntax error, unexpected %s, expecting %s"));
1953 YYCASE_ (3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
1954 YYCASE_ (4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
1955 YYCASE_ (5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1961 std::ptrdiff_t yyi = 0;
1962 for (
char const* yyp = yyformat; *yyp; ++yyp)
1963 if (yyp[0] ==
'%' && yyp[1] ==
's' && yyi < yycount)
1974 const signed char NetconfParser::yypact_ninf_ = -79;
1976 const signed char NetconfParser::yytable_ninf_ = -1;
1979 NetconfParser::yypact_[] =
1981 -8, -79, -79, -79, 16, 14, 13, 15, -79, -79,
1982 -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
1983 -79, -79, -79, -79, 14, 2, 45, -1, -79, 61,
1984 68, 75, 73, 79, -79, 30, -79, -79, -79, 89,
1985 90, 123, 124, -79, -79, 125, -79, 108, 94, -79,
1986 -79, -79, -79, -79, -79, -79, -79, -79, -79, 14,
1987 14, -79, 85, 127, -79, -79, 128, 129, 86, 87,
1988 88, 130, 134, 135, -79, -79, -1, -79, -79, 136,
1989 140, 141, 96, -79, -79, -79, -79, 137, 138, -79,
1990 14, -1, -79, -79, -79, 7, 142, 143, -79, 144,
1991 -79, -79, -79, -79, -79, 145, 148, -79, -79, -79,
1992 -79, -79, -79, 149, 151, -79, -79, 50, -79, -79,
1993 152, 153, 154, 155, -79, 7, -13, -79, 142, 76,
1994 143, -79, 156, 157, 158, 159, -79, -79, -79, -79,
1995 34, -79, -79, -79, -79, -79, -79, 163, -79, -79,
1996 -79, -79, 40, -79, -79, -79, -79, -79, -79, 63,
1997 63, 63, 63, 164, 165, -24, -79, 166, 167, 116,
1998 168, 76, -79, -79, -79, -79, -79, -79, -79, -79,
1999 -79, 92, -79, -79, -79, 93, 111, 112, 131, 141,
2000 -79, 132, 169, -79, 133, -79, 171, 175, 63, -79,
2001 -79, -79, -79, -79, -79, -79, 173, -79, 139, 174,
2002 -79, -79, 77, -79, -79, 18, 51, 173, -79, -79,
2003 -79, -79, -79, -79, -79, 114, -79, -79, -79, -79,
2004 -79, 178, 179, 181, -79, 115, -79, -79, -79, -79,
2005 -79, -79, -79, 182, 183, 187, 18, -79, 188, 113,
2006 147, 150, 190, 51, -79, 81, 160, 161, -79, 162,
2007 -79, -79, -79, 170, -79, -79, -79, -79, -79, -79,
2012 NetconfParser::yydefact_[] =
2014 0, 2, 4, 6, 0, 0, 0, 0, 1, 26,
2015 18, 15, 14, 11, 12, 13, 3, 10, 16, 17,
2016 34, 5, 8, 7, 28, 21, 0, 40, 30, 0,
2017 29, 0, 0, 22, 36, 0, 38, 57, 59, 0,
2018 0, 0, 0, 61, 133, 0, 53, 0, 41, 42,
2019 45, 46, 47, 51, 52, 49, 48, 50, 27, 32,
2020 0, 19, 25, 0, 39, 35, 0, 0, 0, 0,
2021 0, 0, 0, 0, 33, 9, 44, 31, 23, 0,
2022 0, 0, 0, 54, 55, 56, 80, 0, 0, 43,
2023 0, 40, 20, 58, 60, 82, 63, 0, 24, 0,
2024 92, 94, 96, 98, 91, 0, 83, 84, 87, 88,
2025 89, 90, 68, 0, 64, 65, 138, 0, 135, 37,
2026 0, 0, 0, 0, 81, 86, 0, 62, 67, 0,
2027 137, 134, 0, 0, 0, 0, 85, 76, 78, 73,
2028 0, 70, 74, 75, 66, 150, 155, 0, 153, 149,
2029 147, 148, 0, 140, 143, 145, 146, 144, 136, 0,
2030 0, 0, 0, 0, 0, 72, 69, 0, 0, 0,
2031 0, 142, 139, 111, 113, 110, 104, 105, 106, 108,
2032 109, 0, 100, 103, 107, 0, 0, 0, 0, 0,
2033 71, 0, 0, 152, 0, 141, 0, 0, 102, 93,
2034 95, 97, 99, 77, 79, 151, 0, 154, 0, 0,
2035 101, 160, 0, 157, 112, 0, 0, 159, 156, 124,
2036 129, 131, 123, 121, 122, 0, 115, 118, 119, 120,
2037 170, 0, 0, 0, 175, 0, 162, 165, 166, 167,
2038 168, 169, 158, 0, 0, 0, 117, 114, 0, 0,
2039 0, 0, 0, 164, 161, 0, 0, 0, 116, 0,
2040 172, 173, 174, 0, 163, 126, 127, 128, 125, 130,
2045 NetconfParser::yypgoto_[] =
2047 -79, -79, -79, -79, -79, -79, -79, -79, -20, -78,
2048 -79, -29, -79, -79, -79, -79, -79, -79, -27, -79,
2049 -79, -79, -79, -79, 82, -79, 119, -22, -19, -18,
2050 -26, -79, -25, -79, -79, -79, -79, -79, 69, -79,
2051 -79, 33, -79, -79, -79, -79, -79, -79, -79, -79,
2052 74, -79, -79, -79, -79, -79, -79, -79, -79, -36,
2053 3, -79, -79, -79, -79, -79, -46, -79, -79, -79,
2054 -79, -79, -79, -79, -79, -79, -79, 72, -79, -79,
2055 32, -79, -79, -79, -79, -79, -79, -79, -79, -9,
2056 -79, -79, -49, -79, -79, -79, -79, -79, -79, -79
2060 NetconfParser::yydefgoto_[] =
2062 0, 4, 5, 6, 7, 23, 27, 16, 17, 18,
2063 25, 93, 32, 33, 19, 24, 29, 30, 175, 21,
2064 26, 35, 63, 36, 47, 48, 49, 176, 177, 178,
2065 179, 66, 180, 67, 55, 72, 113, 114, 115, 126,
2066 140, 141, 142, 163, 143, 164, 56, 95, 105, 106,
2067 107, 108, 120, 109, 121, 110, 122, 111, 123, 181,
2068 182, 183, 196, 184, 197, 225, 226, 227, 243, 268,
2069 228, 244, 229, 245, 57, 73, 117, 118, 129, 152,
2070 153, 154, 167, 155, 156, 170, 157, 168, 212, 213,
2071 216, 235, 236, 237, 248, 238, 239, 240, 241, 252
2075 NetconfParser::yytable_[] =
2077 46, 53, 54, 92, 28, 50, 137, 138, 51, 52,
2078 37, 38, 39, 40, 41, 42, 8, 137, 138, 9,
2079 20, 10, 22, 11, 100, 101, 102, 103, 43, 37,
2080 38, 44, 45, 64, 1, 2, 3, 165, 65, 77,
2081 78, 219, 166, 171, 45, 220, 221, 31, 172, 46,
2082 53, 54, 45, 130, 50, 34, 131, 51, 52, 12,
2083 13, 14, 15, 45, 46, 53, 54, 58, 104, 50,
2084 98, 59, 51, 52, 37, 38, 39, 40, 41, 60,
2085 217, 61, 62, 218, 173, 174, 230, 37, 38, 231,
2086 232, 233, 234, 68, 69, 198, 198, 76, 104, 139,
2087 199, 200, 149, 150, 151, 265, 266, 267, 45, 145,
2088 146, 92, 147, 148, 198, 198, 75, 246, 253, 201,
2089 202, 45, 247, 254, 185, 186, 187, 70, 71, 74,
2090 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
2091 90, 94, 96, 97, 149, 150, 151, 91, 10, 112,
2092 116, 125, 119, 124, 128, 127, 132, 133, 134, 135,
2093 204, 260, 193, 159, 160, 161, 162, 169, 188, 189,
2094 191, 192, 194, 99, 206, 208, 203, 205, 207, 209,
2095 211, 215, 249, 250, 214, 251, 255, 256, 222, 223,
2096 224, 257, 259, 261, 263, 89, 262, 144, 190, 136,
2097 258, 210, 158, 195, 264, 269, 270, 271, 242, 0,
2098 0, 0, 0, 0, 0, 272, 0, 0, 0, 222,
2103 NetconfParser::yycheck_[] =
2105 27, 27, 27, 81, 24, 27, 30, 31, 27, 27,
2106 11, 12, 13, 14, 15, 16, 0, 30, 31, 5,
2107 7, 7, 7, 9, 17, 18, 19, 20, 29, 11,
2108 12, 32, 45, 3, 42, 43, 44, 3, 8, 59,
2109 60, 23, 8, 3, 45, 27, 28, 45, 8, 76,
2110 76, 76, 45, 3, 76, 10, 6, 76, 76, 45,
2111 46, 47, 48, 45, 91, 91, 91, 6, 95, 91,
2112 90, 3, 91, 91, 11, 12, 13, 14, 15, 4,
2113 3, 8, 3, 6, 21, 22, 35, 11, 12, 38,
2114 39, 40, 41, 4, 4, 3, 3, 3, 125, 126,
2115 8, 8, 129, 129, 129, 24, 25, 26, 45, 33,
2116 34, 189, 36, 37, 3, 3, 8, 3, 3, 8,
2117 8, 45, 8, 8, 160, 161, 162, 4, 4, 4,
2118 45, 4, 4, 4, 48, 48, 48, 7, 4, 4,
2119 4, 45, 5, 5, 171, 171, 171, 7, 7, 7,
2120 7, 3, 8, 8, 3, 6, 4, 4, 4, 4,
2121 189, 48, 46, 7, 7, 7, 7, 4, 4, 4,
2122 4, 4, 4, 91, 5, 4, 45, 45, 45, 4,
2123 7, 7, 4, 4, 45, 4, 4, 4, 215, 215,
2124 215, 4, 4, 46, 4, 76, 46, 128, 165, 125,
2125 246, 198, 130, 171, 253, 45, 45, 45, 217, -1,
2126 -1, -1, -1, -1, -1, 45, -1, -1, -1, 246,
2131 NetconfParser::yystos_[] =
2133 0, 42, 43, 44, 50, 51, 52, 53, 0, 5,
2134 7, 9, 45, 46, 47, 48, 56, 57, 58, 63,
2135 7, 68, 7, 54, 64, 59, 69, 55, 57, 65,
2136 66, 45, 61, 62, 10, 70, 72, 11, 12, 13,
2137 14, 15, 16, 29, 32, 45, 67, 73, 74, 75,
2138 76, 77, 78, 79, 81, 83, 95, 123, 6, 3,
2139 4, 8, 3, 71, 3, 8, 80, 82, 4, 4,
2140 4, 4, 84, 124, 4, 8, 3, 57, 57, 45,
2141 4, 4, 4, 48, 48, 48, 7, 4, 4, 75,
2142 4, 7, 58, 60, 45, 96, 5, 5, 57, 73,
2143 17, 18, 19, 20, 67, 97, 98, 99, 100, 102,
2144 104, 106, 7, 85, 86, 87, 7, 125, 126, 8,
2145 101, 103, 105, 107, 8, 3, 88, 6, 3, 127,
2146 3, 6, 4, 4, 4, 4, 99, 30, 31, 67,
2147 89, 90, 91, 93, 87, 33, 34, 36, 37, 67,
2148 79, 81, 128, 129, 130, 132, 133, 135, 126, 7,
2149 7, 7, 7, 92, 94, 3, 8, 131, 136, 4,
2150 134, 3, 8, 21, 22, 67, 76, 77, 78, 79,
2151 81, 108, 109, 110, 112, 108, 108, 108, 4, 4,
2152 90, 4, 4, 46, 4, 129, 111, 113, 3, 8,
2153 8, 8, 8, 45, 60, 45, 5, 45, 4, 4,
2154 109, 7, 137, 138, 45, 7, 139, 3, 6, 23,
2155 27, 28, 67, 79, 81, 114, 115, 116, 119, 121,
2156 35, 38, 39, 40, 41, 140, 141, 142, 144, 145,
2157 146, 147, 138, 117, 120, 122, 3, 8, 143, 4,
2158 4, 4, 148, 3, 8, 4, 4, 4, 115, 4,
2159 48, 46, 46, 4, 141, 24, 25, 26, 118, 45,
2164 NetconfParser::yyr1_[] =
2166 0, 49, 51, 50, 52, 50, 53, 50, 55, 54,
2167 56, 57, 57, 57, 57, 57, 57, 57, 59, 58,
2168 60, 61, 61, 62, 62, 62, 64, 63, 65, 65,
2169 66, 66, 66, 67, 69, 68, 71, 70, 70, 72,
2170 73, 73, 74, 74, 74, 75, 75, 75, 75, 75,
2171 75, 75, 75, 75, 76, 77, 78, 80, 79, 82,
2172 81, 84, 83, 85, 85, 86, 86, 86, 88, 87,
2173 89, 89, 89, 89, 90, 90, 92, 91, 94, 93,
2174 96, 95, 97, 97, 98, 98, 98, 99, 99, 99,
2175 99, 99, 101, 100, 103, 102, 105, 104, 107, 106,
2176 108, 108, 108, 109, 109, 109, 109, 109, 109, 109,
2177 109, 111, 110, 113, 112, 114, 114, 114, 115, 115,
2178 115, 115, 115, 115, 117, 116, 118, 118, 118, 120,
2179 119, 122, 121, 124, 123, 125, 125, 125, 127, 126,
2180 128, 128, 128, 129, 129, 129, 129, 129, 129, 129,
2181 131, 130, 132, 134, 133, 136, 135, 137, 137, 137,
2182 139, 138, 140, 140, 140, 141, 141, 141, 141, 141,
2183 143, 142, 144, 145, 146, 148, 147
2187 NetconfParser::yyr2_[] =
2189 0, 2, 0, 3, 0, 3, 0, 3, 0, 4,
2190 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
2191 1, 0, 1, 3, 5, 2, 0, 4, 0, 1,
2192 1, 3, 2, 2, 0, 4, 0, 6, 1, 2,
2193 0, 1, 1, 3, 2, 1, 1, 1, 1, 1,
2194 1, 1, 1, 1, 3, 3, 3, 0, 4, 0,
2195 4, 0, 6, 0, 1, 1, 3, 2, 0, 4,
2196 1, 3, 2, 1, 1, 1, 0, 4, 0, 4,
2197 0, 6, 0, 1, 1, 3, 2, 1, 1, 1,
2198 1, 1, 0, 6, 0, 6, 0, 6, 0, 6,
2199 1, 3, 2, 1, 1, 1, 1, 1, 1, 1,
2200 1, 0, 4, 0, 6, 1, 3, 2, 1, 1,
2201 1, 1, 1, 1, 0, 4, 1, 1, 1, 0,
2202 4, 0, 4, 0, 6, 1, 3, 2, 0, 4,
2203 1, 3, 2, 1, 1, 1, 1, 1, 1, 1,
2204 0, 4, 3, 0, 4, 0, 6, 1, 3, 2,
2205 0, 4, 1, 3, 2, 1, 1, 1, 1, 1,
2210#if NETCONF_DEBUG || 1
2214 const NetconfParser::yytname_[] =
2216 "\"end of file\"",
"error",
"\"invalid token\"",
"\",\"",
"\":\"",
2217 "\"[\"",
"\"]\"",
"\"{\"",
"\"}\"",
"\"null\"",
"\"Netconf\"",
2218 "\"user-context\"",
"\"comment\"",
"\"boot-update\"",
2219 "\"subscribe-changes\"",
"\"validate-changes\"",
"\"managed-servers\"",
2220 "\"dhcp4\"",
"\"dhcp6\"",
"\"d2\"",
"\"ca\"",
"\"model\"",
2221 "\"control-socket\"",
"\"socket-type\"",
"\"unix\"",
"\"http\"",
2222 "\"stdout\"",
"\"socket-name\"",
"\"socket-url\"",
"\"hooks-libraries\"",
2223 "\"library\"",
"\"parameters\"",
"\"loggers\"",
"\"name\"",
2224 "\"output-options\"",
"\"output\"",
"\"debuglevel\"",
"\"severity\"",
2225 "\"flush\"",
"\"maxsize\"",
"\"maxver\"",
"\"pattern\"",
"START_JSON",
2226 "START_NETCONF",
"START_SUB_NETCONF",
"\"constant string\"",
2227 "\"integer\"",
"\"floating point\"",
"\"boolean\"",
"$accept",
"start",
2228 "$@1",
"$@2",
"$@3",
"sub_netconf",
"$@4",
"json",
"value",
"map",
"$@5",
2229 "map_value",
"map_content",
"not_empty_map",
"list_generic",
"$@6",
2230 "list_content",
"not_empty_list",
"unknown_map_entry",
2231 "netconf_syntax_map",
"$@7",
"global_object",
"$@8",
2232 "global_object_comma",
"global_params",
"not_empty_global_params",
2233 "global_param",
"boot_update",
"subscribe_changes",
"validate_changes",
2234 "user_context",
"$@9",
"comment",
"$@10",
"hooks_libraries",
"$@11",
2235 "hooks_libraries_list",
"not_empty_hooks_libraries_list",
2236 "hooks_library",
"$@12",
"hooks_params",
"hooks_param",
"library",
2237 "$@13",
"parameters",
"$@14",
"managed_servers",
"$@15",
2238 "servers_entries",
"not_empty_servers_entries",
"server_entry",
2239 "dhcp4_server",
"$@16",
"dhcp6_server",
"$@17",
"d2_server",
"$@18",
2240 "ca_server",
"$@19",
"managed_server_params",
"managed_server_param",
2241 "model",
"$@20",
"control_socket",
"$@21",
"control_socket_params",
2242 "control_socket_param",
"socket_type",
"$@22",
"socket_type_value",
2243 "socket_name",
"$@23",
"socket_url",
"$@24",
"loggers",
"$@25",
2244 "loggers_entries",
"logger_entry",
"$@26",
"logger_params",
2245 "logger_param",
"name",
"$@27",
"debuglevel",
"severity",
"$@28",
2246 "output_options_list",
"$@29",
"output_options_list_content",
2247 "output_entry",
"$@30",
"output_params_list",
"output_params",
"output",
2248 "$@31",
"flush",
"maxsize",
"maxver",
"pattern",
"$@32", YY_NULLPTR
2255 NetconfParser::yyrline_[] =
2257 0, 126, 126, 126, 127, 127, 128, 128, 136, 136,
2258 147, 153, 154, 155, 156, 157, 158, 159, 163, 163,
2259 174, 179, 180, 188, 193, 199, 204, 204, 210, 211,
2260 214, 218, 222, 234, 242, 242, 254, 254, 272, 275,
2261 280, 281, 284, 285, 286, 293, 294, 295, 296, 297,
2262 298, 299, 300, 301, 304, 310, 316, 322, 322, 347,
2263 347, 375, 375, 386, 387, 390, 391, 392, 397, 397,
2264 405, 406, 407, 410, 413, 414, 417, 417, 426, 426,
2265 437, 437, 448, 449, 452, 453, 454, 462, 463, 464,
2266 465, 466, 470, 470, 482, 482, 494, 494, 506, 506,
2267 518, 519, 520, 526, 527, 528, 529, 530, 531, 532,
2268 533, 537, 537, 547, 547, 559, 560, 561, 566, 567,
2269 568, 569, 570, 571, 574, 574, 583, 584, 585, 588,
2270 588, 598, 598, 611, 611, 624, 625, 626, 632, 632,
2271 640, 641, 642, 647, 648, 649, 650, 651, 652, 653,
2272 656, 656, 665, 671, 671, 680, 680, 691, 692, 693,
2273 698, 698, 706, 707, 708, 713, 714, 715, 716, 717,
2274 720, 720, 729, 735, 741, 747, 747
2278 NetconfParser::yy_stack_print_ ()
const
2280 *yycdebug_ <<
"Stack now";
2281 for (stack_type::const_iterator
2282 i = yystack_.begin (),
2283 i_end = yystack_.end ();
2285 *yycdebug_ <<
' ' <<
int (i->state);
2290 NetconfParser::yy_reduce_print_ (
int yyrule)
const
2292 int yylno = yyrline_[yyrule];
2293 int yynrhs = yyr2_[yyrule];
2295 *yycdebug_ <<
"Reducing stack by rule " << yyrule - 1
2296 <<
" (line " << yylno <<
"):\n";
2298 for (
int yyi = 0; yyi < yynrhs; yyi++)
2300 yystack_[(yynrhs) - (yyi + 1)]);
2305#line 14 "netconf_parser.yy"
2307#line 2308 "netconf_parser.cc"
2309#line 756 "netconf_parser.yy"
2314 const string& what) {
2315 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)
Notes: IntElement type is changed to int64_t.
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.
context(const NetconfParser &yyparser, const symbol_type &yyla)
Present a slice of the top of a stack.
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.
NetconfParser(isc::netconf::ParserContext &ctx_yyarg)
Build a parser object.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
static const symbol_kind_type YYNTOKENS
The number of tokens.
location location_type
Symbol locations.
Parser context is a wrapper around flex/bison instances dedicated to Netconf-agent config file parser...
const std::string contextName()
Get the syntactic context name.
LexerContext ctx_
Current syntactic context.
void unique(const std::string &name, isc::data::Element::Position loc)
Check if a parameter is already present.
isc::data::Element::Position loc2pos(isc::netconf::location &loc)
Converts bison's position to one understandable by isc::data::Element.
void enter(const LexerContext &ctx)
Enter a new syntactic context.
@ NO_KEYWORDS
This one is used in pure JSON mode.
@ HOOKS_LIBRARIES
Used while parsing Netconf/loggers structures.
@ CONFIG
Used while parsing content of Netconf.
@ MANAGED_SERVERS
Used while parsing Netconf/managed-servers.
@ SERVER
Used while parsing Netconf/manages-servers/*/control-socket.
@ LOGGERS
Used while parsing Netconf/loggers/output-options structures.
@ SOCKET_TYPE
Used while parsing Netconf/hooks-libraries.
@ CONTROL_SOCKET
Used while parsing Netconf/managed-servers/*/control-socket/socket-type.
std::vector< isc::data::ElementPtr > stack_
JSON elements being parsed.
void warnAboutExtraCommas(const isc::netconf::location &loc)
Warning for extra commas.
void leave()
Leave a syntactic context.
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.
Define the isc::netconf::parser class.
"External" symbols: returned by the scanner.
Syntax errors thrown from user actions.
~syntax_error() YY_NOEXCEPT YY_NOTHROW