]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1197] regen bison
authorFrancis Dupont <fdupont@isc.org>
Wed, 2 Sep 2020 15:33:09 +0000 (15:33 +0000)
committerFrancis Dupont <fdupont@isc.org>
Wed, 2 Sep 2020 15:33:09 +0000 (15:33 +0000)
30 files changed:
src/bin/agent/agent_parser.cc
src/bin/agent/agent_parser.h
src/bin/agent/location.hh
src/bin/agent/position.hh
src/bin/agent/stack.hh
src/bin/d2/d2_parser.cc
src/bin/d2/d2_parser.h
src/bin/d2/location.hh
src/bin/d2/position.hh
src/bin/d2/stack.hh
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh
src/bin/netconf/location.hh
src/bin/netconf/netconf_parser.cc
src/bin/netconf/netconf_parser.h
src/bin/netconf/position.hh
src/bin/netconf/stack.hh
src/lib/eval/location.hh
src/lib/eval/parser.cc
src/lib/eval/parser.h
src/lib/eval/position.hh
src/lib/eval/stack.hh

index fb76d47b03c9cabc17debedad43b2faafcbf8600..9bd835ec6e25f499d7aff8c4380d12a5f87aa870 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -209,25 +209,25 @@ namespace isc { namespace agent {
   {
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace agent {
   {
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace agent {
     state = that.state;
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace agent {
     state = that.state;
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -377,43 +377,43 @@ namespace isc { namespace agent {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "agent_parser.cc"
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "agent_parser.cc"
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "agent_parser.cc"
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "agent_parser.cc"
         break;
 
-      case 50: // value
+      case symbol_kind::S_value: // value
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "agent_parser.cc"
         break;
 
-      case 53: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "agent_parser.cc"
         break;
 
-      case 104: // socket_type_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "agent_parser.cc"
@@ -646,25 +646,25 @@ namespace isc { namespace agent {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -688,25 +688,25 @@ namespace isc { namespace agent {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 110 "agent_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 695 "agent_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 111 "agent_parser.yy"
                        { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "agent_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 112 "agent_parser.yy"
                        { ctx.ctx_ = ctx.AGENT; }
 #line 707 "agent_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 120 "agent_parser.yy"
                           {
     // Parse the Control-agent map
@@ -716,7 +716,7 @@ namespace isc { namespace agent {
 #line 717 "agent_parser.cc"
     break;
 
-  case 9:
+  case 9: // sub_agent: "{" $@4 global_params "}"
 #line 124 "agent_parser.yy"
                                {
     // parsing completed
@@ -724,7 +724,7 @@ namespace isc { namespace agent {
 #line 725 "agent_parser.cc"
     break;
 
-  case 10:
+  case 10: // json: value
 #line 131 "agent_parser.yy"
             {
     // Push back the JSON value on the stack
@@ -733,49 +733,49 @@ namespace isc { namespace agent {
 #line 734 "agent_parser.cc"
     break;
 
-  case 11:
+  case 11: // value: "integer"
 #line 137 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 740 "agent_parser.cc"
     break;
 
-  case 12:
+  case 12: // value: "floating point"
 #line 138 "agent_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 746 "agent_parser.cc"
     break;
 
-  case 13:
+  case 13: // value: "boolean"
 #line 139 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "agent_parser.cc"
     break;
 
-  case 14:
+  case 14: // value: "constant string"
 #line 140 "agent_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "agent_parser.cc"
     break;
 
-  case 15:
+  case 15: // value: "null"
 #line 141 "agent_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 764 "agent_parser.cc"
     break;
 
-  case 16:
+  case 16: // value: map
 #line 142 "agent_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 770 "agent_parser.cc"
     break;
 
-  case 17:
+  case 17: // value: list_generic
 #line 143 "agent_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "agent_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@5: %empty
 #line 147 "agent_parser.yy"
                     {
     // This code is executed when we're about to start parsing
@@ -786,7 +786,7 @@ namespace isc { namespace agent {
 #line 787 "agent_parser.cc"
     break;
 
-  case 19:
+  case 19: // map: "{" $@5 map_content "}"
 #line 152 "agent_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -796,13 +796,13 @@ namespace isc { namespace agent {
 #line 797 "agent_parser.cc"
     break;
 
-  case 20:
+  case 20: // map_value: map
 #line 158 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 803 "agent_parser.cc"
     break;
 
-  case 23:
+  case 23: // not_empty_map: "constant string" ":" value
 #line 172 "agent_parser.yy"
                                   {
                   // map containing a single entry
@@ -811,7 +811,7 @@ namespace isc { namespace agent {
 #line 812 "agent_parser.cc"
     break;
 
-  case 24:
+  case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 176 "agent_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -821,7 +821,7 @@ namespace isc { namespace agent {
 #line 822 "agent_parser.cc"
     break;
 
-  case 25:
+  case 25: // $@6: %empty
 #line 183 "agent_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -830,14 +830,14 @@ namespace isc { namespace agent {
 #line 831 "agent_parser.cc"
     break;
 
-  case 26:
+  case 26: // list_generic: "[" $@6 list_content "]"
 #line 186 "agent_parser.yy"
                                {
 }
 #line 838 "agent_parser.cc"
     break;
 
-  case 29:
+  case 29: // not_empty_list: value
 #line 193 "agent_parser.yy"
                       {
                   // List consisting of a single element.
@@ -846,7 +846,7 @@ namespace isc { namespace agent {
 #line 847 "agent_parser.cc"
     break;
 
-  case 30:
+  case 30: // not_empty_list: not_empty_list "," value
 #line 197 "agent_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -855,7 +855,7 @@ namespace isc { namespace agent {
 #line 856 "agent_parser.cc"
     break;
 
-  case 31:
+  case 31: // unknown_map_entry: "constant string" ":"
 #line 210 "agent_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -866,7 +866,7 @@ namespace isc { namespace agent {
 #line 867 "agent_parser.cc"
     break;
 
-  case 32:
+  case 32: // $@7: %empty
 #line 218 "agent_parser.yy"
                                  {
     // This code is executed when we're about to start parsing
@@ -877,7 +877,7 @@ namespace isc { namespace agent {
 #line 878 "agent_parser.cc"
     break;
 
-  case 33:
+  case 33: // agent_syntax_map: "{" $@7 global_objects "}"
 #line 223 "agent_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -887,7 +887,7 @@ namespace isc { namespace agent {
 #line 888 "agent_parser.cc"
     break;
 
-  case 36:
+  case 36: // $@8: %empty
 #line 238 "agent_parser.yy"
                             {
 
@@ -903,7 +903,7 @@ namespace isc { namespace agent {
 #line 904 "agent_parser.cc"
     break;
 
-  case 37:
+  case 37: // agent_object: "Control-agent" $@8 ":" "{" global_params "}"
 #line 248 "agent_parser.yy"
                                                     {
     // Ok, we're done with parsing control-agent. Let's take the map
@@ -914,7 +914,7 @@ namespace isc { namespace agent {
 #line 915 "agent_parser.cc"
     break;
 
-  case 48:
+  case 48: // $@9: %empty
 #line 271 "agent_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -922,7 +922,7 @@ namespace isc { namespace agent {
 #line 923 "agent_parser.cc"
     break;
 
-  case 49:
+  case 49: // http_host: "http-host" $@9 ":" "constant string"
 #line 273 "agent_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -932,7 +932,7 @@ namespace isc { namespace agent {
 #line 933 "agent_parser.cc"
     break;
 
-  case 50:
+  case 50: // http_port: "http-port" ":" "integer"
 #line 279 "agent_parser.yy"
                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -941,7 +941,7 @@ namespace isc { namespace agent {
 #line 942 "agent_parser.cc"
     break;
 
-  case 51:
+  case 51: // $@10: %empty
 #line 284 "agent_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -949,7 +949,7 @@ namespace isc { namespace agent {
 #line 950 "agent_parser.cc"
     break;
 
-  case 52:
+  case 52: // user_context: "user-context" $@10 ":" map_value
 #line 286 "agent_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -976,7 +976,7 @@ namespace isc { namespace agent {
 #line 977 "agent_parser.cc"
     break;
 
-  case 53:
+  case 53: // $@11: %empty
 #line 309 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -984,7 +984,7 @@ namespace isc { namespace agent {
 #line 985 "agent_parser.cc"
     break;
 
-  case 54:
+  case 54: // comment: "comment" $@11 ":" "constant string"
 #line 311 "agent_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -1013,7 +1013,7 @@ namespace isc { namespace agent {
 #line 1014 "agent_parser.cc"
     break;
 
-  case 55:
+  case 55: // $@12: %empty
 #line 337 "agent_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1024,7 +1024,7 @@ namespace isc { namespace agent {
 #line 1025 "agent_parser.cc"
     break;
 
-  case 56:
+  case 56: // hooks_libraries: "hooks-libraries" $@12 ":" "[" hooks_libraries_list "]"
 #line 342 "agent_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -1033,7 +1033,7 @@ namespace isc { namespace agent {
 #line 1034 "agent_parser.cc"
     break;
 
-  case 61:
+  case 61: // $@13: %empty
 #line 355 "agent_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1043,7 +1043,7 @@ namespace isc { namespace agent {
 #line 1044 "agent_parser.cc"
     break;
 
-  case 62:
+  case 62: // hooks_library: "{" $@13 hooks_params "}"
 #line 359 "agent_parser.yy"
                               {
     ctx.stack_.pop_back();
@@ -1051,7 +1051,7 @@ namespace isc { namespace agent {
 #line 1052 "agent_parser.cc"
     break;
 
-  case 68:
+  case 68: // $@14: %empty
 #line 372 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1059,7 +1059,7 @@ namespace isc { namespace agent {
 #line 1060 "agent_parser.cc"
     break;
 
-  case 69:
+  case 69: // library: "library" $@14 ":" "constant string"
 #line 374 "agent_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1069,7 +1069,7 @@ namespace isc { namespace agent {
 #line 1070 "agent_parser.cc"
     break;
 
-  case 70:
+  case 70: // $@15: %empty
 #line 380 "agent_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1077,7 +1077,7 @@ namespace isc { namespace agent {
 #line 1078 "agent_parser.cc"
     break;
 
-  case 71:
+  case 71: // parameters: "parameters" $@15 ":" map_value
 #line 382 "agent_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
@@ -1086,7 +1086,7 @@ namespace isc { namespace agent {
 #line 1087 "agent_parser.cc"
     break;
 
-  case 72:
+  case 72: // $@16: %empty
 #line 390 "agent_parser.yy"
                                                       {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
@@ -1097,7 +1097,7 @@ namespace isc { namespace agent {
 #line 1098 "agent_parser.cc"
     break;
 
-  case 73:
+  case 73: // control_sockets: "control-sockets" ":" "{" $@16 control_sockets_params "}"
 #line 395 "agent_parser.yy"
                                         {
     ctx.stack_.pop_back();
@@ -1106,7 +1106,7 @@ namespace isc { namespace agent {
 #line 1107 "agent_parser.cc"
     break;
 
-  case 80:
+  case 80: // $@17: %empty
 #line 416 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1117,7 +1117,7 @@ namespace isc { namespace agent {
 #line 1118 "agent_parser.cc"
     break;
 
-  case 81:
+  case 81: // dhcp4_server_socket: "dhcp4" $@17 ":" "{" control_socket_params "}"
 #line 421 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1126,7 +1126,7 @@ namespace isc { namespace agent {
 #line 1127 "agent_parser.cc"
     break;
 
-  case 82:
+  case 82: // $@18: %empty
 #line 427 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1137,7 +1137,7 @@ namespace isc { namespace agent {
 #line 1138 "agent_parser.cc"
     break;
 
-  case 83:
+  case 83: // dhcp6_server_socket: "dhcp6" $@18 ":" "{" control_socket_params "}"
 #line 432 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1146,7 +1146,7 @@ namespace isc { namespace agent {
 #line 1147 "agent_parser.cc"
     break;
 
-  case 84:
+  case 84: // $@19: %empty
 #line 438 "agent_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1157,7 +1157,7 @@ namespace isc { namespace agent {
 #line 1158 "agent_parser.cc"
     break;
 
-  case 85:
+  case 85: // d2_server_socket: "d2" $@19 ":" "{" control_socket_params "}"
 #line 443 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1166,7 +1166,7 @@ namespace isc { namespace agent {
 #line 1167 "agent_parser.cc"
     break;
 
-  case 93:
+  case 93: // $@20: %empty
 #line 462 "agent_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1174,7 +1174,7 @@ namespace isc { namespace agent {
 #line 1175 "agent_parser.cc"
     break;
 
-  case 94:
+  case 94: // socket_name: "socket-name" $@20 ":" "constant string"
 #line 464 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1184,7 +1184,7 @@ namespace isc { namespace agent {
 #line 1185 "agent_parser.cc"
     break;
 
-  case 95:
+  case 95: // $@21: %empty
 #line 471 "agent_parser.yy"
                          {
     ctx.enter(ctx.SOCKET_TYPE);
@@ -1192,7 +1192,7 @@ namespace isc { namespace agent {
 #line 1193 "agent_parser.cc"
     break;
 
-  case 96:
+  case 96: // socket_type: "socket-type" $@21 ":" socket_type_value
 #line 473 "agent_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
@@ -1201,13 +1201,13 @@ namespace isc { namespace agent {
 #line 1202 "agent_parser.cc"
     break;
 
-  case 97:
+  case 97: // socket_type_value: "unix"
 #line 479 "agent_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 1208 "agent_parser.cc"
     break;
 
-  case 98:
+  case 98: // $@22: %empty
 #line 486 "agent_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1218,7 +1218,7 @@ namespace isc { namespace agent {
 #line 1219 "agent_parser.cc"
     break;
 
-  case 99:
+  case 99: // loggers: "loggers" $@22 ":" "[" loggers_entries "]"
 #line 491 "agent_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1227,7 +1227,7 @@ namespace isc { namespace agent {
 #line 1228 "agent_parser.cc"
     break;
 
-  case 102:
+  case 102: // $@23: %empty
 #line 503 "agent_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1237,7 +1237,7 @@ namespace isc { namespace agent {
 #line 1238 "agent_parser.cc"
     break;
 
-  case 103:
+  case 103: // logger_entry: "{" $@23 logger_params "}"
 #line 507 "agent_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -1245,7 +1245,7 @@ namespace isc { namespace agent {
 #line 1246 "agent_parser.cc"
     break;
 
-  case 113:
+  case 113: // $@24: %empty
 #line 524 "agent_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1253,7 +1253,7 @@ namespace isc { namespace agent {
 #line 1254 "agent_parser.cc"
     break;
 
-  case 114:
+  case 114: // name: "name" $@24 ":" "constant string"
 #line 526 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1263,7 +1263,7 @@ namespace isc { namespace agent {
 #line 1264 "agent_parser.cc"
     break;
 
-  case 115:
+  case 115: // debuglevel: "debuglevel" ":" "integer"
 #line 532 "agent_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1272,7 +1272,7 @@ namespace isc { namespace agent {
 #line 1273 "agent_parser.cc"
     break;
 
-  case 116:
+  case 116: // $@25: %empty
 #line 537 "agent_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1280,7 +1280,7 @@ namespace isc { namespace agent {
 #line 1281 "agent_parser.cc"
     break;
 
-  case 117:
+  case 117: // severity: "severity" $@25 ":" "constant string"
 #line 539 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1290,7 +1290,7 @@ namespace isc { namespace agent {
 #line 1291 "agent_parser.cc"
     break;
 
-  case 118:
+  case 118: // $@26: %empty
 #line 545 "agent_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1301,7 +1301,7 @@ namespace isc { namespace agent {
 #line 1302 "agent_parser.cc"
     break;
 
-  case 119:
+  case 119: // output_options_list: "output_options" $@26 ":" "[" output_options_list_content "]"
 #line 550 "agent_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -1310,7 +1310,7 @@ namespace isc { namespace agent {
 #line 1311 "agent_parser.cc"
     break;
 
-  case 122:
+  case 122: // $@27: %empty
 #line 559 "agent_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1320,7 +1320,7 @@ namespace isc { namespace agent {
 #line 1321 "agent_parser.cc"
     break;
 
-  case 123:
+  case 123: // output_entry: "{" $@27 output_params_list "}"
 #line 563 "agent_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1328,7 +1328,7 @@ namespace isc { namespace agent {
 #line 1329 "agent_parser.cc"
     break;
 
-  case 131:
+  case 131: // $@28: %empty
 #line 578 "agent_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1336,7 +1336,7 @@ namespace isc { namespace agent {
 #line 1337 "agent_parser.cc"
     break;
 
-  case 132:
+  case 132: // output: "output" $@28 ":" "constant string"
 #line 580 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1346,7 +1346,7 @@ namespace isc { namespace agent {
 #line 1347 "agent_parser.cc"
     break;
 
-  case 133:
+  case 133: // flush: "flush" ":" "boolean"
 #line 586 "agent_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1355,7 +1355,7 @@ namespace isc { namespace agent {
 #line 1356 "agent_parser.cc"
     break;
 
-  case 134:
+  case 134: // maxsize: "maxsize" ":" "integer"
 #line 591 "agent_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1364,7 +1364,7 @@ namespace isc { namespace agent {
 #line 1365 "agent_parser.cc"
     break;
 
-  case 135:
+  case 135: // maxver: "maxver" ":" "integer"
 #line 596 "agent_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1373,7 +1373,7 @@ namespace isc { namespace agent {
 #line 1374 "agent_parser.cc"
     break;
 
-  case 136:
+  case 136: // $@29: %empty
 #line 601 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1381,7 +1381,7 @@ namespace isc { namespace agent {
 #line 1382 "agent_parser.cc"
     break;
 
-  case 137:
+  case 137: // pattern: "pattern" $@29 ":" "constant string"
 #line 603 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
index 225fbd3cc629298fa8cda2cd513608abd6f8d921..3307fe2ca5bc9a99fdffd0380240c235bb7c4cdf 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -704,25 +704,25 @@ namespace isc { namespace agent {
       {
         switch (this->kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -836,25 +836,25 @@ namespace isc { namespace agent {
         // Value type destructor.
 switch (yykind)
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1838,7 +1838,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2069,11 +2069,12 @@ switch (yykind)
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41
     };
-    const int user_token_number_max_ = 296;
+    // Last valid token kind.
+    const int code_max = 296;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2088,25 +2089,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2139,25 +2140,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2224,8 +2225,7 @@ switch (yykind)
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2228 "agent_parser.h"
-
+#line 2229 "agent_parser.h"
 
 
 
index 499b94c03e22a7754c360b602d3952539625978f..1c93a118bfcb8400a1c5fe6d7351d43adef144eb 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Locations for Bison parsers in C++
 
@@ -62,11 +62,13 @@ namespace isc { namespace agent {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +78,7 @@ namespace isc { namespace agent {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +107,7 @@ namespace isc { namespace agent {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +150,6 @@ namespace isc { namespace agent {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +167,8 @@ namespace isc { namespace agent {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +185,7 @@ namespace isc { namespace agent {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +194,7 @@ namespace isc { namespace agent {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +276,6 @@ namespace isc { namespace agent {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +302,6 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_AGENT_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..0403c938c4d4d755e66dfa740a9b5fd21cbed44f 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6bfe5d25d597e184e9300d2531f6d54907bbcd3 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 22389335c6687b460bcff663a8ebf8704ca67fc0..d2f5febfea4e654b111ebc66b9cb8f8c9e6c7485 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -209,25 +209,25 @@ namespace isc { namespace d2 {
   {
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace d2 {
   {
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace d2 {
     state = that.state;
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace d2 {
     state = that.state;
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -377,43 +377,43 @@ namespace isc { namespace d2 {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "d2_parser.cc"
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "d2_parser.cc"
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "d2_parser.cc"
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "d2_parser.cc"
         break;
 
-      case 68: // value
+      case symbol_kind::S_value: // value
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "d2_parser.cc"
         break;
 
-      case 72: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "d2_parser.cc"
         break;
 
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "d2_parser.cc"
@@ -646,25 +646,25 @@ namespace isc { namespace d2 {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -688,103 +688,103 @@ namespace isc { namespace d2 {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 120 "d2_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 695 "d2_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 121 "d2_parser.yy"
                          { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "d2_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 122 "d2_parser.yy"
                     { ctx.ctx_ = ctx.DHCPDDNS; }
 #line 707 "d2_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 123 "d2_parser.yy"
                     { ctx.ctx_ = ctx.TSIG_KEY; }
 #line 713 "d2_parser.cc"
     break;
 
-  case 10:
+  case 10: // $@5: %empty
 #line 124 "d2_parser.yy"
                      { ctx.ctx_ = ctx.TSIG_KEYS; }
 #line 719 "d2_parser.cc"
     break;
 
-  case 12:
+  case 12: // $@6: %empty
 #line 125 "d2_parser.yy"
                        { ctx.ctx_ = ctx.DDNS_DOMAIN; }
 #line 725 "d2_parser.cc"
     break;
 
-  case 14:
+  case 14: // $@7: %empty
 #line 126 "d2_parser.yy"
                         { ctx.ctx_ = ctx.DDNS_DOMAINS; }
 #line 731 "d2_parser.cc"
     break;
 
-  case 16:
+  case 16: // $@8: %empty
 #line 127 "d2_parser.yy"
                       { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 737 "d2_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@9: %empty
 #line 128 "d2_parser.yy"
                        { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 743 "d2_parser.cc"
     break;
 
-  case 20:
+  case 20: // value: "integer"
 #line 136 "d2_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 749 "d2_parser.cc"
     break;
 
-  case 21:
+  case 21: // value: "floating point"
 #line 137 "d2_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 755 "d2_parser.cc"
     break;
 
-  case 22:
+  case 22: // value: "boolean"
 #line 138 "d2_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 761 "d2_parser.cc"
     break;
 
-  case 23:
+  case 23: // value: "constant string"
 #line 139 "d2_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 767 "d2_parser.cc"
     break;
 
-  case 24:
+  case 24: // value: "null"
 #line 140 "d2_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 773 "d2_parser.cc"
     break;
 
-  case 25:
+  case 25: // value: map2
 #line 141 "d2_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 779 "d2_parser.cc"
     break;
 
-  case 26:
+  case 26: // value: list_generic
 #line 142 "d2_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 785 "d2_parser.cc"
     break;
 
-  case 27:
+  case 27: // sub_json: value
 #line 145 "d2_parser.yy"
                 {
     // Push back the JSON value on the stack
@@ -793,7 +793,7 @@ namespace isc { namespace d2 {
 #line 794 "d2_parser.cc"
     break;
 
-  case 28:
+  case 28: // $@10: %empty
 #line 150 "d2_parser.yy"
                      {
     // This code is executed when we're about to start parsing
@@ -804,7 +804,7 @@ namespace isc { namespace d2 {
 #line 805 "d2_parser.cc"
     break;
 
-  case 29:
+  case 29: // map2: "{" $@10 map_content "}"
 #line 155 "d2_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -814,13 +814,13 @@ namespace isc { namespace d2 {
 #line 815 "d2_parser.cc"
     break;
 
-  case 30:
+  case 30: // map_value: map2
 #line 161 "d2_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 821 "d2_parser.cc"
     break;
 
-  case 33:
+  case 33: // not_empty_map: "constant string" ":" value
 #line 168 "d2_parser.yy"
                                   {
                   // map containing a single entry
@@ -829,7 +829,7 @@ namespace isc { namespace d2 {
 #line 830 "d2_parser.cc"
     break;
 
-  case 34:
+  case 34: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 172 "d2_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -839,7 +839,7 @@ namespace isc { namespace d2 {
 #line 840 "d2_parser.cc"
     break;
 
-  case 35:
+  case 35: // $@11: %empty
 #line 179 "d2_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -848,7 +848,7 @@ namespace isc { namespace d2 {
 #line 849 "d2_parser.cc"
     break;
 
-  case 36:
+  case 36: // list_generic: "[" $@11 list_content "]"
 #line 182 "d2_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
@@ -856,7 +856,7 @@ namespace isc { namespace d2 {
 #line 857 "d2_parser.cc"
     break;
 
-  case 39:
+  case 39: // not_empty_list: value
 #line 190 "d2_parser.yy"
                       {
                   // List consisting of a single element.
@@ -865,7 +865,7 @@ namespace isc { namespace d2 {
 #line 866 "d2_parser.cc"
     break;
 
-  case 40:
+  case 40: // not_empty_list: not_empty_list "," value
 #line 194 "d2_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -874,7 +874,7 @@ namespace isc { namespace d2 {
 #line 875 "d2_parser.cc"
     break;
 
-  case 41:
+  case 41: // unknown_map_entry: "constant string" ":"
 #line 205 "d2_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -885,7 +885,7 @@ namespace isc { namespace d2 {
 #line 886 "d2_parser.cc"
     break;
 
-  case 42:
+  case 42: // $@12: %empty
 #line 214 "d2_parser.yy"
                            {
     // This code is executed when we're about to start parsing
@@ -896,7 +896,7 @@ namespace isc { namespace d2 {
 #line 897 "d2_parser.cc"
     break;
 
-  case 43:
+  case 43: // syntax_map: "{" $@12 global_objects "}"
 #line 219 "d2_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -906,7 +906,7 @@ namespace isc { namespace d2 {
 #line 907 "d2_parser.cc"
     break;
 
-  case 46:
+  case 46: // $@13: %empty
 #line 235 "d2_parser.yy"
                           {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -917,7 +917,7 @@ namespace isc { namespace d2 {
 #line 918 "d2_parser.cc"
     break;
 
-  case 47:
+  case 47: // dhcpddns_object: "DhcpDdns" $@13 ":" "{" dhcpddns_params "}"
 #line 240 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -926,7 +926,7 @@ namespace isc { namespace d2 {
 #line 927 "d2_parser.cc"
     break;
 
-  case 48:
+  case 48: // $@14: %empty
 #line 245 "d2_parser.yy"
                              {
     // Parse the dhcpddns map
@@ -936,7 +936,7 @@ namespace isc { namespace d2 {
 #line 937 "d2_parser.cc"
     break;
 
-  case 49:
+  case 49: // sub_dhcpddns: "{" $@14 dhcpddns_params "}"
 #line 249 "d2_parser.yy"
                                  {
     // parsing completed
@@ -944,7 +944,7 @@ namespace isc { namespace d2 {
 #line 945 "d2_parser.cc"
     break;
 
-  case 65:
+  case 65: // $@15: %empty
 #line 273 "d2_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -952,7 +952,7 @@ namespace isc { namespace d2 {
 #line 953 "d2_parser.cc"
     break;
 
-  case 66:
+  case 66: // ip_address: "ip-address" $@15 ":" "constant string"
 #line 275 "d2_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -962,7 +962,7 @@ namespace isc { namespace d2 {
 #line 963 "d2_parser.cc"
     break;
 
-  case 67:
+  case 67: // port: "port" ":" "integer"
 #line 281 "d2_parser.yy"
                          {
     if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
@@ -974,7 +974,7 @@ namespace isc { namespace d2 {
 #line 975 "d2_parser.cc"
     break;
 
-  case 68:
+  case 68: // dns_server_timeout: "dns-server-timeout" ":" "integer"
 #line 289 "d2_parser.yy"
                                                      {
     if (yystack_[0].value.as < int64_t > () <= 0) {
@@ -987,7 +987,7 @@ namespace isc { namespace d2 {
 #line 988 "d2_parser.cc"
     break;
 
-  case 69:
+  case 69: // $@16: %empty
 #line 298 "d2_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -995,7 +995,7 @@ namespace isc { namespace d2 {
 #line 996 "d2_parser.cc"
     break;
 
-  case 70:
+  case 70: // ncr_protocol: "ncr-protocol" $@16 ":" ncr_protocol_value
 #line 300 "d2_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
@@ -1004,19 +1004,19 @@ namespace isc { namespace d2 {
 #line 1005 "d2_parser.cc"
     break;
 
-  case 71:
+  case 71: // ncr_protocol_value: "UDP"
 #line 306 "d2_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 1011 "d2_parser.cc"
     break;
 
-  case 72:
+  case 72: // ncr_protocol_value: "TCP"
 #line 307 "d2_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 1017 "d2_parser.cc"
     break;
 
-  case 73:
+  case 73: // $@17: %empty
 #line 310 "d2_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
@@ -1024,7 +1024,7 @@ namespace isc { namespace d2 {
 #line 1025 "d2_parser.cc"
     break;
 
-  case 74:
+  case 74: // ncr_format: "ncr-format" $@17 ":" "JSON"
 #line 312 "d2_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
@@ -1034,7 +1034,7 @@ namespace isc { namespace d2 {
 #line 1035 "d2_parser.cc"
     break;
 
-  case 75:
+  case 75: // $@18: %empty
 #line 318 "d2_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1042,7 +1042,7 @@ namespace isc { namespace d2 {
 #line 1043 "d2_parser.cc"
     break;
 
-  case 76:
+  case 76: // user_context: "user-context" $@18 ":" map_value
 #line 320 "d2_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -1069,7 +1069,7 @@ namespace isc { namespace d2 {
 #line 1070 "d2_parser.cc"
     break;
 
-  case 77:
+  case 77: // $@19: %empty
 #line 343 "d2_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1077,7 +1077,7 @@ namespace isc { namespace d2 {
 #line 1078 "d2_parser.cc"
     break;
 
-  case 78:
+  case 78: // comment: "comment" $@19 ":" "constant string"
 #line 345 "d2_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -1106,7 +1106,7 @@ namespace isc { namespace d2 {
 #line 1107 "d2_parser.cc"
     break;
 
-  case 79:
+  case 79: // $@20: %empty
 #line 370 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1117,7 +1117,7 @@ namespace isc { namespace d2 {
 #line 1118 "d2_parser.cc"
     break;
 
-  case 80:
+  case 80: // forward_ddns: "forward-ddns" $@20 ":" "{" ddns_mgr_params "}"
 #line 375 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -1126,7 +1126,7 @@ namespace isc { namespace d2 {
 #line 1127 "d2_parser.cc"
     break;
 
-  case 81:
+  case 81: // $@21: %empty
 #line 380 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1137,7 +1137,7 @@ namespace isc { namespace d2 {
 #line 1138 "d2_parser.cc"
     break;
 
-  case 82:
+  case 82: // reverse_ddns: "reverse-ddns" $@21 ":" "{" ddns_mgr_params "}"
 #line 385 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -1146,7 +1146,7 @@ namespace isc { namespace d2 {
 #line 1147 "d2_parser.cc"
     break;
 
-  case 89:
+  case 89: // $@22: %empty
 #line 404 "d2_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1157,7 +1157,7 @@ namespace isc { namespace d2 {
 #line 1158 "d2_parser.cc"
     break;
 
-  case 90:
+  case 90: // ddns_domains: "ddns-domains" $@22 ":" "[" ddns_domain_list "]"
 #line 409 "d2_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1166,7 +1166,7 @@ namespace isc { namespace d2 {
 #line 1167 "d2_parser.cc"
     break;
 
-  case 91:
+  case 91: // $@23: %empty
 #line 414 "d2_parser.yy"
                                   {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1175,7 +1175,7 @@ namespace isc { namespace d2 {
 #line 1176 "d2_parser.cc"
     break;
 
-  case 92:
+  case 92: // sub_ddns_domains: "[" $@23 ddns_domain_list "]"
 #line 417 "d2_parser.yy"
                                    {
     // parsing completed
@@ -1183,7 +1183,7 @@ namespace isc { namespace d2 {
 #line 1184 "d2_parser.cc"
     break;
 
-  case 97:
+  case 97: // $@24: %empty
 #line 429 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1193,7 +1193,7 @@ namespace isc { namespace d2 {
 #line 1194 "d2_parser.cc"
     break;
 
-  case 98:
+  case 98: // ddns_domain: "{" $@24 ddns_domain_params "}"
 #line 433 "d2_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1201,7 +1201,7 @@ namespace isc { namespace d2 {
 #line 1202 "d2_parser.cc"
     break;
 
-  case 99:
+  case 99: // $@25: %empty
 #line 437 "d2_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1210,7 +1210,7 @@ namespace isc { namespace d2 {
 #line 1211 "d2_parser.cc"
     break;
 
-  case 100:
+  case 100: // sub_ddns_domain: "{" $@25 ddns_domain_params "}"
 #line 440 "d2_parser.yy"
                                     {
     // parsing completed
@@ -1218,7 +1218,7 @@ namespace isc { namespace d2 {
 #line 1219 "d2_parser.cc"
     break;
 
-  case 109:
+  case 109: // $@26: %empty
 #line 457 "d2_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1226,7 +1226,7 @@ namespace isc { namespace d2 {
 #line 1227 "d2_parser.cc"
     break;
 
-  case 110:
+  case 110: // ddns_domain_name: "name" $@26 ":" "constant string"
 #line 459 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1240,7 +1240,7 @@ namespace isc { namespace d2 {
 #line 1241 "d2_parser.cc"
     break;
 
-  case 111:
+  case 111: // $@27: %empty
 #line 469 "d2_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1248,7 +1248,7 @@ namespace isc { namespace d2 {
 #line 1249 "d2_parser.cc"
     break;
 
-  case 112:
+  case 112: // ddns_domain_key_name: "key-name" $@27 ":" "constant string"
 #line 471 "d2_parser.yy"
                {
     ElementPtr elem(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1259,7 +1259,7 @@ namespace isc { namespace d2 {
 #line 1260 "d2_parser.cc"
     break;
 
-  case 113:
+  case 113: // $@28: %empty
 #line 481 "d2_parser.yy"
                          {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1270,7 +1270,7 @@ namespace isc { namespace d2 {
 #line 1271 "d2_parser.cc"
     break;
 
-  case 114:
+  case 114: // dns_servers: "dns-servers" $@28 ":" "[" dns_server_list "]"
 #line 486 "d2_parser.yy"
                                                         {
     ctx.stack_.pop_back();
@@ -1279,7 +1279,7 @@ namespace isc { namespace d2 {
 #line 1280 "d2_parser.cc"
     break;
 
-  case 115:
+  case 115: // $@29: %empty
 #line 491 "d2_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1288,7 +1288,7 @@ namespace isc { namespace d2 {
 #line 1289 "d2_parser.cc"
     break;
 
-  case 116:
+  case 116: // sub_dns_servers: "[" $@29 dns_server_list "]"
 #line 494 "d2_parser.yy"
                                   {
     // parsing completed
@@ -1296,7 +1296,7 @@ namespace isc { namespace d2 {
 #line 1297 "d2_parser.cc"
     break;
 
-  case 119:
+  case 119: // $@30: %empty
 #line 502 "d2_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1306,7 +1306,7 @@ namespace isc { namespace d2 {
 #line 1307 "d2_parser.cc"
     break;
 
-  case 120:
+  case 120: // dns_server: "{" $@30 dns_server_params "}"
 #line 506 "d2_parser.yy"
                                    {
     ctx.stack_.pop_back();
@@ -1314,7 +1314,7 @@ namespace isc { namespace d2 {
 #line 1315 "d2_parser.cc"
     break;
 
-  case 121:
+  case 121: // $@31: %empty
 #line 510 "d2_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1323,7 +1323,7 @@ namespace isc { namespace d2 {
 #line 1324 "d2_parser.cc"
     break;
 
-  case 122:
+  case 122: // sub_dns_server: "{" $@31 dns_server_params "}"
 #line 513 "d2_parser.yy"
                                    {
     // parsing completed
@@ -1331,7 +1331,7 @@ namespace isc { namespace d2 {
 #line 1332 "d2_parser.cc"
     break;
 
-  case 131:
+  case 131: // $@32: %empty
 #line 529 "d2_parser.yy"
                               {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1339,7 +1339,7 @@ namespace isc { namespace d2 {
 #line 1340 "d2_parser.cc"
     break;
 
-  case 132:
+  case 132: // dns_server_hostname: "hostname" $@32 ":" "constant string"
 #line 531 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () != "") {
@@ -1353,7 +1353,7 @@ namespace isc { namespace d2 {
 #line 1354 "d2_parser.cc"
     break;
 
-  case 133:
+  case 133: // $@33: %empty
 #line 541 "d2_parser.yy"
                                   {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1361,7 +1361,7 @@ namespace isc { namespace d2 {
 #line 1362 "d2_parser.cc"
     break;
 
-  case 134:
+  case 134: // dns_server_ip_address: "ip-address" $@33 ":" "constant string"
 #line 543 "d2_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1371,7 +1371,7 @@ namespace isc { namespace d2 {
 #line 1372 "d2_parser.cc"
     break;
 
-  case 135:
+  case 135: // dns_server_port: "port" ":" "integer"
 #line 549 "d2_parser.yy"
                                     {
     if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
@@ -1383,7 +1383,7 @@ namespace isc { namespace d2 {
 #line 1384 "d2_parser.cc"
     break;
 
-  case 136:
+  case 136: // $@34: %empty
 #line 563 "d2_parser.yy"
                      {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1394,7 +1394,7 @@ namespace isc { namespace d2 {
 #line 1395 "d2_parser.cc"
     break;
 
-  case 137:
+  case 137: // tsig_keys: "tsig-keys" $@34 ":" "[" tsig_keys_list "]"
 #line 568 "d2_parser.yy"
                                                        {
     ctx.stack_.pop_back();
@@ -1403,7 +1403,7 @@ namespace isc { namespace d2 {
 #line 1404 "d2_parser.cc"
     break;
 
-  case 138:
+  case 138: // $@35: %empty
 #line 573 "d2_parser.yy"
                                {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1412,7 +1412,7 @@ namespace isc { namespace d2 {
 #line 1413 "d2_parser.cc"
     break;
 
-  case 139:
+  case 139: // sub_tsig_keys: "[" $@35 tsig_keys_list "]"
 #line 576 "d2_parser.yy"
                                  {
     // parsing completed
@@ -1420,7 +1420,7 @@ namespace isc { namespace d2 {
 #line 1421 "d2_parser.cc"
     break;
 
-  case 144:
+  case 144: // $@36: %empty
 #line 588 "d2_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1430,7 +1430,7 @@ namespace isc { namespace d2 {
 #line 1431 "d2_parser.cc"
     break;
 
-  case 145:
+  case 145: // tsig_key: "{" $@36 tsig_key_params "}"
 #line 592 "d2_parser.yy"
                                  {
     ctx.stack_.pop_back();
@@ -1438,7 +1438,7 @@ namespace isc { namespace d2 {
 #line 1439 "d2_parser.cc"
     break;
 
-  case 146:
+  case 146: // $@37: %empty
 #line 596 "d2_parser.yy"
                              {
     // Parse tsig key list entry map
@@ -1448,7 +1448,7 @@ namespace isc { namespace d2 {
 #line 1449 "d2_parser.cc"
     break;
 
-  case 147:
+  case 147: // sub_tsig_key: "{" $@37 tsig_key_params "}"
 #line 600 "d2_parser.yy"
                                  {
     // parsing completed
@@ -1456,7 +1456,7 @@ namespace isc { namespace d2 {
 #line 1457 "d2_parser.cc"
     break;
 
-  case 157:
+  case 157: // $@38: %empty
 #line 618 "d2_parser.yy"
                     {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1464,7 +1464,7 @@ namespace isc { namespace d2 {
 #line 1465 "d2_parser.cc"
     break;
 
-  case 158:
+  case 158: // tsig_key_name: "name" $@38 ":" "constant string"
 #line 620 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1478,7 +1478,7 @@ namespace isc { namespace d2 {
 #line 1479 "d2_parser.cc"
     break;
 
-  case 159:
+  case 159: // $@39: %empty
 #line 630 "d2_parser.yy"
                               {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1486,7 +1486,7 @@ namespace isc { namespace d2 {
 #line 1487 "d2_parser.cc"
     break;
 
-  case 160:
+  case 160: // tsig_key_algorithm: "algorithm" $@39 ":" "constant string"
 #line 632 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1499,7 +1499,7 @@ namespace isc { namespace d2 {
 #line 1500 "d2_parser.cc"
     break;
 
-  case 161:
+  case 161: // tsig_key_digest_bits: "digest-bits" ":" "integer"
 #line 641 "d2_parser.yy"
                                                 {
     if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0  && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
@@ -1511,7 +1511,7 @@ namespace isc { namespace d2 {
 #line 1512 "d2_parser.cc"
     break;
 
-  case 162:
+  case 162: // $@40: %empty
 #line 649 "d2_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1519,7 +1519,7 @@ namespace isc { namespace d2 {
 #line 1520 "d2_parser.cc"
     break;
 
-  case 163:
+  case 163: // tsig_key_secret: "secret" $@40 ":" "constant string"
 #line 651 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1532,7 +1532,7 @@ namespace isc { namespace d2 {
 #line 1533 "d2_parser.cc"
     break;
 
-  case 164:
+  case 164: // $@41: %empty
 #line 665 "d2_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1543,7 +1543,7 @@ namespace isc { namespace d2 {
 #line 1544 "d2_parser.cc"
     break;
 
-  case 165:
+  case 165: // control_socket: "control-socket" $@41 ":" "{" control_socket_params "}"
 #line 670 "d2_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1552,7 +1552,7 @@ namespace isc { namespace d2 {
 #line 1553 "d2_parser.cc"
     break;
 
-  case 173:
+  case 173: // $@42: %empty
 #line 686 "d2_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1560,7 +1560,7 @@ namespace isc { namespace d2 {
 #line 1561 "d2_parser.cc"
     break;
 
-  case 174:
+  case 174: // control_socket_type: "socket-type" $@42 ":" "constant string"
 #line 688 "d2_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1570,7 +1570,7 @@ namespace isc { namespace d2 {
 #line 1571 "d2_parser.cc"
     break;
 
-  case 175:
+  case 175: // $@43: %empty
 #line 694 "d2_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1578,7 +1578,7 @@ namespace isc { namespace d2 {
 #line 1579 "d2_parser.cc"
     break;
 
-  case 176:
+  case 176: // control_socket_name: "socket-name" $@43 ":" "constant string"
 #line 696 "d2_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1588,7 +1588,7 @@ namespace isc { namespace d2 {
 #line 1589 "d2_parser.cc"
     break;
 
-  case 177:
+  case 177: // $@44: %empty
 #line 704 "d2_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1599,7 +1599,7 @@ namespace isc { namespace d2 {
 #line 1600 "d2_parser.cc"
     break;
 
-  case 178:
+  case 178: // loggers: "loggers" $@44 ":" "[" loggers_entries "]"
 #line 709 "d2_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1608,7 +1608,7 @@ namespace isc { namespace d2 {
 #line 1609 "d2_parser.cc"
     break;
 
-  case 181:
+  case 181: // $@45: %empty
 #line 721 "d2_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1618,7 +1618,7 @@ namespace isc { namespace d2 {
 #line 1619 "d2_parser.cc"
     break;
 
-  case 182:
+  case 182: // logger_entry: "{" $@45 logger_params "}"
 #line 725 "d2_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -1626,7 +1626,7 @@ namespace isc { namespace d2 {
 #line 1627 "d2_parser.cc"
     break;
 
-  case 192:
+  case 192: // $@46: %empty
 #line 742 "d2_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1634,7 +1634,7 @@ namespace isc { namespace d2 {
 #line 1635 "d2_parser.cc"
     break;
 
-  case 193:
+  case 193: // name: "name" $@46 ":" "constant string"
 #line 744 "d2_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1644,7 +1644,7 @@ namespace isc { namespace d2 {
 #line 1645 "d2_parser.cc"
     break;
 
-  case 194:
+  case 194: // debuglevel: "debuglevel" ":" "integer"
 #line 750 "d2_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1653,7 +1653,7 @@ namespace isc { namespace d2 {
 #line 1654 "d2_parser.cc"
     break;
 
-  case 195:
+  case 195: // $@47: %empty
 #line 754 "d2_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1661,7 +1661,7 @@ namespace isc { namespace d2 {
 #line 1662 "d2_parser.cc"
     break;
 
-  case 196:
+  case 196: // severity: "severity" $@47 ":" "constant string"
 #line 756 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1671,7 +1671,7 @@ namespace isc { namespace d2 {
 #line 1672 "d2_parser.cc"
     break;
 
-  case 197:
+  case 197: // $@48: %empty
 #line 762 "d2_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1682,7 +1682,7 @@ namespace isc { namespace d2 {
 #line 1683 "d2_parser.cc"
     break;
 
-  case 198:
+  case 198: // output_options_list: "output_options" $@48 ":" "[" output_options_list_content "]"
 #line 767 "d2_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -1691,7 +1691,7 @@ namespace isc { namespace d2 {
 #line 1692 "d2_parser.cc"
     break;
 
-  case 201:
+  case 201: // $@49: %empty
 #line 776 "d2_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1701,7 +1701,7 @@ namespace isc { namespace d2 {
 #line 1702 "d2_parser.cc"
     break;
 
-  case 202:
+  case 202: // output_entry: "{" $@49 output_params_list "}"
 #line 780 "d2_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1709,7 +1709,7 @@ namespace isc { namespace d2 {
 #line 1710 "d2_parser.cc"
     break;
 
-  case 210:
+  case 210: // $@50: %empty
 #line 795 "d2_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1717,7 +1717,7 @@ namespace isc { namespace d2 {
 #line 1718 "d2_parser.cc"
     break;
 
-  case 211:
+  case 211: // output: "output" $@50 ":" "constant string"
 #line 797 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1727,7 +1727,7 @@ namespace isc { namespace d2 {
 #line 1728 "d2_parser.cc"
     break;
 
-  case 212:
+  case 212: // flush: "flush" ":" "boolean"
 #line 803 "d2_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1736,7 +1736,7 @@ namespace isc { namespace d2 {
 #line 1737 "d2_parser.cc"
     break;
 
-  case 213:
+  case 213: // maxsize: "maxsize" ":" "integer"
 #line 808 "d2_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1745,7 +1745,7 @@ namespace isc { namespace d2 {
 #line 1746 "d2_parser.cc"
     break;
 
-  case 214:
+  case 214: // maxver: "maxver" ":" "integer"
 #line 813 "d2_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1754,7 +1754,7 @@ namespace isc { namespace d2 {
 #line 1755 "d2_parser.cc"
     break;
 
-  case 215:
+  case 215: // $@51: %empty
 #line 818 "d2_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1762,7 +1762,7 @@ namespace isc { namespace d2 {
 #line 1763 "d2_parser.cc"
     break;
 
-  case 216:
+  case 216: // pattern: "pattern" $@51 ":" "constant string"
 #line 820 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
index aba8a2aaafe4dca361a6ae0660c382a8b2079195..cb7763b1fededd7423ebeafb2656d9bb0b121602 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -784,25 +784,25 @@ namespace isc { namespace d2 {
       {
         switch (this->kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -916,25 +916,25 @@ namespace isc { namespace d2 {
         // Value type destructor.
 switch (yykind)
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -2143,7 +2143,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2376,11 +2376,12 @@ switch (yykind)
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56
     };
-    const int user_token_number_max_ = 311;
+    // Last valid token kind.
+    const int code_max = 311;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2395,25 +2396,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2446,25 +2447,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2531,8 +2532,7 @@ switch (yykind)
 
 #line 14 "d2_parser.yy"
 } } // isc::d2
-#line 2535 "d2_parser.h"
-
+#line 2536 "d2_parser.h"
 
 
 
index 3f1c33eae5df260e51819527eaa98d04495345c5..a1ffb3adcd6cb12a6cc71c87f923687fe57d5107 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Locations for Bison parsers in C++
 
@@ -62,11 +62,13 @@ namespace isc { namespace d2 {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +78,7 @@ namespace isc { namespace d2 {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +107,7 @@ namespace isc { namespace d2 {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +150,6 @@ namespace isc { namespace d2 {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +167,8 @@ namespace isc { namespace d2 {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +185,7 @@ namespace isc { namespace d2 {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +194,7 @@ namespace isc { namespace d2 {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +276,6 @@ namespace isc { namespace d2 {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +302,6 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy"
 } } // isc::d2
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_D2_PARSER_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..12e7205cc5d4bde347511b698459285ce736802a 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..fed81e95f806d9f65629b03f6eb3be203a948b5c 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index a149cb8e018959dd7f40350fa328c9a32ca8a893..9fe367982736bb94cf149fc01f7fda0da4455dba 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -209,30 +209,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -251,30 +251,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -293,30 +293,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -334,30 +334,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -397,73 +397,73 @@ namespace isc { namespace dhcp {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 404 "dhcp4_parser.cc"
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 410 "dhcp4_parser.cc"
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 416 "dhcp4_parser.cc"
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 422 "dhcp4_parser.cc"
         break;
 
-      case 205: // value
+      case symbol_kind::S_value: // value
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 428 "dhcp4_parser.cc"
         break;
 
-      case 209: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 434 "dhcp4_parser.cc"
         break;
 
-      case 250: // ddns_replace_client_name_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 440 "dhcp4_parser.cc"
         break;
 
-      case 272: // socket_type
+      case symbol_kind::S_socket_type: // socket_type
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 446 "dhcp4_parser.cc"
         break;
 
-      case 275: // outbound_interface_value
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 452 "dhcp4_parser.cc"
         break;
 
-      case 297: // db_type
+      case symbol_kind::S_db_type: // db_type
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 458 "dhcp4_parser.cc"
         break;
 
-      case 391: // hr_mode
+      case symbol_kind::S_hr_mode: // hr_mode
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 464 "dhcp4_parser.cc"
         break;
 
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
 #line 268 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 470 "dhcp4_parser.cc"
@@ -696,30 +696,30 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -743,127 +743,127 @@ namespace isc { namespace dhcp {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 277 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 750 "dhcp4_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 278 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 756 "dhcp4_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 279 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.DHCP4; }
 #line 762 "dhcp4_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 280 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 768 "dhcp4_parser.cc"
     break;
 
-  case 10:
+  case 10: // $@5: %empty
 #line 281 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET4; }
 #line 774 "dhcp4_parser.cc"
     break;
 
-  case 12:
+  case 12: // $@6: %empty
 #line 282 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 780 "dhcp4_parser.cc"
     break;
 
-  case 14:
+  case 14: // $@7: %empty
 #line 283 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 786 "dhcp4_parser.cc"
     break;
 
-  case 16:
+  case 16: // $@8: %empty
 #line 284 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.DHCP4; }
 #line 792 "dhcp4_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@9: %empty
 #line 285 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 798 "dhcp4_parser.cc"
     break;
 
-  case 20:
+  case 20: // $@10: %empty
 #line 286 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 804 "dhcp4_parser.cc"
     break;
 
-  case 22:
+  case 22: // $@11: %empty
 #line 287 "dhcp4_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 810 "dhcp4_parser.cc"
     break;
 
-  case 24:
+  case 24: // $@12: %empty
 #line 288 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 816 "dhcp4_parser.cc"
     break;
 
-  case 26:
+  case 26: // $@13: %empty
 #line 289 "dhcp4_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 822 "dhcp4_parser.cc"
     break;
 
-  case 28:
+  case 28: // value: "integer"
 #line 297 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 828 "dhcp4_parser.cc"
     break;
 
-  case 29:
+  case 29: // value: "floating point"
 #line 298 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 834 "dhcp4_parser.cc"
     break;
 
-  case 30:
+  case 30: // value: "boolean"
 #line 299 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 840 "dhcp4_parser.cc"
     break;
 
-  case 31:
+  case 31: // value: "constant string"
 #line 300 "dhcp4_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 846 "dhcp4_parser.cc"
     break;
 
-  case 32:
+  case 32: // value: "null"
 #line 301 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 852 "dhcp4_parser.cc"
     break;
 
-  case 33:
+  case 33: // value: map2
 #line 302 "dhcp4_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 858 "dhcp4_parser.cc"
     break;
 
-  case 34:
+  case 34: // value: list_generic
 #line 303 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 864 "dhcp4_parser.cc"
     break;
 
-  case 35:
+  case 35: // sub_json: value
 #line 306 "dhcp4_parser.yy"
                 {
     // Push back the JSON value on the stack
@@ -872,7 +872,7 @@ namespace isc { namespace dhcp {
 #line 873 "dhcp4_parser.cc"
     break;
 
-  case 36:
+  case 36: // $@14: %empty
 #line 311 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
@@ -883,7 +883,7 @@ namespace isc { namespace dhcp {
 #line 884 "dhcp4_parser.cc"
     break;
 
-  case 37:
+  case 37: // map2: "{" $@14 map_content "}"
 #line 316 "dhcp4_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -893,13 +893,13 @@ namespace isc { namespace dhcp {
 #line 894 "dhcp4_parser.cc"
     break;
 
-  case 38:
+  case 38: // map_value: map2
 #line 322 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 900 "dhcp4_parser.cc"
     break;
 
-  case 41:
+  case 41: // not_empty_map: "constant string" ":" value
 #line 329 "dhcp4_parser.yy"
                                   {
                   // map containing a single entry
@@ -908,7 +908,7 @@ namespace isc { namespace dhcp {
 #line 909 "dhcp4_parser.cc"
     break;
 
-  case 42:
+  case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 333 "dhcp4_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -918,7 +918,7 @@ namespace isc { namespace dhcp {
 #line 919 "dhcp4_parser.cc"
     break;
 
-  case 43:
+  case 43: // $@15: %empty
 #line 340 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -927,7 +927,7 @@ namespace isc { namespace dhcp {
 #line 928 "dhcp4_parser.cc"
     break;
 
-  case 44:
+  case 44: // list_generic: "[" $@15 list_content "]"
 #line 343 "dhcp4_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
@@ -935,7 +935,7 @@ namespace isc { namespace dhcp {
 #line 936 "dhcp4_parser.cc"
     break;
 
-  case 47:
+  case 47: // not_empty_list: value
 #line 351 "dhcp4_parser.yy"
                       {
                   // List consisting of a single element.
@@ -944,7 +944,7 @@ namespace isc { namespace dhcp {
 #line 945 "dhcp4_parser.cc"
     break;
 
-  case 48:
+  case 48: // not_empty_list: not_empty_list "," value
 #line 355 "dhcp4_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -953,7 +953,7 @@ namespace isc { namespace dhcp {
 #line 954 "dhcp4_parser.cc"
     break;
 
-  case 49:
+  case 49: // $@16: %empty
 #line 362 "dhcp4_parser.yy"
                               {
     // List parsing about to start
@@ -961,7 +961,7 @@ namespace isc { namespace dhcp {
 #line 962 "dhcp4_parser.cc"
     break;
 
-  case 50:
+  case 50: // list_strings: "[" $@16 list_strings_content "]"
 #line 364 "dhcp4_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
@@ -970,7 +970,7 @@ namespace isc { namespace dhcp {
 #line 971 "dhcp4_parser.cc"
     break;
 
-  case 53:
+  case 53: // not_empty_list_strings: "constant string"
 #line 373 "dhcp4_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -979,7 +979,7 @@ namespace isc { namespace dhcp {
 #line 980 "dhcp4_parser.cc"
     break;
 
-  case 54:
+  case 54: // not_empty_list_strings: not_empty_list_strings "," "constant string"
 #line 377 "dhcp4_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -988,7 +988,7 @@ namespace isc { namespace dhcp {
 #line 989 "dhcp4_parser.cc"
     break;
 
-  case 55:
+  case 55: // unknown_map_entry: "constant string" ":"
 #line 388 "dhcp4_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -999,7 +999,7 @@ namespace isc { namespace dhcp {
 #line 1000 "dhcp4_parser.cc"
     break;
 
-  case 56:
+  case 56: // $@17: %empty
 #line 397 "dhcp4_parser.yy"
                            {
     // This code is executed when we're about to start parsing
@@ -1010,7 +1010,7 @@ namespace isc { namespace dhcp {
 #line 1011 "dhcp4_parser.cc"
     break;
 
-  case 57:
+  case 57: // syntax_map: "{" $@17 global_objects "}"
 #line 402 "dhcp4_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -1023,7 +1023,7 @@ namespace isc { namespace dhcp {
 #line 1024 "dhcp4_parser.cc"
     break;
 
-  case 61:
+  case 61: // $@18: %empty
 #line 420 "dhcp4_parser.yy"
                     {
     // This code is executed when we're about to start parsing
@@ -1038,7 +1038,7 @@ namespace isc { namespace dhcp {
 #line 1039 "dhcp4_parser.cc"
     break;
 
-  case 62:
+  case 62: // dhcp4_object: "Dhcp4" $@18 ":" "{" global_params "}"
 #line 429 "dhcp4_parser.yy"
                                                     {
     // No global parameter is required
@@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp {
 #line 1049 "dhcp4_parser.cc"
     break;
 
-  case 63:
+  case 63: // $@19: %empty
 #line 437 "dhcp4_parser.yy"
                           {
     // Parse the Dhcp4 map
@@ -1058,7 +1058,7 @@ namespace isc { namespace dhcp {
 #line 1059 "dhcp4_parser.cc"
     break;
 
-  case 64:
+  case 64: // sub_dhcp4: "{" $@19 global_params "}"
 #line 441 "dhcp4_parser.yy"
                                {
     // No global parameter is required
@@ -1067,7 +1067,7 @@ namespace isc { namespace dhcp {
 #line 1068 "dhcp4_parser.cc"
     break;
 
-  case 119:
+  case 119: // valid_lifetime: "valid-lifetime" ":" "integer"
 #line 506 "dhcp4_parser.yy"
                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1076,7 +1076,7 @@ namespace isc { namespace dhcp {
 #line 1077 "dhcp4_parser.cc"
     break;
 
-  case 120:
+  case 120: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
 #line 511 "dhcp4_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1085,7 +1085,7 @@ namespace isc { namespace dhcp {
 #line 1086 "dhcp4_parser.cc"
     break;
 
-  case 121:
+  case 121: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
 #line 516 "dhcp4_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp {
 #line 1095 "dhcp4_parser.cc"
     break;
 
-  case 122:
+  case 122: // renew_timer: "renew-timer" ":" "integer"
 #line 521 "dhcp4_parser.yy"
                                        {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1103,7 +1103,7 @@ namespace isc { namespace dhcp {
 #line 1104 "dhcp4_parser.cc"
     break;
 
-  case 123:
+  case 123: // rebind_timer: "rebind-timer" ":" "integer"
 #line 526 "dhcp4_parser.yy"
                                          {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1112,7 +1112,7 @@ namespace isc { namespace dhcp {
 #line 1113 "dhcp4_parser.cc"
     break;
 
-  case 124:
+  case 124: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
 #line 531 "dhcp4_parser.yy"
                                                        {
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1121,7 +1121,7 @@ namespace isc { namespace dhcp {
 #line 1122 "dhcp4_parser.cc"
     break;
 
-  case 125:
+  case 125: // t1_percent: "t1-percent" ":" "floating point"
 #line 536 "dhcp4_parser.yy"
                                    {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1130,7 +1130,7 @@ namespace isc { namespace dhcp {
 #line 1131 "dhcp4_parser.cc"
     break;
 
-  case 126:
+  case 126: // t2_percent: "t2-percent" ":" "floating point"
 #line 541 "dhcp4_parser.yy"
                                    {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1139,7 +1139,7 @@ namespace isc { namespace dhcp {
 #line 1140 "dhcp4_parser.cc"
     break;
 
-  case 127:
+  case 127: // decline_probation_period: "decline-probation-period" ":" "integer"
 #line 546 "dhcp4_parser.yy"
                                                                  {
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1148,7 +1148,7 @@ namespace isc { namespace dhcp {
 #line 1149 "dhcp4_parser.cc"
     break;
 
-  case 128:
+  case 128: // $@20: %empty
 #line 551 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1156,7 +1156,7 @@ namespace isc { namespace dhcp {
 #line 1157 "dhcp4_parser.cc"
     break;
 
-  case 129:
+  case 129: // server_tag: "server-tag" $@20 ":" "constant string"
 #line 553 "dhcp4_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1166,7 +1166,7 @@ namespace isc { namespace dhcp {
 #line 1167 "dhcp4_parser.cc"
     break;
 
-  case 130:
+  case 130: // echo_client_id: "echo-client-id" ":" "boolean"
 #line 559 "dhcp4_parser.yy"
                                              {
     ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1175,7 +1175,7 @@ namespace isc { namespace dhcp {
 #line 1176 "dhcp4_parser.cc"
     break;
 
-  case 131:
+  case 131: // match_client_id: "match-client-id" ":" "boolean"
 #line 564 "dhcp4_parser.yy"
                                                {
     ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1184,7 +1184,7 @@ namespace isc { namespace dhcp {
 #line 1185 "dhcp4_parser.cc"
     break;
 
-  case 132:
+  case 132: // authoritative: "authoritative" ":" "boolean"
 #line 569 "dhcp4_parser.yy"
                                            {
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1193,7 +1193,7 @@ namespace isc { namespace dhcp {
 #line 1194 "dhcp4_parser.cc"
     break;
 
-  case 133:
+  case 133: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
 #line 574 "dhcp4_parser.yy"
                                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1202,7 +1202,7 @@ namespace isc { namespace dhcp {
 #line 1203 "dhcp4_parser.cc"
     break;
 
-  case 134:
+  case 134: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
 #line 579 "dhcp4_parser.yy"
                                                                {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1211,7 +1211,7 @@ namespace isc { namespace dhcp {
 #line 1212 "dhcp4_parser.cc"
     break;
 
-  case 135:
+  case 135: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
 #line 584 "dhcp4_parser.yy"
                                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1220,7 +1220,7 @@ namespace isc { namespace dhcp {
 #line 1221 "dhcp4_parser.cc"
     break;
 
-  case 136:
+  case 136: // $@21: %empty
 #line 589 "dhcp4_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
@@ -1228,7 +1228,7 @@ namespace isc { namespace dhcp {
 #line 1229 "dhcp4_parser.cc"
     break;
 
-  case 137:
+  case 137: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value
 #line 591 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
@@ -1237,7 +1237,7 @@ namespace isc { namespace dhcp {
 #line 1238 "dhcp4_parser.cc"
     break;
 
-  case 138:
+  case 138: // ddns_replace_client_name_value: "when-present"
 #line 597 "dhcp4_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
@@ -1245,7 +1245,7 @@ namespace isc { namespace dhcp {
 #line 1246 "dhcp4_parser.cc"
     break;
 
-  case 139:
+  case 139: // ddns_replace_client_name_value: "never"
 #line 600 "dhcp4_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
@@ -1253,7 +1253,7 @@ namespace isc { namespace dhcp {
 #line 1254 "dhcp4_parser.cc"
     break;
 
-  case 140:
+  case 140: // ddns_replace_client_name_value: "always"
 #line 603 "dhcp4_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
@@ -1261,7 +1261,7 @@ namespace isc { namespace dhcp {
 #line 1262 "dhcp4_parser.cc"
     break;
 
-  case 141:
+  case 141: // ddns_replace_client_name_value: "when-not-present"
 #line 606 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
@@ -1269,7 +1269,7 @@ namespace isc { namespace dhcp {
 #line 1270 "dhcp4_parser.cc"
     break;
 
-  case 142:
+  case 142: // ddns_replace_client_name_value: "boolean"
 #line 609 "dhcp4_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
@@ -1278,7 +1278,7 @@ namespace isc { namespace dhcp {
 #line 1279 "dhcp4_parser.cc"
     break;
 
-  case 143:
+  case 143: // $@22: %empty
 #line 615 "dhcp4_parser.yy"
                                              {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1286,7 +1286,7 @@ namespace isc { namespace dhcp {
 #line 1287 "dhcp4_parser.cc"
     break;
 
-  case 144:
+  case 144: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string"
 #line 617 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1296,7 +1296,7 @@ namespace isc { namespace dhcp {
 #line 1297 "dhcp4_parser.cc"
     break;
 
-  case 145:
+  case 145: // $@23: %empty
 #line 623 "dhcp4_parser.yy"
                                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1304,7 +1304,7 @@ namespace isc { namespace dhcp {
 #line 1305 "dhcp4_parser.cc"
     break;
 
-  case 146:
+  case 146: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string"
 #line 625 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1314,7 +1314,7 @@ namespace isc { namespace dhcp {
 #line 1315 "dhcp4_parser.cc"
     break;
 
-  case 147:
+  case 147: // $@24: %empty
 #line 631 "dhcp4_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1322,7 +1322,7 @@ namespace isc { namespace dhcp {
 #line 1323 "dhcp4_parser.cc"
     break;
 
-  case 148:
+  case 148: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string"
 #line 633 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1332,7 +1332,7 @@ namespace isc { namespace dhcp {
 #line 1333 "dhcp4_parser.cc"
     break;
 
-  case 149:
+  case 149: // $@25: %empty
 #line 639 "dhcp4_parser.yy"
                                                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1340,7 +1340,7 @@ namespace isc { namespace dhcp {
 #line 1341 "dhcp4_parser.cc"
     break;
 
-  case 150:
+  case 150: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string"
 #line 641 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1350,7 +1350,7 @@ namespace isc { namespace dhcp {
 #line 1351 "dhcp4_parser.cc"
     break;
 
-  case 151:
+  case 151: // store_extended_info: "store-extended-info" ":" "boolean"
 #line 647 "dhcp4_parser.yy"
                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1359,7 +1359,7 @@ namespace isc { namespace dhcp {
 #line 1360 "dhcp4_parser.cc"
     break;
 
-  case 152:
+  case 152: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
 #line 652 "dhcp4_parser.yy"
                                                                              {
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1368,7 +1368,7 @@ namespace isc { namespace dhcp {
 #line 1369 "dhcp4_parser.cc"
     break;
 
-  case 153:
+  case 153: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
 #line 657 "dhcp4_parser.yy"
                                                                          {
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1377,7 +1377,7 @@ namespace isc { namespace dhcp {
 #line 1378 "dhcp4_parser.cc"
     break;
 
-  case 154:
+  case 154: // $@26: %empty
 #line 662 "dhcp4_parser.yy"
                                      {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1388,7 +1388,7 @@ namespace isc { namespace dhcp {
 #line 1389 "dhcp4_parser.cc"
     break;
 
-  case 155:
+  case 155: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}"
 #line 667 "dhcp4_parser.yy"
                                                                {
     // No interfaces config param is required
@@ -1398,7 +1398,7 @@ namespace isc { namespace dhcp {
 #line 1399 "dhcp4_parser.cc"
     break;
 
-  case 165:
+  case 165: // $@27: %empty
 #line 686 "dhcp4_parser.yy"
                                 {
     // Parse the interfaces-config map
@@ -1408,7 +1408,7 @@ namespace isc { namespace dhcp {
 #line 1409 "dhcp4_parser.cc"
     break;
 
-  case 166:
+  case 166: // sub_interfaces4: "{" $@27 interfaces_config_params "}"
 #line 690 "dhcp4_parser.yy"
                                           {
     // No interfaces config param is required
@@ -1417,7 +1417,7 @@ namespace isc { namespace dhcp {
 #line 1418 "dhcp4_parser.cc"
     break;
 
-  case 167:
+  case 167: // $@28: %empty
 #line 695 "dhcp4_parser.yy"
                             {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1428,7 +1428,7 @@ namespace isc { namespace dhcp {
 #line 1429 "dhcp4_parser.cc"
     break;
 
-  case 168:
+  case 168: // interfaces_list: "interfaces" $@28 ":" list_strings
 #line 700 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -1437,7 +1437,7 @@ namespace isc { namespace dhcp {
 #line 1438 "dhcp4_parser.cc"
     break;
 
-  case 169:
+  case 169: // $@29: %empty
 #line 705 "dhcp4_parser.yy"
                                    {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
@@ -1445,7 +1445,7 @@ namespace isc { namespace dhcp {
 #line 1446 "dhcp4_parser.cc"
     break;
 
-  case 170:
+  case 170: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type
 #line 707 "dhcp4_parser.yy"
                     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
@@ -1454,19 +1454,19 @@ namespace isc { namespace dhcp {
 #line 1455 "dhcp4_parser.cc"
     break;
 
-  case 171:
+  case 171: // socket_type: "raw"
 #line 712 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1461 "dhcp4_parser.cc"
     break;
 
-  case 172:
+  case 172: // socket_type: "udp"
 #line 713 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1467 "dhcp4_parser.cc"
     break;
 
-  case 173:
+  case 173: // $@30: %empty
 #line 716 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.OUTBOUND_INTERFACE);
@@ -1474,7 +1474,7 @@ namespace isc { namespace dhcp {
 #line 1475 "dhcp4_parser.cc"
     break;
 
-  case 174:
+  case 174: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value
 #line 718 "dhcp4_parser.yy"
                                  {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
@@ -1483,7 +1483,7 @@ namespace isc { namespace dhcp {
 #line 1484 "dhcp4_parser.cc"
     break;
 
-  case 175:
+  case 175: // outbound_interface_value: "same-as-inbound"
 #line 723 "dhcp4_parser.yy"
                                           {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
@@ -1491,7 +1491,7 @@ namespace isc { namespace dhcp {
 #line 1492 "dhcp4_parser.cc"
     break;
 
-  case 176:
+  case 176: // outbound_interface_value: "use-routing"
 #line 725 "dhcp4_parser.yy"
                 {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
@@ -1499,7 +1499,7 @@ namespace isc { namespace dhcp {
 #line 1500 "dhcp4_parser.cc"
     break;
 
-  case 177:
+  case 177: // re_detect: "re-detect" ":" "boolean"
 #line 729 "dhcp4_parser.yy"
                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1508,7 +1508,7 @@ namespace isc { namespace dhcp {
 #line 1509 "dhcp4_parser.cc"
     break;
 
-  case 178:
+  case 178: // $@31: %empty
 #line 735 "dhcp4_parser.yy"
                                {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1519,7 +1519,7 @@ namespace isc { namespace dhcp {
 #line 1520 "dhcp4_parser.cc"
     break;
 
-  case 179:
+  case 179: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
 #line 740 "dhcp4_parser.yy"
                                                           {
     // The type parameter is required
@@ -1530,7 +1530,7 @@ namespace isc { namespace dhcp {
 #line 1531 "dhcp4_parser.cc"
     break;
 
-  case 180:
+  case 180: // $@32: %empty
 #line 747 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1541,7 +1541,7 @@ namespace isc { namespace dhcp {
 #line 1542 "dhcp4_parser.cc"
     break;
 
-  case 181:
+  case 181: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}"
 #line 752 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
@@ -1550,7 +1550,7 @@ namespace isc { namespace dhcp {
 #line 1551 "dhcp4_parser.cc"
     break;
 
-  case 185:
+  case 185: // $@33: %empty
 #line 762 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1558,7 +1558,7 @@ namespace isc { namespace dhcp {
 #line 1559 "dhcp4_parser.cc"
     break;
 
-  case 186:
+  case 186: // lease_checks: "lease-checks" $@33 ":" "constant string"
 #line 764 "dhcp4_parser.yy"
                {
 
@@ -1578,7 +1578,7 @@ namespace isc { namespace dhcp {
 #line 1579 "dhcp4_parser.cc"
     break;
 
-  case 187:
+  case 187: // $@34: %empty
 #line 780 "dhcp4_parser.yy"
                                {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1589,7 +1589,7 @@ namespace isc { namespace dhcp {
 #line 1590 "dhcp4_parser.cc"
     break;
 
-  case 188:
+  case 188: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}"
 #line 785 "dhcp4_parser.yy"
                                                           {
     // The type parameter is required
@@ -1600,7 +1600,7 @@ namespace isc { namespace dhcp {
 #line 1601 "dhcp4_parser.cc"
     break;
 
-  case 189:
+  case 189: // $@35: %empty
 #line 792 "dhcp4_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1611,7 +1611,7 @@ namespace isc { namespace dhcp {
 #line 1612 "dhcp4_parser.cc"
     break;
 
-  case 190:
+  case 190: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]"
 #line 797 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -1620,7 +1620,7 @@ namespace isc { namespace dhcp {
 #line 1621 "dhcp4_parser.cc"
     break;
 
-  case 195:
+  case 195: // $@36: %empty
 #line 810 "dhcp4_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1630,7 +1630,7 @@ namespace isc { namespace dhcp {
 #line 1631 "dhcp4_parser.cc"
     break;
 
-  case 196:
+  case 196: // database: "{" $@36 database_map_params "}"
 #line 814 "dhcp4_parser.yy"
                                      {
     // The type parameter is required
@@ -1640,7 +1640,7 @@ namespace isc { namespace dhcp {
 #line 1641 "dhcp4_parser.cc"
     break;
 
-  case 220:
+  case 220: // $@37: %empty
 #line 847 "dhcp4_parser.yy"
                     {
     ctx.enter(ctx.DATABASE_TYPE);
@@ -1648,7 +1648,7 @@ namespace isc { namespace dhcp {
 #line 1649 "dhcp4_parser.cc"
     break;
 
-  case 221:
+  case 221: // database_type: "type" $@37 ":" db_type
 #line 849 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
@@ -1657,31 +1657,31 @@ namespace isc { namespace dhcp {
 #line 1658 "dhcp4_parser.cc"
     break;
 
-  case 222:
+  case 222: // db_type: "memfile"
 #line 854 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1664 "dhcp4_parser.cc"
     break;
 
-  case 223:
+  case 223: // db_type: "mysql"
 #line 855 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1670 "dhcp4_parser.cc"
     break;
 
-  case 224:
+  case 224: // db_type: "postgresql"
 #line 856 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1676 "dhcp4_parser.cc"
     break;
 
-  case 225:
+  case 225: // db_type: "cql"
 #line 857 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1682 "dhcp4_parser.cc"
     break;
 
-  case 226:
+  case 226: // $@38: %empty
 #line 860 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1689,7 +1689,7 @@ namespace isc { namespace dhcp {
 #line 1690 "dhcp4_parser.cc"
     break;
 
-  case 227:
+  case 227: // user: "user" $@38 ":" "constant string"
 #line 862 "dhcp4_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1699,7 +1699,7 @@ namespace isc { namespace dhcp {
 #line 1700 "dhcp4_parser.cc"
     break;
 
-  case 228:
+  case 228: // $@39: %empty
 #line 868 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1707,7 +1707,7 @@ namespace isc { namespace dhcp {
 #line 1708 "dhcp4_parser.cc"
     break;
 
-  case 229:
+  case 229: // password: "password" $@39 ":" "constant string"
 #line 870 "dhcp4_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1717,7 +1717,7 @@ namespace isc { namespace dhcp {
 #line 1718 "dhcp4_parser.cc"
     break;
 
-  case 230:
+  case 230: // $@40: %empty
 #line 876 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1725,7 +1725,7 @@ namespace isc { namespace dhcp {
 #line 1726 "dhcp4_parser.cc"
     break;
 
-  case 231:
+  case 231: // host: "host" $@40 ":" "constant string"
 #line 878 "dhcp4_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1735,7 +1735,7 @@ namespace isc { namespace dhcp {
 #line 1736 "dhcp4_parser.cc"
     break;
 
-  case 232:
+  case 232: // port: "port" ":" "integer"
 #line 884 "dhcp4_parser.yy"
                          {
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1744,7 +1744,7 @@ namespace isc { namespace dhcp {
 #line 1745 "dhcp4_parser.cc"
     break;
 
-  case 233:
+  case 233: // $@41: %empty
 #line 889 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1752,7 +1752,7 @@ namespace isc { namespace dhcp {
 #line 1753 "dhcp4_parser.cc"
     break;
 
-  case 234:
+  case 234: // name: "name" $@41 ":" "constant string"
 #line 891 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1762,7 +1762,7 @@ namespace isc { namespace dhcp {
 #line 1763 "dhcp4_parser.cc"
     break;
 
-  case 235:
+  case 235: // persist: "persist" ":" "boolean"
 #line 897 "dhcp4_parser.yy"
                                {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1771,7 +1771,7 @@ namespace isc { namespace dhcp {
 #line 1772 "dhcp4_parser.cc"
     break;
 
-  case 236:
+  case 236: // lfc_interval: "lfc-interval" ":" "integer"
 #line 902 "dhcp4_parser.yy"
                                          {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1780,7 +1780,7 @@ namespace isc { namespace dhcp {
 #line 1781 "dhcp4_parser.cc"
     break;
 
-  case 237:
+  case 237: // readonly: "readonly" ":" "boolean"
 #line 907 "dhcp4_parser.yy"
                                  {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1789,7 +1789,7 @@ namespace isc { namespace dhcp {
 #line 1790 "dhcp4_parser.cc"
     break;
 
-  case 238:
+  case 238: // connect_timeout: "connect-timeout" ":" "integer"
 #line 912 "dhcp4_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1798,7 +1798,7 @@ namespace isc { namespace dhcp {
 #line 1799 "dhcp4_parser.cc"
     break;
 
-  case 239:
+  case 239: // request_timeout: "request-timeout" ":" "integer"
 #line 917 "dhcp4_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1807,7 +1807,7 @@ namespace isc { namespace dhcp {
 #line 1808 "dhcp4_parser.cc"
     break;
 
-  case 240:
+  case 240: // tcp_keepalive: "tcp-keepalive" ":" "integer"
 #line 922 "dhcp4_parser.yy"
                                            {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1816,7 +1816,7 @@ namespace isc { namespace dhcp {
 #line 1817 "dhcp4_parser.cc"
     break;
 
-  case 241:
+  case 241: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
 #line 927 "dhcp4_parser.yy"
                                        {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1825,7 +1825,7 @@ namespace isc { namespace dhcp {
 #line 1826 "dhcp4_parser.cc"
     break;
 
-  case 242:
+  case 242: // $@42: %empty
 #line 932 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1833,7 +1833,7 @@ namespace isc { namespace dhcp {
 #line 1834 "dhcp4_parser.cc"
     break;
 
-  case 243:
+  case 243: // contact_points: "contact-points" $@42 ":" "constant string"
 #line 934 "dhcp4_parser.yy"
                {
     ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1843,7 +1843,7 @@ namespace isc { namespace dhcp {
 #line 1844 "dhcp4_parser.cc"
     break;
 
-  case 244:
+  case 244: // $@43: %empty
 #line 940 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1851,7 +1851,7 @@ namespace isc { namespace dhcp {
 #line 1852 "dhcp4_parser.cc"
     break;
 
-  case 245:
+  case 245: // keyspace: "keyspace" $@43 ":" "constant string"
 #line 942 "dhcp4_parser.yy"
                {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1861,7 +1861,7 @@ namespace isc { namespace dhcp {
 #line 1862 "dhcp4_parser.cc"
     break;
 
-  case 246:
+  case 246: // $@44: %empty
 #line 948 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1869,7 +1869,7 @@ namespace isc { namespace dhcp {
 #line 1870 "dhcp4_parser.cc"
     break;
 
-  case 247:
+  case 247: // consistency: "consistency" $@44 ":" "constant string"
 #line 950 "dhcp4_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1879,7 +1879,7 @@ namespace isc { namespace dhcp {
 #line 1880 "dhcp4_parser.cc"
     break;
 
-  case 248:
+  case 248: // $@45: %empty
 #line 956 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1887,7 +1887,7 @@ namespace isc { namespace dhcp {
 #line 1888 "dhcp4_parser.cc"
     break;
 
-  case 249:
+  case 249: // serial_consistency: "serial-consistency" $@45 ":" "constant string"
 #line 958 "dhcp4_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1897,7 +1897,7 @@ namespace isc { namespace dhcp {
 #line 1898 "dhcp4_parser.cc"
     break;
 
-  case 250:
+  case 250: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
 #line 964 "dhcp4_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1906,7 +1906,7 @@ namespace isc { namespace dhcp {
 #line 1907 "dhcp4_parser.cc"
     break;
 
-  case 251:
+  case 251: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
 #line 969 "dhcp4_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1915,7 +1915,7 @@ namespace isc { namespace dhcp {
 #line 1916 "dhcp4_parser.cc"
     break;
 
-  case 252:
+  case 252: // max_row_errors: "max-row-errors" ":" "integer"
 #line 974 "dhcp4_parser.yy"
                                              {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1924,7 +1924,7 @@ namespace isc { namespace dhcp {
 #line 1925 "dhcp4_parser.cc"
     break;
 
-  case 253:
+  case 253: // $@46: %empty
 #line 980 "dhcp4_parser.yy"
                                                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1935,7 +1935,7 @@ namespace isc { namespace dhcp {
 #line 1936 "dhcp4_parser.cc"
     break;
 
-  case 254:
+  case 254: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]"
 #line 985 "dhcp4_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
@@ -1944,7 +1944,7 @@ namespace isc { namespace dhcp {
 #line 1945 "dhcp4_parser.cc"
     break;
 
-  case 262:
+  case 262: // duid_id: "duid"
 #line 1001 "dhcp4_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
@@ -1953,7 +1953,7 @@ namespace isc { namespace dhcp {
 #line 1954 "dhcp4_parser.cc"
     break;
 
-  case 263:
+  case 263: // hw_address_id: "hw-address"
 #line 1006 "dhcp4_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
@@ -1962,7 +1962,7 @@ namespace isc { namespace dhcp {
 #line 1963 "dhcp4_parser.cc"
     break;
 
-  case 264:
+  case 264: // circuit_id: "circuit-id"
 #line 1011 "dhcp4_parser.yy"
                         {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
@@ -1971,7 +1971,7 @@ namespace isc { namespace dhcp {
 #line 1972 "dhcp4_parser.cc"
     break;
 
-  case 265:
+  case 265: // client_id: "client-id"
 #line 1016 "dhcp4_parser.yy"
                       {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
@@ -1980,7 +1980,7 @@ namespace isc { namespace dhcp {
 #line 1981 "dhcp4_parser.cc"
     break;
 
-  case 266:
+  case 266: // flex_id: "flex-id"
 #line 1021 "dhcp4_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
@@ -1989,7 +1989,7 @@ namespace isc { namespace dhcp {
 #line 1990 "dhcp4_parser.cc"
     break;
 
-  case 267:
+  case 267: // $@47: %empty
 #line 1028 "dhcp4_parser.yy"
                                            {
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2000,7 +2000,7 @@ namespace isc { namespace dhcp {
 #line 2001 "dhcp4_parser.cc"
     break;
 
-  case 268:
+  case 268: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}"
 #line 1033 "dhcp4_parser.yy"
                                                              {
     // The enable parameter is required.
@@ -2011,7 +2011,7 @@ namespace isc { namespace dhcp {
 #line 2012 "dhcp4_parser.cc"
     break;
 
-  case 277:
+  case 277: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
 #line 1052 "dhcp4_parser.yy"
                                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2020,7 +2020,7 @@ namespace isc { namespace dhcp {
 #line 2021 "dhcp4_parser.cc"
     break;
 
-  case 278:
+  case 278: // thread_pool_size: "thread-pool-size" ":" "integer"
 #line 1057 "dhcp4_parser.yy"
                                                  {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2029,7 +2029,7 @@ namespace isc { namespace dhcp {
 #line 2030 "dhcp4_parser.cc"
     break;
 
-  case 279:
+  case 279: // packet_queue_size: "packet-queue-size" ":" "integer"
 #line 1062 "dhcp4_parser.yy"
                                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2038,7 +2038,7 @@ namespace isc { namespace dhcp {
 #line 2039 "dhcp4_parser.cc"
     break;
 
-  case 280:
+  case 280: // $@48: %empty
 #line 1067 "dhcp4_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2049,7 +2049,7 @@ namespace isc { namespace dhcp {
 #line 2050 "dhcp4_parser.cc"
     break;
 
-  case 281:
+  case 281: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]"
 #line 1072 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -2058,7 +2058,7 @@ namespace isc { namespace dhcp {
 #line 2059 "dhcp4_parser.cc"
     break;
 
-  case 286:
+  case 286: // $@49: %empty
 #line 1085 "dhcp4_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2068,7 +2068,7 @@ namespace isc { namespace dhcp {
 #line 2069 "dhcp4_parser.cc"
     break;
 
-  case 287:
+  case 287: // hooks_library: "{" $@49 hooks_params "}"
 #line 1089 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
@@ -2078,7 +2078,7 @@ namespace isc { namespace dhcp {
 #line 2079 "dhcp4_parser.cc"
     break;
 
-  case 288:
+  case 288: // $@50: %empty
 #line 1095 "dhcp4_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
@@ -2088,7 +2088,7 @@ namespace isc { namespace dhcp {
 #line 2089 "dhcp4_parser.cc"
     break;
 
-  case 289:
+  case 289: // sub_hooks_library: "{" $@50 hooks_params "}"
 #line 1099 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
@@ -2098,7 +2098,7 @@ namespace isc { namespace dhcp {
 #line 2099 "dhcp4_parser.cc"
     break;
 
-  case 295:
+  case 295: // $@51: %empty
 #line 1114 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2106,7 +2106,7 @@ namespace isc { namespace dhcp {
 #line 2107 "dhcp4_parser.cc"
     break;
 
-  case 296:
+  case 296: // library: "library" $@51 ":" "constant string"
 #line 1116 "dhcp4_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2116,7 +2116,7 @@ namespace isc { namespace dhcp {
 #line 2117 "dhcp4_parser.cc"
     break;
 
-  case 297:
+  case 297: // $@52: %empty
 #line 1122 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2124,7 +2124,7 @@ namespace isc { namespace dhcp {
 #line 2125 "dhcp4_parser.cc"
     break;
 
-  case 298:
+  case 298: // parameters: "parameters" $@52 ":" map_value
 #line 1124 "dhcp4_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
@@ -2133,7 +2133,7 @@ namespace isc { namespace dhcp {
 #line 2134 "dhcp4_parser.cc"
     break;
 
-  case 299:
+  case 299: // $@53: %empty
 #line 1130 "dhcp4_parser.yy"
                                                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2144,7 +2144,7 @@ namespace isc { namespace dhcp {
 #line 2145 "dhcp4_parser.cc"
     break;
 
-  case 300:
+  case 300: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}"
 #line 1135 "dhcp4_parser.yy"
                                                             {
     // No expired lease parameter is required
@@ -2154,7 +2154,7 @@ namespace isc { namespace dhcp {
 #line 2155 "dhcp4_parser.cc"
     break;
 
-  case 309:
+  case 309: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
 #line 1153 "dhcp4_parser.yy"
                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2163,7 +2163,7 @@ namespace isc { namespace dhcp {
 #line 2164 "dhcp4_parser.cc"
     break;
 
-  case 310:
+  case 310: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
 #line 1158 "dhcp4_parser.yy"
                                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2172,7 +2172,7 @@ namespace isc { namespace dhcp {
 #line 2173 "dhcp4_parser.cc"
     break;
 
-  case 311:
+  case 311: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
 #line 1163 "dhcp4_parser.yy"
                                                        {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2181,7 +2181,7 @@ namespace isc { namespace dhcp {
 #line 2182 "dhcp4_parser.cc"
     break;
 
-  case 312:
+  case 312: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
 #line 1168 "dhcp4_parser.yy"
                                                      {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2190,7 +2190,7 @@ namespace isc { namespace dhcp {
 #line 2191 "dhcp4_parser.cc"
     break;
 
-  case 313:
+  case 313: // max_reclaim_time: "max-reclaim-time" ":" "integer"
 #line 1173 "dhcp4_parser.yy"
                                                  {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2199,7 +2199,7 @@ namespace isc { namespace dhcp {
 #line 2200 "dhcp4_parser.cc"
     break;
 
-  case 314:
+  case 314: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
 #line 1178 "dhcp4_parser.yy"
                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2208,7 +2208,7 @@ namespace isc { namespace dhcp {
 #line 2209 "dhcp4_parser.cc"
     break;
 
-  case 315:
+  case 315: // $@54: %empty
 #line 1186 "dhcp4_parser.yy"
                       {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2219,7 +2219,7 @@ namespace isc { namespace dhcp {
 #line 2220 "dhcp4_parser.cc"
     break;
 
-  case 316:
+  case 316: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]"
 #line 1191 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -2228,7 +2228,7 @@ namespace isc { namespace dhcp {
 #line 2229 "dhcp4_parser.cc"
     break;
 
-  case 321:
+  case 321: // $@55: %empty
 #line 1211 "dhcp4_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2238,7 +2238,7 @@ namespace isc { namespace dhcp {
 #line 2239 "dhcp4_parser.cc"
     break;
 
-  case 322:
+  case 322: // subnet4: "{" $@55 subnet4_params "}"
 #line 1215 "dhcp4_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
@@ -2264,7 +2264,7 @@ namespace isc { namespace dhcp {
 #line 2265 "dhcp4_parser.cc"
     break;
 
-  case 323:
+  case 323: // $@56: %empty
 #line 1237 "dhcp4_parser.yy"
                             {
     // Parse the subnet4 list entry map
@@ -2274,7 +2274,7 @@ namespace isc { namespace dhcp {
 #line 2275 "dhcp4_parser.cc"
     break;
 
-  case 324:
+  case 324: // sub_subnet4: "{" $@56 subnet4_params "}"
 #line 1241 "dhcp4_parser.yy"
                                 {
     // The subnet subnet4 parameter is required
@@ -2284,7 +2284,7 @@ namespace isc { namespace dhcp {
 #line 2285 "dhcp4_parser.cc"
     break;
 
-  case 365:
+  case 365: // $@57: %empty
 #line 1293 "dhcp4_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2292,7 +2292,7 @@ namespace isc { namespace dhcp {
 #line 2293 "dhcp4_parser.cc"
     break;
 
-  case 366:
+  case 366: // subnet: "subnet" $@57 ":" "constant string"
 #line 1295 "dhcp4_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2302,7 +2302,7 @@ namespace isc { namespace dhcp {
 #line 2303 "dhcp4_parser.cc"
     break;
 
-  case 367:
+  case 367: // $@58: %empty
 #line 1301 "dhcp4_parser.yy"
                                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2310,7 +2310,7 @@ namespace isc { namespace dhcp {
 #line 2311 "dhcp4_parser.cc"
     break;
 
-  case 368:
+  case 368: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string"
 #line 1303 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2320,7 +2320,7 @@ namespace isc { namespace dhcp {
 #line 2321 "dhcp4_parser.cc"
     break;
 
-  case 369:
+  case 369: // $@59: %empty
 #line 1309 "dhcp4_parser.yy"
                                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2328,7 +2328,7 @@ namespace isc { namespace dhcp {
 #line 2329 "dhcp4_parser.cc"
     break;
 
-  case 370:
+  case 370: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string"
 #line 1311 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2338,7 +2338,7 @@ namespace isc { namespace dhcp {
 #line 2339 "dhcp4_parser.cc"
     break;
 
-  case 371:
+  case 371: // $@60: %empty
 #line 1317 "dhcp4_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2346,7 +2346,7 @@ namespace isc { namespace dhcp {
 #line 2347 "dhcp4_parser.cc"
     break;
 
-  case 372:
+  case 372: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string"
 #line 1319 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2356,7 +2356,7 @@ namespace isc { namespace dhcp {
 #line 2357 "dhcp4_parser.cc"
     break;
 
-  case 373:
+  case 373: // $@61: %empty
 #line 1325 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2364,7 +2364,7 @@ namespace isc { namespace dhcp {
 #line 2365 "dhcp4_parser.cc"
     break;
 
-  case 374:
+  case 374: // interface: "interface" $@61 ":" "constant string"
 #line 1327 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2374,7 +2374,7 @@ namespace isc { namespace dhcp {
 #line 2375 "dhcp4_parser.cc"
     break;
 
-  case 375:
+  case 375: // $@62: %empty
 #line 1333 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2382,7 +2382,7 @@ namespace isc { namespace dhcp {
 #line 2383 "dhcp4_parser.cc"
     break;
 
-  case 376:
+  case 376: // client_class: "client-class" $@62 ":" "constant string"
 #line 1335 "dhcp4_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2392,7 +2392,7 @@ namespace isc { namespace dhcp {
 #line 2393 "dhcp4_parser.cc"
     break;
 
-  case 377:
+  case 377: // $@63: %empty
 #line 1341 "dhcp4_parser.yy"
                                                {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2403,7 +2403,7 @@ namespace isc { namespace dhcp {
 #line 2404 "dhcp4_parser.cc"
     break;
 
-  case 378:
+  case 378: // require_client_classes: "require-client-classes" $@63 ":" list_strings
 #line 1346 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -2412,7 +2412,7 @@ namespace isc { namespace dhcp {
 #line 2413 "dhcp4_parser.cc"
     break;
 
-  case 379:
+  case 379: // $@64: %empty
 #line 1351 "dhcp4_parser.yy"
                                    {
     ctx.enter(ctx.RESERVATION_MODE);
@@ -2420,7 +2420,7 @@ namespace isc { namespace dhcp {
 #line 2421 "dhcp4_parser.cc"
     break;
 
-  case 380:
+  case 380: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
 #line 1353 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
@@ -2429,31 +2429,31 @@ namespace isc { namespace dhcp {
 #line 2430 "dhcp4_parser.cc"
     break;
 
-  case 381:
+  case 381: // hr_mode: "disabled"
 #line 1358 "dhcp4_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 2436 "dhcp4_parser.cc"
     break;
 
-  case 382:
+  case 382: // hr_mode: "out-of-pool"
 #line 1359 "dhcp4_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 2442 "dhcp4_parser.cc"
     break;
 
-  case 383:
+  case 383: // hr_mode: "global"
 #line 1360 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
 #line 2448 "dhcp4_parser.cc"
     break;
 
-  case 384:
+  case 384: // hr_mode: "all"
 #line 1361 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 2454 "dhcp4_parser.cc"
     break;
 
-  case 385:
+  case 385: // id: "id" ":" "integer"
 #line 1364 "dhcp4_parser.yy"
                      {
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2462,7 +2462,7 @@ namespace isc { namespace dhcp {
 #line 2463 "dhcp4_parser.cc"
     break;
 
-  case 386:
+  case 386: // $@65: %empty
 #line 1371 "dhcp4_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2473,7 +2473,7 @@ namespace isc { namespace dhcp {
 #line 2474 "dhcp4_parser.cc"
     break;
 
-  case 387:
+  case 387: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
 #line 1376 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
@@ -2482,7 +2482,7 @@ namespace isc { namespace dhcp {
 #line 2483 "dhcp4_parser.cc"
     break;
 
-  case 392:
+  case 392: // $@66: %empty
 #line 1391 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2492,7 +2492,7 @@ namespace isc { namespace dhcp {
 #line 2493 "dhcp4_parser.cc"
     break;
 
-  case 393:
+  case 393: // shared_network: "{" $@66 shared_network_params "}"
 #line 1395 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
@@ -2500,7 +2500,7 @@ namespace isc { namespace dhcp {
 #line 2501 "dhcp4_parser.cc"
     break;
 
-  case 429:
+  case 429: // $@67: %empty
 #line 1442 "dhcp4_parser.yy"
                             {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2511,7 +2511,7 @@ namespace isc { namespace dhcp {
 #line 2512 "dhcp4_parser.cc"
     break;
 
-  case 430:
+  case 430: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
 #line 1447 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
@@ -2520,7 +2520,7 @@ namespace isc { namespace dhcp {
 #line 2521 "dhcp4_parser.cc"
     break;
 
-  case 431:
+  case 431: // $@68: %empty
 #line 1455 "dhcp4_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2529,7 +2529,7 @@ namespace isc { namespace dhcp {
 #line 2530 "dhcp4_parser.cc"
     break;
 
-  case 432:
+  case 432: // sub_option_def_list: "{" $@68 option_def_list "}"
 #line 1458 "dhcp4_parser.yy"
                                  {
     // parsing completed
@@ -2537,7 +2537,7 @@ namespace isc { namespace dhcp {
 #line 2538 "dhcp4_parser.cc"
     break;
 
-  case 437:
+  case 437: // $@69: %empty
 #line 1474 "dhcp4_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2547,7 +2547,7 @@ namespace isc { namespace dhcp {
 #line 2548 "dhcp4_parser.cc"
     break;
 
-  case 438:
+  case 438: // option_def_entry: "{" $@69 option_def_params "}"
 #line 1478 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
@@ -2559,7 +2559,7 @@ namespace isc { namespace dhcp {
 #line 2560 "dhcp4_parser.cc"
     break;
 
-  case 439:
+  case 439: // $@70: %empty
 #line 1489 "dhcp4_parser.yy"
                                {
     // Parse the option-def list entry map
@@ -2569,7 +2569,7 @@ namespace isc { namespace dhcp {
 #line 2570 "dhcp4_parser.cc"
     break;
 
-  case 440:
+  case 440: // sub_option_def: "{" $@70 option_def_params "}"
 #line 1493 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
@@ -2581,7 +2581,7 @@ namespace isc { namespace dhcp {
 #line 2582 "dhcp4_parser.cc"
     break;
 
-  case 456:
+  case 456: // code: "code" ":" "integer"
 #line 1525 "dhcp4_parser.yy"
                          {
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2590,7 +2590,7 @@ namespace isc { namespace dhcp {
 #line 2591 "dhcp4_parser.cc"
     break;
 
-  case 458:
+  case 458: // $@71: %empty
 #line 1532 "dhcp4_parser.yy"
                       {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2598,7 +2598,7 @@ namespace isc { namespace dhcp {
 #line 2599 "dhcp4_parser.cc"
     break;
 
-  case 459:
+  case 459: // option_def_type: "type" $@71 ":" "constant string"
 #line 1534 "dhcp4_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2608,7 +2608,7 @@ namespace isc { namespace dhcp {
 #line 2609 "dhcp4_parser.cc"
     break;
 
-  case 460:
+  case 460: // $@72: %empty
 #line 1540 "dhcp4_parser.yy"
                                       {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2616,7 +2616,7 @@ namespace isc { namespace dhcp {
 #line 2617 "dhcp4_parser.cc"
     break;
 
-  case 461:
+  case 461: // option_def_record_types: "record-types" $@72 ":" "constant string"
 #line 1542 "dhcp4_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2626,7 +2626,7 @@ namespace isc { namespace dhcp {
 #line 2627 "dhcp4_parser.cc"
     break;
 
-  case 462:
+  case 462: // $@73: %empty
 #line 1548 "dhcp4_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2634,7 +2634,7 @@ namespace isc { namespace dhcp {
 #line 2635 "dhcp4_parser.cc"
     break;
 
-  case 463:
+  case 463: // space: "space" $@73 ":" "constant string"
 #line 1550 "dhcp4_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2644,7 +2644,7 @@ namespace isc { namespace dhcp {
 #line 2645 "dhcp4_parser.cc"
     break;
 
-  case 465:
+  case 465: // $@74: %empty
 #line 1558 "dhcp4_parser.yy"
                                     {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2652,7 +2652,7 @@ namespace isc { namespace dhcp {
 #line 2653 "dhcp4_parser.cc"
     break;
 
-  case 466:
+  case 466: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
 #line 1560 "dhcp4_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2662,7 +2662,7 @@ namespace isc { namespace dhcp {
 #line 2663 "dhcp4_parser.cc"
     break;
 
-  case 467:
+  case 467: // option_def_array: "array" ":" "boolean"
 #line 1566 "dhcp4_parser.yy"
                                       {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2671,7 +2671,7 @@ namespace isc { namespace dhcp {
 #line 2672 "dhcp4_parser.cc"
     break;
 
-  case 468:
+  case 468: // $@75: %empty
 #line 1575 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2682,7 +2682,7 @@ namespace isc { namespace dhcp {
 #line 2683 "dhcp4_parser.cc"
     break;
 
-  case 469:
+  case 469: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
 #line 1580 "dhcp4_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
@@ -2691,7 +2691,7 @@ namespace isc { namespace dhcp {
 #line 2692 "dhcp4_parser.cc"
     break;
 
-  case 474:
+  case 474: // $@76: %empty
 #line 1599 "dhcp4_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2701,7 +2701,7 @@ namespace isc { namespace dhcp {
 #line 2702 "dhcp4_parser.cc"
     break;
 
-  case 475:
+  case 475: // option_data_entry: "{" $@76 option_data_params "}"
 #line 1603 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
@@ -2710,7 +2710,7 @@ namespace isc { namespace dhcp {
 #line 2711 "dhcp4_parser.cc"
     break;
 
-  case 476:
+  case 476: // $@77: %empty
 #line 1611 "dhcp4_parser.yy"
                                 {
     // Parse the option-data list entry map
@@ -2720,7 +2720,7 @@ namespace isc { namespace dhcp {
 #line 2721 "dhcp4_parser.cc"
     break;
 
-  case 477:
+  case 477: // sub_option_data: "{" $@77 option_data_params "}"
 #line 1615 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
@@ -2729,7 +2729,7 @@ namespace isc { namespace dhcp {
 #line 2730 "dhcp4_parser.cc"
     break;
 
-  case 492:
+  case 492: // $@78: %empty
 #line 1648 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2737,7 +2737,7 @@ namespace isc { namespace dhcp {
 #line 2738 "dhcp4_parser.cc"
     break;
 
-  case 493:
+  case 493: // option_data_data: "data" $@78 ":" "constant string"
 #line 1650 "dhcp4_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2747,7 +2747,7 @@ namespace isc { namespace dhcp {
 #line 2748 "dhcp4_parser.cc"
     break;
 
-  case 496:
+  case 496: // option_data_csv_format: "csv-format" ":" "boolean"
 #line 1660 "dhcp4_parser.yy"
                                                  {
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2756,7 +2756,7 @@ namespace isc { namespace dhcp {
 #line 2757 "dhcp4_parser.cc"
     break;
 
-  case 497:
+  case 497: // option_data_always_send: "always-send" ":" "boolean"
 #line 1665 "dhcp4_parser.yy"
                                                    {
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2765,7 +2765,7 @@ namespace isc { namespace dhcp {
 #line 2766 "dhcp4_parser.cc"
     break;
 
-  case 498:
+  case 498: // $@79: %empty
 #line 1673 "dhcp4_parser.yy"
                   {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2776,7 +2776,7 @@ namespace isc { namespace dhcp {
 #line 2777 "dhcp4_parser.cc"
     break;
 
-  case 499:
+  case 499: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
 #line 1678 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
@@ -2785,7 +2785,7 @@ namespace isc { namespace dhcp {
 #line 2786 "dhcp4_parser.cc"
     break;
 
-  case 504:
+  case 504: // $@80: %empty
 #line 1693 "dhcp4_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2795,7 +2795,7 @@ namespace isc { namespace dhcp {
 #line 2796 "dhcp4_parser.cc"
     break;
 
-  case 505:
+  case 505: // pool_list_entry: "{" $@80 pool_params "}"
 #line 1697 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
@@ -2805,7 +2805,7 @@ namespace isc { namespace dhcp {
 #line 2806 "dhcp4_parser.cc"
     break;
 
-  case 506:
+  case 506: // $@81: %empty
 #line 1703 "dhcp4_parser.yy"
                           {
     // Parse the pool list entry map
@@ -2815,7 +2815,7 @@ namespace isc { namespace dhcp {
 #line 2816 "dhcp4_parser.cc"
     break;
 
-  case 507:
+  case 507: // sub_pool4: "{" $@81 pool_params "}"
 #line 1707 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
@@ -2825,7 +2825,7 @@ namespace isc { namespace dhcp {
 #line 2826 "dhcp4_parser.cc"
     break;
 
-  case 517:
+  case 517: // $@82: %empty
 #line 1726 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2833,7 +2833,7 @@ namespace isc { namespace dhcp {
 #line 2834 "dhcp4_parser.cc"
     break;
 
-  case 518:
+  case 518: // pool_entry: "pool" $@82 ":" "constant string"
 #line 1728 "dhcp4_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2843,7 +2843,7 @@ namespace isc { namespace dhcp {
 #line 2844 "dhcp4_parser.cc"
     break;
 
-  case 519:
+  case 519: // $@83: %empty
 #line 1734 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2851,7 +2851,7 @@ namespace isc { namespace dhcp {
 #line 2852 "dhcp4_parser.cc"
     break;
 
-  case 520:
+  case 520: // user_context: "user-context" $@83 ":" map_value
 #line 1736 "dhcp4_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -2878,7 +2878,7 @@ namespace isc { namespace dhcp {
 #line 2879 "dhcp4_parser.cc"
     break;
 
-  case 521:
+  case 521: // $@84: %empty
 #line 1759 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2886,7 +2886,7 @@ namespace isc { namespace dhcp {
 #line 2887 "dhcp4_parser.cc"
     break;
 
-  case 522:
+  case 522: // comment: "comment" $@84 ":" "constant string"
 #line 1761 "dhcp4_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -2915,7 +2915,7 @@ namespace isc { namespace dhcp {
 #line 2916 "dhcp4_parser.cc"
     break;
 
-  case 523:
+  case 523: // $@85: %empty
 #line 1789 "dhcp4_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2926,7 +2926,7 @@ namespace isc { namespace dhcp {
 #line 2927 "dhcp4_parser.cc"
     break;
 
-  case 524:
+  case 524: // reservations: "reservations" $@85 ":" "[" reservations_list "]"
 #line 1794 "dhcp4_parser.yy"
                                                           {
     ctx.stack_.pop_back();
@@ -2935,7 +2935,7 @@ namespace isc { namespace dhcp {
 #line 2936 "dhcp4_parser.cc"
     break;
 
-  case 529:
+  case 529: // $@86: %empty
 #line 1807 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2945,7 +2945,7 @@ namespace isc { namespace dhcp {
 #line 2946 "dhcp4_parser.cc"
     break;
 
-  case 530:
+  case 530: // reservation: "{" $@86 reservation_params "}"
 #line 1811 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
@@ -2954,7 +2954,7 @@ namespace isc { namespace dhcp {
 #line 2955 "dhcp4_parser.cc"
     break;
 
-  case 531:
+  case 531: // $@87: %empty
 #line 1816 "dhcp4_parser.yy"
                                 {
     // Parse the reservations list entry map
@@ -2964,7 +2964,7 @@ namespace isc { namespace dhcp {
 #line 2965 "dhcp4_parser.cc"
     break;
 
-  case 532:
+  case 532: // sub_reservation: "{" $@87 reservation_params "}"
 #line 1820 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
@@ -2973,7 +2973,7 @@ namespace isc { namespace dhcp {
 #line 2974 "dhcp4_parser.cc"
     break;
 
-  case 552:
+  case 552: // $@88: %empty
 #line 1851 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2981,7 +2981,7 @@ namespace isc { namespace dhcp {
 #line 2982 "dhcp4_parser.cc"
     break;
 
-  case 553:
+  case 553: // next_server: "next-server" $@88 ":" "constant string"
 #line 1853 "dhcp4_parser.yy"
                {
     ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2991,7 +2991,7 @@ namespace isc { namespace dhcp {
 #line 2992 "dhcp4_parser.cc"
     break;
 
-  case 554:
+  case 554: // $@89: %empty
 #line 1859 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2999,7 +2999,7 @@ namespace isc { namespace dhcp {
 #line 3000 "dhcp4_parser.cc"
     break;
 
-  case 555:
+  case 555: // server_hostname: "server-hostname" $@89 ":" "constant string"
 #line 1861 "dhcp4_parser.yy"
                {
     ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3009,7 +3009,7 @@ namespace isc { namespace dhcp {
 #line 3010 "dhcp4_parser.cc"
     break;
 
-  case 556:
+  case 556: // $@90: %empty
 #line 1867 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3017,7 +3017,7 @@ namespace isc { namespace dhcp {
 #line 3018 "dhcp4_parser.cc"
     break;
 
-  case 557:
+  case 557: // boot_file_name: "boot-file-name" $@90 ":" "constant string"
 #line 1869 "dhcp4_parser.yy"
                {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3027,7 +3027,7 @@ namespace isc { namespace dhcp {
 #line 3028 "dhcp4_parser.cc"
     break;
 
-  case 558:
+  case 558: // $@91: %empty
 #line 1875 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3035,7 +3035,7 @@ namespace isc { namespace dhcp {
 #line 3036 "dhcp4_parser.cc"
     break;
 
-  case 559:
+  case 559: // ip_address: "ip-address" $@91 ":" "constant string"
 #line 1877 "dhcp4_parser.yy"
                {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3045,7 +3045,7 @@ namespace isc { namespace dhcp {
 #line 3046 "dhcp4_parser.cc"
     break;
 
-  case 560:
+  case 560: // $@92: %empty
 #line 1883 "dhcp4_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3056,7 +3056,7 @@ namespace isc { namespace dhcp {
 #line 3057 "dhcp4_parser.cc"
     break;
 
-  case 561:
+  case 561: // ip_addresses: "ip-addresses" $@92 ":" list_strings
 #line 1888 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -3065,7 +3065,7 @@ namespace isc { namespace dhcp {
 #line 3066 "dhcp4_parser.cc"
     break;
 
-  case 562:
+  case 562: // $@93: %empty
 #line 1893 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3073,7 +3073,7 @@ namespace isc { namespace dhcp {
 #line 3074 "dhcp4_parser.cc"
     break;
 
-  case 563:
+  case 563: // duid: "duid" $@93 ":" "constant string"
 #line 1895 "dhcp4_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3083,7 +3083,7 @@ namespace isc { namespace dhcp {
 #line 3084 "dhcp4_parser.cc"
     break;
 
-  case 564:
+  case 564: // $@94: %empty
 #line 1901 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3091,7 +3091,7 @@ namespace isc { namespace dhcp {
 #line 3092 "dhcp4_parser.cc"
     break;
 
-  case 565:
+  case 565: // hw_address: "hw-address" $@94 ":" "constant string"
 #line 1903 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3101,7 +3101,7 @@ namespace isc { namespace dhcp {
 #line 3102 "dhcp4_parser.cc"
     break;
 
-  case 566:
+  case 566: // $@95: %empty
 #line 1909 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3109,7 +3109,7 @@ namespace isc { namespace dhcp {
 #line 3110 "dhcp4_parser.cc"
     break;
 
-  case 567:
+  case 567: // client_id_value: "client-id" $@95 ":" "constant string"
 #line 1911 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3119,7 +3119,7 @@ namespace isc { namespace dhcp {
 #line 3120 "dhcp4_parser.cc"
     break;
 
-  case 568:
+  case 568: // $@96: %empty
 #line 1917 "dhcp4_parser.yy"
                              {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3127,7 +3127,7 @@ namespace isc { namespace dhcp {
 #line 3128 "dhcp4_parser.cc"
     break;
 
-  case 569:
+  case 569: // circuit_id_value: "circuit-id" $@96 ":" "constant string"
 #line 1919 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3137,7 +3137,7 @@ namespace isc { namespace dhcp {
 #line 3138 "dhcp4_parser.cc"
     break;
 
-  case 570:
+  case 570: // $@97: %empty
 #line 1925 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3145,7 +3145,7 @@ namespace isc { namespace dhcp {
 #line 3146 "dhcp4_parser.cc"
     break;
 
-  case 571:
+  case 571: // flex_id_value: "flex-id" $@97 ":" "constant string"
 #line 1927 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3155,7 +3155,7 @@ namespace isc { namespace dhcp {
 #line 3156 "dhcp4_parser.cc"
     break;
 
-  case 572:
+  case 572: // $@98: %empty
 #line 1933 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3163,7 +3163,7 @@ namespace isc { namespace dhcp {
 #line 3164 "dhcp4_parser.cc"
     break;
 
-  case 573:
+  case 573: // hostname: "hostname" $@98 ":" "constant string"
 #line 1935 "dhcp4_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3173,7 +3173,7 @@ namespace isc { namespace dhcp {
 #line 3174 "dhcp4_parser.cc"
     break;
 
-  case 574:
+  case 574: // $@99: %empty
 #line 1941 "dhcp4_parser.yy"
                                            {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3184,7 +3184,7 @@ namespace isc { namespace dhcp {
 #line 3185 "dhcp4_parser.cc"
     break;
 
-  case 575:
+  case 575: // reservation_client_classes: "client-classes" $@99 ":" list_strings
 #line 1946 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -3193,7 +3193,7 @@ namespace isc { namespace dhcp {
 #line 3194 "dhcp4_parser.cc"
     break;
 
-  case 576:
+  case 576: // $@100: %empty
 #line 1954 "dhcp4_parser.yy"
              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3204,7 +3204,7 @@ namespace isc { namespace dhcp {
 #line 3205 "dhcp4_parser.cc"
     break;
 
-  case 577:
+  case 577: // relay: "relay" $@100 ":" "{" relay_map "}"
 #line 1959 "dhcp4_parser.yy"
                                                 {
     ctx.stack_.pop_back();
@@ -3213,7 +3213,7 @@ namespace isc { namespace dhcp {
 #line 3214 "dhcp4_parser.cc"
     break;
 
-  case 580:
+  case 580: // $@101: %empty
 #line 1971 "dhcp4_parser.yy"
                                {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3224,7 +3224,7 @@ namespace isc { namespace dhcp {
 #line 3225 "dhcp4_parser.cc"
     break;
 
-  case 581:
+  case 581: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]"
 #line 1976 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -3233,7 +3233,7 @@ namespace isc { namespace dhcp {
 #line 3234 "dhcp4_parser.cc"
     break;
 
-  case 584:
+  case 584: // $@102: %empty
 #line 1985 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3243,7 +3243,7 @@ namespace isc { namespace dhcp {
 #line 3244 "dhcp4_parser.cc"
     break;
 
-  case 585:
+  case 585: // client_class_entry: "{" $@102 client_class_params "}"
 #line 1989 "dhcp4_parser.yy"
                                      {
     // The name client class parameter is required.
@@ -3253,7 +3253,7 @@ namespace isc { namespace dhcp {
 #line 3254 "dhcp4_parser.cc"
     break;
 
-  case 602:
+  case 602: // $@103: %empty
 #line 2018 "dhcp4_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3261,7 +3261,7 @@ namespace isc { namespace dhcp {
 #line 3262 "dhcp4_parser.cc"
     break;
 
-  case 603:
+  case 603: // client_class_test: "test" $@103 ":" "constant string"
 #line 2020 "dhcp4_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3271,7 +3271,7 @@ namespace isc { namespace dhcp {
 #line 3272 "dhcp4_parser.cc"
     break;
 
-  case 604:
+  case 604: // only_if_required: "only-if-required" ":" "boolean"
 #line 2026 "dhcp4_parser.yy"
                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3280,7 +3280,7 @@ namespace isc { namespace dhcp {
 #line 3281 "dhcp4_parser.cc"
     break;
 
-  case 605:
+  case 605: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
 #line 2033 "dhcp4_parser.yy"
                                          {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3289,7 +3289,7 @@ namespace isc { namespace dhcp {
 #line 3290 "dhcp4_parser.cc"
     break;
 
-  case 606:
+  case 606: // $@104: %empty
 #line 2040 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3300,7 +3300,7 @@ namespace isc { namespace dhcp {
 #line 3301 "dhcp4_parser.cc"
     break;
 
-  case 607:
+  case 607: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}"
 #line 2045 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -3309,7 +3309,7 @@ namespace isc { namespace dhcp {
 #line 3310 "dhcp4_parser.cc"
     break;
 
-  case 615:
+  case 615: // $@105: %empty
 #line 2061 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3317,7 +3317,7 @@ namespace isc { namespace dhcp {
 #line 3318 "dhcp4_parser.cc"
     break;
 
-  case 616:
+  case 616: // control_socket_type: "socket-type" $@105 ":" "constant string"
 #line 2063 "dhcp4_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3327,7 +3327,7 @@ namespace isc { namespace dhcp {
 #line 3328 "dhcp4_parser.cc"
     break;
 
-  case 617:
+  case 617: // $@106: %empty
 #line 2069 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3335,7 +3335,7 @@ namespace isc { namespace dhcp {
 #line 3336 "dhcp4_parser.cc"
     break;
 
-  case 618:
+  case 618: // control_socket_name: "socket-name" $@106 ":" "constant string"
 #line 2071 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3345,7 +3345,7 @@ namespace isc { namespace dhcp {
 #line 3346 "dhcp4_parser.cc"
     break;
 
-  case 619:
+  case 619: // $@107: %empty
 #line 2080 "dhcp4_parser.yy"
                                        {
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3356,7 +3356,7 @@ namespace isc { namespace dhcp {
 #line 3357 "dhcp4_parser.cc"
     break;
 
-  case 620:
+  case 620: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}"
 #line 2085 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
@@ -3367,7 +3367,7 @@ namespace isc { namespace dhcp {
 #line 3368 "dhcp4_parser.cc"
     break;
 
-  case 629:
+  case 629: // enable_queue: "enable-queue" ":" "boolean"
 #line 2104 "dhcp4_parser.yy"
                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3376,7 +3376,7 @@ namespace isc { namespace dhcp {
 #line 3377 "dhcp4_parser.cc"
     break;
 
-  case 630:
+  case 630: // $@108: %empty
 #line 2109 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3384,7 +3384,7 @@ namespace isc { namespace dhcp {
 #line 3385 "dhcp4_parser.cc"
     break;
 
-  case 631:
+  case 631: // queue_type: "queue-type" $@108 ":" "constant string"
 #line 2111 "dhcp4_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3394,7 +3394,7 @@ namespace isc { namespace dhcp {
 #line 3395 "dhcp4_parser.cc"
     break;
 
-  case 632:
+  case 632: // capacity: "capacity" ":" "integer"
 #line 2117 "dhcp4_parser.yy"
                                  {
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3403,7 +3403,7 @@ namespace isc { namespace dhcp {
 #line 3404 "dhcp4_parser.cc"
     break;
 
-  case 633:
+  case 633: // $@109: %empty
 #line 2122 "dhcp4_parser.yy"
                             {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3411,7 +3411,7 @@ namespace isc { namespace dhcp {
 #line 3412 "dhcp4_parser.cc"
     break;
 
-  case 634:
+  case 634: // arbitrary_map_entry: "constant string" $@109 ":" value
 #line 2124 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -3420,7 +3420,7 @@ namespace isc { namespace dhcp {
 #line 3421 "dhcp4_parser.cc"
     break;
 
-  case 635:
+  case 635: // $@110: %empty
 #line 2131 "dhcp4_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3431,7 +3431,7 @@ namespace isc { namespace dhcp {
 #line 3432 "dhcp4_parser.cc"
     break;
 
-  case 636:
+  case 636: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}"
 #line 2136 "dhcp4_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
@@ -3442,7 +3442,7 @@ namespace isc { namespace dhcp {
 #line 3443 "dhcp4_parser.cc"
     break;
 
-  case 637:
+  case 637: // $@111: %empty
 #line 2143 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
@@ -3452,7 +3452,7 @@ namespace isc { namespace dhcp {
 #line 3453 "dhcp4_parser.cc"
     break;
 
-  case 638:
+  case 638: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}"
 #line 2147 "dhcp4_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
@@ -3462,7 +3462,7 @@ namespace isc { namespace dhcp {
 #line 3463 "dhcp4_parser.cc"
     break;
 
-  case 659:
+  case 659: // enable_updates: "enable-updates" ":" "boolean"
 #line 2177 "dhcp4_parser.yy"
                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3471,7 +3471,7 @@ namespace isc { namespace dhcp {
 #line 3472 "dhcp4_parser.cc"
     break;
 
-  case 660:
+  case 660: // $@112: %empty
 #line 2182 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3479,7 +3479,7 @@ namespace isc { namespace dhcp {
 #line 3480 "dhcp4_parser.cc"
     break;
 
-  case 661:
+  case 661: // server_ip: "server-ip" $@112 ":" "constant string"
 #line 2184 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3489,7 +3489,7 @@ namespace isc { namespace dhcp {
 #line 3490 "dhcp4_parser.cc"
     break;
 
-  case 662:
+  case 662: // server_port: "server-port" ":" "integer"
 #line 2190 "dhcp4_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3498,7 +3498,7 @@ namespace isc { namespace dhcp {
 #line 3499 "dhcp4_parser.cc"
     break;
 
-  case 663:
+  case 663: // $@113: %empty
 #line 2195 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3506,7 +3506,7 @@ namespace isc { namespace dhcp {
 #line 3507 "dhcp4_parser.cc"
     break;
 
-  case 664:
+  case 664: // sender_ip: "sender-ip" $@113 ":" "constant string"
 #line 2197 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3516,7 +3516,7 @@ namespace isc { namespace dhcp {
 #line 3517 "dhcp4_parser.cc"
     break;
 
-  case 665:
+  case 665: // sender_port: "sender-port" ":" "integer"
 #line 2203 "dhcp4_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3525,7 +3525,7 @@ namespace isc { namespace dhcp {
 #line 3526 "dhcp4_parser.cc"
     break;
 
-  case 666:
+  case 666: // max_queue_size: "max-queue-size" ":" "integer"
 #line 2208 "dhcp4_parser.yy"
                                              {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3534,7 +3534,7 @@ namespace isc { namespace dhcp {
 #line 3535 "dhcp4_parser.cc"
     break;
 
-  case 667:
+  case 667: // $@114: %empty
 #line 2213 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -3542,7 +3542,7 @@ namespace isc { namespace dhcp {
 #line 3543 "dhcp4_parser.cc"
     break;
 
-  case 668:
+  case 668: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value
 #line 2215 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
@@ -3551,19 +3551,19 @@ namespace isc { namespace dhcp {
 #line 3552 "dhcp4_parser.cc"
     break;
 
-  case 669:
+  case 669: // ncr_protocol_value: "udp"
 #line 2221 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 3558 "dhcp4_parser.cc"
     break;
 
-  case 670:
+  case 670: // ncr_protocol_value: "tcp"
 #line 2222 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 3564 "dhcp4_parser.cc"
     break;
 
-  case 671:
+  case 671: // $@115: %empty
 #line 2225 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
@@ -3571,7 +3571,7 @@ namespace isc { namespace dhcp {
 #line 3572 "dhcp4_parser.cc"
     break;
 
-  case 672:
+  case 672: // ncr_format: "ncr-format" $@115 ":" "JSON"
 #line 2227 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
@@ -3581,7 +3581,7 @@ namespace isc { namespace dhcp {
 #line 3582 "dhcp4_parser.cc"
     break;
 
-  case 673:
+  case 673: // $@116: %empty
 #line 2234 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3589,7 +3589,7 @@ namespace isc { namespace dhcp {
 #line 3590 "dhcp4_parser.cc"
     break;
 
-  case 674:
+  case 674: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
 #line 2236 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3599,7 +3599,7 @@ namespace isc { namespace dhcp {
 #line 3600 "dhcp4_parser.cc"
     break;
 
-  case 675:
+  case 675: // dep_override_no_update: "override-no-update" ":" "boolean"
 #line 2243 "dhcp4_parser.yy"
                                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3608,7 +3608,7 @@ namespace isc { namespace dhcp {
 #line 3609 "dhcp4_parser.cc"
     break;
 
-  case 676:
+  case 676: // dep_override_client_update: "override-client-update" ":" "boolean"
 #line 2249 "dhcp4_parser.yy"
                                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3617,7 +3617,7 @@ namespace isc { namespace dhcp {
 #line 3618 "dhcp4_parser.cc"
     break;
 
-  case 677:
+  case 677: // $@117: %empty
 #line 2255 "dhcp4_parser.yy"
                                              {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
@@ -3625,7 +3625,7 @@ namespace isc { namespace dhcp {
 #line 3626 "dhcp4_parser.cc"
     break;
 
-  case 678:
+  case 678: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value
 #line 2257 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
@@ -3634,7 +3634,7 @@ namespace isc { namespace dhcp {
 #line 3635 "dhcp4_parser.cc"
     break;
 
-  case 679:
+  case 679: // $@118: %empty
 #line 2263 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3642,7 +3642,7 @@ namespace isc { namespace dhcp {
 #line 3643 "dhcp4_parser.cc"
     break;
 
-  case 680:
+  case 680: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string"
 #line 2265 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3652,7 +3652,7 @@ namespace isc { namespace dhcp {
 #line 3653 "dhcp4_parser.cc"
     break;
 
-  case 681:
+  case 681: // $@119: %empty
 #line 2272 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3660,7 +3660,7 @@ namespace isc { namespace dhcp {
 #line 3661 "dhcp4_parser.cc"
     break;
 
-  case 682:
+  case 682: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string"
 #line 2274 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3670,7 +3670,7 @@ namespace isc { namespace dhcp {
 #line 3671 "dhcp4_parser.cc"
     break;
 
-  case 683:
+  case 683: // $@120: %empty
 #line 2281 "dhcp4_parser.yy"
                                                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3678,7 +3678,7 @@ namespace isc { namespace dhcp {
 #line 3679 "dhcp4_parser.cc"
     break;
 
-  case 684:
+  case 684: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string"
 #line 2283 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3688,7 +3688,7 @@ namespace isc { namespace dhcp {
 #line 3689 "dhcp4_parser.cc"
     break;
 
-  case 685:
+  case 685: // $@121: %empty
 #line 2292 "dhcp4_parser.yy"
                                {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3699,7 +3699,7 @@ namespace isc { namespace dhcp {
 #line 3700 "dhcp4_parser.cc"
     break;
 
-  case 686:
+  case 686: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
 #line 2297 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
@@ -3709,7 +3709,7 @@ namespace isc { namespace dhcp {
 #line 3710 "dhcp4_parser.cc"
     break;
 
-  case 687:
+  case 687: // $@122: %empty
 #line 2303 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
@@ -3719,7 +3719,7 @@ namespace isc { namespace dhcp {
 #line 3720 "dhcp4_parser.cc"
     break;
 
-  case 688:
+  case 688: // sub_config_control: "{" $@122 config_control_params "}"
 #line 2307 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
@@ -3728,7 +3728,7 @@ namespace isc { namespace dhcp {
 #line 3729 "dhcp4_parser.cc"
     break;
 
-  case 693:
+  case 693: // $@123: %empty
 #line 2322 "dhcp4_parser.yy"
                                    {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3739,7 +3739,7 @@ namespace isc { namespace dhcp {
 #line 3740 "dhcp4_parser.cc"
     break;
 
-  case 694:
+  case 694: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
 #line 2327 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -3748,7 +3748,7 @@ namespace isc { namespace dhcp {
 #line 3749 "dhcp4_parser.cc"
     break;
 
-  case 695:
+  case 695: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
 #line 2332 "dhcp4_parser.yy"
                                                              {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3757,7 +3757,7 @@ namespace isc { namespace dhcp {
 #line 3758 "dhcp4_parser.cc"
     break;
 
-  case 696:
+  case 696: // $@124: %empty
 #line 2339 "dhcp4_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3768,7 +3768,7 @@ namespace isc { namespace dhcp {
 #line 3769 "dhcp4_parser.cc"
     break;
 
-  case 697:
+  case 697: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
 #line 2344 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -3777,7 +3777,7 @@ namespace isc { namespace dhcp {
 #line 3778 "dhcp4_parser.cc"
     break;
 
-  case 700:
+  case 700: // $@125: %empty
 #line 2356 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3787,7 +3787,7 @@ namespace isc { namespace dhcp {
 #line 3788 "dhcp4_parser.cc"
     break;
 
-  case 701:
+  case 701: // logger_entry: "{" $@125 logger_params "}"
 #line 2360 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -3795,7 +3795,7 @@ namespace isc { namespace dhcp {
 #line 3796 "dhcp4_parser.cc"
     break;
 
-  case 711:
+  case 711: // debuglevel: "debuglevel" ":" "integer"
 #line 2377 "dhcp4_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3804,7 +3804,7 @@ namespace isc { namespace dhcp {
 #line 3805 "dhcp4_parser.cc"
     break;
 
-  case 712:
+  case 712: // $@126: %empty
 #line 2382 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3812,7 +3812,7 @@ namespace isc { namespace dhcp {
 #line 3813 "dhcp4_parser.cc"
     break;
 
-  case 713:
+  case 713: // severity: "severity" $@126 ":" "constant string"
 #line 2384 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3822,7 +3822,7 @@ namespace isc { namespace dhcp {
 #line 3823 "dhcp4_parser.cc"
     break;
 
-  case 714:
+  case 714: // $@127: %empty
 #line 2390 "dhcp4_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3833,7 +3833,7 @@ namespace isc { namespace dhcp {
 #line 3834 "dhcp4_parser.cc"
     break;
 
-  case 715:
+  case 715: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]"
 #line 2395 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -3842,7 +3842,7 @@ namespace isc { namespace dhcp {
 #line 3843 "dhcp4_parser.cc"
     break;
 
-  case 718:
+  case 718: // $@128: %empty
 #line 2404 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3852,7 +3852,7 @@ namespace isc { namespace dhcp {
 #line 3853 "dhcp4_parser.cc"
     break;
 
-  case 719:
+  case 719: // output_entry: "{" $@128 output_params_list "}"
 #line 2408 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -3860,7 +3860,7 @@ namespace isc { namespace dhcp {
 #line 3861 "dhcp4_parser.cc"
     break;
 
-  case 727:
+  case 727: // $@129: %empty
 #line 2423 "dhcp4_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3868,7 +3868,7 @@ namespace isc { namespace dhcp {
 #line 3869 "dhcp4_parser.cc"
     break;
 
-  case 728:
+  case 728: // output: "output" $@129 ":" "constant string"
 #line 2425 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3878,7 +3878,7 @@ namespace isc { namespace dhcp {
 #line 3879 "dhcp4_parser.cc"
     break;
 
-  case 729:
+  case 729: // flush: "flush" ":" "boolean"
 #line 2431 "dhcp4_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3887,7 +3887,7 @@ namespace isc { namespace dhcp {
 #line 3888 "dhcp4_parser.cc"
     break;
 
-  case 730:
+  case 730: // maxsize: "maxsize" ":" "integer"
 #line 2436 "dhcp4_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3896,7 +3896,7 @@ namespace isc { namespace dhcp {
 #line 3897 "dhcp4_parser.cc"
     break;
 
-  case 731:
+  case 731: // maxver: "maxver" ":" "integer"
 #line 2441 "dhcp4_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3905,7 +3905,7 @@ namespace isc { namespace dhcp {
 #line 3906 "dhcp4_parser.cc"
     break;
 
-  case 732:
+  case 732: // $@130: %empty
 #line 2446 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3913,7 +3913,7 @@ namespace isc { namespace dhcp {
 #line 3914 "dhcp4_parser.cc"
     break;
 
-  case 733:
+  case 733: // pattern: "pattern" $@130 ":" "constant string"
 #line 2448 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
index d899400533ddf36338e89e85ee1a84c022ac87a5..b6b894a325b0d37a2f68dedc5bfcfecb5fc2cdb4 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -1321,30 +1321,30 @@ namespace isc { namespace dhcp {
       {
         switch (this->kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -1458,30 +1458,30 @@ namespace isc { namespace dhcp {
         // Value type destructor.
 switch (yykind)
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -4685,7 +4685,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -4931,11 +4931,12 @@ switch (yykind)
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189
     };
-    const int user_token_number_max_ = 444;
+    // Last valid token kind.
+    const int code_max = 444;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -4950,30 +4951,30 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -5006,30 +5007,30 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -5096,8 +5097,7 @@ switch (yykind)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5100 "dhcp4_parser.h"
-
+#line 5101 "dhcp4_parser.h"
 
 
 
index ef3de9421c13d1c539b00f46906fd2f1abd86def..6b853a7d0e7f7cecaf3d2dc28e80fa71103253d6 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Locations for Bison parsers in C++
 
@@ -62,11 +62,13 @@ namespace isc { namespace dhcp {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +78,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +107,7 @@ namespace isc { namespace dhcp {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +150,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +167,8 @@ namespace isc { namespace dhcp {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +185,7 @@ namespace isc { namespace dhcp {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +194,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +276,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +302,6 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_PARSER4_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..12e7205cc5d4bde347511b698459285ce736802a 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..fed81e95f806d9f65629b03f6eb3be203a948b5c 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index ff0ede0273f59e8d01cdd772834d83e48f4eba17..b8a1e86817e6625eb2e9fde5201fc021936c38c0 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -209,29 +209,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -250,29 +250,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -291,29 +291,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -331,29 +331,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -393,67 +393,67 @@ namespace isc { namespace dhcp {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 400 "dhcp6_parser.cc"
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 406 "dhcp6_parser.cc"
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 412 "dhcp6_parser.cc"
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 418 "dhcp6_parser.cc"
         break;
 
-      case 214: // value
+      case symbol_kind::S_value: // value
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 424 "dhcp6_parser.cc"
         break;
 
-      case 218: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 430 "dhcp6_parser.cc"
         break;
 
-      case 259: // ddns_replace_client_name_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 436 "dhcp6_parser.cc"
         break;
 
-      case 296: // db_type
+      case symbol_kind::S_db_type: // db_type
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 442 "dhcp6_parser.cc"
         break;
 
-      case 397: // hr_mode
+      case symbol_kind::S_hr_mode: // hr_mode
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 448 "dhcp6_parser.cc"
         break;
 
-      case 533: // duid_type
+      case symbol_kind::S_duid_type: // duid_type
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 454 "dhcp6_parser.cc"
         break;
 
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
 #line 274 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 460 "dhcp6_parser.cc"
@@ -686,29 +686,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -732,133 +732,133 @@ namespace isc { namespace dhcp {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 283 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 739 "dhcp6_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 284 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 745 "dhcp6_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 285 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.DHCP6; }
 #line 751 "dhcp6_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 286 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 757 "dhcp6_parser.cc"
     break;
 
-  case 10:
+  case 10: // $@5: %empty
 #line 287 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET6; }
 #line 763 "dhcp6_parser.cc"
     break;
 
-  case 12:
+  case 12: // $@6: %empty
 #line 288 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 769 "dhcp6_parser.cc"
     break;
 
-  case 14:
+  case 14: // $@7: %empty
 #line 289 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.PD_POOLS; }
 #line 775 "dhcp6_parser.cc"
     break;
 
-  case 16:
+  case 16: // $@8: %empty
 #line 290 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 781 "dhcp6_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@9: %empty
 #line 291 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.DHCP6; }
 #line 787 "dhcp6_parser.cc"
     break;
 
-  case 20:
+  case 20: // $@10: %empty
 #line 292 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 793 "dhcp6_parser.cc"
     break;
 
-  case 22:
+  case 22: // $@11: %empty
 #line 293 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 799 "dhcp6_parser.cc"
     break;
 
-  case 24:
+  case 24: // $@12: %empty
 #line 294 "dhcp6_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 805 "dhcp6_parser.cc"
     break;
 
-  case 26:
+  case 26: // $@13: %empty
 #line 295 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 811 "dhcp6_parser.cc"
     break;
 
-  case 28:
+  case 28: // $@14: %empty
 #line 296 "dhcp6_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 817 "dhcp6_parser.cc"
     break;
 
-  case 30:
+  case 30: // value: "integer"
 #line 304 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 823 "dhcp6_parser.cc"
     break;
 
-  case 31:
+  case 31: // value: "floating point"
 #line 305 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 829 "dhcp6_parser.cc"
     break;
 
-  case 32:
+  case 32: // value: "boolean"
 #line 306 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 835 "dhcp6_parser.cc"
     break;
 
-  case 33:
+  case 33: // value: "constant string"
 #line 307 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 841 "dhcp6_parser.cc"
     break;
 
-  case 34:
+  case 34: // value: "null"
 #line 308 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 847 "dhcp6_parser.cc"
     break;
 
-  case 35:
+  case 35: // value: map2
 #line 309 "dhcp6_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 853 "dhcp6_parser.cc"
     break;
 
-  case 36:
+  case 36: // value: list_generic
 #line 310 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 859 "dhcp6_parser.cc"
     break;
 
-  case 37:
+  case 37: // sub_json: value
 #line 313 "dhcp6_parser.yy"
                 {
     // Push back the JSON value on the stack
@@ -867,7 +867,7 @@ namespace isc { namespace dhcp {
 #line 868 "dhcp6_parser.cc"
     break;
 
-  case 38:
+  case 38: // $@15: %empty
 #line 318 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
@@ -878,7 +878,7 @@ namespace isc { namespace dhcp {
 #line 879 "dhcp6_parser.cc"
     break;
 
-  case 39:
+  case 39: // map2: "{" $@15 map_content "}"
 #line 323 "dhcp6_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -888,13 +888,13 @@ namespace isc { namespace dhcp {
 #line 889 "dhcp6_parser.cc"
     break;
 
-  case 40:
+  case 40: // map_value: map2
 #line 329 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 895 "dhcp6_parser.cc"
     break;
 
-  case 43:
+  case 43: // not_empty_map: "constant string" ":" value
 #line 336 "dhcp6_parser.yy"
                                   {
                   // map containing a single entry
@@ -903,7 +903,7 @@ namespace isc { namespace dhcp {
 #line 904 "dhcp6_parser.cc"
     break;
 
-  case 44:
+  case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 340 "dhcp6_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -913,7 +913,7 @@ namespace isc { namespace dhcp {
 #line 914 "dhcp6_parser.cc"
     break;
 
-  case 45:
+  case 45: // $@16: %empty
 #line 347 "dhcp6_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -922,7 +922,7 @@ namespace isc { namespace dhcp {
 #line 923 "dhcp6_parser.cc"
     break;
 
-  case 46:
+  case 46: // list_generic: "[" $@16 list_content "]"
 #line 350 "dhcp6_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
@@ -930,7 +930,7 @@ namespace isc { namespace dhcp {
 #line 931 "dhcp6_parser.cc"
     break;
 
-  case 49:
+  case 49: // not_empty_list: value
 #line 358 "dhcp6_parser.yy"
                       {
                   // List consisting of a single element.
@@ -939,7 +939,7 @@ namespace isc { namespace dhcp {
 #line 940 "dhcp6_parser.cc"
     break;
 
-  case 50:
+  case 50: // not_empty_list: not_empty_list "," value
 #line 362 "dhcp6_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -948,7 +948,7 @@ namespace isc { namespace dhcp {
 #line 949 "dhcp6_parser.cc"
     break;
 
-  case 51:
+  case 51: // $@17: %empty
 #line 369 "dhcp6_parser.yy"
                               {
     // List parsing about to start
@@ -956,7 +956,7 @@ namespace isc { namespace dhcp {
 #line 957 "dhcp6_parser.cc"
     break;
 
-  case 52:
+  case 52: // list_strings: "[" $@17 list_strings_content "]"
 #line 371 "dhcp6_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
@@ -965,7 +965,7 @@ namespace isc { namespace dhcp {
 #line 966 "dhcp6_parser.cc"
     break;
 
-  case 55:
+  case 55: // not_empty_list_strings: "constant string"
 #line 380 "dhcp6_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -974,7 +974,7 @@ namespace isc { namespace dhcp {
 #line 975 "dhcp6_parser.cc"
     break;
 
-  case 56:
+  case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
 #line 384 "dhcp6_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -983,7 +983,7 @@ namespace isc { namespace dhcp {
 #line 984 "dhcp6_parser.cc"
     break;
 
-  case 57:
+  case 57: // unknown_map_entry: "constant string" ":"
 #line 395 "dhcp6_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -994,7 +994,7 @@ namespace isc { namespace dhcp {
 #line 995 "dhcp6_parser.cc"
     break;
 
-  case 58:
+  case 58: // $@18: %empty
 #line 404 "dhcp6_parser.yy"
                            {
     // This code is executed when we're about to start parsing
@@ -1005,7 +1005,7 @@ namespace isc { namespace dhcp {
 #line 1006 "dhcp6_parser.cc"
     break;
 
-  case 59:
+  case 59: // syntax_map: "{" $@18 global_objects "}"
 #line 409 "dhcp6_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -1018,7 +1018,7 @@ namespace isc { namespace dhcp {
 #line 1019 "dhcp6_parser.cc"
     break;
 
-  case 63:
+  case 63: // $@19: %empty
 #line 427 "dhcp6_parser.yy"
                     {
     // This code is executed when we're about to start parsing
@@ -1033,7 +1033,7 @@ namespace isc { namespace dhcp {
 #line 1034 "dhcp6_parser.cc"
     break;
 
-  case 64:
+  case 64: // dhcp6_object: "Dhcp6" $@19 ":" "{" global_params "}"
 #line 436 "dhcp6_parser.yy"
                                                     {
     // No global parameter is required
@@ -1043,7 +1043,7 @@ namespace isc { namespace dhcp {
 #line 1044 "dhcp6_parser.cc"
     break;
 
-  case 65:
+  case 65: // $@20: %empty
 #line 444 "dhcp6_parser.yy"
                           {
     // Parse the Dhcp6 map
@@ -1053,7 +1053,7 @@ namespace isc { namespace dhcp {
 #line 1054 "dhcp6_parser.cc"
     break;
 
-  case 66:
+  case 66: // sub_dhcp6: "{" $@20 global_params "}"
 #line 448 "dhcp6_parser.yy"
                                {
     // No global parameter is required
@@ -1062,7 +1062,7 @@ namespace isc { namespace dhcp {
 #line 1063 "dhcp6_parser.cc"
     break;
 
-  case 122:
+  case 122: // $@21: %empty
 #line 514 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1070,7 +1070,7 @@ namespace isc { namespace dhcp {
 #line 1071 "dhcp6_parser.cc"
     break;
 
-  case 123:
+  case 123: // data_directory: "data-directory" $@21 ":" "constant string"
 #line 516 "dhcp6_parser.yy"
                {
     ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1080,7 +1080,7 @@ namespace isc { namespace dhcp {
 #line 1081 "dhcp6_parser.cc"
     break;
 
-  case 124:
+  case 124: // preferred_lifetime: "preferred-lifetime" ":" "integer"
 #line 522 "dhcp6_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1089,7 +1089,7 @@ namespace isc { namespace dhcp {
 #line 1090 "dhcp6_parser.cc"
     break;
 
-  case 125:
+  case 125: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
 #line 527 "dhcp6_parser.yy"
                                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1098,7 +1098,7 @@ namespace isc { namespace dhcp {
 #line 1099 "dhcp6_parser.cc"
     break;
 
-  case 126:
+  case 126: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
 #line 532 "dhcp6_parser.yy"
                                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1107,7 +1107,7 @@ namespace isc { namespace dhcp {
 #line 1108 "dhcp6_parser.cc"
     break;
 
-  case 127:
+  case 127: // valid_lifetime: "valid-lifetime" ":" "integer"
 #line 537 "dhcp6_parser.yy"
                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1116,7 +1116,7 @@ namespace isc { namespace dhcp {
 #line 1117 "dhcp6_parser.cc"
     break;
 
-  case 128:
+  case 128: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
 #line 542 "dhcp6_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1125,7 +1125,7 @@ namespace isc { namespace dhcp {
 #line 1126 "dhcp6_parser.cc"
     break;
 
-  case 129:
+  case 129: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
 #line 547 "dhcp6_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1134,7 +1134,7 @@ namespace isc { namespace dhcp {
 #line 1135 "dhcp6_parser.cc"
     break;
 
-  case 130:
+  case 130: // renew_timer: "renew-timer" ":" "integer"
 #line 552 "dhcp6_parser.yy"
                                        {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1143,7 +1143,7 @@ namespace isc { namespace dhcp {
 #line 1144 "dhcp6_parser.cc"
     break;
 
-  case 131:
+  case 131: // rebind_timer: "rebind-timer" ":" "integer"
 #line 557 "dhcp6_parser.yy"
                                          {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1152,7 +1152,7 @@ namespace isc { namespace dhcp {
 #line 1153 "dhcp6_parser.cc"
     break;
 
-  case 132:
+  case 132: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
 #line 562 "dhcp6_parser.yy"
                                                        {
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1161,7 +1161,7 @@ namespace isc { namespace dhcp {
 #line 1162 "dhcp6_parser.cc"
     break;
 
-  case 133:
+  case 133: // t1_percent: "t1-percent" ":" "floating point"
 #line 567 "dhcp6_parser.yy"
                                    {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1170,7 +1170,7 @@ namespace isc { namespace dhcp {
 #line 1171 "dhcp6_parser.cc"
     break;
 
-  case 134:
+  case 134: // t2_percent: "t2-percent" ":" "floating point"
 #line 572 "dhcp6_parser.yy"
                                    {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1179,7 +1179,7 @@ namespace isc { namespace dhcp {
 #line 1180 "dhcp6_parser.cc"
     break;
 
-  case 135:
+  case 135: // decline_probation_period: "decline-probation-period" ":" "integer"
 #line 577 "dhcp6_parser.yy"
                                                                  {
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1188,7 +1188,7 @@ namespace isc { namespace dhcp {
 #line 1189 "dhcp6_parser.cc"
     break;
 
-  case 136:
+  case 136: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
 #line 582 "dhcp6_parser.yy"
                                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1197,7 +1197,7 @@ namespace isc { namespace dhcp {
 #line 1198 "dhcp6_parser.cc"
     break;
 
-  case 137:
+  case 137: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
 #line 587 "dhcp6_parser.yy"
                                                                {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1206,7 +1206,7 @@ namespace isc { namespace dhcp {
 #line 1207 "dhcp6_parser.cc"
     break;
 
-  case 138:
+  case 138: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
 #line 592 "dhcp6_parser.yy"
                                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1215,7 +1215,7 @@ namespace isc { namespace dhcp {
 #line 1216 "dhcp6_parser.cc"
     break;
 
-  case 139:
+  case 139: // $@22: %empty
 #line 597 "dhcp6_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
@@ -1223,7 +1223,7 @@ namespace isc { namespace dhcp {
 #line 1224 "dhcp6_parser.cc"
     break;
 
-  case 140:
+  case 140: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
 #line 599 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
@@ -1232,7 +1232,7 @@ namespace isc { namespace dhcp {
 #line 1233 "dhcp6_parser.cc"
     break;
 
-  case 141:
+  case 141: // ddns_replace_client_name_value: "when-present"
 #line 605 "dhcp6_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
@@ -1240,7 +1240,7 @@ namespace isc { namespace dhcp {
 #line 1241 "dhcp6_parser.cc"
     break;
 
-  case 142:
+  case 142: // ddns_replace_client_name_value: "never"
 #line 608 "dhcp6_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
@@ -1248,7 +1248,7 @@ namespace isc { namespace dhcp {
 #line 1249 "dhcp6_parser.cc"
     break;
 
-  case 143:
+  case 143: // ddns_replace_client_name_value: "always"
 #line 611 "dhcp6_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
@@ -1256,7 +1256,7 @@ namespace isc { namespace dhcp {
 #line 1257 "dhcp6_parser.cc"
     break;
 
-  case 144:
+  case 144: // ddns_replace_client_name_value: "when-not-present"
 #line 614 "dhcp6_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
@@ -1264,7 +1264,7 @@ namespace isc { namespace dhcp {
 #line 1265 "dhcp6_parser.cc"
     break;
 
-  case 145:
+  case 145: // ddns_replace_client_name_value: "boolean"
 #line 617 "dhcp6_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
@@ -1273,7 +1273,7 @@ namespace isc { namespace dhcp {
 #line 1274 "dhcp6_parser.cc"
     break;
 
-  case 146:
+  case 146: // $@23: %empty
 #line 623 "dhcp6_parser.yy"
                                              {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1281,7 +1281,7 @@ namespace isc { namespace dhcp {
 #line 1282 "dhcp6_parser.cc"
     break;
 
-  case 147:
+  case 147: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
 #line 625 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1291,7 +1291,7 @@ namespace isc { namespace dhcp {
 #line 1292 "dhcp6_parser.cc"
     break;
 
-  case 148:
+  case 148: // $@24: %empty
 #line 631 "dhcp6_parser.yy"
                                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1299,7 +1299,7 @@ namespace isc { namespace dhcp {
 #line 1300 "dhcp6_parser.cc"
     break;
 
-  case 149:
+  case 149: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
 #line 633 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1309,7 +1309,7 @@ namespace isc { namespace dhcp {
 #line 1310 "dhcp6_parser.cc"
     break;
 
-  case 150:
+  case 150: // $@25: %empty
 #line 639 "dhcp6_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1317,7 +1317,7 @@ namespace isc { namespace dhcp {
 #line 1318 "dhcp6_parser.cc"
     break;
 
-  case 151:
+  case 151: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
 #line 641 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1327,7 +1327,7 @@ namespace isc { namespace dhcp {
 #line 1328 "dhcp6_parser.cc"
     break;
 
-  case 152:
+  case 152: // $@26: %empty
 #line 647 "dhcp6_parser.yy"
                                                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1335,7 +1335,7 @@ namespace isc { namespace dhcp {
 #line 1336 "dhcp6_parser.cc"
     break;
 
-  case 153:
+  case 153: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
 #line 649 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1345,7 +1345,7 @@ namespace isc { namespace dhcp {
 #line 1346 "dhcp6_parser.cc"
     break;
 
-  case 154:
+  case 154: // store_extended_info: "store-extended-info" ":" "boolean"
 #line 655 "dhcp6_parser.yy"
                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1354,7 +1354,7 @@ namespace isc { namespace dhcp {
 #line 1355 "dhcp6_parser.cc"
     break;
 
-  case 155:
+  case 155: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
 #line 660 "dhcp6_parser.yy"
                                                                              {
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1363,7 +1363,7 @@ namespace isc { namespace dhcp {
 #line 1364 "dhcp6_parser.cc"
     break;
 
-  case 156:
+  case 156: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
 #line 665 "dhcp6_parser.yy"
                                                                          {
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1372,7 +1372,7 @@ namespace isc { namespace dhcp {
 #line 1373 "dhcp6_parser.cc"
     break;
 
-  case 157:
+  case 157: // $@27: %empty
 #line 670 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1380,7 +1380,7 @@ namespace isc { namespace dhcp {
 #line 1381 "dhcp6_parser.cc"
     break;
 
-  case 158:
+  case 158: // server_tag: "server-tag" $@27 ":" "constant string"
 #line 672 "dhcp6_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1390,7 +1390,7 @@ namespace isc { namespace dhcp {
 #line 1391 "dhcp6_parser.cc"
     break;
 
-  case 159:
+  case 159: // $@28: %empty
 #line 678 "dhcp6_parser.yy"
                                      {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1401,7 +1401,7 @@ namespace isc { namespace dhcp {
 #line 1402 "dhcp6_parser.cc"
     break;
 
-  case 160:
+  case 160: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
 #line 683 "dhcp6_parser.yy"
                                                                {
     // No interfaces config param is required
@@ -1411,7 +1411,7 @@ namespace isc { namespace dhcp {
 #line 1412 "dhcp6_parser.cc"
     break;
 
-  case 161:
+  case 161: // $@29: %empty
 #line 689 "dhcp6_parser.yy"
                                 {
     // Parse the interfaces-config map
@@ -1421,7 +1421,7 @@ namespace isc { namespace dhcp {
 #line 1422 "dhcp6_parser.cc"
     break;
 
-  case 162:
+  case 162: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
 #line 693 "dhcp6_parser.yy"
                                           {
     // No interfaces config param is required
@@ -1430,7 +1430,7 @@ namespace isc { namespace dhcp {
 #line 1431 "dhcp6_parser.cc"
     break;
 
-  case 170:
+  case 170: // $@30: %empty
 #line 709 "dhcp6_parser.yy"
                             {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1441,7 +1441,7 @@ namespace isc { namespace dhcp {
 #line 1442 "dhcp6_parser.cc"
     break;
 
-  case 171:
+  case 171: // interfaces_list: "interfaces" $@30 ":" list_strings
 #line 714 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -1450,7 +1450,7 @@ namespace isc { namespace dhcp {
 #line 1451 "dhcp6_parser.cc"
     break;
 
-  case 172:
+  case 172: // re_detect: "re-detect" ":" "boolean"
 #line 719 "dhcp6_parser.yy"
                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1459,7 +1459,7 @@ namespace isc { namespace dhcp {
 #line 1460 "dhcp6_parser.cc"
     break;
 
-  case 173:
+  case 173: // $@31: %empty
 #line 724 "dhcp6_parser.yy"
                                {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1470,7 +1470,7 @@ namespace isc { namespace dhcp {
 #line 1471 "dhcp6_parser.cc"
     break;
 
-  case 174:
+  case 174: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
 #line 729 "dhcp6_parser.yy"
                                                           {
     // The type parameter is required
@@ -1481,7 +1481,7 @@ namespace isc { namespace dhcp {
 #line 1482 "dhcp6_parser.cc"
     break;
 
-  case 175:
+  case 175: // $@32: %empty
 #line 736 "dhcp6_parser.yy"
                                {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1492,7 +1492,7 @@ namespace isc { namespace dhcp {
 #line 1493 "dhcp6_parser.cc"
     break;
 
-  case 176:
+  case 176: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
 #line 741 "dhcp6_parser.yy"
                                                           {
     // The type parameter is required
@@ -1503,7 +1503,7 @@ namespace isc { namespace dhcp {
 #line 1504 "dhcp6_parser.cc"
     break;
 
-  case 177:
+  case 177: // $@33: %empty
 #line 748 "dhcp6_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1514,7 +1514,7 @@ namespace isc { namespace dhcp {
 #line 1515 "dhcp6_parser.cc"
     break;
 
-  case 178:
+  case 178: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
 #line 753 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -1523,7 +1523,7 @@ namespace isc { namespace dhcp {
 #line 1524 "dhcp6_parser.cc"
     break;
 
-  case 183:
+  case 183: // $@34: %empty
 #line 766 "dhcp6_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1533,7 +1533,7 @@ namespace isc { namespace dhcp {
 #line 1534 "dhcp6_parser.cc"
     break;
 
-  case 184:
+  case 184: // database: "{" $@34 database_map_params "}"
 #line 770 "dhcp6_parser.yy"
                                      {
     // The type parameter is required
@@ -1543,7 +1543,7 @@ namespace isc { namespace dhcp {
 #line 1544 "dhcp6_parser.cc"
     break;
 
-  case 208:
+  case 208: // $@35: %empty
 #line 803 "dhcp6_parser.yy"
                     {
     ctx.enter(ctx.DATABASE_TYPE);
@@ -1551,7 +1551,7 @@ namespace isc { namespace dhcp {
 #line 1552 "dhcp6_parser.cc"
     break;
 
-  case 209:
+  case 209: // database_type: "type" $@35 ":" db_type
 #line 805 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
@@ -1560,31 +1560,31 @@ namespace isc { namespace dhcp {
 #line 1561 "dhcp6_parser.cc"
     break;
 
-  case 210:
+  case 210: // db_type: "memfile"
 #line 810 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1567 "dhcp6_parser.cc"
     break;
 
-  case 211:
+  case 211: // db_type: "mysql"
 #line 811 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1573 "dhcp6_parser.cc"
     break;
 
-  case 212:
+  case 212: // db_type: "postgresql"
 #line 812 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1579 "dhcp6_parser.cc"
     break;
 
-  case 213:
+  case 213: // db_type: "cql"
 #line 813 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1585 "dhcp6_parser.cc"
     break;
 
-  case 214:
+  case 214: // $@36: %empty
 #line 816 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1592,7 +1592,7 @@ namespace isc { namespace dhcp {
 #line 1593 "dhcp6_parser.cc"
     break;
 
-  case 215:
+  case 215: // user: "user" $@36 ":" "constant string"
 #line 818 "dhcp6_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1602,7 +1602,7 @@ namespace isc { namespace dhcp {
 #line 1603 "dhcp6_parser.cc"
     break;
 
-  case 216:
+  case 216: // $@37: %empty
 #line 824 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1610,7 +1610,7 @@ namespace isc { namespace dhcp {
 #line 1611 "dhcp6_parser.cc"
     break;
 
-  case 217:
+  case 217: // password: "password" $@37 ":" "constant string"
 #line 826 "dhcp6_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1620,7 +1620,7 @@ namespace isc { namespace dhcp {
 #line 1621 "dhcp6_parser.cc"
     break;
 
-  case 218:
+  case 218: // $@38: %empty
 #line 832 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1628,7 +1628,7 @@ namespace isc { namespace dhcp {
 #line 1629 "dhcp6_parser.cc"
     break;
 
-  case 219:
+  case 219: // host: "host" $@38 ":" "constant string"
 #line 834 "dhcp6_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1638,7 +1638,7 @@ namespace isc { namespace dhcp {
 #line 1639 "dhcp6_parser.cc"
     break;
 
-  case 220:
+  case 220: // port: "port" ":" "integer"
 #line 840 "dhcp6_parser.yy"
                          {
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1647,7 +1647,7 @@ namespace isc { namespace dhcp {
 #line 1648 "dhcp6_parser.cc"
     break;
 
-  case 221:
+  case 221: // $@39: %empty
 #line 845 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1655,7 +1655,7 @@ namespace isc { namespace dhcp {
 #line 1656 "dhcp6_parser.cc"
     break;
 
-  case 222:
+  case 222: // name: "name" $@39 ":" "constant string"
 #line 847 "dhcp6_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1665,7 +1665,7 @@ namespace isc { namespace dhcp {
 #line 1666 "dhcp6_parser.cc"
     break;
 
-  case 223:
+  case 223: // persist: "persist" ":" "boolean"
 #line 853 "dhcp6_parser.yy"
                                {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1674,7 +1674,7 @@ namespace isc { namespace dhcp {
 #line 1675 "dhcp6_parser.cc"
     break;
 
-  case 224:
+  case 224: // lfc_interval: "lfc-interval" ":" "integer"
 #line 858 "dhcp6_parser.yy"
                                          {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1683,7 +1683,7 @@ namespace isc { namespace dhcp {
 #line 1684 "dhcp6_parser.cc"
     break;
 
-  case 225:
+  case 225: // readonly: "readonly" ":" "boolean"
 #line 863 "dhcp6_parser.yy"
                                  {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1692,7 +1692,7 @@ namespace isc { namespace dhcp {
 #line 1693 "dhcp6_parser.cc"
     break;
 
-  case 226:
+  case 226: // connect_timeout: "connect-timeout" ":" "integer"
 #line 868 "dhcp6_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1701,7 +1701,7 @@ namespace isc { namespace dhcp {
 #line 1702 "dhcp6_parser.cc"
     break;
 
-  case 227:
+  case 227: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
 #line 873 "dhcp6_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1710,7 +1710,7 @@ namespace isc { namespace dhcp {
 #line 1711 "dhcp6_parser.cc"
     break;
 
-  case 228:
+  case 228: // max_row_errors: "max-row-errors" ":" "integer"
 #line 878 "dhcp6_parser.yy"
                                              {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1719,7 +1719,7 @@ namespace isc { namespace dhcp {
 #line 1720 "dhcp6_parser.cc"
     break;
 
-  case 229:
+  case 229: // request_timeout: "request-timeout" ":" "integer"
 #line 883 "dhcp6_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1728,7 +1728,7 @@ namespace isc { namespace dhcp {
 #line 1729 "dhcp6_parser.cc"
     break;
 
-  case 230:
+  case 230: // tcp_keepalive: "tcp-keepalive" ":" "integer"
 #line 888 "dhcp6_parser.yy"
                                            {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1737,7 +1737,7 @@ namespace isc { namespace dhcp {
 #line 1738 "dhcp6_parser.cc"
     break;
 
-  case 231:
+  case 231: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
 #line 893 "dhcp6_parser.yy"
                                        {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1746,7 +1746,7 @@ namespace isc { namespace dhcp {
 #line 1747 "dhcp6_parser.cc"
     break;
 
-  case 232:
+  case 232: // $@40: %empty
 #line 898 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1754,7 +1754,7 @@ namespace isc { namespace dhcp {
 #line 1755 "dhcp6_parser.cc"
     break;
 
-  case 233:
+  case 233: // contact_points: "contact-points" $@40 ":" "constant string"
 #line 900 "dhcp6_parser.yy"
                {
     ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1764,7 +1764,7 @@ namespace isc { namespace dhcp {
 #line 1765 "dhcp6_parser.cc"
     break;
 
-  case 234:
+  case 234: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
 #line 906 "dhcp6_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1773,7 +1773,7 @@ namespace isc { namespace dhcp {
 #line 1774 "dhcp6_parser.cc"
     break;
 
-  case 235:
+  case 235: // $@41: %empty
 #line 911 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1781,7 +1781,7 @@ namespace isc { namespace dhcp {
 #line 1782 "dhcp6_parser.cc"
     break;
 
-  case 236:
+  case 236: // keyspace: "keyspace" $@41 ":" "constant string"
 #line 913 "dhcp6_parser.yy"
                {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1791,7 +1791,7 @@ namespace isc { namespace dhcp {
 #line 1792 "dhcp6_parser.cc"
     break;
 
-  case 237:
+  case 237: // $@42: %empty
 #line 919 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1799,7 +1799,7 @@ namespace isc { namespace dhcp {
 #line 1800 "dhcp6_parser.cc"
     break;
 
-  case 238:
+  case 238: // consistency: "consistency" $@42 ":" "constant string"
 #line 921 "dhcp6_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1809,7 +1809,7 @@ namespace isc { namespace dhcp {
 #line 1810 "dhcp6_parser.cc"
     break;
 
-  case 239:
+  case 239: // $@43: %empty
 #line 927 "dhcp6_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1817,7 +1817,7 @@ namespace isc { namespace dhcp {
 #line 1818 "dhcp6_parser.cc"
     break;
 
-  case 240:
+  case 240: // serial_consistency: "serial-consistency" $@43 ":" "constant string"
 #line 929 "dhcp6_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1827,7 +1827,7 @@ namespace isc { namespace dhcp {
 #line 1828 "dhcp6_parser.cc"
     break;
 
-  case 241:
+  case 241: // $@44: %empty
 #line 935 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1838,7 +1838,7 @@ namespace isc { namespace dhcp {
 #line 1839 "dhcp6_parser.cc"
     break;
 
-  case 242:
+  case 242: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}"
 #line 940 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
@@ -1847,7 +1847,7 @@ namespace isc { namespace dhcp {
 #line 1848 "dhcp6_parser.cc"
     break;
 
-  case 246:
+  case 246: // $@45: %empty
 #line 950 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1855,7 +1855,7 @@ namespace isc { namespace dhcp {
 #line 1856 "dhcp6_parser.cc"
     break;
 
-  case 247:
+  case 247: // lease_checks: "lease-checks" $@45 ":" "constant string"
 #line 952 "dhcp6_parser.yy"
                {
 
@@ -1875,7 +1875,7 @@ namespace isc { namespace dhcp {
 #line 1876 "dhcp6_parser.cc"
     break;
 
-  case 248:
+  case 248: // $@46: %empty
 #line 968 "dhcp6_parser.yy"
                          {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1886,7 +1886,7 @@ namespace isc { namespace dhcp {
 #line 1887 "dhcp6_parser.cc"
     break;
 
-  case 249:
+  case 249: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]"
 #line 973 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1895,7 +1895,7 @@ namespace isc { namespace dhcp {
 #line 1896 "dhcp6_parser.cc"
     break;
 
-  case 254:
+  case 254: // duid_id: "duid"
 #line 986 "dhcp6_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
@@ -1904,7 +1904,7 @@ namespace isc { namespace dhcp {
 #line 1905 "dhcp6_parser.cc"
     break;
 
-  case 255:
+  case 255: // string_id: "constant string"
 #line 991 "dhcp6_parser.yy"
                    {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1913,7 +1913,7 @@ namespace isc { namespace dhcp {
 #line 1914 "dhcp6_parser.cc"
     break;
 
-  case 256:
+  case 256: // $@47: %empty
 #line 996 "dhcp6_parser.yy"
                                                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1924,7 +1924,7 @@ namespace isc { namespace dhcp {
 #line 1925 "dhcp6_parser.cc"
     break;
 
-  case 257:
+  case 257: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]"
 #line 1001 "dhcp6_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
@@ -1933,7 +1933,7 @@ namespace isc { namespace dhcp {
 #line 1934 "dhcp6_parser.cc"
     break;
 
-  case 263:
+  case 263: // hw_address_id: "hw-address"
 #line 1015 "dhcp6_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
@@ -1942,7 +1942,7 @@ namespace isc { namespace dhcp {
 #line 1943 "dhcp6_parser.cc"
     break;
 
-  case 264:
+  case 264: // flex_id: "flex-id"
 #line 1020 "dhcp6_parser.yy"
                   {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
@@ -1951,7 +1951,7 @@ namespace isc { namespace dhcp {
 #line 1952 "dhcp6_parser.cc"
     break;
 
-  case 265:
+  case 265: // $@48: %empty
 #line 1027 "dhcp6_parser.yy"
                                                {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1962,7 +1962,7 @@ namespace isc { namespace dhcp {
 #line 1963 "dhcp6_parser.cc"
     break;
 
-  case 266:
+  case 266: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]"
 #line 1032 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
@@ -1971,7 +1971,7 @@ namespace isc { namespace dhcp {
 #line 1972 "dhcp6_parser.cc"
     break;
 
-  case 267:
+  case 267: // $@49: %empty
 #line 1039 "dhcp6_parser.yy"
                                            {
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1982,7 +1982,7 @@ namespace isc { namespace dhcp {
 #line 1983 "dhcp6_parser.cc"
     break;
 
-  case 268:
+  case 268: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}"
 #line 1044 "dhcp6_parser.yy"
                                                              {
     // The enable parameter is required.
@@ -1993,7 +1993,7 @@ namespace isc { namespace dhcp {
 #line 1994 "dhcp6_parser.cc"
     break;
 
-  case 277:
+  case 277: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
 #line 1063 "dhcp6_parser.yy"
                                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2002,7 +2002,7 @@ namespace isc { namespace dhcp {
 #line 2003 "dhcp6_parser.cc"
     break;
 
-  case 278:
+  case 278: // thread_pool_size: "thread-pool-size" ":" "integer"
 #line 1068 "dhcp6_parser.yy"
                                                  {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2011,7 +2011,7 @@ namespace isc { namespace dhcp {
 #line 2012 "dhcp6_parser.cc"
     break;
 
-  case 279:
+  case 279: // packet_queue_size: "packet-queue-size" ":" "integer"
 #line 1073 "dhcp6_parser.yy"
                                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2020,7 +2020,7 @@ namespace isc { namespace dhcp {
 #line 2021 "dhcp6_parser.cc"
     break;
 
-  case 280:
+  case 280: // $@50: %empty
 #line 1078 "dhcp6_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2031,7 +2031,7 @@ namespace isc { namespace dhcp {
 #line 2032 "dhcp6_parser.cc"
     break;
 
-  case 281:
+  case 281: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]"
 #line 1083 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -2040,7 +2040,7 @@ namespace isc { namespace dhcp {
 #line 2041 "dhcp6_parser.cc"
     break;
 
-  case 286:
+  case 286: // $@51: %empty
 #line 1096 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2050,7 +2050,7 @@ namespace isc { namespace dhcp {
 #line 2051 "dhcp6_parser.cc"
     break;
 
-  case 287:
+  case 287: // hooks_library: "{" $@51 hooks_params "}"
 #line 1100 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
@@ -2060,7 +2060,7 @@ namespace isc { namespace dhcp {
 #line 2061 "dhcp6_parser.cc"
     break;
 
-  case 288:
+  case 288: // $@52: %empty
 #line 1106 "dhcp6_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
@@ -2070,7 +2070,7 @@ namespace isc { namespace dhcp {
 #line 2071 "dhcp6_parser.cc"
     break;
 
-  case 289:
+  case 289: // sub_hooks_library: "{" $@52 hooks_params "}"
 #line 1110 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
@@ -2080,7 +2080,7 @@ namespace isc { namespace dhcp {
 #line 2081 "dhcp6_parser.cc"
     break;
 
-  case 295:
+  case 295: // $@53: %empty
 #line 1125 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2088,7 +2088,7 @@ namespace isc { namespace dhcp {
 #line 2089 "dhcp6_parser.cc"
     break;
 
-  case 296:
+  case 296: // library: "library" $@53 ":" "constant string"
 #line 1127 "dhcp6_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2098,7 +2098,7 @@ namespace isc { namespace dhcp {
 #line 2099 "dhcp6_parser.cc"
     break;
 
-  case 297:
+  case 297: // $@54: %empty
 #line 1133 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2106,7 +2106,7 @@ namespace isc { namespace dhcp {
 #line 2107 "dhcp6_parser.cc"
     break;
 
-  case 298:
+  case 298: // parameters: "parameters" $@54 ":" map_value
 #line 1135 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
@@ -2115,7 +2115,7 @@ namespace isc { namespace dhcp {
 #line 2116 "dhcp6_parser.cc"
     break;
 
-  case 299:
+  case 299: // $@55: %empty
 #line 1141 "dhcp6_parser.yy"
                                                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2126,7 +2126,7 @@ namespace isc { namespace dhcp {
 #line 2127 "dhcp6_parser.cc"
     break;
 
-  case 300:
+  case 300: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}"
 #line 1146 "dhcp6_parser.yy"
                                                             {
     // No expired lease parameter is required
@@ -2136,7 +2136,7 @@ namespace isc { namespace dhcp {
 #line 2137 "dhcp6_parser.cc"
     break;
 
-  case 309:
+  case 309: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
 #line 1164 "dhcp6_parser.yy"
                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2145,7 +2145,7 @@ namespace isc { namespace dhcp {
 #line 2146 "dhcp6_parser.cc"
     break;
 
-  case 310:
+  case 310: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
 #line 1169 "dhcp6_parser.yy"
                                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2154,7 +2154,7 @@ namespace isc { namespace dhcp {
 #line 2155 "dhcp6_parser.cc"
     break;
 
-  case 311:
+  case 311: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
 #line 1174 "dhcp6_parser.yy"
                                                        {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2163,7 +2163,7 @@ namespace isc { namespace dhcp {
 #line 2164 "dhcp6_parser.cc"
     break;
 
-  case 312:
+  case 312: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
 #line 1179 "dhcp6_parser.yy"
                                                      {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2172,7 +2172,7 @@ namespace isc { namespace dhcp {
 #line 2173 "dhcp6_parser.cc"
     break;
 
-  case 313:
+  case 313: // max_reclaim_time: "max-reclaim-time" ":" "integer"
 #line 1184 "dhcp6_parser.yy"
                                                  {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2181,7 +2181,7 @@ namespace isc { namespace dhcp {
 #line 2182 "dhcp6_parser.cc"
     break;
 
-  case 314:
+  case 314: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
 #line 1189 "dhcp6_parser.yy"
                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2190,7 +2190,7 @@ namespace isc { namespace dhcp {
 #line 2191 "dhcp6_parser.cc"
     break;
 
-  case 315:
+  case 315: // $@56: %empty
 #line 1197 "dhcp6_parser.yy"
                       {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2201,7 +2201,7 @@ namespace isc { namespace dhcp {
 #line 2202 "dhcp6_parser.cc"
     break;
 
-  case 316:
+  case 316: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]"
 #line 1202 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -2210,7 +2210,7 @@ namespace isc { namespace dhcp {
 #line 2211 "dhcp6_parser.cc"
     break;
 
-  case 321:
+  case 321: // $@57: %empty
 #line 1222 "dhcp6_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2220,7 +2220,7 @@ namespace isc { namespace dhcp {
 #line 2221 "dhcp6_parser.cc"
     break;
 
-  case 322:
+  case 322: // subnet6: "{" $@57 subnet6_params "}"
 #line 1226 "dhcp6_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
@@ -2246,7 +2246,7 @@ namespace isc { namespace dhcp {
 #line 2247 "dhcp6_parser.cc"
     break;
 
-  case 323:
+  case 323: // $@58: %empty
 #line 1248 "dhcp6_parser.yy"
                             {
     // Parse the subnet6 list entry map
@@ -2256,7 +2256,7 @@ namespace isc { namespace dhcp {
 #line 2257 "dhcp6_parser.cc"
     break;
 
-  case 324:
+  case 324: // sub_subnet6: "{" $@58 subnet6_params "}"
 #line 1252 "dhcp6_parser.yy"
                                 {
     // The subnet subnet6 parameter is required
@@ -2266,7 +2266,7 @@ namespace isc { namespace dhcp {
 #line 2267 "dhcp6_parser.cc"
     break;
 
-  case 363:
+  case 363: // $@59: %empty
 #line 1302 "dhcp6_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2274,7 +2274,7 @@ namespace isc { namespace dhcp {
 #line 2275 "dhcp6_parser.cc"
     break;
 
-  case 364:
+  case 364: // subnet: "subnet" $@59 ":" "constant string"
 #line 1304 "dhcp6_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2284,7 +2284,7 @@ namespace isc { namespace dhcp {
 #line 2285 "dhcp6_parser.cc"
     break;
 
-  case 365:
+  case 365: // $@60: %empty
 #line 1310 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2292,7 +2292,7 @@ namespace isc { namespace dhcp {
 #line 2293 "dhcp6_parser.cc"
     break;
 
-  case 366:
+  case 366: // interface: "interface" $@60 ":" "constant string"
 #line 1312 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2302,7 +2302,7 @@ namespace isc { namespace dhcp {
 #line 2303 "dhcp6_parser.cc"
     break;
 
-  case 367:
+  case 367: // $@61: %empty
 #line 1318 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2310,7 +2310,7 @@ namespace isc { namespace dhcp {
 #line 2311 "dhcp6_parser.cc"
     break;
 
-  case 368:
+  case 368: // interface_id: "interface-id" $@61 ":" "constant string"
 #line 1320 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2320,7 +2320,7 @@ namespace isc { namespace dhcp {
 #line 2321 "dhcp6_parser.cc"
     break;
 
-  case 369:
+  case 369: // $@62: %empty
 #line 1326 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2328,7 +2328,7 @@ namespace isc { namespace dhcp {
 #line 2329 "dhcp6_parser.cc"
     break;
 
-  case 370:
+  case 370: // client_class: "client-class" $@62 ":" "constant string"
 #line 1328 "dhcp6_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2338,7 +2338,7 @@ namespace isc { namespace dhcp {
 #line 2339 "dhcp6_parser.cc"
     break;
 
-  case 371:
+  case 371: // $@63: %empty
 #line 1334 "dhcp6_parser.yy"
                                                {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2349,7 +2349,7 @@ namespace isc { namespace dhcp {
 #line 2350 "dhcp6_parser.cc"
     break;
 
-  case 372:
+  case 372: // require_client_classes: "require-client-classes" $@63 ":" list_strings
 #line 1339 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -2358,7 +2358,7 @@ namespace isc { namespace dhcp {
 #line 2359 "dhcp6_parser.cc"
     break;
 
-  case 373:
+  case 373: // $@64: %empty
 #line 1344 "dhcp6_parser.yy"
                                    {
     ctx.enter(ctx.RESERVATION_MODE);
@@ -2366,7 +2366,7 @@ namespace isc { namespace dhcp {
 #line 2367 "dhcp6_parser.cc"
     break;
 
-  case 374:
+  case 374: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
 #line 1346 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
@@ -2375,31 +2375,31 @@ namespace isc { namespace dhcp {
 #line 2376 "dhcp6_parser.cc"
     break;
 
-  case 375:
+  case 375: // hr_mode: "disabled"
 #line 1351 "dhcp6_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
 #line 2382 "dhcp6_parser.cc"
     break;
 
-  case 376:
+  case 376: // hr_mode: "out-of-pool"
 #line 1352 "dhcp6_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
 #line 2388 "dhcp6_parser.cc"
     break;
 
-  case 377:
+  case 377: // hr_mode: "global"
 #line 1353 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
 #line 2394 "dhcp6_parser.cc"
     break;
 
-  case 378:
+  case 378: // hr_mode: "all"
 #line 1354 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
 #line 2400 "dhcp6_parser.cc"
     break;
 
-  case 379:
+  case 379: // id: "id" ":" "integer"
 #line 1357 "dhcp6_parser.yy"
                      {
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2408,7 +2408,7 @@ namespace isc { namespace dhcp {
 #line 2409 "dhcp6_parser.cc"
     break;
 
-  case 380:
+  case 380: // rapid_commit: "rapid-commit" ":" "boolean"
 #line 1362 "dhcp6_parser.yy"
                                          {
     ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2417,7 +2417,7 @@ namespace isc { namespace dhcp {
 #line 2418 "dhcp6_parser.cc"
     break;
 
-  case 381:
+  case 381: // $@65: %empty
 #line 1369 "dhcp6_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2428,7 +2428,7 @@ namespace isc { namespace dhcp {
 #line 2429 "dhcp6_parser.cc"
     break;
 
-  case 382:
+  case 382: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
 #line 1374 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
@@ -2437,7 +2437,7 @@ namespace isc { namespace dhcp {
 #line 2438 "dhcp6_parser.cc"
     break;
 
-  case 387:
+  case 387: // $@66: %empty
 #line 1389 "dhcp6_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2447,7 +2447,7 @@ namespace isc { namespace dhcp {
 #line 2448 "dhcp6_parser.cc"
     break;
 
-  case 388:
+  case 388: // shared_network: "{" $@66 shared_network_params "}"
 #line 1393 "dhcp6_parser.yy"
                                        {
     ctx.stack_.pop_back();
@@ -2455,7 +2455,7 @@ namespace isc { namespace dhcp {
 #line 2456 "dhcp6_parser.cc"
     break;
 
-  case 424:
+  case 424: // $@67: %empty
 #line 1440 "dhcp6_parser.yy"
                             {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2466,7 +2466,7 @@ namespace isc { namespace dhcp {
 #line 2467 "dhcp6_parser.cc"
     break;
 
-  case 425:
+  case 425: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
 #line 1445 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
@@ -2475,7 +2475,7 @@ namespace isc { namespace dhcp {
 #line 2476 "dhcp6_parser.cc"
     break;
 
-  case 426:
+  case 426: // $@68: %empty
 #line 1453 "dhcp6_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2484,7 +2484,7 @@ namespace isc { namespace dhcp {
 #line 2485 "dhcp6_parser.cc"
     break;
 
-  case 427:
+  case 427: // sub_option_def_list: "{" $@68 option_def_list "}"
 #line 1456 "dhcp6_parser.yy"
                                  {
     // parsing completed
@@ -2492,7 +2492,7 @@ namespace isc { namespace dhcp {
 #line 2493 "dhcp6_parser.cc"
     break;
 
-  case 432:
+  case 432: // $@69: %empty
 #line 1472 "dhcp6_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2502,7 +2502,7 @@ namespace isc { namespace dhcp {
 #line 2503 "dhcp6_parser.cc"
     break;
 
-  case 433:
+  case 433: // option_def_entry: "{" $@69 option_def_params "}"
 #line 1476 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
@@ -2514,7 +2514,7 @@ namespace isc { namespace dhcp {
 #line 2515 "dhcp6_parser.cc"
     break;
 
-  case 434:
+  case 434: // $@70: %empty
 #line 1487 "dhcp6_parser.yy"
                                {
     // Parse the option-def list entry map
@@ -2524,7 +2524,7 @@ namespace isc { namespace dhcp {
 #line 2525 "dhcp6_parser.cc"
     break;
 
-  case 435:
+  case 435: // sub_option_def: "{" $@70 option_def_params "}"
 #line 1491 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
@@ -2536,7 +2536,7 @@ namespace isc { namespace dhcp {
 #line 2537 "dhcp6_parser.cc"
     break;
 
-  case 451:
+  case 451: // code: "code" ":" "integer"
 #line 1523 "dhcp6_parser.yy"
                          {
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2545,7 +2545,7 @@ namespace isc { namespace dhcp {
 #line 2546 "dhcp6_parser.cc"
     break;
 
-  case 453:
+  case 453: // $@71: %empty
 #line 1530 "dhcp6_parser.yy"
                       {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2553,7 +2553,7 @@ namespace isc { namespace dhcp {
 #line 2554 "dhcp6_parser.cc"
     break;
 
-  case 454:
+  case 454: // option_def_type: "type" $@71 ":" "constant string"
 #line 1532 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2563,7 +2563,7 @@ namespace isc { namespace dhcp {
 #line 2564 "dhcp6_parser.cc"
     break;
 
-  case 455:
+  case 455: // $@72: %empty
 #line 1538 "dhcp6_parser.yy"
                                       {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2571,7 +2571,7 @@ namespace isc { namespace dhcp {
 #line 2572 "dhcp6_parser.cc"
     break;
 
-  case 456:
+  case 456: // option_def_record_types: "record-types" $@72 ":" "constant string"
 #line 1540 "dhcp6_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2581,7 +2581,7 @@ namespace isc { namespace dhcp {
 #line 2582 "dhcp6_parser.cc"
     break;
 
-  case 457:
+  case 457: // $@73: %empty
 #line 1546 "dhcp6_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2589,7 +2589,7 @@ namespace isc { namespace dhcp {
 #line 2590 "dhcp6_parser.cc"
     break;
 
-  case 458:
+  case 458: // space: "space" $@73 ":" "constant string"
 #line 1548 "dhcp6_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2599,7 +2599,7 @@ namespace isc { namespace dhcp {
 #line 2600 "dhcp6_parser.cc"
     break;
 
-  case 460:
+  case 460: // $@74: %empty
 #line 1556 "dhcp6_parser.yy"
                                     {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2607,7 +2607,7 @@ namespace isc { namespace dhcp {
 #line 2608 "dhcp6_parser.cc"
     break;
 
-  case 461:
+  case 461: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
 #line 1558 "dhcp6_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2617,7 +2617,7 @@ namespace isc { namespace dhcp {
 #line 2618 "dhcp6_parser.cc"
     break;
 
-  case 462:
+  case 462: // option_def_array: "array" ":" "boolean"
 #line 1564 "dhcp6_parser.yy"
                                       {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2626,7 +2626,7 @@ namespace isc { namespace dhcp {
 #line 2627 "dhcp6_parser.cc"
     break;
 
-  case 463:
+  case 463: // $@75: %empty
 #line 1573 "dhcp6_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2637,7 +2637,7 @@ namespace isc { namespace dhcp {
 #line 2638 "dhcp6_parser.cc"
     break;
 
-  case 464:
+  case 464: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
 #line 1578 "dhcp6_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
@@ -2646,7 +2646,7 @@ namespace isc { namespace dhcp {
 #line 2647 "dhcp6_parser.cc"
     break;
 
-  case 469:
+  case 469: // $@76: %empty
 #line 1597 "dhcp6_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2656,7 +2656,7 @@ namespace isc { namespace dhcp {
 #line 2657 "dhcp6_parser.cc"
     break;
 
-  case 470:
+  case 470: // option_data_entry: "{" $@76 option_data_params "}"
 #line 1601 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
@@ -2665,7 +2665,7 @@ namespace isc { namespace dhcp {
 #line 2666 "dhcp6_parser.cc"
     break;
 
-  case 471:
+  case 471: // $@77: %empty
 #line 1609 "dhcp6_parser.yy"
                                 {
     // Parse the option-data list entry map
@@ -2675,7 +2675,7 @@ namespace isc { namespace dhcp {
 #line 2676 "dhcp6_parser.cc"
     break;
 
-  case 472:
+  case 472: // sub_option_data: "{" $@77 option_data_params "}"
 #line 1613 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
@@ -2684,7 +2684,7 @@ namespace isc { namespace dhcp {
 #line 2685 "dhcp6_parser.cc"
     break;
 
-  case 487:
+  case 487: // $@78: %empty
 #line 1646 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2692,7 +2692,7 @@ namespace isc { namespace dhcp {
 #line 2693 "dhcp6_parser.cc"
     break;
 
-  case 488:
+  case 488: // option_data_data: "data" $@78 ":" "constant string"
 #line 1648 "dhcp6_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2702,7 +2702,7 @@ namespace isc { namespace dhcp {
 #line 2703 "dhcp6_parser.cc"
     break;
 
-  case 491:
+  case 491: // option_data_csv_format: "csv-format" ":" "boolean"
 #line 1658 "dhcp6_parser.yy"
                                                  {
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2711,7 +2711,7 @@ namespace isc { namespace dhcp {
 #line 2712 "dhcp6_parser.cc"
     break;
 
-  case 492:
+  case 492: // option_data_always_send: "always-send" ":" "boolean"
 #line 1663 "dhcp6_parser.yy"
                                                    {
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -2720,7 +2720,7 @@ namespace isc { namespace dhcp {
 #line 2721 "dhcp6_parser.cc"
     break;
 
-  case 493:
+  case 493: // $@79: %empty
 #line 1671 "dhcp6_parser.yy"
                   {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2731,7 +2731,7 @@ namespace isc { namespace dhcp {
 #line 2732 "dhcp6_parser.cc"
     break;
 
-  case 494:
+  case 494: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
 #line 1676 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
@@ -2740,7 +2740,7 @@ namespace isc { namespace dhcp {
 #line 2741 "dhcp6_parser.cc"
     break;
 
-  case 499:
+  case 499: // $@80: %empty
 #line 1691 "dhcp6_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2750,7 +2750,7 @@ namespace isc { namespace dhcp {
 #line 2751 "dhcp6_parser.cc"
     break;
 
-  case 500:
+  case 500: // pool_list_entry: "{" $@80 pool_params "}"
 #line 1695 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
@@ -2760,7 +2760,7 @@ namespace isc { namespace dhcp {
 #line 2761 "dhcp6_parser.cc"
     break;
 
-  case 501:
+  case 501: // $@81: %empty
 #line 1701 "dhcp6_parser.yy"
                           {
     // Parse the pool list entry map
@@ -2770,7 +2770,7 @@ namespace isc { namespace dhcp {
 #line 2771 "dhcp6_parser.cc"
     break;
 
-  case 502:
+  case 502: // sub_pool6: "{" $@81 pool_params "}"
 #line 1705 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
@@ -2780,7 +2780,7 @@ namespace isc { namespace dhcp {
 #line 2781 "dhcp6_parser.cc"
     break;
 
-  case 512:
+  case 512: // $@82: %empty
 #line 1724 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2788,7 +2788,7 @@ namespace isc { namespace dhcp {
 #line 2789 "dhcp6_parser.cc"
     break;
 
-  case 513:
+  case 513: // pool_entry: "pool" $@82 ":" "constant string"
 #line 1726 "dhcp6_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2798,7 +2798,7 @@ namespace isc { namespace dhcp {
 #line 2799 "dhcp6_parser.cc"
     break;
 
-  case 514:
+  case 514: // $@83: %empty
 #line 1732 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2806,7 +2806,7 @@ namespace isc { namespace dhcp {
 #line 2807 "dhcp6_parser.cc"
     break;
 
-  case 515:
+  case 515: // user_context: "user-context" $@83 ":" map_value
 #line 1734 "dhcp6_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -2833,7 +2833,7 @@ namespace isc { namespace dhcp {
 #line 2834 "dhcp6_parser.cc"
     break;
 
-  case 516:
+  case 516: // $@84: %empty
 #line 1757 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2841,7 +2841,7 @@ namespace isc { namespace dhcp {
 #line 2842 "dhcp6_parser.cc"
     break;
 
-  case 517:
+  case 517: // comment: "comment" $@84 ":" "constant string"
 #line 1759 "dhcp6_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -2870,7 +2870,7 @@ namespace isc { namespace dhcp {
 #line 2871 "dhcp6_parser.cc"
     break;
 
-  case 518:
+  case 518: // $@85: %empty
 #line 1787 "dhcp6_parser.yy"
                         {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2881,7 +2881,7 @@ namespace isc { namespace dhcp {
 #line 2882 "dhcp6_parser.cc"
     break;
 
-  case 519:
+  case 519: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]"
 #line 1792 "dhcp6_parser.yy"
                                                               {
     ctx.stack_.pop_back();
@@ -2890,7 +2890,7 @@ namespace isc { namespace dhcp {
 #line 2891 "dhcp6_parser.cc"
     break;
 
-  case 524:
+  case 524: // $@86: %empty
 #line 1807 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2900,7 +2900,7 @@ namespace isc { namespace dhcp {
 #line 2901 "dhcp6_parser.cc"
     break;
 
-  case 525:
+  case 525: // pd_pool_entry: "{" $@86 pd_pool_params "}"
 #line 1811 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
@@ -2912,7 +2912,7 @@ namespace isc { namespace dhcp {
 #line 2913 "dhcp6_parser.cc"
     break;
 
-  case 526:
+  case 526: // $@87: %empty
 #line 1819 "dhcp6_parser.yy"
                             {
     // Parse the pd-pool list entry map
@@ -2922,7 +2922,7 @@ namespace isc { namespace dhcp {
 #line 2923 "dhcp6_parser.cc"
     break;
 
-  case 527:
+  case 527: // sub_pd_pool: "{" $@87 pd_pool_params "}"
 #line 1823 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
@@ -2934,7 +2934,7 @@ namespace isc { namespace dhcp {
 #line 2935 "dhcp6_parser.cc"
     break;
 
-  case 541:
+  case 541: // $@88: %empty
 #line 1848 "dhcp6_parser.yy"
                   {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2942,7 +2942,7 @@ namespace isc { namespace dhcp {
 #line 2943 "dhcp6_parser.cc"
     break;
 
-  case 542:
+  case 542: // pd_prefix: "prefix" $@88 ":" "constant string"
 #line 1850 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2952,7 +2952,7 @@ namespace isc { namespace dhcp {
 #line 2953 "dhcp6_parser.cc"
     break;
 
-  case 543:
+  case 543: // pd_prefix_len: "prefix-len" ":" "integer"
 #line 1856 "dhcp6_parser.yy"
                                         {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2961,7 +2961,7 @@ namespace isc { namespace dhcp {
 #line 2962 "dhcp6_parser.cc"
     break;
 
-  case 544:
+  case 544: // $@89: %empty
 #line 1861 "dhcp6_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -2969,7 +2969,7 @@ namespace isc { namespace dhcp {
 #line 2970 "dhcp6_parser.cc"
     break;
 
-  case 545:
+  case 545: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string"
 #line 1863 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2979,7 +2979,7 @@ namespace isc { namespace dhcp {
 #line 2980 "dhcp6_parser.cc"
     break;
 
-  case 546:
+  case 546: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
 #line 1869 "dhcp6_parser.yy"
                                                        {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2988,7 +2988,7 @@ namespace isc { namespace dhcp {
 #line 2989 "dhcp6_parser.cc"
     break;
 
-  case 547:
+  case 547: // pd_delegated_len: "delegated-len" ":" "integer"
 #line 1874 "dhcp6_parser.yy"
                                               {
     ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -2997,7 +2997,7 @@ namespace isc { namespace dhcp {
 #line 2998 "dhcp6_parser.cc"
     break;
 
-  case 548:
+  case 548: // $@90: %empty
 #line 1882 "dhcp6_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3008,7 +3008,7 @@ namespace isc { namespace dhcp {
 #line 3009 "dhcp6_parser.cc"
     break;
 
-  case 549:
+  case 549: // reservations: "reservations" $@90 ":" "[" reservations_list "]"
 #line 1887 "dhcp6_parser.yy"
                                                           {
     ctx.stack_.pop_back();
@@ -3017,7 +3017,7 @@ namespace isc { namespace dhcp {
 #line 3018 "dhcp6_parser.cc"
     break;
 
-  case 554:
+  case 554: // $@91: %empty
 #line 1900 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3027,7 +3027,7 @@ namespace isc { namespace dhcp {
 #line 3028 "dhcp6_parser.cc"
     break;
 
-  case 555:
+  case 555: // reservation: "{" $@91 reservation_params "}"
 #line 1904 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
@@ -3036,7 +3036,7 @@ namespace isc { namespace dhcp {
 #line 3037 "dhcp6_parser.cc"
     break;
 
-  case 556:
+  case 556: // $@92: %empty
 #line 1909 "dhcp6_parser.yy"
                                 {
     // Parse the reservations list entry map
@@ -3046,7 +3046,7 @@ namespace isc { namespace dhcp {
 #line 3047 "dhcp6_parser.cc"
     break;
 
-  case 557:
+  case 557: // sub_reservation: "{" $@92 reservation_params "}"
 #line 1913 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
@@ -3055,7 +3055,7 @@ namespace isc { namespace dhcp {
 #line 3056 "dhcp6_parser.cc"
     break;
 
-  case 573:
+  case 573: // $@93: %empty
 #line 1940 "dhcp6_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3066,7 +3066,7 @@ namespace isc { namespace dhcp {
 #line 3067 "dhcp6_parser.cc"
     break;
 
-  case 574:
+  case 574: // ip_addresses: "ip-addresses" $@93 ":" list_strings
 #line 1945 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -3075,7 +3075,7 @@ namespace isc { namespace dhcp {
 #line 3076 "dhcp6_parser.cc"
     break;
 
-  case 575:
+  case 575: // $@94: %empty
 #line 1950 "dhcp6_parser.yy"
                    {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3086,7 +3086,7 @@ namespace isc { namespace dhcp {
 #line 3087 "dhcp6_parser.cc"
     break;
 
-  case 576:
+  case 576: // prefixes: "prefixes" $@94 ":" list_strings
 #line 1955 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -3095,7 +3095,7 @@ namespace isc { namespace dhcp {
 #line 3096 "dhcp6_parser.cc"
     break;
 
-  case 577:
+  case 577: // $@95: %empty
 #line 1960 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3103,7 +3103,7 @@ namespace isc { namespace dhcp {
 #line 3104 "dhcp6_parser.cc"
     break;
 
-  case 578:
+  case 578: // duid: "duid" $@95 ":" "constant string"
 #line 1962 "dhcp6_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3113,7 +3113,7 @@ namespace isc { namespace dhcp {
 #line 3114 "dhcp6_parser.cc"
     break;
 
-  case 579:
+  case 579: // $@96: %empty
 #line 1968 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3121,7 +3121,7 @@ namespace isc { namespace dhcp {
 #line 3122 "dhcp6_parser.cc"
     break;
 
-  case 580:
+  case 580: // hw_address: "hw-address" $@96 ":" "constant string"
 #line 1970 "dhcp6_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3131,7 +3131,7 @@ namespace isc { namespace dhcp {
 #line 3132 "dhcp6_parser.cc"
     break;
 
-  case 581:
+  case 581: // $@97: %empty
 #line 1976 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3139,7 +3139,7 @@ namespace isc { namespace dhcp {
 #line 3140 "dhcp6_parser.cc"
     break;
 
-  case 582:
+  case 582: // hostname: "hostname" $@97 ":" "constant string"
 #line 1978 "dhcp6_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3149,7 +3149,7 @@ namespace isc { namespace dhcp {
 #line 3150 "dhcp6_parser.cc"
     break;
 
-  case 583:
+  case 583: // $@98: %empty
 #line 1984 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3157,7 +3157,7 @@ namespace isc { namespace dhcp {
 #line 3158 "dhcp6_parser.cc"
     break;
 
-  case 584:
+  case 584: // flex_id_value: "flex-id" $@98 ":" "constant string"
 #line 1986 "dhcp6_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3167,7 +3167,7 @@ namespace isc { namespace dhcp {
 #line 3168 "dhcp6_parser.cc"
     break;
 
-  case 585:
+  case 585: // $@99: %empty
 #line 1992 "dhcp6_parser.yy"
                                            {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3178,7 +3178,7 @@ namespace isc { namespace dhcp {
 #line 3179 "dhcp6_parser.cc"
     break;
 
-  case 586:
+  case 586: // reservation_client_classes: "client-classes" $@99 ":" list_strings
 #line 1997 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
@@ -3187,7 +3187,7 @@ namespace isc { namespace dhcp {
 #line 3188 "dhcp6_parser.cc"
     break;
 
-  case 587:
+  case 587: // $@100: %empty
 #line 2005 "dhcp6_parser.yy"
              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3198,7 +3198,7 @@ namespace isc { namespace dhcp {
 #line 3199 "dhcp6_parser.cc"
     break;
 
-  case 588:
+  case 588: // relay: "relay" $@100 ":" "{" relay_map "}"
 #line 2010 "dhcp6_parser.yy"
                                                 {
     ctx.stack_.pop_back();
@@ -3207,7 +3207,7 @@ namespace isc { namespace dhcp {
 #line 3208 "dhcp6_parser.cc"
     break;
 
-  case 591:
+  case 591: // $@101: %empty
 #line 2019 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3215,7 +3215,7 @@ namespace isc { namespace dhcp {
 #line 3216 "dhcp6_parser.cc"
     break;
 
-  case 592:
+  case 592: // ip_address: "ip-address" $@101 ":" "constant string"
 #line 2021 "dhcp6_parser.yy"
                {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3225,7 +3225,7 @@ namespace isc { namespace dhcp {
 #line 3226 "dhcp6_parser.cc"
     break;
 
-  case 593:
+  case 593: // $@102: %empty
 #line 2030 "dhcp6_parser.yy"
                                {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3236,7 +3236,7 @@ namespace isc { namespace dhcp {
 #line 3237 "dhcp6_parser.cc"
     break;
 
-  case 594:
+  case 594: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]"
 #line 2035 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -3245,7 +3245,7 @@ namespace isc { namespace dhcp {
 #line 3246 "dhcp6_parser.cc"
     break;
 
-  case 597:
+  case 597: // $@103: %empty
 #line 2044 "dhcp6_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3255,7 +3255,7 @@ namespace isc { namespace dhcp {
 #line 3256 "dhcp6_parser.cc"
     break;
 
-  case 598:
+  case 598: // client_class_entry: "{" $@103 client_class_params "}"
 #line 2048 "dhcp6_parser.yy"
                                      {
     // The name client class parameter is required.
@@ -3265,7 +3265,7 @@ namespace isc { namespace dhcp {
 #line 3266 "dhcp6_parser.cc"
     break;
 
-  case 611:
+  case 611: // $@104: %empty
 #line 2073 "dhcp6_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3273,7 +3273,7 @@ namespace isc { namespace dhcp {
 #line 3274 "dhcp6_parser.cc"
     break;
 
-  case 612:
+  case 612: // client_class_test: "test" $@104 ":" "constant string"
 #line 2075 "dhcp6_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3283,7 +3283,7 @@ namespace isc { namespace dhcp {
 #line 3284 "dhcp6_parser.cc"
     break;
 
-  case 613:
+  case 613: // only_if_required: "only-if-required" ":" "boolean"
 #line 2081 "dhcp6_parser.yy"
                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3292,7 +3292,7 @@ namespace isc { namespace dhcp {
 #line 3293 "dhcp6_parser.cc"
     break;
 
-  case 614:
+  case 614: // $@105: %empty
 #line 2089 "dhcp6_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3303,7 +3303,7 @@ namespace isc { namespace dhcp {
 #line 3304 "dhcp6_parser.cc"
     break;
 
-  case 615:
+  case 615: // server_id: "server-id" $@105 ":" "{" server_id_params "}"
 #line 2094 "dhcp6_parser.yy"
                                                        {
     // The type parameter is required.
@@ -3314,7 +3314,7 @@ namespace isc { namespace dhcp {
 #line 3315 "dhcp6_parser.cc"
     break;
 
-  case 627:
+  case 627: // $@106: %empty
 #line 2116 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.DUID_TYPE);
@@ -3322,7 +3322,7 @@ namespace isc { namespace dhcp {
 #line 3323 "dhcp6_parser.cc"
     break;
 
-  case 628:
+  case 628: // server_id_type: "type" $@106 ":" duid_type
 #line 2118 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
@@ -3331,25 +3331,25 @@ namespace isc { namespace dhcp {
 #line 3332 "dhcp6_parser.cc"
     break;
 
-  case 629:
+  case 629: // duid_type: "LLT"
 #line 2123 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 3338 "dhcp6_parser.cc"
     break;
 
-  case 630:
+  case 630: // duid_type: "EN"
 #line 2124 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
 #line 3344 "dhcp6_parser.cc"
     break;
 
-  case 631:
+  case 631: // duid_type: "LL"
 #line 2125 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
 #line 3350 "dhcp6_parser.cc"
     break;
 
-  case 632:
+  case 632: // htype: "htype" ":" "integer"
 #line 2128 "dhcp6_parser.yy"
                            {
     ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3358,7 +3358,7 @@ namespace isc { namespace dhcp {
 #line 3359 "dhcp6_parser.cc"
     break;
 
-  case 633:
+  case 633: // $@107: %empty
 #line 2133 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3366,7 +3366,7 @@ namespace isc { namespace dhcp {
 #line 3367 "dhcp6_parser.cc"
     break;
 
-  case 634:
+  case 634: // identifier: "identifier" $@107 ":" "constant string"
 #line 2135 "dhcp6_parser.yy"
                {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3376,7 +3376,7 @@ namespace isc { namespace dhcp {
 #line 3377 "dhcp6_parser.cc"
     break;
 
-  case 635:
+  case 635: // time: "time" ":" "integer"
 #line 2141 "dhcp6_parser.yy"
                          {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3385,7 +3385,7 @@ namespace isc { namespace dhcp {
 #line 3386 "dhcp6_parser.cc"
     break;
 
-  case 636:
+  case 636: // enterprise_id: "enterprise-id" ":" "integer"
 #line 2146 "dhcp6_parser.yy"
                                            {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3394,7 +3394,7 @@ namespace isc { namespace dhcp {
 #line 3395 "dhcp6_parser.cc"
     break;
 
-  case 637:
+  case 637: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
 #line 2153 "dhcp6_parser.yy"
                                          {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3403,7 +3403,7 @@ namespace isc { namespace dhcp {
 #line 3404 "dhcp6_parser.cc"
     break;
 
-  case 638:
+  case 638: // $@108: %empty
 #line 2160 "dhcp6_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3414,7 +3414,7 @@ namespace isc { namespace dhcp {
 #line 3415 "dhcp6_parser.cc"
     break;
 
-  case 639:
+  case 639: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
 #line 2165 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -3423,7 +3423,7 @@ namespace isc { namespace dhcp {
 #line 3424 "dhcp6_parser.cc"
     break;
 
-  case 647:
+  case 647: // $@109: %empty
 #line 2181 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3431,7 +3431,7 @@ namespace isc { namespace dhcp {
 #line 3432 "dhcp6_parser.cc"
     break;
 
-  case 648:
+  case 648: // socket_type: "socket-type" $@109 ":" "constant string"
 #line 2183 "dhcp6_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3441,7 +3441,7 @@ namespace isc { namespace dhcp {
 #line 3442 "dhcp6_parser.cc"
     break;
 
-  case 649:
+  case 649: // $@110: %empty
 #line 2189 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3449,7 +3449,7 @@ namespace isc { namespace dhcp {
 #line 3450 "dhcp6_parser.cc"
     break;
 
-  case 650:
+  case 650: // socket_name: "socket-name" $@110 ":" "constant string"
 #line 2191 "dhcp6_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3459,7 +3459,7 @@ namespace isc { namespace dhcp {
 #line 3460 "dhcp6_parser.cc"
     break;
 
-  case 651:
+  case 651: // $@111: %empty
 #line 2200 "dhcp6_parser.yy"
                                        {
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3470,7 +3470,7 @@ namespace isc { namespace dhcp {
 #line 3471 "dhcp6_parser.cc"
     break;
 
-  case 652:
+  case 652: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
 #line 2205 "dhcp6_parser.yy"
                                                            {
     // The enable queue parameter is required.
@@ -3481,7 +3481,7 @@ namespace isc { namespace dhcp {
 #line 3482 "dhcp6_parser.cc"
     break;
 
-  case 661:
+  case 661: // enable_queue: "enable-queue" ":" "boolean"
 #line 2224 "dhcp6_parser.yy"
                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3490,7 +3490,7 @@ namespace isc { namespace dhcp {
 #line 3491 "dhcp6_parser.cc"
     break;
 
-  case 662:
+  case 662: // $@112: %empty
 #line 2229 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3498,7 +3498,7 @@ namespace isc { namespace dhcp {
 #line 3499 "dhcp6_parser.cc"
     break;
 
-  case 663:
+  case 663: // queue_type: "queue-type" $@112 ":" "constant string"
 #line 2231 "dhcp6_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -3508,7 +3508,7 @@ namespace isc { namespace dhcp {
 #line 3509 "dhcp6_parser.cc"
     break;
 
-  case 664:
+  case 664: // capacity: "capacity" ":" "integer"
 #line 2237 "dhcp6_parser.yy"
                                  {
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -3517,7 +3517,7 @@ namespace isc { namespace dhcp {
 #line 3518 "dhcp6_parser.cc"
     break;
 
-  case 665:
+  case 665: // $@113: %empty
 #line 2242 "dhcp6_parser.yy"
                             {
     ctx.enter(ctx.NO_KEYWORD);
@@ -3525,7 +3525,7 @@ namespace isc { namespace dhcp {
 #line 3526 "dhcp6_parser.cc"
     break;
 
-  case 666:
+  case 666: // arbitrary_map_entry: "constant string" $@113 ":" value
 #line 2244 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -3534,7 +3534,7 @@ namespace isc { namespace dhcp {
 #line 3535 "dhcp6_parser.cc"
     break;
 
-  case 667:
+  case 667: // $@114: %empty
 #line 2251 "dhcp6_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3545,7 +3545,7 @@ namespace isc { namespace dhcp {
 #line 3546 "dhcp6_parser.cc"
     break;
 
-  case 668:
+  case 668: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
 #line 2256 "dhcp6_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
@@ -3556,7 +3556,7 @@ namespace isc { namespace dhcp {
 #line 3557 "dhcp6_parser.cc"
     break;
 
-  case 669:
+  case 669: // $@115: %empty
 #line 2263 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
@@ -3566,7 +3566,7 @@ namespace isc { namespace dhcp {
 #line 3567 "dhcp6_parser.cc"
     break;
 
-  case 670:
+  case 670: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
 #line 2267 "dhcp6_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
@@ -3576,7 +3576,7 @@ namespace isc { namespace dhcp {
 #line 3577 "dhcp6_parser.cc"
     break;
 
-  case 691:
+  case 691: // enable_updates: "enable-updates" ":" "boolean"
 #line 2297 "dhcp6_parser.yy"
                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -3585,16 +3585,16 @@ namespace isc { namespace dhcp {
 #line 3586 "dhcp6_parser.cc"
     break;
 
-  case 692:
-#line 2302 "dhcp6_parser.yy"
-                                     {
+  case 692: // $@116: %empty
+#line 2303 "dhcp6_parser.yy"
+                                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3594 "dhcp6_parser.cc"
     break;
 
-  case 693:
-#line 2304 "dhcp6_parser.yy"
+  case 693: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
+#line 2305 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
@@ -3603,16 +3603,16 @@ namespace isc { namespace dhcp {
 #line 3604 "dhcp6_parser.cc"
     break;
 
-  case 694:
-#line 2310 "dhcp6_parser.yy"
+  case 694: // $@117: %empty
+#line 2311 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3612 "dhcp6_parser.cc"
     break;
 
-  case 695:
-#line 2312 "dhcp6_parser.yy"
+  case 695: // server_ip: "server-ip" $@117 ":" "constant string"
+#line 2313 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
@@ -3621,8 +3621,8 @@ namespace isc { namespace dhcp {
 #line 3622 "dhcp6_parser.cc"
     break;
 
-  case 696:
-#line 2318 "dhcp6_parser.yy"
+  case 696: // server_port: "server-port" ":" "integer"
+#line 2319 "dhcp6_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
@@ -3630,16 +3630,16 @@ namespace isc { namespace dhcp {
 #line 3631 "dhcp6_parser.cc"
     break;
 
-  case 697:
-#line 2323 "dhcp6_parser.yy"
+  case 697: // $@118: %empty
+#line 2324 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3639 "dhcp6_parser.cc"
     break;
 
-  case 698:
-#line 2325 "dhcp6_parser.yy"
+  case 698: // sender_ip: "sender-ip" $@118 ":" "constant string"
+#line 2326 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
@@ -3648,8 +3648,8 @@ namespace isc { namespace dhcp {
 #line 3649 "dhcp6_parser.cc"
     break;
 
-  case 699:
-#line 2331 "dhcp6_parser.yy"
+  case 699: // sender_port: "sender-port" ":" "integer"
+#line 2332 "dhcp6_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
@@ -3657,8 +3657,8 @@ namespace isc { namespace dhcp {
 #line 3658 "dhcp6_parser.cc"
     break;
 
-  case 700:
-#line 2336 "dhcp6_parser.yy"
+  case 700: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2337 "dhcp6_parser.yy"
                                              {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
@@ -3666,16 +3666,16 @@ namespace isc { namespace dhcp {
 #line 3667 "dhcp6_parser.cc"
     break;
 
-  case 701:
-#line 2341 "dhcp6_parser.yy"
+  case 701: // $@119: %empty
+#line 2342 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
 #line 3675 "dhcp6_parser.cc"
     break;
 
-  case 702:
-#line 2343 "dhcp6_parser.yy"
+  case 702: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
+#line 2344 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -3683,28 +3683,28 @@ namespace isc { namespace dhcp {
 #line 3684 "dhcp6_parser.cc"
     break;
 
-  case 703:
-#line 2349 "dhcp6_parser.yy"
+  case 703: // ncr_protocol_value: "UDP"
+#line 2350 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 3690 "dhcp6_parser.cc"
     break;
 
-  case 704:
-#line 2350 "dhcp6_parser.yy"
+  case 704: // ncr_protocol_value: "TCP"
+#line 2351 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 3696 "dhcp6_parser.cc"
     break;
 
-  case 705:
-#line 2353 "dhcp6_parser.yy"
+  case 705: // $@120: %empty
+#line 2354 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
 }
 #line 3704 "dhcp6_parser.cc"
     break;
 
-  case 706:
-#line 2355 "dhcp6_parser.yy"
+  case 706: // ncr_format: "ncr-format" $@120 ":" "JSON"
+#line 2356 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -3713,8 +3713,8 @@ namespace isc { namespace dhcp {
 #line 3714 "dhcp6_parser.cc"
     break;
 
-  case 707:
-#line 2362 "dhcp6_parser.yy"
+  case 707: // dep_override_no_update: "override-no-update" ":" "boolean"
+#line 2363 "dhcp6_parser.yy"
                                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
@@ -3722,8 +3722,8 @@ namespace isc { namespace dhcp {
 #line 3723 "dhcp6_parser.cc"
     break;
 
-  case 708:
-#line 2368 "dhcp6_parser.yy"
+  case 708: // dep_override_client_update: "override-client-update" ":" "boolean"
+#line 2369 "dhcp6_parser.yy"
                                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
@@ -3731,16 +3731,16 @@ namespace isc { namespace dhcp {
 #line 3732 "dhcp6_parser.cc"
     break;
 
-  case 709:
-#line 2374 "dhcp6_parser.yy"
+  case 709: // $@121: %empty
+#line 2375 "dhcp6_parser.yy"
                                              {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 3740 "dhcp6_parser.cc"
     break;
 
-  case 710:
-#line 2376 "dhcp6_parser.yy"
+  case 710: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
+#line 2377 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -3748,16 +3748,16 @@ namespace isc { namespace dhcp {
 #line 3749 "dhcp6_parser.cc"
     break;
 
-  case 711:
-#line 2382 "dhcp6_parser.yy"
+  case 711: // $@122: %empty
+#line 2383 "dhcp6_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3757 "dhcp6_parser.cc"
     break;
 
-  case 712:
-#line 2384 "dhcp6_parser.yy"
+  case 712: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
+#line 2385 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
@@ -3766,16 +3766,16 @@ namespace isc { namespace dhcp {
 #line 3767 "dhcp6_parser.cc"
     break;
 
-  case 713:
-#line 2391 "dhcp6_parser.yy"
+  case 713: // $@123: %empty
+#line 2392 "dhcp6_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3775 "dhcp6_parser.cc"
     break;
 
-  case 714:
-#line 2393 "dhcp6_parser.yy"
+  case 714: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
+#line 2394 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -3784,16 +3784,16 @@ namespace isc { namespace dhcp {
 #line 3785 "dhcp6_parser.cc"
     break;
 
-  case 715:
-#line 2400 "dhcp6_parser.yy"
+  case 715: // $@124: %empty
+#line 2401 "dhcp6_parser.yy"
                                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3793 "dhcp6_parser.cc"
     break;
 
-  case 716:
-#line 2402 "dhcp6_parser.yy"
+  case 716: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
+#line 2403 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -3802,8 +3802,8 @@ namespace isc { namespace dhcp {
 #line 3803 "dhcp6_parser.cc"
     break;
 
-  case 717:
-#line 2411 "dhcp6_parser.yy"
+  case 717: // $@125: %empty
+#line 2412 "dhcp6_parser.yy"
                                {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
@@ -3813,8 +3813,8 @@ namespace isc { namespace dhcp {
 #line 3814 "dhcp6_parser.cc"
     break;
 
-  case 718:
-#line 2416 "dhcp6_parser.yy"
+  case 718: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
+#line 2417 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
@@ -3823,8 +3823,8 @@ namespace isc { namespace dhcp {
 #line 3824 "dhcp6_parser.cc"
     break;
 
-  case 719:
-#line 2422 "dhcp6_parser.yy"
+  case 719: // $@126: %empty
+#line 2423 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3833,8 +3833,8 @@ namespace isc { namespace dhcp {
 #line 3834 "dhcp6_parser.cc"
     break;
 
-  case 720:
-#line 2426 "dhcp6_parser.yy"
+  case 720: // sub_config_control: "{" $@126 config_control_params "}"
+#line 2427 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
@@ -3842,8 +3842,8 @@ namespace isc { namespace dhcp {
 #line 3843 "dhcp6_parser.cc"
     break;
 
-  case 725:
-#line 2441 "dhcp6_parser.yy"
+  case 725: // $@127: %empty
+#line 2442 "dhcp6_parser.yy"
                                    {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
@@ -3853,8 +3853,8 @@ namespace isc { namespace dhcp {
 #line 3854 "dhcp6_parser.cc"
     break;
 
-  case 726:
-#line 2446 "dhcp6_parser.yy"
+  case 726: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
+#line 2447 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3862,8 +3862,8 @@ namespace isc { namespace dhcp {
 #line 3863 "dhcp6_parser.cc"
     break;
 
-  case 727:
-#line 2451 "dhcp6_parser.yy"
+  case 727: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2452 "dhcp6_parser.yy"
                                                              {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
@@ -3871,8 +3871,8 @@ namespace isc { namespace dhcp {
 #line 3872 "dhcp6_parser.cc"
     break;
 
-  case 728:
-#line 2458 "dhcp6_parser.yy"
+  case 728: // $@128: %empty
+#line 2459 "dhcp6_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
@@ -3882,8 +3882,8 @@ namespace isc { namespace dhcp {
 #line 3883 "dhcp6_parser.cc"
     break;
 
-  case 729:
-#line 2463 "dhcp6_parser.yy"
+  case 729: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
+#line 2464 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3891,8 +3891,8 @@ namespace isc { namespace dhcp {
 #line 3892 "dhcp6_parser.cc"
     break;
 
-  case 732:
-#line 2475 "dhcp6_parser.yy"
+  case 732: // $@129: %empty
+#line 2476 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -3901,16 +3901,16 @@ namespace isc { namespace dhcp {
 #line 3902 "dhcp6_parser.cc"
     break;
 
-  case 733:
-#line 2479 "dhcp6_parser.yy"
+  case 733: // logger_entry: "{" $@129 logger_params "}"
+#line 2480 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
 #line 3910 "dhcp6_parser.cc"
     break;
 
-  case 743:
-#line 2496 "dhcp6_parser.yy"
+  case 743: // debuglevel: "debuglevel" ":" "integer"
+#line 2497 "dhcp6_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
@@ -3918,16 +3918,16 @@ namespace isc { namespace dhcp {
 #line 3919 "dhcp6_parser.cc"
     break;
 
-  case 744:
-#line 2501 "dhcp6_parser.yy"
+  case 744: // $@130: %empty
+#line 2502 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3927 "dhcp6_parser.cc"
     break;
 
-  case 745:
-#line 2503 "dhcp6_parser.yy"
+  case 745: // severity: "severity" $@130 ":" "constant string"
+#line 2504 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -3936,8 +3936,8 @@ namespace isc { namespace dhcp {
 #line 3937 "dhcp6_parser.cc"
     break;
 
-  case 746:
-#line 2509 "dhcp6_parser.yy"
+  case 746: // $@131: %empty
+#line 2510 "dhcp6_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
@@ -3947,8 +3947,8 @@ namespace isc { namespace dhcp {
 #line 3948 "dhcp6_parser.cc"
     break;
 
-  case 747:
-#line 2514 "dhcp6_parser.yy"
+  case 747: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
+#line 2515 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -3956,8 +3956,8 @@ namespace isc { namespace dhcp {
 #line 3957 "dhcp6_parser.cc"
     break;
 
-  case 750:
-#line 2523 "dhcp6_parser.yy"
+  case 750: // $@132: %empty
+#line 2524 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -3966,24 +3966,24 @@ namespace isc { namespace dhcp {
 #line 3967 "dhcp6_parser.cc"
     break;
 
-  case 751:
-#line 2527 "dhcp6_parser.yy"
+  case 751: // output_entry: "{" $@132 output_params_list "}"
+#line 2528 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
 #line 3975 "dhcp6_parser.cc"
     break;
 
-  case 759:
-#line 2542 "dhcp6_parser.yy"
+  case 759: // $@133: %empty
+#line 2543 "dhcp6_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 3983 "dhcp6_parser.cc"
     break;
 
-  case 760:
-#line 2544 "dhcp6_parser.yy"
+  case 760: // output: "output" $@133 ":" "constant string"
+#line 2545 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -3992,8 +3992,8 @@ namespace isc { namespace dhcp {
 #line 3993 "dhcp6_parser.cc"
     break;
 
-  case 761:
-#line 2550 "dhcp6_parser.yy"
+  case 761: // flush: "flush" ":" "boolean"
+#line 2551 "dhcp6_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
@@ -4001,8 +4001,8 @@ namespace isc { namespace dhcp {
 #line 4002 "dhcp6_parser.cc"
     break;
 
-  case 762:
-#line 2555 "dhcp6_parser.yy"
+  case 762: // maxsize: "maxsize" ":" "integer"
+#line 2556 "dhcp6_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
@@ -4010,8 +4010,8 @@ namespace isc { namespace dhcp {
 #line 4011 "dhcp6_parser.cc"
     break;
 
-  case 763:
-#line 2560 "dhcp6_parser.yy"
+  case 763: // maxver: "maxver" ":" "integer"
+#line 2561 "dhcp6_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
@@ -4019,16 +4019,16 @@ namespace isc { namespace dhcp {
 #line 4020 "dhcp6_parser.cc"
     break;
 
-  case 764:
-#line 2565 "dhcp6_parser.yy"
+  case 764: // $@134: %empty
+#line 2566 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 4028 "dhcp6_parser.cc"
     break;
 
-  case 765:
-#line 2567 "dhcp6_parser.yy"
+  case 765: // pattern: "pattern" $@134 ":" "constant string"
+#line 2568 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
@@ -4560,8 +4560,8 @@ namespace isc { namespace dhcp {
      475,   477,   478,   479,   480,   481,   482,   483,   484,   295,
      297,   292,     0,   290,   293,   294,     0,   692,   694,     0,
      697,     0,     0,   701,   705,     0,     0,   709,   711,   713,
-     715,   690,   688,   689,     0,   671,   673,   674,   675,   676,
-     677,   678,   679,   680,   681,   682,   683,   684,   685,   686,
+     715,   690,   688,   689,     0,   671,   673,   685,   674,   675,
+     676,   677,   678,   679,   680,   681,   682,   683,   684,   686,
      687,   725,     0,     0,   721,   723,   724,    46,     0,     0,
       39,     0,     0,     0,    59,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -5446,7 +5446,7 @@ namespace isc { namespace dhcp {
   "queue_control_params", "queue_control_param", "enable_queue",
   "queue_type", "$@112", "capacity", "arbitrary_map_entry", "$@113",
   "dhcp_ddns", "$@114", "sub_dhcp_ddns", "$@115", "dhcp_ddns_params",
-  "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@116",
+  "dhcp_ddns_param", "enable_updates", "dep_qualifying_suffix", "$@116",
   "server_ip", "$@117", "server_port", "sender_ip", "$@118", "sender_port",
   "max_queue_size", "ncr_protocol", "$@119", "ncr_protocol_value",
   "ncr_format", "$@120", "dep_override_no_update",
@@ -5538,14 +5538,14 @@ namespace isc { namespace dhcp {
     2221,  2224,  2229,  2229,  2237,  2242,  2242,  2251,  2251,  2263,
     2263,  2273,  2274,  2277,  2278,  2279,  2280,  2281,  2282,  2283,
     2284,  2285,  2286,  2287,  2288,  2289,  2290,  2291,  2292,  2293,
-    2294,  2297,  2302,  2302,  2310,  2310,  2318,  2323,  2323,  2331,
-    2336,  2341,  2341,  2349,  2350,  2353,  2353,  2362,  2368,  2374,
-    2374,  2382,  2382,  2391,  2391,  2400,  2400,  2411,  2411,  2422,
-    2422,  2432,  2433,  2437,  2438,  2441,  2441,  2451,  2458,  2458,
-    2470,  2471,  2475,  2475,  2483,  2484,  2487,  2488,  2489,  2490,
-    2491,  2492,  2493,  2496,  2501,  2501,  2509,  2509,  2519,  2520,
-    2523,  2523,  2531,  2532,  2535,  2536,  2537,  2538,  2539,  2542,
-    2542,  2550,  2555,  2560,  2565,  2565
+    2294,  2297,  2303,  2303,  2311,  2311,  2319,  2324,  2324,  2332,
+    2337,  2342,  2342,  2350,  2351,  2354,  2354,  2363,  2369,  2375,
+    2375,  2383,  2383,  2392,  2392,  2401,  2401,  2412,  2412,  2423,
+    2423,  2433,  2434,  2438,  2439,  2442,  2442,  2452,  2459,  2459,
+    2471,  2472,  2476,  2476,  2484,  2485,  2488,  2489,  2490,  2491,
+    2492,  2493,  2494,  2497,  2502,  2502,  2510,  2510,  2520,  2521,
+    2524,  2524,  2532,  2533,  2536,  2537,  2538,  2539,  2540,  2543,
+    2543,  2551,  2556,  2561,  2566,  2566
   };
 
   void
@@ -5580,7 +5580,7 @@ namespace isc { namespace dhcp {
 } } // isc::dhcp
 #line 5582 "dhcp6_parser.cc"
 
-#line 2573 "dhcp6_parser.yy"
+#line 2574 "dhcp6_parser.yy"
 
 
 void
index 599c1fef826855d32b2476a11007523e99cfa221..95baa9e9fdb3b21eee2f15d82125d66f2b8ab790 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -1263,7 +1263,7 @@ namespace isc { namespace dhcp {
         S_dhcp_ddns_params = 562,                // dhcp_ddns_params
         S_dhcp_ddns_param = 563,                 // dhcp_ddns_param
         S_enable_updates = 564,                  // enable_updates
-        S_qualifying_suffix = 565,               // qualifying_suffix
+        S_dep_qualifying_suffix = 565,           // dep_qualifying_suffix
         S_566_116 = 566,                         // $@116
         S_server_ip = 567,                       // server_ip
         S_568_117 = 568,                         // $@117
@@ -1356,29 +1356,29 @@ namespace isc { namespace dhcp {
       {
         switch (this->kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -1492,29 +1492,29 @@ namespace isc { namespace dhcp {
         // Value type destructor.
 switch (yykind)
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -4838,7 +4838,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -5085,11 +5085,12 @@ switch (yykind)
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197
     };
-    const int user_token_number_max_ = 452;
+    // Last valid token kind.
+    const int code_max = 452;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -5104,29 +5105,29 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -5159,29 +5160,29 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -5248,8 +5249,7 @@ switch (yykind)
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5252 "dhcp6_parser.h"
-
+#line 5253 "dhcp6_parser.h"
 
 
 
index 379258154457a693553dc2af3cae5d04eaddbaa8..9d96b7e80157bbb39f196fa2162072c1f5817d68 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Locations for Bison parsers in C++
 
@@ -62,11 +62,13 @@ namespace isc { namespace dhcp {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +78,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +107,7 @@ namespace isc { namespace dhcp {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +150,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +167,8 @@ namespace isc { namespace dhcp {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +185,7 @@ namespace isc { namespace dhcp {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +194,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +276,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +302,6 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..12e7205cc5d4bde347511b698459285ce736802a 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..fed81e95f806d9f65629b03f6eb3be203a948b5c 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index cdae8cb4149e1760e4665aa60bf183e88f9ea658..5a00e42b03187870dd9dfa8e0e2cb75714cfa6e6 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Locations for Bison parsers in C++
 
@@ -62,11 +62,13 @@ namespace isc { namespace netconf {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +78,7 @@ namespace isc { namespace netconf {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +107,7 @@ namespace isc { namespace netconf {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +150,6 @@ namespace isc { namespace netconf {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +167,8 @@ namespace isc { namespace netconf {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +185,7 @@ namespace isc { namespace netconf {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +194,7 @@ namespace isc { namespace netconf {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +276,6 @@ namespace isc { namespace netconf {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +302,6 @@ namespace isc { namespace netconf {
 
 #line 14 "netconf_parser.yy"
 } } // isc::netconf
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_NETCONF_LOCATION_HH_INCLUDED
index da867c58b87c10fd84feca4f53ed667f706a2434..6d593656ccd665bd4011b02558a747f8c0cc0063 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -209,25 +209,25 @@ namespace isc { namespace netconf {
   {
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace netconf {
   {
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace netconf {
     state = that.state;
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace netconf {
     state = that.state;
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -377,43 +377,43 @@ namespace isc { namespace netconf {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "netconf_parser.cc"
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "netconf_parser.cc"
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "netconf_parser.cc"
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "netconf_parser.cc"
         break;
 
-      case 57: // value
+      case symbol_kind::S_value: // value
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "netconf_parser.cc"
         break;
 
-      case 60: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "netconf_parser.cc"
         break;
 
-      case 119: // socket_type_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "netconf_parser.cc"
@@ -646,25 +646,25 @@ namespace isc { namespace netconf {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -688,25 +688,25 @@ namespace isc { namespace netconf {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 118 "netconf_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 695 "netconf_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 119 "netconf_parser.yy"
                          { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "netconf_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 120 "netconf_parser.yy"
                          { ctx.ctx_ = ctx.NETCONF; }
 #line 707 "netconf_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 128 "netconf_parser.yy"
                             {
     // Parse the Netconf map
@@ -716,7 +716,7 @@ namespace isc { namespace netconf {
 #line 717 "netconf_parser.cc"
     break;
 
-  case 9:
+  case 9: // sub_netconf: "{" $@4 global_params "}"
 #line 132 "netconf_parser.yy"
                                {
     // parsing completed
@@ -724,7 +724,7 @@ namespace isc { namespace netconf {
 #line 725 "netconf_parser.cc"
     break;
 
-  case 10:
+  case 10: // json: value
 #line 139 "netconf_parser.yy"
             {
     // Push back the JSON value on the stack
@@ -733,49 +733,49 @@ namespace isc { namespace netconf {
 #line 734 "netconf_parser.cc"
     break;
 
-  case 11:
+  case 11: // value: "integer"
 #line 145 "netconf_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 740 "netconf_parser.cc"
     break;
 
-  case 12:
+  case 12: // value: "floating point"
 #line 146 "netconf_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 746 "netconf_parser.cc"
     break;
 
-  case 13:
+  case 13: // value: "boolean"
 #line 147 "netconf_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "netconf_parser.cc"
     break;
 
-  case 14:
+  case 14: // value: "constant string"
 #line 148 "netconf_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "netconf_parser.cc"
     break;
 
-  case 15:
+  case 15: // value: "null"
 #line 149 "netconf_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 764 "netconf_parser.cc"
     break;
 
-  case 16:
+  case 16: // value: map
 #line 150 "netconf_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 770 "netconf_parser.cc"
     break;
 
-  case 17:
+  case 17: // value: list_generic
 #line 151 "netconf_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "netconf_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@5: %empty
 #line 155 "netconf_parser.yy"
                     {
     // This code is executed when we're about to start parsing
@@ -786,7 +786,7 @@ namespace isc { namespace netconf {
 #line 787 "netconf_parser.cc"
     break;
 
-  case 19:
+  case 19: // map: "{" $@5 map_content "}"
 #line 160 "netconf_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -796,13 +796,13 @@ namespace isc { namespace netconf {
 #line 797 "netconf_parser.cc"
     break;
 
-  case 20:
+  case 20: // map_value: map
 #line 166 "netconf_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 803 "netconf_parser.cc"
     break;
 
-  case 23:
+  case 23: // not_empty_map: "constant string" ":" value
 #line 180 "netconf_parser.yy"
                                   {
                   // map containing a single entry
@@ -811,7 +811,7 @@ namespace isc { namespace netconf {
 #line 812 "netconf_parser.cc"
     break;
 
-  case 24:
+  case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 184 "netconf_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -821,7 +821,7 @@ namespace isc { namespace netconf {
 #line 822 "netconf_parser.cc"
     break;
 
-  case 25:
+  case 25: // $@6: %empty
 #line 191 "netconf_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -830,14 +830,14 @@ namespace isc { namespace netconf {
 #line 831 "netconf_parser.cc"
     break;
 
-  case 26:
+  case 26: // list_generic: "[" $@6 list_content "]"
 #line 194 "netconf_parser.yy"
                                {
 }
 #line 838 "netconf_parser.cc"
     break;
 
-  case 29:
+  case 29: // not_empty_list: value
 #line 201 "netconf_parser.yy"
                       {
                   // List consisting of a single element.
@@ -846,7 +846,7 @@ namespace isc { namespace netconf {
 #line 847 "netconf_parser.cc"
     break;
 
-  case 30:
+  case 30: // not_empty_list: not_empty_list "," value
 #line 205 "netconf_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -855,7 +855,7 @@ namespace isc { namespace netconf {
 #line 856 "netconf_parser.cc"
     break;
 
-  case 31:
+  case 31: // unknown_map_entry: "constant string" ":"
 #line 218 "netconf_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -866,7 +866,7 @@ namespace isc { namespace netconf {
 #line 867 "netconf_parser.cc"
     break;
 
-  case 32:
+  case 32: // $@7: %empty
 #line 226 "netconf_parser.yy"
                                    {
     // This code is executed when we're about to start parsing
@@ -877,7 +877,7 @@ namespace isc { namespace netconf {
 #line 878 "netconf_parser.cc"
     break;
 
-  case 33:
+  case 33: // netconf_syntax_map: "{" $@7 global_objects "}"
 #line 231 "netconf_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -887,7 +887,7 @@ namespace isc { namespace netconf {
 #line 888 "netconf_parser.cc"
     break;
 
-  case 37:
+  case 37: // $@8: %empty
 #line 247 "netconf_parser.yy"
                         {
 
@@ -906,7 +906,7 @@ namespace isc { namespace netconf {
 #line 907 "netconf_parser.cc"
     break;
 
-  case 38:
+  case 38: // netconf_object: "Netconf" $@8 ":" "{" global_params "}"
 #line 260 "netconf_parser.yy"
                                                     {
     // Ok, we're done with parsing Netconf. Let's take the map
@@ -917,7 +917,7 @@ namespace isc { namespace netconf {
 #line 918 "netconf_parser.cc"
     break;
 
-  case 52:
+  case 52: // boot_update: "boot-update" ":" "boolean"
 #line 288 "netconf_parser.yy"
                                        {
     ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -926,7 +926,7 @@ namespace isc { namespace netconf {
 #line 927 "netconf_parser.cc"
     break;
 
-  case 53:
+  case 53: // subscribe_changes: "subscribe-changes" ":" "boolean"
 #line 293 "netconf_parser.yy"
                                                    {
     ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -935,7 +935,7 @@ namespace isc { namespace netconf {
 #line 936 "netconf_parser.cc"
     break;
 
-  case 54:
+  case 54: // validate_changes: "validate-changes" ":" "boolean"
 #line 298 "netconf_parser.yy"
                                                  {
     ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -944,7 +944,7 @@ namespace isc { namespace netconf {
 #line 945 "netconf_parser.cc"
     break;
 
-  case 55:
+  case 55: // $@9: %empty
 #line 303 "netconf_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -952,7 +952,7 @@ namespace isc { namespace netconf {
 #line 953 "netconf_parser.cc"
     break;
 
-  case 56:
+  case 56: // user_context: "user-context" $@9 ":" map_value
 #line 305 "netconf_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -979,7 +979,7 @@ namespace isc { namespace netconf {
 #line 980 "netconf_parser.cc"
     break;
 
-  case 57:
+  case 57: // $@10: %empty
 #line 328 "netconf_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -987,7 +987,7 @@ namespace isc { namespace netconf {
 #line 988 "netconf_parser.cc"
     break;
 
-  case 58:
+  case 58: // comment: "comment" $@10 ":" "constant string"
 #line 330 "netconf_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -1016,7 +1016,7 @@ namespace isc { namespace netconf {
 #line 1017 "netconf_parser.cc"
     break;
 
-  case 59:
+  case 59: // $@11: %empty
 #line 356 "netconf_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1027,7 +1027,7 @@ namespace isc { namespace netconf {
 #line 1028 "netconf_parser.cc"
     break;
 
-  case 60:
+  case 60: // hooks_libraries: "hooks-libraries" $@11 ":" "[" hooks_libraries_list "]"
 #line 361 "netconf_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -1036,7 +1036,7 @@ namespace isc { namespace netconf {
 #line 1037 "netconf_parser.cc"
     break;
 
-  case 65:
+  case 65: // $@12: %empty
 #line 374 "netconf_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1046,7 +1046,7 @@ namespace isc { namespace netconf {
 #line 1047 "netconf_parser.cc"
     break;
 
-  case 66:
+  case 66: // hooks_library: "{" $@12 hooks_params "}"
 #line 378 "netconf_parser.yy"
                               {
     ctx.stack_.pop_back();
@@ -1054,7 +1054,7 @@ namespace isc { namespace netconf {
 #line 1055 "netconf_parser.cc"
     break;
 
-  case 72:
+  case 72: // $@13: %empty
 #line 391 "netconf_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1062,7 +1062,7 @@ namespace isc { namespace netconf {
 #line 1063 "netconf_parser.cc"
     break;
 
-  case 73:
+  case 73: // library: "library" $@13 ":" "constant string"
 #line 393 "netconf_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1072,7 +1072,7 @@ namespace isc { namespace netconf {
 #line 1073 "netconf_parser.cc"
     break;
 
-  case 74:
+  case 74: // $@14: %empty
 #line 399 "netconf_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1080,7 +1080,7 @@ namespace isc { namespace netconf {
 #line 1081 "netconf_parser.cc"
     break;
 
-  case 75:
+  case 75: // parameters: "parameters" $@14 ":" map_value
 #line 401 "netconf_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
@@ -1089,7 +1089,7 @@ namespace isc { namespace netconf {
 #line 1090 "netconf_parser.cc"
     break;
 
-  case 76:
+  case 76: // $@15: %empty
 #line 409 "netconf_parser.yy"
                                                       {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
@@ -1100,7 +1100,7 @@ namespace isc { namespace netconf {
 #line 1101 "netconf_parser.cc"
     break;
 
-  case 77:
+  case 77: // managed_servers: "managed-servers" ":" "{" $@15 servers_entries "}"
 #line 414 "netconf_parser.yy"
                                  {
     ctx.stack_.pop_back();
@@ -1109,7 +1109,7 @@ namespace isc { namespace netconf {
 #line 1110 "netconf_parser.cc"
     break;
 
-  case 87:
+  case 87: // $@16: %empty
 #line 438 "netconf_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1120,7 +1120,7 @@ namespace isc { namespace netconf {
 #line 1121 "netconf_parser.cc"
     break;
 
-  case 88:
+  case 88: // dhcp4_server: "dhcp4" $@16 ":" "{" managed_server_params "}"
 #line 443 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1129,7 +1129,7 @@ namespace isc { namespace netconf {
 #line 1130 "netconf_parser.cc"
     break;
 
-  case 89:
+  case 89: // $@17: %empty
 #line 449 "netconf_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1140,7 +1140,7 @@ namespace isc { namespace netconf {
 #line 1141 "netconf_parser.cc"
     break;
 
-  case 90:
+  case 90: // dhcp6_server: "dhcp6" $@17 ":" "{" managed_server_params "}"
 #line 454 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1149,7 +1149,7 @@ namespace isc { namespace netconf {
 #line 1150 "netconf_parser.cc"
     break;
 
-  case 91:
+  case 91: // $@18: %empty
 #line 460 "netconf_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1160,7 +1160,7 @@ namespace isc { namespace netconf {
 #line 1161 "netconf_parser.cc"
     break;
 
-  case 92:
+  case 92: // d2_server: "d2" $@18 ":" "{" managed_server_params "}"
 #line 465 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1169,7 +1169,7 @@ namespace isc { namespace netconf {
 #line 1170 "netconf_parser.cc"
     break;
 
-  case 93:
+  case 93: // $@19: %empty
 #line 471 "netconf_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1180,7 +1180,7 @@ namespace isc { namespace netconf {
 #line 1181 "netconf_parser.cc"
     break;
 
-  case 94:
+  case 94: // ca_server: "ca" $@19 ":" "{" managed_server_params "}"
 #line 476 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1189,7 +1189,7 @@ namespace isc { namespace netconf {
 #line 1190 "netconf_parser.cc"
     break;
 
-  case 105:
+  case 105: // $@20: %empty
 #line 498 "netconf_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1197,7 +1197,7 @@ namespace isc { namespace netconf {
 #line 1198 "netconf_parser.cc"
     break;
 
-  case 106:
+  case 106: // model: "model" $@20 ":" "constant string"
 #line 500 "netconf_parser.yy"
                {
     ElementPtr model(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1207,7 +1207,7 @@ namespace isc { namespace netconf {
 #line 1208 "netconf_parser.cc"
     break;
 
-  case 107:
+  case 107: // $@21: %empty
 #line 507 "netconf_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1218,7 +1218,7 @@ namespace isc { namespace netconf {
 #line 1219 "netconf_parser.cc"
     break;
 
-  case 108:
+  case 108: // control_socket: "control-socket" $@21 ":" "{" control_socket_params "}"
 #line 512 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1227,7 +1227,7 @@ namespace isc { namespace netconf {
 #line 1228 "netconf_parser.cc"
     break;
 
-  case 117:
+  case 117: // $@22: %empty
 #line 530 "netconf_parser.yy"
                          {
     ctx.enter(ctx.SOCKET_TYPE);
@@ -1235,7 +1235,7 @@ namespace isc { namespace netconf {
 #line 1236 "netconf_parser.cc"
     break;
 
-  case 118:
+  case 118: // socket_type: "socket-type" $@22 ":" socket_type_value
 #line 532 "netconf_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
@@ -1244,25 +1244,25 @@ namespace isc { namespace netconf {
 #line 1245 "netconf_parser.cc"
     break;
 
-  case 119:
+  case 119: // socket_type_value: "unix"
 #line 538 "netconf_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 1251 "netconf_parser.cc"
     break;
 
-  case 120:
+  case 120: // socket_type_value: "http"
 #line 539 "netconf_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
 #line 1257 "netconf_parser.cc"
     break;
 
-  case 121:
+  case 121: // socket_type_value: "stdout"
 #line 540 "netconf_parser.yy"
                            { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); }
 #line 1263 "netconf_parser.cc"
     break;
 
-  case 122:
+  case 122: // $@23: %empty
 #line 543 "netconf_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1270,7 +1270,7 @@ namespace isc { namespace netconf {
 #line 1271 "netconf_parser.cc"
     break;
 
-  case 123:
+  case 123: // socket_name: "socket-name" $@23 ":" "constant string"
 #line 545 "netconf_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1280,7 +1280,7 @@ namespace isc { namespace netconf {
 #line 1281 "netconf_parser.cc"
     break;
 
-  case 124:
+  case 124: // $@24: %empty
 #line 552 "netconf_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1288,7 +1288,7 @@ namespace isc { namespace netconf {
 #line 1289 "netconf_parser.cc"
     break;
 
-  case 125:
+  case 125: // socket_url: "socket-url" $@24 ":" "constant string"
 #line 554 "netconf_parser.yy"
                {
     ElementPtr url(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1298,7 +1298,7 @@ namespace isc { namespace netconf {
 #line 1299 "netconf_parser.cc"
     break;
 
-  case 126:
+  case 126: // $@25: %empty
 #line 564 "netconf_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1309,7 +1309,7 @@ namespace isc { namespace netconf {
 #line 1310 "netconf_parser.cc"
     break;
 
-  case 127:
+  case 127: // loggers: "loggers" $@25 ":" "[" loggers_entries "]"
 #line 569 "netconf_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1318,7 +1318,7 @@ namespace isc { namespace netconf {
 #line 1319 "netconf_parser.cc"
     break;
 
-  case 130:
+  case 130: // $@26: %empty
 #line 581 "netconf_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1328,7 +1328,7 @@ namespace isc { namespace netconf {
 #line 1329 "netconf_parser.cc"
     break;
 
-  case 131:
+  case 131: // logger_entry: "{" $@26 logger_params "}"
 #line 585 "netconf_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -1336,7 +1336,7 @@ namespace isc { namespace netconf {
 #line 1337 "netconf_parser.cc"
     break;
 
-  case 141:
+  case 141: // $@27: %empty
 #line 602 "netconf_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1344,7 +1344,7 @@ namespace isc { namespace netconf {
 #line 1345 "netconf_parser.cc"
     break;
 
-  case 142:
+  case 142: // name: "name" $@27 ":" "constant string"
 #line 604 "netconf_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1354,7 +1354,7 @@ namespace isc { namespace netconf {
 #line 1355 "netconf_parser.cc"
     break;
 
-  case 143:
+  case 143: // debuglevel: "debuglevel" ":" "integer"
 #line 610 "netconf_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1363,7 +1363,7 @@ namespace isc { namespace netconf {
 #line 1364 "netconf_parser.cc"
     break;
 
-  case 144:
+  case 144: // $@28: %empty
 #line 615 "netconf_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1371,7 +1371,7 @@ namespace isc { namespace netconf {
 #line 1372 "netconf_parser.cc"
     break;
 
-  case 145:
+  case 145: // severity: "severity" $@28 ":" "constant string"
 #line 617 "netconf_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1381,7 +1381,7 @@ namespace isc { namespace netconf {
 #line 1382 "netconf_parser.cc"
     break;
 
-  case 146:
+  case 146: // $@29: %empty
 #line 623 "netconf_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1392,7 +1392,7 @@ namespace isc { namespace netconf {
 #line 1393 "netconf_parser.cc"
     break;
 
-  case 147:
+  case 147: // output_options_list: "output_options" $@29 ":" "[" output_options_list_content "]"
 #line 628 "netconf_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -1401,7 +1401,7 @@ namespace isc { namespace netconf {
 #line 1402 "netconf_parser.cc"
     break;
 
-  case 150:
+  case 150: // $@30: %empty
 #line 637 "netconf_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1411,7 +1411,7 @@ namespace isc { namespace netconf {
 #line 1412 "netconf_parser.cc"
     break;
 
-  case 151:
+  case 151: // output_entry: "{" $@30 output_params_list "}"
 #line 641 "netconf_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1419,7 +1419,7 @@ namespace isc { namespace netconf {
 #line 1420 "netconf_parser.cc"
     break;
 
-  case 159:
+  case 159: // $@31: %empty
 #line 656 "netconf_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1427,7 +1427,7 @@ namespace isc { namespace netconf {
 #line 1428 "netconf_parser.cc"
     break;
 
-  case 160:
+  case 160: // output: "output" $@31 ":" "constant string"
 #line 658 "netconf_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1437,7 +1437,7 @@ namespace isc { namespace netconf {
 #line 1438 "netconf_parser.cc"
     break;
 
-  case 161:
+  case 161: // flush: "flush" ":" "boolean"
 #line 664 "netconf_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1446,7 +1446,7 @@ namespace isc { namespace netconf {
 #line 1447 "netconf_parser.cc"
     break;
 
-  case 162:
+  case 162: // maxsize: "maxsize" ":" "integer"
 #line 669 "netconf_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1455,7 +1455,7 @@ namespace isc { namespace netconf {
 #line 1456 "netconf_parser.cc"
     break;
 
-  case 163:
+  case 163: // maxver: "maxver" ":" "integer"
 #line 674 "netconf_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1464,7 +1464,7 @@ namespace isc { namespace netconf {
 #line 1465 "netconf_parser.cc"
     break;
 
-  case 164:
+  case 164: // $@32: %empty
 #line 679 "netconf_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1472,7 +1472,7 @@ namespace isc { namespace netconf {
 #line 1473 "netconf_parser.cc"
     break;
 
-  case 165:
+  case 165: // pattern: "pattern" $@32 ":" "constant string"
 #line 681 "netconf_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
index 6cab9da3bef9a2db51548534fb10aa235a552376..2f7047df44775a1842364531452fe805d577e909 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -730,25 +730,25 @@ namespace isc { namespace netconf {
       {
         switch (this->kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -862,25 +862,25 @@ namespace isc { namespace netconf {
         // Value type destructor.
 switch (yykind)
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1969,7 +1969,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2201,11 +2201,12 @@ switch (yykind)
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48
     };
-    const int user_token_number_max_ = 303;
+    // Last valid token kind.
+    const int code_max = 303;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2220,25 +2221,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2271,25 +2272,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2356,8 +2357,7 @@ switch (yykind)
 
 #line 14 "netconf_parser.yy"
 } } // isc::netconf
-#line 2360 "netconf_parser.h"
-
+#line 2361 "netconf_parser.h"
 
 
 
index e0ad5903214a86d7e78a5891735cac93e3811489..0403c938c4d4d755e66dfa740a9b5fd21cbed44f 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6bfe5d25d597e184e9300d2531f6d54907bbcd3 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 84738804b9ef907516b0bb290c34e16882990686..ee6d0c9d12b86223a4841695d8b2ac2822b2ae21 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Locations for Bison parsers in C++
 
@@ -62,11 +62,13 @@ namespace isc { namespace eval {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +78,7 @@ namespace isc { namespace eval {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +107,7 @@ namespace isc { namespace eval {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +150,6 @@ namespace isc { namespace eval {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +167,8 @@ namespace isc { namespace eval {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +185,7 @@ namespace isc { namespace eval {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +194,7 @@ namespace isc { namespace eval {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +276,6 @@ namespace isc { namespace eval {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +302,6 @@ namespace isc { namespace eval {
 
 #line 14 "parser.yy"
 } } // isc::eval
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_EVAL_LOCATION_HH_INCLUDED
index 6c824d73335e9150ccfdc7a26dfb819fb8700ce1..20145a31aa0c5fb385e142e0a7ff208bf0319876 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -209,45 +209,45 @@ namespace isc { namespace eval {
   {
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.YY_MOVE_OR_COPY< TokenOption::RepresentationType > (YY_MOVE (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.YY_MOVE_OR_COPY< TokenPkt4::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.YY_MOVE_OR_COPY< TokenPkt6::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.YY_MOVE_OR_COPY< TokenPkt::MetadataType > (YY_MOVE (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.YY_MOVE_OR_COPY< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.YY_MOVE_OR_COPY< int8_t > (YY_MOVE (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.YY_MOVE_OR_COPY< uint16_t > (YY_MOVE (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.YY_MOVE_OR_COPY< uint32_t > (YY_MOVE (that.value));
         break;
 
@@ -266,45 +266,45 @@ namespace isc { namespace eval {
   {
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (YY_MOVE (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (YY_MOVE (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (YY_MOVE (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (YY_MOVE (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (YY_MOVE (that.value));
         break;
 
@@ -323,45 +323,45 @@ namespace isc { namespace eval {
     state = that.state;
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.copy< TokenOption::RepresentationType > (that.value);
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.copy< TokenPkt4::FieldType > (that.value);
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.copy< TokenPkt6::FieldType > (that.value);
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.copy< TokenPkt::MetadataType > (that.value);
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.copy< TokenRelay6Field::FieldType > (that.value);
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.copy< int8_t > (that.value);
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.copy< std::string > (that.value);
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.copy< uint16_t > (that.value);
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.copy< uint32_t > (that.value);
         break;
 
@@ -379,45 +379,45 @@ namespace isc { namespace eval {
     state = that.state;
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (that.value);
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (that.value);
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (that.value);
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (that.value);
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (that.value);
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (that.value);
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (that.value);
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (that.value);
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (that.value);
         break;
 
@@ -457,91 +457,91 @@ namespace isc { namespace eval {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 50: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 464 "parser.cc"
         break;
 
-      case 51: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 470 "parser.cc"
         break;
 
-      case 52: // "constant hexstring"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 476 "parser.cc"
         break;
 
-      case 53: // "option name"
+      case symbol_kind::S_OPTION_NAME: // "option name"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 482 "parser.cc"
         break;
 
-      case 54: // "ip address"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 488 "parser.cc"
         break;
 
-      case 60: // integer_expr
+      case symbol_kind::S_integer_expr: // integer_expr
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint32_t > (); }
 #line 494 "parser.cc"
         break;
 
-      case 61: // option_code
+      case symbol_kind::S_option_code: // option_code
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint16_t > (); }
 #line 500 "parser.cc"
         break;
 
-      case 62: // sub_option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint16_t > (); }
 #line 506 "parser.cc"
         break;
 
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); }
 #line 512 "parser.cc"
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < int8_t > (); }
 #line 518 "parser.cc"
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); }
 #line 524 "parser.cc"
         break;
 
-      case 66: // enterprise_id
+      case symbol_kind::S_enterprise_id: // enterprise_id
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint32_t > (); }
 #line 530 "parser.cc"
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); }
 #line 536 "parser.cc"
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); }
 #line 542 "parser.cc"
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); }
 #line 548 "parser.cc"
@@ -774,45 +774,45 @@ namespace isc { namespace eval {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         yylhs.value.emplace< TokenOption::RepresentationType > ();
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         yylhs.value.emplace< TokenPkt4::FieldType > ();
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         yylhs.value.emplace< TokenPkt6::FieldType > ();
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         yylhs.value.emplace< TokenPkt::MetadataType > ();
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         yylhs.value.emplace< TokenRelay6Field::FieldType > ();
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         yylhs.value.emplace< int8_t > ();
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         yylhs.value.emplace< std::string > ();
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         yylhs.value.emplace< uint16_t > ();
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         yylhs.value.emplace< uint32_t > ();
         break;
 
@@ -836,7 +836,7 @@ namespace isc { namespace eval {
         {
           switch (yyn)
             {
-  case 6:
+  case 6: // bool_expr: "not" bool_expr
 #line 132 "parser.yy"
                 {
                     TokenPtr neg(new TokenNot());
@@ -845,7 +845,7 @@ namespace isc { namespace eval {
 #line 846 "parser.cc"
     break;
 
-  case 7:
+  case 7: // bool_expr: bool_expr "and" bool_expr
 #line 137 "parser.yy"
                 {
                     TokenPtr neg(new TokenAnd());
@@ -854,7 +854,7 @@ namespace isc { namespace eval {
 #line 855 "parser.cc"
     break;
 
-  case 8:
+  case 8: // bool_expr: bool_expr "or" bool_expr
 #line 142 "parser.yy"
                 {
                     TokenPtr neg(new TokenOr());
@@ -863,7 +863,7 @@ namespace isc { namespace eval {
 #line 864 "parser.cc"
     break;
 
-  case 9:
+  case 9: // bool_expr: string_expr "==" string_expr
 #line 147 "parser.yy"
                 {
                     TokenPtr eq(new TokenEqual());
@@ -872,7 +872,7 @@ namespace isc { namespace eval {
 #line 873 "parser.cc"
     break;
 
-  case 10:
+  case 10: // bool_expr: "option" "[" option_code "]" "." "exists"
 #line 152 "parser.yy"
                 {
                     TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
@@ -881,7 +881,7 @@ namespace isc { namespace eval {
 #line 882 "parser.cc"
     break;
 
-  case 11:
+  case 11: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists"
 #line 157 "parser.yy"
                 {
                     TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
@@ -890,7 +890,7 @@ namespace isc { namespace eval {
 #line 891 "parser.cc"
     break;
 
-  case 12:
+  case 12: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists"
 #line 162 "parser.yy"
                 {
                    switch (ctx.getUniverse()) {
@@ -914,7 +914,7 @@ namespace isc { namespace eval {
 #line 915 "parser.cc"
     break;
 
-  case 13:
+  case 13: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists"
 #line 182 "parser.yy"
                 {
                     switch (ctx.getUniverse()) {
@@ -932,7 +932,7 @@ namespace isc { namespace eval {
 #line 933 "parser.cc"
     break;
 
-  case 14:
+  case 14: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists"
 #line 196 "parser.yy"
               {
                   // Expression: vendor-class[1234].exists
@@ -945,7 +945,7 @@ namespace isc { namespace eval {
 #line 946 "parser.cc"
     break;
 
-  case 15:
+  case 15: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists"
 #line 205 "parser.yy"
               {
                   // Expression: vendor[1234].exists
@@ -958,7 +958,7 @@ namespace isc { namespace eval {
 #line 959 "parser.cc"
     break;
 
-  case 16:
+  case 16: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists"
 #line 214 "parser.yy"
               {
                   // Expression vendor[1234].option[123].exists
@@ -972,7 +972,7 @@ namespace isc { namespace eval {
 #line 973 "parser.cc"
     break;
 
-  case 17:
+  case 17: // bool_expr: "member" "(" "constant string" ")"
 #line 224 "parser.yy"
               {
                   // Expression member('foo')
@@ -991,7 +991,7 @@ namespace isc { namespace eval {
 #line 992 "parser.cc"
     break;
 
-  case 18:
+  case 18: // string_expr: "constant string"
 #line 241 "parser.yy"
                   {
                       TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
@@ -1000,7 +1000,7 @@ namespace isc { namespace eval {
 #line 1001 "parser.cc"
     break;
 
-  case 19:
+  case 19: // string_expr: "constant hexstring"
 #line 246 "parser.yy"
                   {
                       TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ()));
@@ -1009,7 +1009,7 @@ namespace isc { namespace eval {
 #line 1010 "parser.cc"
     break;
 
-  case 20:
+  case 20: // string_expr: "ip address"
 #line 251 "parser.yy"
                   {
                       TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ()));
@@ -1018,7 +1018,7 @@ namespace isc { namespace eval {
 #line 1019 "parser.cc"
     break;
 
-  case 21:
+  case 21: // string_expr: "option" "[" option_code "]" "." option_repr_type
 #line 256 "parser.yy"
                   {
                       TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
@@ -1027,7 +1027,7 @@ namespace isc { namespace eval {
 #line 1028 "parser.cc"
     break;
 
-  case 22:
+  case 22: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type
 #line 261 "parser.yy"
                   {
                       TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
@@ -1036,7 +1036,7 @@ namespace isc { namespace eval {
 #line 1037 "parser.cc"
     break;
 
-  case 23:
+  case 23: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type
 #line 266 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1060,7 +1060,7 @@ namespace isc { namespace eval {
 #line 1061 "parser.cc"
     break;
 
-  case 24:
+  case 24: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type
 #line 287 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1078,7 +1078,7 @@ namespace isc { namespace eval {
 #line 1079 "parser.cc"
     break;
 
-  case 25:
+  case 25: // string_expr: "pkt" "." pkt_metadata
 #line 302 "parser.yy"
                   {
                       TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ()));
@@ -1087,7 +1087,7 @@ namespace isc { namespace eval {
 #line 1088 "parser.cc"
     break;
 
-  case 26:
+  case 26: // string_expr: "pkt4" "." pkt4_field
 #line 307 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1105,7 +1105,7 @@ namespace isc { namespace eval {
 #line 1106 "parser.cc"
     break;
 
-  case 27:
+  case 27: // string_expr: "pkt6" "." pkt6_field
 #line 321 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1123,7 +1123,7 @@ namespace isc { namespace eval {
 #line 1124 "parser.cc"
     break;
 
-  case 28:
+  case 28: // string_expr: "relay6" "[" nest_level "]" "." relay6_field
 #line 335 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1141,7 +1141,7 @@ namespace isc { namespace eval {
 #line 1142 "parser.cc"
     break;
 
-  case 29:
+  case 29: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")"
 #line 350 "parser.yy"
                   {
                       TokenPtr sub(new TokenSubstring());
@@ -1150,7 +1150,7 @@ namespace isc { namespace eval {
 #line 1151 "parser.cc"
     break;
 
-  case 30:
+  case 30: // string_expr: "concat" "(" string_expr "," string_expr ")"
 #line 355 "parser.yy"
                   {
                       TokenPtr conc(new TokenConcat());
@@ -1159,7 +1159,7 @@ namespace isc { namespace eval {
 #line 1160 "parser.cc"
     break;
 
-  case 31:
+  case 31: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
 #line 360 "parser.yy"
                   {
                       TokenPtr cond(new TokenIfElse());
@@ -1168,7 +1168,7 @@ namespace isc { namespace eval {
 #line 1169 "parser.cc"
     break;
 
-  case 32:
+  case 32: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
 #line 365 "parser.yy"
                   {
                       TokenPtr tohex(new TokenToHexString());
@@ -1177,7 +1177,7 @@ namespace isc { namespace eval {
 #line 1178 "parser.cc"
     break;
 
-  case 33:
+  case 33: // string_expr: "vendor" "." "enterprise"
 #line 370 "parser.yy"
                 {
                     // expression: vendor.enterprise
@@ -1190,7 +1190,7 @@ namespace isc { namespace eval {
 #line 1191 "parser.cc"
     break;
 
-  case 34:
+  case 34: // string_expr: "vendor-class" "." "enterprise"
 #line 379 "parser.yy"
                 {
                     // expression: vendor-class.enterprise
@@ -1204,7 +1204,7 @@ namespace isc { namespace eval {
 #line 1205 "parser.cc"
     break;
 
-  case 35:
+  case 35: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
 #line 389 "parser.yy"
                 {
                     // This token will search for vendor option with
@@ -1217,7 +1217,7 @@ namespace isc { namespace eval {
 #line 1218 "parser.cc"
     break;
 
-  case 36:
+  case 36: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
 #line 398 "parser.yy"
                 {
                     // expression: vendor-class[1234].data
@@ -1234,7 +1234,7 @@ namespace isc { namespace eval {
 #line 1235 "parser.cc"
     break;
 
-  case 37:
+  case 37: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
 #line 411 "parser.yy"
                 {
                     // expression: vendor-class[1234].data[5]
@@ -1251,7 +1251,7 @@ namespace isc { namespace eval {
 #line 1252 "parser.cc"
     break;
 
-  case 38:
+  case 38: // string_expr: integer_expr
 #line 424 "parser.yy"
                 {
                     TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ()));
@@ -1260,7 +1260,7 @@ namespace isc { namespace eval {
 #line 1261 "parser.cc"
     break;
 
-  case 39:
+  case 39: // integer_expr: "integer"
 #line 431 "parser.yy"
                  {
                      yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1268,7 +1268,7 @@ namespace isc { namespace eval {
 #line 1269 "parser.cc"
     break;
 
-  case 40:
+  case 40: // option_code: "integer"
 #line 437 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1276,7 +1276,7 @@ namespace isc { namespace eval {
 #line 1277 "parser.cc"
     break;
 
-  case 41:
+  case 41: // option_code: "option name"
 #line 441 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1284,7 +1284,7 @@ namespace isc { namespace eval {
 #line 1285 "parser.cc"
     break;
 
-  case 42:
+  case 42: // sub_option_code: "integer"
 #line 447 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1292,7 +1292,7 @@ namespace isc { namespace eval {
 #line 1293 "parser.cc"
     break;
 
-  case 43:
+  case 43: // option_repr_type: "text"
 #line 453 "parser.yy"
                       {
                           yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
@@ -1300,7 +1300,7 @@ namespace isc { namespace eval {
 #line 1301 "parser.cc"
     break;
 
-  case 44:
+  case 44: // option_repr_type: "hex"
 #line 457 "parser.yy"
                       {
                           yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
@@ -1308,7 +1308,7 @@ namespace isc { namespace eval {
 #line 1309 "parser.cc"
     break;
 
-  case 45:
+  case 45: // nest_level: "integer"
 #line 463 "parser.yy"
                  {
                      yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1316,7 +1316,7 @@ namespace isc { namespace eval {
 #line 1317 "parser.cc"
     break;
 
-  case 46:
+  case 46: // pkt_metadata: "iface"
 #line 472 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE;
@@ -1324,7 +1324,7 @@ namespace isc { namespace eval {
 #line 1325 "parser.cc"
     break;
 
-  case 47:
+  case 47: // pkt_metadata: "src"
 #line 476 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC;
@@ -1332,7 +1332,7 @@ namespace isc { namespace eval {
 #line 1333 "parser.cc"
     break;
 
-  case 48:
+  case 48: // pkt_metadata: "dst"
 #line 480 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST;
@@ -1340,7 +1340,7 @@ namespace isc { namespace eval {
 #line 1341 "parser.cc"
     break;
 
-  case 49:
+  case 49: // pkt_metadata: "len"
 #line 484 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN;
@@ -1348,7 +1348,7 @@ namespace isc { namespace eval {
 #line 1349 "parser.cc"
     break;
 
-  case 50:
+  case 50: // enterprise_id: "integer"
 #line 490 "parser.yy"
                    {
                        yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1356,7 +1356,7 @@ namespace isc { namespace eval {
 #line 1357 "parser.cc"
     break;
 
-  case 51:
+  case 51: // enterprise_id: "*"
 #line 494 "parser.yy"
                    {
                        yylhs.value.as < uint32_t > () = 0;
@@ -1364,7 +1364,7 @@ namespace isc { namespace eval {
 #line 1365 "parser.cc"
     break;
 
-  case 52:
+  case 52: // pkt4_field: "mac"
 #line 500 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
@@ -1372,7 +1372,7 @@ namespace isc { namespace eval {
 #line 1373 "parser.cc"
     break;
 
-  case 53:
+  case 53: // pkt4_field: "hlen"
 #line 504 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN;
@@ -1380,7 +1380,7 @@ namespace isc { namespace eval {
 #line 1381 "parser.cc"
     break;
 
-  case 54:
+  case 54: // pkt4_field: "htype"
 #line 508 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
@@ -1388,7 +1388,7 @@ namespace isc { namespace eval {
 #line 1389 "parser.cc"
     break;
 
-  case 55:
+  case 55: // pkt4_field: "ciaddr"
 #line 512 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
@@ -1396,7 +1396,7 @@ namespace isc { namespace eval {
 #line 1397 "parser.cc"
     break;
 
-  case 56:
+  case 56: // pkt4_field: "giaddr"
 #line 516 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
@@ -1404,7 +1404,7 @@ namespace isc { namespace eval {
 #line 1405 "parser.cc"
     break;
 
-  case 57:
+  case 57: // pkt4_field: "yiaddr"
 #line 520 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
@@ -1412,7 +1412,7 @@ namespace isc { namespace eval {
 #line 1413 "parser.cc"
     break;
 
-  case 58:
+  case 58: // pkt4_field: "siaddr"
 #line 524 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
@@ -1420,7 +1420,7 @@ namespace isc { namespace eval {
 #line 1421 "parser.cc"
     break;
 
-  case 59:
+  case 59: // pkt4_field: "msgtype"
 #line 528 "parser.yy"
                  {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
@@ -1428,7 +1428,7 @@ namespace isc { namespace eval {
 #line 1429 "parser.cc"
     break;
 
-  case 60:
+  case 60: // pkt4_field: "transid"
 #line 532 "parser.yy"
                  {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
@@ -1436,7 +1436,7 @@ namespace isc { namespace eval {
 #line 1437 "parser.cc"
     break;
 
-  case 61:
+  case 61: // pkt6_field: "msgtype"
 #line 538 "parser.yy"
                  {
                      yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
@@ -1444,7 +1444,7 @@ namespace isc { namespace eval {
 #line 1445 "parser.cc"
     break;
 
-  case 62:
+  case 62: // pkt6_field: "transid"
 #line 542 "parser.yy"
                  {
                      yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
@@ -1452,7 +1452,7 @@ namespace isc { namespace eval {
 #line 1453 "parser.cc"
     break;
 
-  case 63:
+  case 63: // relay6_field: "peeraddr"
 #line 548 "parser.yy"
                    {
                        yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
@@ -1460,7 +1460,7 @@ namespace isc { namespace eval {
 #line 1461 "parser.cc"
     break;
 
-  case 64:
+  case 64: // relay6_field: "linkaddr"
 #line 552 "parser.yy"
                    {
                        yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
@@ -1468,7 +1468,7 @@ namespace isc { namespace eval {
 #line 1469 "parser.cc"
     break;
 
-  case 65:
+  case 65: // start_expr: "integer"
 #line 558 "parser.yy"
                 {
                     TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
@@ -1477,7 +1477,7 @@ namespace isc { namespace eval {
 #line 1478 "parser.cc"
     break;
 
-  case 66:
+  case 66: // length_expr: "integer"
 #line 565 "parser.yy"
                  {
                      TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
@@ -1486,7 +1486,7 @@ namespace isc { namespace eval {
 #line 1487 "parser.cc"
     break;
 
-  case 67:
+  case 67: // length_expr: "all"
 #line 570 "parser.yy"
                  {
                      TokenPtr str(new TokenString("all"));
index a752f55ade61ecaad2ab99bc79cd53a424cb57ae..b620e4ca8df6bc4d847ab89a2049a96419999500 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -674,45 +674,45 @@ namespace isc { namespace eval {
       {
         switch (this->kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (std::move (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (std::move (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (std::move (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (std::move (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (std::move (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (std::move (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (std::move (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (std::move (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (std::move (that.value));
         break;
 
@@ -878,45 +878,45 @@ namespace isc { namespace eval {
         // Value type destructor.
 switch (yykind)
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.template destroy< TokenOption::RepresentationType > ();
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.template destroy< TokenPkt4::FieldType > ();
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.template destroy< TokenPkt6::FieldType > ();
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.template destroy< TokenPkt::MetadataType > ();
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.template destroy< TokenRelay6Field::FieldType > ();
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.template destroy< int8_t > ();
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.template destroy< std::string > ();
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.template destroy< uint16_t > ();
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.template destroy< uint32_t > ();
         break;
 
@@ -2056,7 +2056,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2288,11 +2288,12 @@ switch (yykind)
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54
     };
-    const int user_token_number_max_ = 309;
+    // Last valid token kind.
+    const int code_max = 309;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2307,45 +2308,45 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.copy< TokenOption::RepresentationType > (YY_MOVE (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.copy< TokenPkt4::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.copy< TokenPkt6::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.copy< TokenPkt::MetadataType > (YY_MOVE (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.copy< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.copy< int8_t > (YY_MOVE (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.copy< uint16_t > (YY_MOVE (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.copy< uint32_t > (YY_MOVE (that.value));
         break;
 
@@ -2378,45 +2379,45 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (YY_MOVE (s.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (YY_MOVE (s.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (YY_MOVE (s.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (YY_MOVE (s.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (YY_MOVE (s.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (YY_MOVE (s.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (YY_MOVE (s.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (YY_MOVE (s.value));
         break;
 
@@ -2483,8 +2484,7 @@ switch (yykind)
 
 #line 14 "parser.yy"
 } } // isc::eval
-#line 2487 "parser.h"
-
+#line 2488 "parser.h"
 
 
 
index e0ad5903214a86d7e78a5891735cac93e3811489..12e7205cc5d4bde347511b698459285ce736802a 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..fed81e95f806d9f65629b03f6eb3be203a948b5c 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.