39#define yylex   d2_parser_lex 
   47#line 35 "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      case symbol_kind::S_control_socket_type_value: 
 
  221      case symbol_kind::S_auth_type_value: 
 
  222        value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
 
  225      case symbol_kind::S_BOOLEAN: 
 
  226        value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
 
  229      case symbol_kind::S_FLOAT: 
 
  230        value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
 
  233      case symbol_kind::S_INTEGER: 
 
  234        value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
 
  237      case symbol_kind::S_STRING: 
 
  238        value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
 
  247    that.state = empty_state;
 
  252    : super_type (s, 
YY_MOVE (that.location))
 
  254    switch (that.kind ())
 
  256      case symbol_kind::S_value: 
 
  257      case symbol_kind::S_map_value: 
 
  258      case symbol_kind::S_ncr_protocol_value: 
 
  259      case symbol_kind::S_control_socket_type_value: 
 
  260      case symbol_kind::S_auth_type_value: 
 
  261        value.move< ElementPtr > (YY_MOVE (that.value));
 
  264      case symbol_kind::S_BOOLEAN: 
 
  265        value.move< bool > (YY_MOVE (that.value));
 
  268      case symbol_kind::S_FLOAT: 
 
  269        value.move< double > (YY_MOVE (that.value));
 
  272      case symbol_kind::S_INTEGER: 
 
  273        value.move< int64_t > (YY_MOVE (that.value));
 
  276      case symbol_kind::S_STRING: 
 
  277        value.move< std::string > (YY_MOVE (that.value));
 
  288#if YY_CPLUSPLUS < 201103L 
  289  D2Parser::stack_symbol_type&
 
  290  D2Parser::stack_symbol_type::operator= (
const stack_symbol_type& that)
 
  293    switch (that.kind ())
 
  304        value.copy< 
bool > (that.value);
 
  308        value.copy< 
double > (that.value);
 
  312        value.copy< int64_t > (that.value);
 
  316        value.copy< std::string > (that.value);
 
  323    location = that.location;
 
  327  D2Parser::stack_symbol_type&
 
  328  D2Parser::stack_symbol_type::operator= (stack_symbol_type& that)
 
  331    switch (that.kind ())
 
  342        value.move< 
bool > (that.value);
 
  346        value.move< 
double > (that.value);
 
  350        value.move< int64_t > (that.value);
 
  354        value.move< std::string > (that.value);
 
  361    location = that.location;
 
  363    that.state = empty_state;
 
  368  template <
typename Base>
 
  377  template <
typename Base>
 
  381    std::ostream& yyoutput = yyo;
 
  384      yyo << 
"empty symbol";
 
  388        yyo << (yykind < 
YYNTOKENS ? 
"token" : 
"nterm")
 
  389            << 
' ' << yysym.name () << 
" (" 
  390            << yysym.location << 
": ";
 
  394#line 145 "d2_parser.yy" 
  395                 { yyoutput << yysym.value.template as < std::string > (); }
 
  396#line 397 "d2_parser.cc" 
  400#line 145 "d2_parser.yy" 
  401                 { yyoutput << yysym.value.template as < int64_t > (); }
 
  402#line 403 "d2_parser.cc" 
  406#line 145 "d2_parser.yy" 
  407                 { yyoutput << yysym.value.template as < double > (); }
 
  408#line 409 "d2_parser.cc" 
  412#line 145 "d2_parser.yy" 
  413                 { yyoutput << yysym.value.template as < bool > (); }
 
  414#line 415 "d2_parser.cc" 
  418#line 145 "d2_parser.yy" 
  419                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  420#line 421 "d2_parser.cc" 
  424#line 145 "d2_parser.yy" 
  425                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  426#line 427 "d2_parser.cc" 
  430#line 145 "d2_parser.yy" 
  431                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  432#line 433 "d2_parser.cc" 
  436#line 145 "d2_parser.yy" 
  437                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  438#line 439 "d2_parser.cc" 
  442#line 145 "d2_parser.yy" 
  443                 { yyoutput << yysym.value.template as < ElementPtr > (); }
 
  444#line 445 "d2_parser.cc" 
  456  D2Parser::yypush_ (
const char* m, 
YY_MOVE_REF (stack_symbol_type) sym)
 
  466#if 201103L <= YY_CPLUSPLUS 
  467    yypush_ (m, stack_symbol_type (s, std::move (sym)));
 
  469    stack_symbol_type ss (s, sym);
 
  482  D2Parser::debug_stream ()
 const 
  488  D2Parser::set_debug_stream (std::ostream& o)
 
  494  D2Parser::debug_level_type
 
  495  D2Parser::debug_level ()
 const 
  501  D2Parser::set_debug_level (debug_level_type l)
 
  508  D2Parser::yy_lr_goto_state_ (state_type yystate, 
int yysym)
 
  510    int yyr = yypgoto_[yysym - 
YYNTOKENS] + yystate;
 
  511    if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
 
  512      return yytable_[yyr];
 
  518  D2Parser::yy_pact_value_is_default_ (
int yyvalue) 
YY_NOEXCEPT 
  520    return yyvalue == yypact_ninf_;
 
  524  D2Parser::yy_table_value_is_error_ (
int yyvalue) 
YY_NOEXCEPT 
  526    return yyvalue == yytable_ninf_;
 
  544    int yyerrstatus_ = 0;
 
  550    stack_symbol_type yyerror_range[3];
 
  567    yypush_ (YY_NULLPTR, 0, 
YY_MOVE (yyla));
 
  573    YYCDEBUG << 
"Entering state " << int (yystack_[0].state) << 
'\n';
 
  577    if (yystack_[0].state == yyfinal_)
 
  588    yyn = yypact_[+yystack_[0].state];
 
  589    if (yy_pact_value_is_default_ (yyn))
 
  601            yyla.
move (yylookahead);
 
  606            YYCDEBUG << 
"Caught exception: " << yyexc.what() << 
'\n';
 
  627    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.
kind ())
 
  636        if (yy_table_value_is_error_ (yyn))
 
  647    yypush_ (
"Shifting", state_type (yyn), 
YY_MOVE (yyla));
 
  655    yyn = yydefact_[+yystack_[0].state];
 
  667      stack_symbol_type yylhs;
 
  668      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
 
  705        stack_type::slice range (yystack_, yylen);
 
  719#line 154 "d2_parser.yy" 
  720                     { ctx.ctx_ = ctx.NO_KEYWORD; }
 
  721#line 722 "d2_parser.cc" 
  725#line 155 "d2_parser.yy" 
  726                         { ctx.ctx_ = ctx.CONFIG; }
 
  727#line 728 "d2_parser.cc" 
  731#line 156 "d2_parser.yy" 
  732                    { ctx.ctx_ = ctx.DHCPDDNS; }
 
  733#line 734 "d2_parser.cc" 
  737#line 157 "d2_parser.yy" 
  738                    { ctx.ctx_ = ctx.TSIG_KEY; }
 
  739#line 740 "d2_parser.cc" 
  743#line 158 "d2_parser.yy" 
  744                     { ctx.ctx_ = ctx.TSIG_KEYS; }
 
  745#line 746 "d2_parser.cc" 
  749#line 159 "d2_parser.yy" 
  750                       { ctx.ctx_ = ctx.DDNS_DOMAIN; }
 
  751#line 752 "d2_parser.cc" 
  755#line 160 "d2_parser.yy" 
  756                        { ctx.ctx_ = ctx.DDNS_DOMAINS; }
 
  757#line 758 "d2_parser.cc" 
  761#line 161 "d2_parser.yy" 
  762                      { ctx.ctx_ = ctx.DNS_SERVERS; }
 
  763#line 764 "d2_parser.cc" 
  767#line 162 "d2_parser.yy" 
  768                       { ctx.ctx_ = ctx.DNS_SERVERS; }
 
  769#line 770 "d2_parser.cc" 
  773#line 163 "d2_parser.yy" 
  774                         { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 
  775#line 776 "d2_parser.cc" 
  779#line 171 "d2_parser.yy" 
  781#line 782 "d2_parser.cc" 
  785#line 172 "d2_parser.yy" 
  787#line 788 "d2_parser.cc" 
  791#line 173 "d2_parser.yy" 
  793#line 794 "d2_parser.cc" 
  797#line 174 "d2_parser.yy" 
  799#line 800 "d2_parser.cc" 
  803#line 175 "d2_parser.yy" 
  805#line 806 "d2_parser.cc" 
  809#line 176 "d2_parser.yy" 
  811#line 812 "d2_parser.cc" 
  815#line 177 "d2_parser.yy" 
  817#line 818 "d2_parser.cc" 
  821#line 180 "d2_parser.yy" 
  824    ctx.stack_.push_back(yystack_[0].value.as < 
ElementPtr > ());
 
  826#line 827 "d2_parser.cc" 
  830#line 185 "d2_parser.yy" 
  835    ctx.stack_.push_back(m);
 
  837#line 838 "d2_parser.cc" 
  841#line 190 "d2_parser.yy" 
  847#line 848 "d2_parser.cc" 
  851#line 196 "d2_parser.yy" 
  853#line 854 "d2_parser.cc" 
  857#line 203 "d2_parser.yy" 
  860                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
 
  861                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < 
ElementPtr > ());
 
  863#line 864 "d2_parser.cc" 
  867#line 208 "d2_parser.yy" 
  871                  ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
 
  872                  ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < 
