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