ElementPtr > ());
 
  874#line 875 "d2_parser.cc" 
  878#line 214 "d2_parser.yy" 
  880                  ctx.warnAboutExtraCommas(yystack_[0].location);
 
  882#line 883 "d2_parser.cc" 
  886#line 219 "d2_parser.yy" 
  889    ctx.stack_.push_back(l);
 
  891#line 892 "d2_parser.cc" 
  895#line 222 "d2_parser.yy" 
  899#line 900 "d2_parser.cc" 
  903#line 230 "d2_parser.yy" 
  906                  ctx.stack_.back()->add(yystack_[0].value.as < 
ElementPtr > ());
 
  908#line 909 "d2_parser.cc" 
  912#line 234 "d2_parser.yy" 
  915                  ctx.stack_.back()->add(yystack_[0].value.as < 
ElementPtr > ());
 
  917#line 918 "d2_parser.cc" 
  921#line 238 "d2_parser.yy" 
  923                  ctx.warnAboutExtraCommas(yystack_[0].location);
 
  925#line 926 "d2_parser.cc" 
  929#line 248 "d2_parser.yy" 
  931    const std::string& where = ctx.contextName();
 
  932    const std::string& keyword = yystack_[1].value.as < std::string > ();
 
  933    error(yystack_[1].location,
 
  934          "got unexpected keyword \"" + keyword + 
"\" in " + where + 
" map.");
 
  936#line 937 "d2_parser.cc" 
  940#line 257 "d2_parser.yy" 
  945    ctx.stack_.push_back(m);
 
  947#line 948 "d2_parser.cc" 
  951#line 262 "d2_parser.yy" 
  957#line 958 "d2_parser.cc" 
  961#line 270 "d2_parser.yy" 
  963    ctx.unique(
"DhcpDdns", ctx.loc2pos(yystack_[0].location));
 
  965    ctx.stack_.back()->set(
"DhcpDdns", m);
 
  966    ctx.stack_.push_back(m);
 
  967    ctx.enter(ctx.DHCPDDNS);
 
  969#line 970 "d2_parser.cc" 
  973#line 276 "d2_parser.yy" 
  975    ctx.stack_.pop_back();
 
  978#line 979 "d2_parser.cc" 
  982#line 283 "d2_parser.yy" 
  984    ctx.warnAboutExtraCommas(yystack_[0].location);
 
  986#line 987 "d2_parser.cc" 
  990#line 287 "d2_parser.yy" 
  994    ctx.stack_.push_back(m);
 
  996#line 997 "d2_parser.cc" 
 1000#line 291 "d2_parser.yy" 
 1004#line 1005 "d2_parser.cc" 
 1008#line 297 "d2_parser.yy" 
 1010                   ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1012#line 1013 "d2_parser.cc" 
 1016#line 320 "d2_parser.yy" 
 1018    ctx.unique(
"ip-address", ctx.loc2pos(yystack_[0].location));
 
 1019    ctx.enter(ctx.NO_KEYWORD);
 
 1021#line 1022 "d2_parser.cc" 
 1025#line 323 "d2_parser.yy" 
 1028    ctx.stack_.back()->set(
"ip-address", s);
 
 1031#line 1032 "d2_parser.cc" 
 1035#line 329 "d2_parser.yy" 
 1037    ctx.unique(
"port", ctx.loc2pos(yystack_[2].location));
 
 1038    if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
 
 1039        error(yystack_[0].location, 
"port must be greater than zero but less than 65536");
 
 1041    ElementPtr i(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1042    ctx.stack_.back()->set(
"port", i);
 
 1044#line 1045 "d2_parser.cc" 
 1048#line 338 "d2_parser.yy" 
 1050    ctx.unique(
"dns-server-timeout", ctx.loc2pos(yystack_[2].location));
 
 1051    if (yystack_[0].value.as < int64_t > () <= 0) {
 
 1052        error(yystack_[0].location, 
"dns-server-timeout must be greater than zero");
 
 1054        ElementPtr i(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1055        ctx.stack_.back()->set(
"dns-server-timeout", i);
 
 1058#line 1059 "d2_parser.cc" 
 1062#line 348 "d2_parser.yy" 
 1064    ctx.unique(
"ncr-protocol", ctx.loc2pos(yystack_[0].location));
 
 1065    ctx.enter(ctx.NCR_PROTOCOL);
 
 1067#line 1068 "d2_parser.cc" 
 1071#line 351 "d2_parser.yy" 
 1073    ctx.stack_.back()->set(
"ncr-protocol", yystack_[0].value.as < 
ElementPtr > ());
 
 1076#line 1077 "d2_parser.cc" 
 1080#line 357 "d2_parser.yy" 
 1082#line 1083 "d2_parser.cc" 
 1086#line 358 "d2_parser.yy" 
 1088#line 1089 "d2_parser.cc" 
 1092#line 361 "d2_parser.yy" 
 1094    ctx.unique(
"ncr-format", ctx.loc2pos(yystack_[0].location));
 
 1095    ctx.enter(ctx.NCR_FORMAT);
 
 1097#line 1098 "d2_parser.cc" 
 1101#line 364 "d2_parser.yy" 
 1104    ctx.stack_.back()->set(
"ncr-format", json);
 
 1107#line 1108 "d2_parser.cc" 
 1111#line 370 "d2_parser.yy" 
 1113    ctx.enter(ctx.NO_KEYWORD);
 
 1115#line 1116 "d2_parser.cc" 
 1119#line 372 "d2_parser.yy" 
 1128        if ((old->size() != 1) || !old->contains(
"comment")) {
 
 1129            std::stringstream msg;
 
 1130            msg << 
"duplicate user-context entries (previous at " 
 1131                << old->getPosition().str() << 
")";
 
 1132            error(yystack_[3].location, msg.str());
 
 1135        user_context->set(
"comment", old->get(
"comment"));
 
 1139    parent->set(
"user-context", user_context);
 
 1142#line 1143 "d2_parser.cc" 
 1146#line 395 "d2_parser.yy" 
 1148    ctx.enter(ctx.NO_KEYWORD);
 
 1150#line 1151 "d2_parser.cc" 
 1154#line 397 "d2_parser.yy" 
 1158    ElementPtr comment(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1159    user_context->set(
"comment", comment);
 
 1165        if (old->contains(
"comment")) {
 
 1166            std::stringstream msg;
 
 1167            msg << 
"duplicate user-context/comment entries (previous at " 
 1168                << old->getPosition().str() << 
")";
 
 1169            error(yystack_[3].location, msg.str());
 
 1172        merge(user_context, old);
 
 1176    parent->set(
"user-context", user_context);
 
 1179#line 1180 "d2_parser.cc" 
 1183#line 422 "d2_parser.yy" 
 1185    ctx.unique(
"forward-ddns", ctx.loc2pos(yystack_[0].location));
 
 1187    ctx.stack_.back()->set(
"forward-ddns", m);
 
 1188    ctx.stack_.push_back(m);
 
 1189    ctx.enter(ctx.FORWARD_DDNS);
 
 1191#line 1192 "d2_parser.cc" 
 1195#line 428 "d2_parser.yy" 
 1197    ctx.stack_.pop_back();
 
 1200#line 1201 "d2_parser.cc" 
 1204#line 433 "d2_parser.yy" 
 1206    ctx.unique(
"reverse-ddns", ctx.loc2pos(yystack_[0].location));
 
 1208    ctx.stack_.back()->set(
"reverse-ddns", m);
 
 1209    ctx.stack_.push_back(m);
 
 1210    ctx.enter(ctx.REVERSE_DDNS);
 
 1212#line 1213 "d2_parser.cc" 
 1216#line 439 "d2_parser.yy" 
 1218    ctx.stack_.pop_back();
 
 1221#line 1222 "d2_parser.cc" 
 1225#line 450 "d2_parser.yy" 
 1227                             ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1229#line 1230 "d2_parser.cc" 
 1233#line 461 "d2_parser.yy" 
 1235    ctx.unique(
"ddns-domains", ctx.loc2pos(yystack_[0].location));
 
 1237    ctx.stack_.back()->set(
"ddns-domains", l);
 
 1238    ctx.stack_.push_back(l);
 
 1239    ctx.enter(ctx.DDNS_DOMAINS);
 
 1241#line 1242 "d2_parser.cc" 
 1245#line 467 "d2_parser.yy" 
 1247    ctx.stack_.pop_back();
 
 1250#line 1251 "d2_parser.cc" 
 1254#line 472 "d2_parser.yy" 
 1257    ctx.stack_.push_back(l);
 
 1259#line 1260 "d2_parser.cc" 
 1263#line 475 "d2_parser.yy" 
 1267#line 1268 "d2_parser.cc" 
 1271#line 485 "d2_parser.yy" 
 1273                            ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1275#line 1276 "d2_parser.cc" 
 1279#line 490 "d2_parser.yy" 
 1282    ctx.stack_.back()->add(m);
 
 1283    ctx.stack_.push_back(m);
 
 1285#line 1286 "d2_parser.cc" 
 1289#line 494 "d2_parser.yy" 
 1291    ctx.stack_.pop_back();
 
 1293#line 1294 "d2_parser.cc" 
 1297#line 498 "d2_parser.yy" 
 1300    ctx.stack_.push_back(m);
 
 1302#line 1303 "d2_parser.cc" 
 1306#line 501 "d2_parser.yy" 
 1310#line 1311 "d2_parser.cc" 
 1314#line 507 "d2_parser.yy" 
 1316                      ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1318#line 1319 "d2_parser.cc" 
 1322#line 521 "d2_parser.yy" 
 1324    ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
 
 1325    ctx.enter(ctx.NO_KEYWORD);
 
 1327#line 1328 "d2_parser.cc" 
 1331#line 524 "d2_parser.yy" 
 1333    if (yystack_[0].value.as < std::string > () == 
"") {
 
 1334        error(yystack_[1].location, 
"Ddns domain name cannot be blank");
 
 1336    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1338    ctx.stack_.back()->set(
"name", 
name);
 
 1341#line 1342 "d2_parser.cc" 
 1345#line 534 "d2_parser.yy" 
 1347    ctx.unique(
"key-name", ctx.loc2pos(yystack_[0].location));
 
 1348    ctx.enter(ctx.NO_KEYWORD);
 
 1350#line 1351 "d2_parser.cc" 
 1354#line 537 "d2_parser.yy" 
 1356    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1358    ctx.stack_.back()->set(
"key-name", 
name);
 
 1361#line 1362 "d2_parser.cc" 
 1365#line 547 "d2_parser.yy" 
 1367    ctx.unique(
"dns-servers", ctx.loc2pos(yystack_[0].location));
 
 1369    ctx.stack_.back()->set(
"dns-servers", l);
 
 1370    ctx.stack_.push_back(l);
 
 1371    ctx.enter(ctx.DNS_SERVERS);
 
 1373#line 1374 "d2_parser.cc" 
 1377#line 553 "d2_parser.yy" 
 1379    ctx.stack_.pop_back();
 
 1382#line 1383 "d2_parser.cc" 
 1386#line 558 "d2_parser.yy" 
 1389    ctx.stack_.push_back(l);
 
 1391#line 1392 "d2_parser.cc" 
 1395#line 561 "d2_parser.yy" 
 1399#line 1400 "d2_parser.cc" 
 1403#line 567 "d2_parser.yy" 
 1405                   ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1407#line 1408 "d2_parser.cc" 
 1411#line 572 "d2_parser.yy" 
 1414    ctx.stack_.back()->add(m);
 
 1415    ctx.stack_.push_back(m);
 
 1417#line 1418 "d2_parser.cc" 
 1421#line 576 "d2_parser.yy" 
 1423    ctx.stack_.pop_back();
 
 1425#line 1426 "d2_parser.cc" 
 1429#line 580 "d2_parser.yy" 
 1432    ctx.stack_.push_back(m);
 
 1434#line 1435 "d2_parser.cc" 
 1438#line 583 "d2_parser.yy" 
 1442#line 1443 "d2_parser.cc" 
 1446#line 589 "d2_parser.yy" 
 1448                   ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1450#line 1451 "d2_parser.cc" 
 1454#line 603 "d2_parser.yy" 
 1456    ctx.unique(
"hostname", ctx.loc2pos(yystack_[0].location));
 
 1457    ctx.enter(ctx.NO_KEYWORD);
 
 1459#line 1460 "d2_parser.cc" 
 1463#line 606 "d2_parser.yy" 
 1465    if (yystack_[0].value.as < std::string > () != 
"") {
 
 1466        error(yystack_[1].location, 
"hostname is not yet supported");
 
 1468    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1470    ctx.stack_.back()->set(
"hostname", 
name);
 
 1473#line 1474 "d2_parser.cc" 
 1477#line 616 "d2_parser.yy" 
 1479    ctx.unique(
"ip-address", ctx.loc2pos(yystack_[0].location));
 
 1480    ctx.enter(ctx.NO_KEYWORD);
 
 1482#line 1483 "d2_parser.cc" 
 1486#line 619 "d2_parser.yy" 
 1489    ctx.stack_.back()->set(
"ip-address", s);
 
 1492#line 1493 "d2_parser.cc" 
 1496#line 625 "d2_parser.yy" 
 1498    ctx.unique(
"port", ctx.loc2pos(yystack_[2].location));
 
 1499    if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
 
 1500        error(yystack_[0].location, 
"port must be greater than zero but less than 65536");
 
 1502    ElementPtr i(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1503    ctx.stack_.back()->set(
"port", i);
 
 1505#line 1506 "d2_parser.cc" 
 1509#line 640 "d2_parser.yy" 
 1511    ctx.unique(
"tsig-keys", ctx.loc2pos(yystack_[0].location));
 
 1513    ctx.stack_.back()->set(
"tsig-keys", l);
 
 1514    ctx.stack_.push_back(l);
 
 1515    ctx.enter(ctx.TSIG_KEYS);
 
 1517#line 1518 "d2_parser.cc" 
 1521#line 646 "d2_parser.yy" 
 1523    ctx.stack_.pop_back();
 
 1526#line 1527 "d2_parser.cc" 
 1530#line 651 "d2_parser.yy" 
 1533    ctx.stack_.push_back(l);
 
 1535#line 1536 "d2_parser.cc" 
 1539#line 654 "d2_parser.yy" 
 1543#line 1544 "d2_parser.cc" 
 1547#line 664 "d2_parser.yy" 
 1549                            ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1551#line 1552 "d2_parser.cc" 
 1555#line 669 "d2_parser.yy" 
 1558    ctx.stack_.back()->add(m);
 
 1559    ctx.stack_.push_back(m);
 
 1561#line 1562 "d2_parser.cc" 
 1565#line 673 "d2_parser.yy" 
 1567    ctx.stack_.pop_back();
 
 1569#line 1570 "d2_parser.cc" 
 1573#line 677 "d2_parser.yy" 
 1577    ctx.stack_.push_back(m);
 
 1579#line 1580 "d2_parser.cc" 
 1583#line 681 "d2_parser.yy" 
 1587#line 1588 "d2_parser.cc" 
 1591#line 688 "d2_parser.yy" 
 1593                   ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1595#line 1596 "d2_parser.cc" 
 1599#line 703 "d2_parser.yy" 
 1601    ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
 
 1602    ctx.enter(ctx.NO_KEYWORD);
 
 1604#line 1605 "d2_parser.cc" 
 1608#line 706 "d2_parser.yy" 
 1610    if (yystack_[0].value.as < std::string > () == 
"") {
 
 1611        error(yystack_[1].location, 
"TSIG key name cannot be blank");
 
 1613    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1615    ctx.stack_.back()->set(
"name", 
name);
 
 1618#line 1619 "d2_parser.cc" 
 1622#line 716 "d2_parser.yy" 
 1624    ctx.unique(
"algorithm", ctx.loc2pos(yystack_[0].location));
 
 1625    ctx.enter(ctx.NO_KEYWORD);
 
 1627#line 1628 "d2_parser.cc" 
 1631#line 719 "d2_parser.yy" 
 1633    if (yystack_[0].value.as < std::string > () == 
"") {
 
 1634        error(yystack_[1].location, 
"TSIG key algorithm cannot be blank");
 
 1636    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1637    ctx.stack_.back()->set(
"algorithm", elem);
 
 1640#line 1641 "d2_parser.cc" 
 1644#line 728 "d2_parser.yy" 
 1646    ctx.unique(
"digest-bits", ctx.loc2pos(yystack_[2].location));
 
 1647    if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0  && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
 
 1648        error(yystack_[0].location, 
"TSIG key digest-bits must either be zero or a positive, multiple of eight");
 
 1650    ElementPtr elem(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1651    ctx.stack_.back()->set(
"digest-bits", elem);
 
 1653#line 1654 "d2_parser.cc" 
 1657#line 737 "d2_parser.yy" 
 1659    ctx.unique(
"secret", ctx.loc2pos(yystack_[0].location));
 
 1660    ctx.unique(
"secret-file", ctx.loc2pos(yystack_[0].location));
 
 1661    ctx.enter(ctx.NO_KEYWORD);
 
 1663#line 1664 "d2_parser.cc" 
 1667#line 741 "d2_parser.yy" 
 1669    if (yystack_[0].value.as < std::string > () == 
"") {
 
 1670        error(yystack_[1].location, 
"TSIG key secret cannot be blank");
 
 1672    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1673    ctx.stack_.back()->set(
"secret", elem);
 
 1676#line 1677 "d2_parser.cc" 
 1680#line 750 "d2_parser.yy" 
 1682    ctx.unique(
"secret", ctx.loc2pos(yystack_[0].location));
 
 1683    ctx.unique(
"secret-file", ctx.loc2pos(yystack_[0].location));
 
 1684    ctx.enter(ctx.NO_KEYWORD);
 
 1686#line 1687 "d2_parser.cc" 
 1690#line 754 "d2_parser.yy" 
 1692    if (yystack_[0].value.as < std::string > () == 
"") {
 
 1693        error(yystack_[1].location, 
"TSIG key secret file name cannot be blank");
 
 1695    ElementPtr elem(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1696    ctx.stack_.back()->set(
"secret-file", elem);
 
 1699#line 1700 "d2_parser.cc" 
 1703#line 768 "d2_parser.yy" 
 1705    ctx.unique(
"control-socket", ctx.loc2pos(yystack_[0].location));
 
 1706    ctx.unique(
"control-sockets", ctx.loc2pos(yystack_[0].location));
 
 1708    ctx.stack_.back()->set(
"control-socket", m);
 
 1709    ctx.stack_.push_back(m);
 
 1710    ctx.enter(ctx.CONTROL_SOCKET);
 
 1712#line 1713 "d2_parser.cc" 
 1716#line 775 "d2_parser.yy" 
 1718    ctx.stack_.pop_back();
 
 1721#line 1722 "d2_parser.cc" 
 1725#line 780 "d2_parser.yy" 
 1727    ctx.unique(
"control-sockets", ctx.loc2pos(yystack_[0].location));
 
 1728    ctx.unique(
"control-socket", ctx.loc2pos(yystack_[0].location));
 
 1730    ctx.stack_.back()->set(
"control-sockets", l);
 
 1731    ctx.stack_.push_back(l);
 
 1732    ctx.enter(ctx.CONTROL_SOCKET);
 
 1734#line 1735 "d2_parser.cc" 
 1738#line 787 "d2_parser.yy" 
 1740    ctx.stack_.pop_back();
 
 1743#line 1744 "d2_parser.cc" 
 1747#line 798 "d2_parser.yy" 
 1749                                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1751#line 1752 "d2_parser.cc" 
 1755#line 803 "d2_parser.yy" 
 1758    ctx.stack_.back()->add(m);
 
 1759    ctx.stack_.push_back(m);
 
 1761#line 1762 "d2_parser.cc" 
 1765#line 807 "d2_parser.yy" 
 1767    ctx.stack_.pop_back();
 
 1769#line 1770 "d2_parser.cc" 
 1773#line 813 "d2_parser.yy" 
 1775                         ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1777#line 1778 "d2_parser.cc" 
 1781#line 832 "d2_parser.yy" 
 1783    ctx.unique(
"socket-type", ctx.loc2pos(yystack_[0].location));
 
 1784    ctx.enter(ctx.CONTROL_SOCKET_TYPE);
 
 1786#line 1787 "d2_parser.cc" 
 1790#line 835 "d2_parser.yy" 
 1792    ctx.stack_.back()->set(
"socket-type", yystack_[0].value.as < 
ElementPtr > ());
 
 1795#line 1796 "d2_parser.cc" 
 1799#line 841 "d2_parser.yy" 
 1801#line 1802 "d2_parser.cc" 
 1805#line 842 "d2_parser.yy" 
 1807#line 1808 "d2_parser.cc" 
 1811#line 843 "d2_parser.yy" 
 1813#line 1814 "d2_parser.cc" 
 1817#line 846 "d2_parser.yy" 
 1819    ctx.unique(
"socket-name", ctx.loc2pos(yystack_[0].location));
 
 1820    ctx.unique(
"socket-address", ctx.loc2pos(yystack_[0].location));
 
 1821    ctx.enter(ctx.NO_KEYWORD);
 
 1823#line 1824 "d2_parser.cc" 
 1827#line 850 "d2_parser.yy" 
 1830    ctx.stack_.back()->set(
"socket-name", 
name);
 
 1833#line 1834 "d2_parser.cc" 
 1837#line 856 "d2_parser.yy" 
 1839    ctx.unique(
"socket-address", ctx.loc2pos(yystack_[0].location));
 
 1840    ctx.unique(
"socket-name", ctx.loc2pos(yystack_[0].location));
 
 1841    ctx.enter(ctx.NO_KEYWORD);
 
 1843#line 1844 "d2_parser.cc" 
 1847#line 860 "d2_parser.yy" 
 1849    ElementPtr address(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1850    ctx.stack_.back()->set(
"socket-address", address);
 
 1853#line 1854 "d2_parser.cc" 
 1857#line 866 "d2_parser.yy" 
 1859    ctx.unique(
"socket-port", ctx.loc2pos(yystack_[2].location));
 
 1860    ElementPtr port(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 1861    ctx.stack_.back()->set(
"socket-port", port);
 
 1863#line 1864 "d2_parser.cc" 
 1867#line 872 "d2_parser.yy" 
 1869    ctx.unique(
"trust-anchor", ctx.loc2pos(yystack_[0].location));
 
 1870    ctx.enter(ctx.NO_KEYWORD);
 
 1872#line 1873 "d2_parser.cc" 
 1876#line 875 "d2_parser.yy" 
 1879    ctx.stack_.back()->set(
"trust-anchor", ca);
 
 1882#line 1883 "d2_parser.cc" 
 1886#line 881 "d2_parser.yy" 
 1888    ctx.unique(
"cert-file", ctx.loc2pos(yystack_[0].location));
 
 1889    ctx.enter(ctx.NO_KEYWORD);
 
 1891#line 1892 "d2_parser.cc" 
 1895#line 884 "d2_parser.yy" 
 1897    ElementPtr cert(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1898    ctx.stack_.back()->set(
"cert-file", cert);
 
 1901#line 1902 "d2_parser.cc" 
 1905#line 890 "d2_parser.yy" 
 1907    ctx.unique(
"key-file", ctx.loc2pos(yystack_[0].location));
 
 1908    ctx.enter(ctx.NO_KEYWORD);
 
 1910#line 1911 "d2_parser.cc" 
 1914#line 893 "d2_parser.yy" 
 1916    ElementPtr key(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 1917    ctx.stack_.back()->set(
"key-file", key);
 
 1920#line 1921 "d2_parser.cc" 
 1924#line 899 "d2_parser.yy" 
 1926    ctx.unique(
"cert-required", ctx.loc2pos(yystack_[2].location));
 
 1927    ElementPtr req(
new BoolElement(yystack_[0].value.as < 
bool > (), ctx.loc2pos(yystack_[0].location)));
 
 1928    ctx.stack_.back()->set(
"cert-required", req);
 
 1930#line 1931 "d2_parser.cc" 
 1934#line 907 "d2_parser.yy" 
 1936    ctx.unique(
"authentication", ctx.loc2pos(yystack_[0].location));
 
 1938    ctx.stack_.back()->set(
"authentication", m);
 
 1939    ctx.stack_.push_back(m);
 
 1940    ctx.enter(ctx.AUTHENTICATION);
 
 1942#line 1943 "d2_parser.cc" 
 1946#line 913 "d2_parser.yy" 
 1949    ctx.require(
"type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
 
 1950    ctx.stack_.pop_back();
 
 1953#line 1954 "d2_parser.cc" 
 1957#line 922 "d2_parser.yy" 
 1959               ctx.warnAboutExtraCommas(yystack_[0].location);
 
 1961#line 1962 "d2_parser.cc" 
 1965#line 936 "d2_parser.yy" 
 1967    ctx.unique(
"type", ctx.loc2pos(yystack_[0].location));
 
 1968    ctx.enter(ctx.AUTH_TYPE);
 
 1970#line 1971 "d2_parser.cc" 
 1974#line 939 "d2_parser.yy" 
 1976    ctx.stack_.back()->set(
"type", yystack_[0].value.as < 
ElementPtr > ());
 
 1979#line 1980 "d2_parser.cc" 
 1983#line 944 "d2_parser.yy" 
 1985#line 1986 "d2_parser.cc" 
 1989#line 947 "d2_parser.yy" 
 1991    ctx.unique(
"realm", ctx.loc2pos(yystack_[0].location));
 
 1992    ctx.enter(ctx.NO_KEYWORD);
 
 1994#line 1995 "d2_parser.cc" 
 1998#line 950 "d2_parser.yy" 
 2000    ElementPtr realm(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2001    ctx.stack_.back()->set(
"realm", realm);
 
 2004#line 2005 "d2_parser.cc" 
 2008#line 956 "d2_parser.yy" 
 2010    ctx.unique(
"directory", ctx.loc2pos(yystack_[0].location));
 
 2011    ctx.enter(ctx.NO_KEYWORD);
 
 2013#line 2014 "d2_parser.cc" 
 2017#line 959 "d2_parser.yy" 
 2019    ElementPtr directory(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2020    ctx.stack_.back()->set(
"directory", directory);
 
 2023#line 2024 "d2_parser.cc" 
 2027#line 965 "d2_parser.yy" 
 2029    ctx.unique(
"clients", ctx.loc2pos(yystack_[0].location));
 
 2031    ctx.stack_.back()->set(
"clients", l);
 
 2032    ctx.stack_.push_back(l);
 
 2033    ctx.enter(ctx.CLIENTS);
 
 2035#line 2036 "d2_parser.cc" 
 2039#line 971 "d2_parser.yy" 
 2041    ctx.stack_.pop_back();
 
 2044#line 2045 "d2_parser.cc" 
 2048#line 982 "d2_parser.yy" 
 2050                          ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2052#line 2053 "d2_parser.cc" 
 2056#line 987 "d2_parser.yy" 
 2059    ctx.stack_.back()->add(m);
 
 2060    ctx.stack_.push_back(m);
 
 2062#line 2063 "d2_parser.cc" 
 2066#line 991 "d2_parser.yy" 
 2068    ctx.stack_.pop_back();
 
 2070#line 2071 "d2_parser.cc" 
 2074#line 997 "d2_parser.yy" 
 2076                  ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2078#line 2079 "d2_parser.cc" 
 2082#line 1011 "d2_parser.yy" 
 2084    ctx.unique(
"user", ctx.loc2pos(yystack_[0].location));
 
 2085    ctx.enter(ctx.NO_KEYWORD);
 
 2087#line 2088 "d2_parser.cc" 
 2091#line 1014 "d2_parser.yy" 
 2093    ElementPtr user(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2094    ctx.stack_.back()->set(
"user", user);
 
 2097#line 2098 "d2_parser.cc" 
 2101#line 1020 "d2_parser.yy" 
 2103    ctx.unique(
"user-file", ctx.loc2pos(yystack_[0].location));
 
 2104    ctx.enter(ctx.NO_KEYWORD);
 
 2106#line 2107 "d2_parser.cc" 
 2110#line 1023 "d2_parser.yy" 
 2112    ElementPtr user(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2113    ctx.stack_.back()->set(
"user-file", user);
 
 2116#line 2117 "d2_parser.cc" 
 2120#line 1029 "d2_parser.yy" 
 2122    ctx.unique(
"password", ctx.loc2pos(yystack_[0].location));
 
 2123    ctx.enter(ctx.NO_KEYWORD);
 
 2125#line 2126 "d2_parser.cc" 
 2129#line 1032 "d2_parser.yy" 
 2131    ElementPtr pwd(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2132    ctx.stack_.back()->set(
"password", pwd);
 
 2135#line 2136 "d2_parser.cc" 
 2139#line 1038 "d2_parser.yy" 
 2141    ctx.unique(
"password-file", ctx.loc2pos(yystack_[0].location));
 
 2142    ctx.enter(ctx.NO_KEYWORD);
 
 2144#line 2145 "d2_parser.cc" 
 2148#line 1041 "d2_parser.yy" 
 2150    ElementPtr password(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2151    ctx.stack_.back()->set(
"password-file", password);
 
 2154#line 2155 "d2_parser.cc" 
 2158#line 1049 "d2_parser.yy" 
 2160    ctx.unique(
"hooks-libraries", ctx.loc2pos(yystack_[0].location));
 
 2162    ctx.stack_.back()->set(
"hooks-libraries", l);
 
 2163    ctx.stack_.push_back(l);
 
 2164    ctx.enter(ctx.HOOKS_LIBRARIES);
 
 2166#line 2167 "d2_parser.cc" 
 2170#line 1055 "d2_parser.yy" 
 2172    ctx.stack_.pop_back();
 
 2175#line 2176 "d2_parser.cc" 
 2179#line 1066 "d2_parser.yy" 
 2181        ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2183#line 2184 "d2_parser.cc" 
 2187#line 1071 "d2_parser.yy" 
 2190    ctx.stack_.back()->add(m);
 
 2191    ctx.stack_.push_back(m);
 
 2193#line 2194 "d2_parser.cc" 
 2197#line 1075 "d2_parser.yy" 
 2200    ctx.require(
"library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 
 2201    ctx.stack_.pop_back();
 
 2203#line 2204 "d2_parser.cc" 
 2207#line 1081 "d2_parser.yy" 
 2211    ctx.stack_.push_back(m);
 
 2213#line 2214 "d2_parser.cc" 
 2217#line 1085 "d2_parser.yy" 
 2220    ctx.require(
"library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 
 2223#line 2224 "d2_parser.cc" 
 2227#line 1093 "d2_parser.yy" 
 2229                ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2231#line 2232 "d2_parser.cc" 
 2235#line 1103 "d2_parser.yy" 
 2237    ctx.unique(
"library", ctx.loc2pos(yystack_[0].location));
 
 2238    ctx.enter(ctx.NO_KEYWORD);
 
 2240#line 2241 "d2_parser.cc" 
 2244#line 1106 "d2_parser.yy" 
 2246    ElementPtr lib(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2247    ctx.stack_.back()->set(
"library", lib);
 
 2250#line 2251 "d2_parser.cc" 
 2254#line 1112 "d2_parser.yy" 
 2256    ctx.unique(
"parameters", ctx.loc2pos(yystack_[0].location));
 
 2257    ctx.enter(ctx.NO_KEYWORD);
 
 2259#line 2260 "d2_parser.cc" 
 2263#line 1115 "d2_parser.yy" 
 2265    ctx.stack_.back()->set(
"parameters", yystack_[0].value.as < 
ElementPtr > ());
 
 2268#line 2269 "d2_parser.cc" 
 2272#line 1122 "d2_parser.yy" 
 2274    ctx.unique(
"loggers", ctx.loc2pos(yystack_[0].location));
 
 2276    ctx.stack_.back()->set(
"loggers", l);
 
 2277    ctx.stack_.push_back(l);
 
 2278    ctx.enter(ctx.LOGGERS);
 
 2280#line 2281 "d2_parser.cc" 
 2284#line 1128 "d2_parser.yy" 
 2286    ctx.stack_.pop_back();
 
 2289#line 2290 "d2_parser.cc" 
 2293#line 1137 "d2_parser.yy" 
 2295                   ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2297#line 2298 "d2_parser.cc" 
 2301#line 1143 "d2_parser.yy" 
 2304    ctx.stack_.back()->add(l);
 
 2305    ctx.stack_.push_back(l);
 
 2307#line 2308 "d2_parser.cc" 
 2311#line 1147 "d2_parser.yy" 
 2313    ctx.stack_.pop_back();
 
 2315#line 2316 "d2_parser.cc" 
 2319#line 1153 "d2_parser.yy" 
 2321                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2323#line 2324 "d2_parser.cc" 
 2327#line 1167 "d2_parser.yy" 
 2329    ctx.unique(
"name", ctx.loc2pos(yystack_[0].location));
 
 2330    ctx.enter(ctx.NO_KEYWORD);
 
 2332#line 2333 "d2_parser.cc" 
 2336#line 1170 "d2_parser.yy" 
 2339    ctx.stack_.back()->set(
"name", 
name);
 
 2342#line 2343 "d2_parser.cc" 
 2346#line 1176 "d2_parser.yy" 
 2348    ctx.unique(
"debuglevel", ctx.loc2pos(yystack_[2].location));
 
 2349    ElementPtr dl(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 2350    ctx.stack_.back()->set(
"debuglevel", dl);
 
 2352#line 2353 "d2_parser.cc" 
 2356#line 1182 "d2_parser.yy" 
 2358    ctx.unique(
"severity", ctx.loc2pos(yystack_[0].location));
 
 2359    ctx.enter(ctx.NO_KEYWORD);
 
 2361#line 2362 "d2_parser.cc" 
 2365#line 1185 "d2_parser.yy" 
 2367    ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2368    ctx.stack_.back()->set(
"severity", sev);
 
 2371#line 2372 "d2_parser.cc" 
 2375#line 1191 "d2_parser.yy" 
 2377    ctx.unique(
"output-options", ctx.loc2pos(yystack_[0].location));
 
 2379    ctx.stack_.back()->set(
"output-options", l);
 
 2380    ctx.stack_.push_back(l);
 
 2381    ctx.enter(ctx.OUTPUT_OPTIONS);
 
 2383#line 2384 "d2_parser.cc" 
 2387#line 1197 "d2_parser.yy" 
 2389    ctx.stack_.pop_back();
 
 2392#line 2393 "d2_parser.cc" 
 2396#line 1204 "d2_parser.yy" 
 2398                               ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2400#line 2401 "d2_parser.cc" 
 2404#line 1209 "d2_parser.yy" 
 2407    ctx.stack_.back()->add(m);
 
 2408    ctx.stack_.push_back(m);
 
 2410#line 2411 "d2_parser.cc" 
 2414#line 1213 "d2_parser.yy" 
 2416    ctx.stack_.pop_back();
 
 2418#line 2419 "d2_parser.cc" 
 2422#line 1219 "d2_parser.yy" 
 2424                 ctx.warnAboutExtraCommas(yystack_[0].location);
 
 2426#line 2427 "d2_parser.cc" 
 2430#line 1231 "d2_parser.yy" 
 2432    ctx.unique(
"output", ctx.loc2pos(yystack_[0].location));
 
 2433    ctx.enter(ctx.NO_KEYWORD);
 
 2435#line 2436 "d2_parser.cc" 
 2439#line 1234 "d2_parser.yy" 
 2441    ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2442    ctx.stack_.back()->set(
"output", sev);
 
 2445#line 2446 "d2_parser.cc" 
 2449#line 1240 "d2_parser.yy" 
 2451    ctx.unique(
"flush", ctx.loc2pos(yystack_[2].location));
 
 2452    ElementPtr flush(
new BoolElement(yystack_[0].value.as < 
bool > (), ctx.loc2pos(yystack_[0].location)));
 
 2453    ctx.stack_.back()->set(
"flush", flush);
 
 2455#line 2456 "d2_parser.cc" 
 2459#line 1246 "d2_parser.yy" 
 2461    ctx.unique(
"maxsize", ctx.loc2pos(yystack_[2].location));
 
 2462    ElementPtr maxsize(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 2463    ctx.stack_.back()->set(
"maxsize", maxsize);
 
 2465#line 2466 "d2_parser.cc" 
 2469#line 1252 "d2_parser.yy" 
 2471    ctx.unique(
"maxver", ctx.loc2pos(yystack_[2].location));
 
 2472    ElementPtr maxver(
new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
 
 2473    ctx.stack_.back()->set(
"maxver", maxver);
 
 2475#line 2476 "d2_parser.cc" 
 2479#line 1258 "d2_parser.yy" 
 2481    ctx.unique(
"pattern", ctx.loc2pos(yystack_[0].location));
 
 2482    ctx.enter(ctx.NO_KEYWORD);
 
 2484#line 2485 "d2_parser.cc" 
 2488#line 1261 "d2_parser.yy" 
 2490    ElementPtr sev(
new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
 
 2491    ctx.stack_.back()->set(
"pattern", sev);
 
 2494#line 2495 "d2_parser.cc" 
 2498#line 2499 "d2_parser.cc" 
 2507          YYCDEBUG << 
"Caught exception: " << yyexc.what() << 
'\n';
 
 2517      yypush_ (YY_NULLPTR, 
YY_MOVE (yylhs));
 
 2531        std::string msg = yysyntax_error_ (yyctx);
 
 2537    if (yyerrstatus_ == 3)
 
 2545        else if (!yyla.
empty ())
 
 2547            yy_destroy_ (
"Error: discarding", yyla);
 
 2581        yyn = yypact_[+yystack_[0].state];
 
 2582        if (!yy_pact_value_is_default_ (yyn))
 
 2585            if (0 <= yyn && yyn <= yylast_
 
 2588                yyn = yytable_[yyn];
 
 2595        if (yystack_.size () == 1)
 
 2598        yyerror_range[1].
location = yystack_[0].location;
 
 2599        yy_destroy_ (
"Error: popping", yystack_[0]);
 
 2604      stack_symbol_type error_token;
 
 2610      error_token.state = state_type (yyn);
 
 2611      yypush_ (
"Shifting", 
YY_MOVE (error_token));
 
 2637      yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
 
 2643    while (1 < yystack_.size ())
 
 2645        yy_destroy_ (
"Cleanup: popping", yystack_[0]);
 
 2654        YYCDEBUG << 
"Exception caught: cleaning lookahead and stack\n";
 
 2658          yy_destroy_ (YY_NULLPTR, yyla);
 
 2660        while (1 < yystack_.size ())
 
 2662            yy_destroy_ (YY_NULLPTR, yystack_[0]);
 
 
 2682  D2Parser::yytnamerr_ (
const char *yystr)
 
 2687        char const *yyp = yystr;
 
 2694              goto do_not_strip_quotes;
 
 2698                goto do_not_strip_quotes;
 
 2710      do_not_strip_quotes: ;
 
 2719    return yytnamerr_ (yytname_[yysymbol]);
 
 
 2726    : yyparser_ (yyparser)
 
 
 2736    const int yyn = yypact_[+yyparser_.yystack_[0].state];
 
 2737    if (!yy_pact_value_is_default_ (yyn))
 
 2742        const int yyxbegin = yyn < 0 ? -yyn : 0;
 
 2744        const int yychecklim = yylast_ - yyn + 1;
 
 2746        for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
 
 2748              && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
 
 2752              else if (yycount == yyargn)
 
 2759    if (yyarg && yycount == 0 && 0 < yyargn)
 
 
 2770  D2Parser::yy_syntax_error_arguments_ (
const context& yyctx,
 
 2801          yyarg[0] = yyctx.
token ();
 
 2802        int yyn = yyctx.
expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
 
 2810  D2Parser::yysyntax_error_ (
const context& yyctx)
 const 
 2813    enum { YYARGS_MAX = 5 };
 
 2816    int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
 
 2818    char const* yyformat = YY_NULLPTR;
 
 2821#define YYCASE_(N, S)                         \ 
 2827        YYCASE_ (1, 
YY_(
"syntax error, unexpected %s"));
 
 2828        YYCASE_ (2, 
YY_(
"syntax error, unexpected %s, expecting %s"));
 
 2829        YYCASE_ (3, 
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
 
 2830        YYCASE_ (4, 
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
 
 2831        YYCASE_ (5, 
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
 
 2837    std::ptrdiff_t yyi = 0;
 
 2838    for (
char const* yyp = yyformat; *yyp; ++yyp)
 
 2839      if (yyp[0] == 
'%' && yyp[1] == 
's' && yyi < yycount)
 
 2850  const short D2Parser::yypact_ninf_ = -215;
 
 2852  const signed char D2Parser::yytable_ninf_ = -1;
 
 2855  D2Parser::yypact_[] =
 
 2857      99,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2858    -215,    33,     8,     0,    38,    42,    55,    73,   105,    96,
 
 2859     107,   125,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2860    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2861    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2862    -215,  -215,     8,    44,   129,     7,    47,   133,   141,   140,
 
 2863      24,   142,   -25,  -215,   153,   160,   197,   194,   200,  -215,
 
 2864      22,  -215,  -215,   201,   202,  -215,  -215,  -215,  -215,  -215,
 
 2865    -215,  -215,  -215,  -215,  -215,  -215,   203,  -215,    39,  -215,
 
 2866    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2867    -215,  -215,  -215,  -215,  -215,   204,  -215,  -215,  -215,  -215,
 
 2868    -215,  -215,    43,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2869     198,   206,  -215,  -215,  -215,  -215,  -215,  -215,  -215,    65,
 
 2870    -215,  -215,  -215,  -215,  -215,   207,   214,  -215,  -215,   216,
 
 2871    -215,  -215,  -215,  -215,  -215,    71,  -215,  -215,  -215,  -215,
 
 2872    -215,    58,  -215,  -215,  -215,  -215,   115,  -215,  -215,  -215,
 
 2873    -215,     8,     8,  -215,   132,   217,  -215,  -215,   218,   139,
 
 2874     144,   220,   221,   223,   224,   225,   226,   227,   228,   229,
 
 2875     230,   231,  -215,     7,  -215,   232,   158,   234,   235,   236,
 
 2876      47,  -215,    47,  -215,   133,   237,   238,   239,   141,  -215,
 
 2877     141,  -215,   140,   240,   166,   242,    24,  -215,    24,   142,
 
 2878    -215,   243,   244,   -34,  -215,  -215,  -215,   245,   246,   172,
 
 2879    -215,  -215,    76,   233,   247,   179,   248,   249,   253,   252,
 
 2880     255,   256,   257,  -215,   189,  -215,   190,   191,   192,  -215,
 
 2881     116,  -215,   193,   258,   195,  -215,   123,  -215,   196,  -215,
 
 2882     199,  -215,   130,  -215,   205,   247,  -215,     8,     7,  -215,
 
 2883    -215,  -215,  -215,  -215,  -215,  -215,  -215,   -15,   -15,   133,
 
 2884      18,   259,   265,   268,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2885     142,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,   174,
 
 2886    -215,  -215,   175,  -215,  -215,  -215,   176,   270,  -215,  -215,
 
 2887    -215,   260,  -215,  -215,  -215,  -215,   261,  -215,  -215,  -215,
 
 2888     177,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2889    -215,  -215,   272,   277,  -215,  -215,   275,   279,  -215,  -215,
 
 2890      78,  -215,    87,  -215,   280,   -15,  -215,  -215,  -215,   281,
 
 2891     282,   283,   173,   284,   285,   286,   287,   215,    18,  -215,
 
 2892      18,  -215,   259,   -25,  -215,   265,    35,   268,  -215,  -215,
 
 2893     293,  -215,   162,   241,   250,  -215,   292,   251,   254,   262,
 
 2894    -215,  -215,   178,  -215,   184,  -215,  -215,  -215,   298,  -215,
 
 2895    -215,  -215,  -215,   185,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2896     140,  -215,  -215,  -215,  -215,  -215,  -215,    63,  -215,  -215,
 
 2897    -215,  -215,  -215,   299,   301,   264,   303,    35,  -215,   302,
 
 2898    -215,  -215,  -215,  -215,  -215,  -215,  -215,   186,  -215,  -215,
 
 2899    -215,  -215,  -215,   266,   304,  -215,   267,  -215,  -215,   306,
 
 2900     307,   309,   310,    63,  -215,  -215,   308,  -215,   273,   269,
 
 2901     271,   312,  -215,  -215,    98,  -215,  -215,  -215,  -215,  -215,
 
 2902     311,    50,   308,  -215,  -215,   314,   318,  -215,  -215,   319,
 
 2903     320,   321,  -215,   187,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2904    -215,    80,  -215,   311,   322,   274,   278,   288,   323,    50,
 
 2905    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,   188,  -215,
 
 2906    -215,  -215,  -215,  -215,  -215,   276,  -215,  -215,  -215,   290,
 
 2907    -215,   326,   327,   329,   330,    80,  -215,  -215,  -215,   291,
 
 2908     294,   295,   296,  -215,  -215,  -215,  -215,  -215
 
 2912  D2Parser::yydefact_[] =
 
 2914       0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
 
 2915      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
 2916       0,     0,     1,    38,    30,    26,    25,    22,    23,    24,
 
 2917      29,     3,    27,    28,    46,     5,    52,     7,   160,     9,
 
 2918     151,    11,   108,    13,    99,    15,   132,    17,   125,    19,
 
 2919     280,    21,    40,    33,     0,     0,     0,   153,     0,   101,
 
 2920       0,     0,     0,    42,     0,    41,     0,     0,    34,    48,
 
 2921       0,    50,    72,     0,     0,    76,    80,    82,    84,    86,
 
 2922      88,   149,   182,   184,   271,   292,     0,    71,     0,    54,
 
 2923      57,    58,    59,    60,    61,    69,    70,    62,    63,    64,
 
 2924      65,    66,    67,    68,   175,     0,   178,   180,   173,   172,
 
 2925     170,   171,     0,   162,   165,   166,   167,   168,   169,   158,
 
 2926       0,   154,   155,   121,   123,   119,   118,   116,   117,     0,
 
 2927     110,   113,   114,   115,   106,     0,   102,   103,   146,     0,
 
 2928     144,   143,   141,   142,   140,     0,   134,   137,   138,   139,
 
 2929     130,     0,   127,   288,   290,   285,     0,   282,   286,   287,
 
 2930      39,    44,     0,    31,    37,     0,    51,    47,     0,     0,
 
 2931       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
 2932       0,     0,    45,    56,    53,     0,     0,     0,     0,     0,
 
 2933     164,   161,     0,   152,   157,     0,     0,     0,   112,   109,
 
 2934       0,   100,   105,     0,     0,     0,   136,   133,     0,   129,
 
 2935     126,     0,     0,   284,   281,    43,    35,     0,     0,     0,
 
 2936      74,    75,     0,     0,     0,     0,     0,     0,     0,     0,
 
 2937       0,     0,     0,    55,     0,   177,     0,     0,     0,   163,
 
 2938       0,   156,     0,     0,     0,   111,     0,   104,     0,   148,
 
 2939       0,   135,     0,   128,     0,     0,   283,     0,     0,    73,
 
 2940      78,    79,    77,    81,    32,    83,    85,    90,    90,   153,
 
 2941       0,   186,   273,     0,   176,   179,   181,   174,   159,   122,
 
 2942       0,   120,   107,   147,   145,   131,   289,   291,    36,     0,
 
 2943      97,    96,     0,    91,    92,    95,     0,     0,   208,   213,
 
 2944     215,     0,   225,   218,   220,   222,     0,   207,   205,   206,
 
 2945       0,   193,   196,   197,   198,   199,   201,   202,   203,   204,
 
 2946     200,   191,     0,   187,   188,   278,     0,   274,   275,   297,
 
 2947       0,   294,     0,    49,     0,    94,    87,    89,   150,     0,
 
 2948       0,     0,     0,     0,     0,     0,     0,     0,   195,   183,
 
 2949       0,   185,   190,     0,   272,   277,     0,   296,   293,   124,
 
 2950       0,    93,     0,     0,     0,   217,     0,     0,     0,     0,
 
 2951     224,   194,     0,   189,     0,   276,   309,   314,     0,   312,
 
 2952     308,   306,   307,     0,   299,   302,   304,   305,   303,   295,
 
 2953     101,   210,   211,   212,   209,   214,   216,     0,   219,   221,
 
 2954     223,   192,   279,     0,     0,     0,     0,   301,   298,     0,
 
 2955     237,   240,   242,   244,   236,   235,   234,     0,   227,   230,
 
 2956     231,   232,   233,     0,     0,   311,     0,   300,    98,     0,
 
 2957       0,     0,     0,   229,   226,   310,     0,   313,     0,     0,
 
 2958       0,     0,   228,   319,     0,   316,   239,   238,   241,   243,
 
 2959     246,     0,   318,   315,   251,     0,   247,   248,   329,     0,
 
 2960       0,     0,   334,     0,   321,   324,   325,   326,   327,   328,
 
 2961     317,     0,   245,   250,     0,     0,     0,     0,     0,   323,
 
 2962     320,   263,   265,   267,   269,   262,   260,   261,     0,   253,
 
 2963     256,   257,   258,   259,   249,     0,   331,   332,   333,     0,
 
 2964     322,     0,     0,     0,     0,   255,   252,   330,   335,     0,
 
 2965       0,     0,     0,   254,   264,   266,   268,   270
 
 2969  D2Parser::yypgoto_[] =
 
 2971    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2972    -215,  -215,   -41,  -215,  -214,  -215,    67,  -215,  -215,  -215,
 
 2973    -215,  -215,  -215,   -56,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2974    -215,    77,   154,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2975    -215,  -215,   -55,  -215,   -44,  -215,  -215,  -215,  -215,  -215,
 
 2976      68,  -215,     3,  -215,  -215,  -215,  -215,   -42,  -215,   137,
 
 2977    -215,  -215,  -215,   146,   152,  -215,  -215,   -51,  -215,  -215,
 
 2978    -215,  -215,  -215,    79,   147,  -215,  -215,  -215,   150,   155,
 
 2979    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,    91,
 
 2980    -215,   168,  -215,  -215,  -215,   183,   180,  -215,  -215,  -215,
 
 2981    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2982    -215,  -215,    12,  -215,    15,    23,  -215,  -215,  -215,  -215,
 
 2983    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2984    -215,  -215,  -215,  -215,   -67,  -215,  -215,  -215,  -215,  -215,
 
 2985    -215,  -215,  -215,  -215,  -215,  -215,   -97,  -215,  -215,  -126,
 
 2986    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
 
 2987    -215,  -215,    25,  -215,  -215,  -215,    28,   169,  -215,  -215,
 
 2988    -215,  -215,  -215,  -215,  -215,    26,  -215,  -215,   -23,  -215,
 
 2989    -215,  -215,  -215,  -215,  -215,  -215,  -215,   -66,  -215,  -215,
 
 2990     -94,  -215,  -215,  -215,  -215,  -215,  -215,  -215
 
 2994  D2Parser::yydefgoto_[] =
 
 2996       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
 
 2997      20,    21,    30,    31,    32,    53,   265,    67,    68,    33,
 
 2998      52,    64,    65,    87,    35,    54,    70,   165,    71,    37,
 
 2999      55,    88,    89,    90,   168,    91,    92,    93,   171,   262,
 
 3000      94,   172,    95,   173,    96,   174,    97,   175,    98,   176,
 
 3001     292,   293,   294,   295,   334,    45,    59,   135,   136,   137,
 
 3002     200,    43,    58,   129,   130,   131,   197,   132,   195,   133,
 
 3003     196,    49,    61,   151,   152,   208,    47,    60,   145,   146,
 
 3004     147,   205,   148,   203,   149,    99,   177,    41,    57,   120,
 
 3005     121,   122,   192,    39,    56,   112,   113,   114,   189,   115,
 
 3006     185,   116,   117,   187,   118,   188,   100,   178,   101,   179,
 
 3007     322,   323,   324,   350,   310,   311,   312,   339,   394,   313,
 
 3008     340,   314,   341,   315,   316,   344,   317,   345,   318,   346,
 
 3009     319,   320,   343,   417,   418,   419,   429,   447,   420,   430,
 
 3010     421,   431,   422,   432,   455,   456,   457,   471,   488,   489,
 
 3011     490,   501,   491,   502,   492,   503,   493,   504,   102,   180,
 
 3012     326,   327,   328,   353,    51,    62,   156,   157,   158,   211,
 
 3013     159,   212,   103,   181,   330,   331,   356,   383,   384,   385,
 
 3014     403,   386,   387,   406,   388,   404,   444,   445,   451,   463,
 
 3015     464,   465,   474,   466,   467,   468,   469,   478
 
 3019  D2Parser::yytable_[] =
 
 3021     109,   110,   126,   127,   141,   142,   155,    34,   290,   144,
 
 3022     264,    63,   111,    23,   128,    24,   143,    25,    72,    73,
 
 3023      74,    75,   153,   154,    76,   166,    77,    78,    79,    80,
 
 3024     167,   153,   154,    22,    81,   138,   139,    77,    78,    82,
 
 3025      83,   264,   183,    77,    78,    36,   190,   184,   123,    38,
 
 3026     140,   191,   298,    86,    77,    78,   299,   300,   301,   302,
 
 3027      40,   209,    84,    86,   210,    85,    77,    78,   198,   303,
 
 3028     304,   305,   306,   199,   206,   104,   105,   106,   107,   207,
 
 3029      42,   357,    77,    78,   358,    86,    26,    27,    28,    29,
 
 3030     209,   260,   261,   359,   376,   377,    86,   378,   379,    77,
 
 3031      78,   452,    86,    46,   453,   410,   108,   411,   412,   413,
 
 3032      44,   458,    48,    86,   459,   460,   461,   462,   213,   190,
 
 3033     215,   216,    66,   214,   278,    86,   198,   481,   482,   483,
 
 3034     484,   282,    50,   206,   109,   110,   109,   110,   285,    69,
 
 3035     119,    86,   126,   127,   126,   127,   111,   134,   111,   150,
 
 3036     141,   142,   141,   142,   128,   144,   128,   144,    86,   160,
 
 3037      77,    78,   143,   161,   143,   123,   124,     1,     2,     3,
 
 3038       4,     5,     6,     7,     8,     9,    10,   183,   335,   335,
 
 3039     348,   348,   333,   336,   337,   349,   401,   213,   407,   433,
 
 3040     479,   505,   402,   408,   434,   480,   506,   391,   392,   393,
 
 3041     125,   162,   163,   164,   193,   169,   170,   182,   186,   194,
 
 3042     217,   291,   291,   201,   307,   308,   288,   202,   220,    86,
 
 3043     204,   218,   219,   221,   222,   223,   309,   224,   225,   226,
 
 3044     227,   228,   229,   230,   231,   232,   234,   235,   236,   237,
 
 3045     238,   242,   243,   244,   248,   249,   250,   254,   255,   257,
 
 3046     259,   263,   365,   258,    24,   267,   268,   266,   269,   270,
 
 3047     271,   272,   273,   280,   342,   347,   321,   274,   275,   276,
 
 3048     277,   279,   325,   281,   283,   329,   338,   284,   351,   291,
 
 3049     352,   354,   355,   286,   360,   362,   363,   364,   366,   367,
 
 3050     368,   369,   307,   308,   307,   308,   370,   155,   390,   397,
 
 3051     380,   381,   405,   423,   309,   424,   309,   426,   428,   436,
 
 3052     438,   439,   382,   440,   441,   443,   446,   450,   454,   395,
 
 3053     472,   473,   287,   475,   476,   477,   495,   499,   396,   398,
 
 3054     509,   510,   399,   511,   512,   289,   296,   233,   361,   247,
 
 3055     400,   414,   415,   425,   435,   437,   246,   448,   409,   449,
 
 3056     245,   380,   381,   416,   507,   496,   253,   497,   252,   332,
 
 3057     297,   251,   241,   382,   373,   372,   442,   498,   508,   514,
 
 3058     239,   371,   515,   516,   517,   240,   494,   414,   415,   513,
 
 3059     375,   374,   256,   389,   427,   500,   470,     0,     0,   416,
 
 3060       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
 3061       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
 3062       0,     0,     0,     0,     0,   485,   486,     0,     0,     0,
 
 3063       0,     0,     0,     0,     0,     0,     0,   487,     0,     0,
 
 3064       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
 3065       0,     0,     0,     0,     0,     0,     0,     0,     0,   485,
 
 3066     486,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
 3071  D2Parser::yycheck_[] =
 
 3073      56,    56,    58,    58,    60,    60,    62,     7,    23,    60,
 
 3074     224,    52,    56,     5,    58,     7,    60,     9,    11,    12,
 
 3075      13,    14,    56,    57,    17,     3,    19,    20,    21,    22,
 
 3076       8,    56,    57,     0,    27,    11,    12,    19,    20,    32,
 
 3077      33,   255,     3,    19,    20,     7,     3,     8,    24,     7,
 
 3078      26,     8,    34,    78,    19,    20,    38,    39,    40,    41,
 
 3079       5,     3,    55,    78,     6,    58,    19,    20,     3,    51,
 
 3080      52,    53,    54,     8,     3,    28,    29,    30,    31,     8,
 
 3081       7,     3,    19,    20,     6,    78,    78,    79,    80,    81,
 
 3082       3,    15,    16,     6,    59,    60,    78,    62,    63,    19,
 
 3083      20,     3,    78,     7,     6,    42,    59,    44,    45,    46,
 
 3084       5,    61,     5,    78,    64,    65,    66,    67,     3,     3,
 
 3085     161,   162,    78,     8,     8,    78,     3,    47,    48,    49,
 
 3086      50,     8,     7,     3,   190,   190,   192,   192,     8,    10,
 
 3087       7,    78,   198,   198,   200,   200,   190,     7,   192,     7,
 
 3088     206,   206,   208,   208,   198,   206,   200,   208,    78,     6,
 
 3089      19,    20,   206,     3,   208,    24,    25,    68,    69,    70,
 
 3090      71,    72,    73,    74,    75,    76,    77,     3,     3,     3,
 
 3091       3,     3,     8,     8,     8,     8,     8,     3,     3,     3,
 
 3092       3,     3,     8,     8,     8,     8,     8,    35,    36,    37,
 
 3093      59,     4,     8,     3,     6,     4,     4,     4,     4,     3,
 
 3094      78,   267,   268,     6,   270,   270,   257,     3,    79,    78,
 
 3095       4,     4,     4,    79,     4,     4,   270,     4,     4,     4,
 
 3096       4,     4,     4,     4,     4,     4,     4,    79,     4,     4,
 
 3097       4,     4,     4,     4,     4,    79,     4,     4,     4,     4,
 
 3098      78,    18,    79,     7,     7,     7,     7,    78,     5,     7,
 
 3099       5,     5,     5,     5,     4,     4,     7,    78,    78,    78,
 
 3100      78,    78,     7,    78,    78,     7,     6,    78,     6,   335,
 
 3101       3,     6,     3,    78,     4,     4,     4,     4,     4,     4,
 
 3102       4,     4,   348,   348,   350,   350,    81,   353,     5,     7,
 
 3103     356,   356,     4,     4,   348,     4,   350,     4,     6,     5,
 
 3104       4,     4,   356,     4,     4,     7,    43,     5,     7,    78,
 
 3105       6,     3,   255,     4,     4,     4,     4,     4,    78,    78,
 
 3106       4,     4,    78,     4,     4,   258,   268,   183,   335,   202,
 
 3107      78,   397,   397,    79,    78,    78,   200,    78,   390,    78,
 
 3108     198,   407,   407,   397,    78,    81,   209,    79,   208,   280,
 
 3109     269,   206,   194,   407,   352,   350,   433,    79,    78,    78,
 
 3110     190,   348,    78,    78,    78,   192,   473,   433,   433,   505,
 
 3111     355,   353,   213,   357,   407,   479,   452,    -1,    -1,   433,
 
 3112      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
 3113      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
 3114      -1,    -1,    -1,    -1,    -1,   471,   471,    -1,    -1,    -1,
 
 3115      -1,    -1,    -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,
 
 3116      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
 3117      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   505,
 
 3118     505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
 3123  D2Parser::yystos_[] =
 
 3125       0,    68,    69,    70,    71,    72,    73,    74,    75,    76,
 
 3126      77,    83,    84,    85,    86,    87,    88,    89,    90,    91,
 
 3127      92,    93,     0,     5,     7,     9,    78,    79,    80,    81,
 
 3128      94,    95,    96,   101,     7,   106,     7,   111,     7,   175,
 
 3129       5,   169,     7,   143,     5,   137,     7,   158,     5,   153,
 
 3130       7,   246,   102,    97,   107,   112,   176,   170,   144,   138,
 
 3131     159,   154,   247,    94,   103,   104,    78,    99,   100,    10,
 
 3132     108,   110,    11,    12,    13,    14,    17,    19,    20,    21,
 
 3133      22,    27,    32,    33,    55,    58,    78,   105,   113,   114,
 
 3134     115,   117,   118,   119,   122,   124,   126,   128,   130,   167,
 
 3135     188,   190,   240,   254,    28,    29,    30,    31,    59,   105,
 
 3136     124,   126,   177,   178,   179,   181,   183,   184,   186,     7,
 
 3137     171,   172,   173,    24,    25,    59,   105,   124,   126,   145,
 
 3138     146,   147,   149,   151,     7,   139,   140,   141,    11,    12,
 
 3139      26,   105,   124,   126,   149,   160,   161,   162,   164,   166,
 
 3140       7,   155,   156,    56,    57,   105,   248,   249,   250,   252,
 
 3141       6,     3,     4,     8,     3,   109,     3,     8,   116,     4,
 
 3142       4,   120,   123,   125,   127,   129,   131,   168,   189,   191,
 
 3143     241,   255,     4,     3,     8,   182,     4,   185,   187,   180,
 
 3144       3,     8,   174,     6,     3,   150,   152,   148,     3,     8,
 
 3145     142,     6,     3,   165,     4,   163,     3,     8,   157,     3,
 
 3146       6,   251,   253,     3,     8,    94,    94,    78,     4,     4,
 
 3147      79,    79,     4,     4,     4,     4,     4,     4,     4,     4,
 
 3148       4,     4,     4,   114,     4,    79,     4,     4,     4,   178,
 
 3149     177,   173,     4,     4,     4,   146,   145,   141,     4,    79,
 
 3150       4,   161,   160,   156,     4,     4,   249,     4,     7,    78,
 
 3151      15,    16,   121,    18,    96,    98,    78,     7,     7,     5,
 
 3152       7,     5,     5,     5,    78,    78,    78,    78,     8,    78,
 
 3153       5,    78,     8,    78,    78,     8,    78,    98,    94,   113,
 
 3154      23,   105,   132,   133,   134,   135,   132,   171,    34,    38,
 
 3155      39,    40,    41,    51,    52,    53,    54,   105,   124,   126,
 
 3156     196,   197,   198,   201,   203,   205,   206,   208,   210,   212,
 
 3157     213,     7,   192,   193,   194,     7,   242,   243,   244,     7,
 
 3158     256,   257,   155,     8,   136,     3,     8,     8,     6,   199,
 
 3159     202,   204,     4,   214,   207,   209,   211,     4,     3,     8,
 
 3160     195,     6,     3,   245,     6,     3,   258,     3,     6,     6,
 
 3161       4,   134,     4,     4,     4,    79,     4,     4,     4,     4,
 
 3162      81,   197,   196,   194,   248,   244,    59,    60,    62,    63,
 
 3163     105,   124,   126,   259,   260,   261,   263,   264,   266,   257,
 
 3164       5,    35,    36,    37,   200,    78,    78,     7,    78,    78,
 
 3165      78,     8,     8,   262,   267,     4,   265,     3,     8,   139,
 
 3166      42,    44,    45,    46,   105,   124,   126,   215,   216,   217,
 
 3167     220,   222,   224,     4,     4,    79,     4,   260,     6,   218,
 
 3168     221,   223,   225,     3,     8,    78,     5,    78,     4,     4,
 
 3169       4,     4,   216,     7,   268,   269,    43,   219,    78,    78,
 
 3170       5,   270,     3,     6,     7,   226,   227,   228,    61,    64,
 
 3171      65,    66,    67,   271,   272,   273,   275,   276,   277,   278,
 
 3172     269,   229,     6,     3,   274,     4,     4,     4,   279,     3,
 
 3173       8,    47,    48,    49,    50,   105,   124,   126,   230,   231,
 
 3174     232,   234,   236,   238,   228,     4,    81,    79,    79,     4,
 
 3175     272,   233,   235,   237,   239,     3,     8,    78,    78,     4,
 
 3176       4,     4,     4,   231,    78,    78,    78,    78
 
 3182       0,    82,    84,    83,    85,    83,    86,    83,    87,    83,
 
 3183      88,    83,    89,    83,    90,    83,    91,    83,    92,    83,
 
 3184      93,    83,    94,    94,    94,    94,    94,    94,    94,    95,
 
 3185      97,    96,    98,    99,    99,   100,   100,   100,   102,   101,
 
 3186     103,   103,   104,   104,   104,   105,   107,   106,   109,   108,
 
 3187     108,   110,   112,   111,   113,   113,   113,   114,   114,   114,
 
 3188     114,   114,   114,   114,   114,   114,   114,   114,   114,   114,
 
 3189     114,   114,   116,   115,   117,   118,   120,   119,   121,   121,
 
 3190     123,   122,   125,   124,   127,   126,   129,   128,   131,   130,
 
 3191     132,   132,   133,   133,   133,   134,   134,   136,   135,   138,
 
 3192     137,   139,   139,   140,   140,   140,   142,   141,   144,   143,
 
 3193     145,   145,   145,   146,   146,   146,   146,   146,   146,   148,
 
 3194     147,   150,   149,   152,   151,   154,   153,   155,   155,   155,
 
 3195     157,   156,   159,   158,   160,   160,   160,   161,   161,   161,
 
 3196     161,   161,   161,   161,   163,   162,   165,   164,   166,   168,
 
 3197     167,   170,   169,   171,   171,   172,   172,   172,   174,   173,
 
 3198     176,   175,   177,   177,   177,   178,   178,   178,   178,   178,
 
 3199     178,   178,   178,   180,   179,   182,   181,   183,   185,   184,
 
 3200     187,   186,   189,   188,   191,   190,   192,   192,   193,   193,
 
 3201     193,   195,   194,   196,   196,   196,   197,   197,   197,   197,
 
 3202     197,   197,   197,   197,   197,   197,   197,   197,   199,   198,
 
 3203     200,   200,   200,   202,   201,   204,   203,   205,   207,   206,
 
 3204     209,   208,   211,   210,   212,   214,   213,   215,   215,   215,
 
 3205     216,   216,   216,   216,   216,   216,   216,   218,   217,   219,
 
 3206     221,   220,   223,   222,   225,   224,   226,   226,   227,   227,
 
 3207     227,   229,   228,   230,   230,   230,   231,   231,   231,   231,
 
 3208     231,   231,   231,   233,   232,   235,   234,   237,   236,   239,
 
 3209     238,   241,   240,   242,   242,   243,   243,   243,   245,   244,
 
 3210     247,   246,   248,   248,   248,   248,   249,   249,   251,   250,
 
 3211     253,   252,   255,   254,   256,   256,   256,   258,   257,   259,
 
 3212     259,   259,   260,   260,   260,   260,   260,   260,   260,   262,
 
 3213     261,   263,   265,   264,   267,   266,   268,   268,   268,   270,
 
 3214     269,   271,   271,   271,   272,   272,   272,   272,   272,   274,
 
 3215     273,   275,   276,   277,   279,   278
 
 3221       0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
 
 3222       0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
 
 3223       0,     3,     1,     1,     1,     1,     1,     1,     1,     1,
 
 3224       0,     4,     1,     0,     1,     3,     5,     2,     0,     4,
 
 3225       0,     1,     1,     3,     2,     2,     0,     4,     0,     6,
 
 3226       1,     2,     0,     4,     1,     3,     2,     1,     1,     1,
 
 3227       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
 3228       1,     1,     0,     4,     3,     3,     0,     4,     1,     1,
 
 3229       0,     4,     0,     4,     0,     4,     0,     6,     0,     6,
 
 3230       0,     1,     1,     3,     2,     1,     1,     0,     6,     0,
 
 3231       4,     0,     1,     1,     3,     2,     0,     4,     0,     4,
 
 3232       1,     3,     2,     1,     1,     1,     1,     1,     1,     0,
 
 3233       4,     0,     4,     0,     6,     0,     4,     1,     3,     2,
 
 3234       0,     4,     0,     4,     1,     3,     2,     1,     1,     1,
 
 3235       1,     1,     1,     1,     0,     4,     0,     4,     3,     0,
 
 3236       6,     0,     4,     0,     1,     1,     3,     2,     0,     4,
 
 3237       0,     4,     1,     3,     2,     1,     1,     1,     1,     1,
 
 3238       1,     1,     1,     0,     4,     0,     4,     3,     0,     4,
 
 3239       0,     4,     0,     6,     0,     6,     0,     1,     1,     3,
 
 3240       2,     0,     4,     1,     3,     2,     1,     1,     1,     1,
 
 3241       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
 
 3242       1,     1,     1,     0,     4,     0,     4,     3,     0,     4,
 
 3243       0,     4,     0,     4,     3,     0,     6,     1,     3,     2,
 
 3244       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
 
 3245       0,     4,     0,     4,     0,     6,     0,     1,     1,     3,
 
 3246       2,     0,     4,     1,     3,     2,     1,     1,     1,     1,
 
 3247       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
 
 3248       4,     0,     6,     0,     1,     1,     3,     2,     0,     4,
 
 3249       0,     4,     1,     3,     2,     1,     1,     1,     0,     4,
 
 3250       0,     4,     0,     6,     1,     3,     2,     0,     4,     1,
 
 3251       3,     2,     1,     1,     1,     1,     1,     1,     1,     0,
 
 3252       4,     3,     0,     4,     0,     6,     1,     3,     2,     0,
 
 3253       4,     1,     3,     2,     1,     1,     1,     1,     1,     0,
 
 3258#if D2_PARSER_DEBUG || 1 
 3262  const D2Parser::yytname_[] =
 
 3264  "\"end of file\"", 
"error", 
"\"invalid token\"", 
"\",\"", 
"\":\"",
 
 3265  "\"[\"", 
"\"]\"", 
"\"{\"", 
"\"}\"", 
"\"null\"", 
"\"DhcpDdns\"",
 
 3266  "\"ip-address\"", 
"\"port\"", 
"\"dns-server-timeout\"",
 
 3267  "\"ncr-protocol\"", 
"\"UDP\"", 
"\"TCP\"", 
"\"ncr-format\"", 
"\"JSON\"",
 
 3268  "\"user-context\"", 
"\"comment\"", 
"\"forward-ddns\"",
 
 3269  "\"reverse-ddns\"", 
"\"ddns-domains\"", 
"\"key-name\"",
 
 3270  "\"dns-servers\"", 
"\"hostname\"", 
"\"tsig-keys\"", 
"\"algorithm\"",
 
 3271  "\"digest-bits\"", 
"\"secret\"", 
"\"secret-file\"", 
"\"control-socket\"",
 
 3272  "\"control-sockets\"", 
"\"socket-type\"", 
"\"unix\"", 
"\"http\"",
 
 3273  "\"https\"", 
"\"socket-name\"", 
"\"socket-address\"", 
"\"socket-port\"",
 
 3274  "\"authentication\"", 
"\"type\"", 
"\"basic\"", 
"\"realm\"",
 
 3275  "\"directory\"", 
"\"clients\"", 
"\"user\"", 
"\"user-file\"",
 
 3276  "\"password\"", 
"\"password-file\"", 
"\"trust-anchor\"", 
"\"cert-file\"",
 
 3277  "\"key-file\"", 
"\"cert-required\"", 
"\"hooks-libraries\"",
 
 3278  "\"library\"", 
"\"parameters\"", 
"\"loggers\"", 
"\"name\"",
 
 3279  "\"output-options\"", 
"\"output\"", 
"\"debuglevel\"", 
"\"severity\"",
 
 3280  "\"flush\"", 
"\"maxsize\"", 
"\"maxver\"", 
"\"pattern\"", 
"TOPLEVEL_JSON",
 
 3281  "TOPLEVEL_DHCPDDNS", 
"SUB_DHCPDDNS", 
"SUB_TSIG_KEY", 
"SUB_TSIG_KEYS",
 
 3282  "SUB_DDNS_DOMAIN", 
"SUB_DDNS_DOMAINS", 
"SUB_DNS_SERVER",
 
 3283  "SUB_DNS_SERVERS", 
"SUB_HOOKS_LIBRARY", 
"\"constant string\"",
 
 3284  "\"integer\"", 
"\"floating point\"", 
"\"boolean\"", 
"$accept", 
"start",
 
 3285  "$@1", 
"$@2", 
"$@3", 
"$@4", 
"$@5", 
"$@6", 
"$@7", 
"$@8", 
"$@9", 
"$@10",
 
 3286  "value", 
"sub_json", 
"map2", 
"$@11", 
"map_value", 
"map_content",
 
 3287  "not_empty_map", 
"list_generic", 
"$@12", 
"list_content",
 
 3288  "not_empty_list", 
"unknown_map_entry", 
"syntax_map", 
"$@13",
 
 3289  "global_object", 
"$@14", 
"global_object_comma", 
"sub_dhcpddns", 
"$@15",
 
 3290  "dhcpddns_params", 
"dhcpddns_param", 
"ip_address", 
"$@16", 
"port",
 
 3291  "dns_server_timeout", 
"ncr_protocol", 
"$@17", 
"ncr_protocol_value",
 
 3292  "ncr_format", 
"$@18", 
"user_context", 
"$@19", 
"comment", 
"$@20",
 
 3293  "forward_ddns", 
"$@21", 
"reverse_ddns", 
"$@22", 
"ddns_mgr_params",
 
 3294  "not_empty_ddns_mgr_params", 
"ddns_mgr_param", 
"ddns_domains", 
"$@23",
 
 3295  "sub_ddns_domains", 
"$@24", 
"ddns_domain_list",
 
 3296  "not_empty_ddns_domain_list", 
"ddns_domain", 
"$@25", 
"sub_ddns_domain",
 
 3297  "$@26", 
"ddns_domain_params", 
"ddns_domain_param", 
"ddns_domain_name",
 
 3298  "$@27", 
"ddns_key_name", 
"$@28", 
"dns_servers", 
"$@29",
 
 3299  "sub_dns_servers", 
"$@30", 
"dns_server_list", 
"dns_server", 
"$@31",
 
 3300  "sub_dns_server", 
"$@32", 
"dns_server_params", 
"dns_server_param",
 
 3301  "dns_server_hostname", 
"$@33", 
"dns_server_ip_address", 
"$@34",
 
 3302  "dns_server_port", 
"tsig_keys", 
"$@35", 
"sub_tsig_keys", 
"$@36",
 
 3303  "tsig_keys_list", 
"not_empty_tsig_keys_list", 
"tsig_key", 
"$@37",
 
 3304  "sub_tsig_key", 
"$@38", 
"tsig_key_params", 
"tsig_key_param",
 
 3305  "tsig_key_name", 
"$@39", 
"tsig_key_algorithm", 
"$@40",
 
 3306  "tsig_key_digest_bits", 
"tsig_key_secret", 
"$@41",
 
 3307  "tsig_key_secret_file", 
"$@42", 
"control_socket", 
"$@43",
 
 3308  "control_sockets", 
"$@44", 
"control_socket_list",
 
 3309  "not_empty_control_socket_list", 
"control_socket_entry", 
"$@45",
 
 3310  "control_socket_params", 
"control_socket_param", 
"control_socket_type",
 
 3311  "$@46", 
"control_socket_type_value", 
"control_socket_name", 
"$@47",
 
 3312  "control_socket_address", 
"$@48", 
"control_socket_port", 
"trust_anchor",
 
 3313  "$@49", 
"cert_file", 
"$@50", 
"key_file", 
"$@51", 
"cert_required",
 
 3314  "authentication", 
"$@52", 
"auth_params", 
"auth_param", 
"auth_type",
 
 3315  "$@53", 
"auth_type_value", 
"realm", 
"$@54", 
"directory", 
"$@55",
 
 3316  "clients", 
"$@56", 
"clients_list", 
"not_empty_clients_list",
 
 3317  "basic_auth", 
"$@57", 
"clients_params", 
"clients_param", 
"user", 
"$@58",
 
 3318  "user_file", 
"$@59", 
"password", 
"$@60", 
"password_file", 
"$@61",
 
 3319  "hooks_libraries", 
"$@62", 
"hooks_libraries_list",
 
 3320  "not_empty_hooks_libraries_list", 
"hooks_library", 
"$@63",
 
 3321  "sub_hooks_library", 
"$@64", 
"hooks_params", 
"hooks_param", 
"library",
 
 3322  "$@65", 
"parameters", 
"$@66", 
"loggers", 
"$@67", 
"loggers_entries",
 
 3323  "logger_entry", 
"$@68", 
"logger_params", 
"logger_param", 
"name", 
"$@69",
 
 3324  "debuglevel", 
"severity", 
"$@70", 
"output_options_list", 
"$@71",
 
 3325  "output_options_list_content", 
"output_entry", 
"$@72",
 
 3326  "output_params_list", 
"output_params", 
"output", 
"$@73", 
"flush",
 
 3327  "maxsize", 
"maxver", 
"pattern", 
"$@74", YY_NULLPTR
 
 3334  D2Parser::yyrline_[] =
 
 3336       0,   154,   154,   154,   155,   155,   156,   156,   157,   157,
 
 3337     158,   158,   159,   159,   160,   160,   161,   161,   162,   162,
 
 3338     163,   163,   171,   172,   173,   174,   175,   176,   177,   180,
 
 3339     185,   185,   196,   199,   200,   203,   208,   214,   219,   219,
 
 3340     226,   227,   230,   234,   238,   248,   257,   257,   270,   270,
 
 3341     280,   283,   287,   287,   295,   296,   297,   303,   304,   305,
 
 3342     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
 
 3343     316,   317,   320,   320,   329,   338,   348,   348,   357,   358,
 
 3344     361,   361,   370,   370,   395,   395,   422,   422,   433,   433,
 
 3345     444,   445,   448,   449,   450,   455,   456,   461,   461,   472,
 
 3346     472,   479,   480,   483,   484,   485,   490,   490,   498,   498,
 
 3347     505,   506,   507,   512,   513,   514,   515,   516,   517,   521,
 
 3348     521,   534,   534,   547,   547,   558,   558,   565,   566,   567,
 
 3349     572,   572,   580,   580,   587,   588,   589,   594,   595,   596,
 
 3350     597,   598,   599,   600,   603,   603,   616,   616,   625,   640,
 
 3351     640,   651,   651,   658,   659,   662,   663,   664,   669,   669,
 
 3352     677,   677,   686,   687,   688,   693,   694,   695,   696,   697,
 
 3353     698,   699,   700,   703,   703,   716,   716,   728,   737,   737,
 
 3354     750,   750,   768,   768,   780,   780,   792,   793,   796,   797,
 
 3355     798,   803,   803,   811,   812,   813,   818,   819,   820,   821,
 
 3356     822,   823,   824,   825,   826,   827,   828,   829,   832,   832,
 
 3357     841,   842,   843,   846,   846,   856,   856,   866,   872,   872,
 
 3358     881,   881,   890,   890,   899,   907,   907,   920,   921,   922,
 
 3359     927,   928,   929,   930,   931,   932,   933,   936,   936,   944,
 
 3360     947,   947,   956,   956,   965,   965,   976,   977,   980,   981,
 
 3361     982,   987,   987,   995,   996,   997,  1002,  1003,  1004,  1005,
 
 3362    1006,  1007,  1008,  1011,  1011,  1020,  1020,  1029,  1029,  1038,
 
 3363    1038,  1049,  1049,  1060,  1061,  1064,  1065,  1066,  1071,  1071,
 
 3364    1081,  1081,  1091,  1092,  1093,  1096,  1099,  1100,  1103,  1103,
 
 3365    1112,  1112,  1122,  1122,  1135,  1136,  1137,  1143,  1143,  1151,
 
 3366    1152,  1153,  1158,  1159,  1160,  1161,  1162,  1163,  1164,  1167,
 
 3367    1167,  1176,  1182,  1182,  1191,  1191,  1202,  1203,  1204,  1209,
 
 3368    1209,  1217,  1218,  1219,  1224,  1225,  1226,  1227,  1228,  1231,
 
 3369    1231,  1240,  1246,  1252,  1258,  1258
 
 3373  D2Parser::yy_stack_print_ ()
 const 
 3375    *yycdebug_ << 
"Stack now";
 
 3376    for (stack_type::const_iterator
 
 3377           i = yystack_.begin (),
 
 3378           i_end = yystack_.end ();
 
 3380      *yycdebug_ << 
' ' << int (i->state);
 
 3385  D2Parser::yy_reduce_print_ (
int yyrule)
 const 
 3387    int yylno = yyrline_[yyrule];
 
 3388    int yynrhs = yyr2_[yyrule];
 
 3390    *yycdebug_ << 
"Reducing stack by rule " << yyrule - 1
 
 3391               << 
" (line " << yylno << 
"):\n";
 
 3393    for (
int yyi = 0; yyi < yynrhs; yyi++)
 
 3395                       yystack_[(yynrhs) - (yyi + 1)]);
 
 3400#line 14 "d2_parser.yy" 
 3402#line 3403 "d2_parser.cc" 
 3404#line 1267 "d2_parser.yy" 
 3409                              const std::string& what)
 
 3411    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.
@ S_control_socket_type_value
"External" symbols: returned by the scanner.
Syntax errors thrown from user actions.
~syntax_error() YY_NOEXCEPT YY_NOTHROW