]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[trac5076] regen flex/bison files
authorFrancis Dupont <fdupont@isc.org>
Wed, 8 Feb 2017 23:12:27 +0000 (23:12 +0000)
committerFrancis Dupont <fdupont@isc.org>
Wed, 8 Feb 2017 23:12:27 +0000 (23:12 +0000)
src/bin/agent/agent_lexer.cc
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

index 162252f6a3605a436d4a5933d0efdbbe4e746a6d..d8bcc6f93d46dfe5cb5fec9fbb49f3ef007bba52 100644 (file)
@@ -524,8 +524,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to agent_text[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 52
-#define YY_END_OF_BUFFER 53
+#define YY_NUM_RULES 53
+#define YY_END_OF_BUFFER 54
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -533,41 +533,42 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[300] =
+static const flex_int16_t yy_accept[305] =
     {   0,
-       45,   45,    0,    0,    0,    0,    0,    0,    0,    0,
-       53,   51,   10,   11,   51,    1,   45,   42,   45,   45,
-       51,   44,   43,   51,   51,   51,   51,   51,   38,   39,
-       51,   51,   51,   40,   41,    5,    5,    5,   51,   51,
-       51,   10,   11,    0,    0,   34,    0,    0,    0,    0,
+       46,   46,    0,    0,    0,    0,    0,    0,    0,    0,
+       54,   52,   10,   11,   52,    1,   46,   43,   46,   46,
+       52,   45,   44,   52,   52,   52,   52,   52,   39,   40,
+       52,   52,   52,   41,   42,    5,    5,    5,   52,   52,
+       52,   10,   11,    0,    0,   35,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
-       45,   45,    0,   44,   45,    3,    2,    6,    0,   45,
+       46,   46,    0,   45,   46,    3,    2,    6,    0,   46,
         0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
-        0,   35,    0,    0,    0,    0,    0,   37,    0,    0,
+        0,   36,    0,    0,    0,    0,    0,   38,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    2,    0,    0,    0,    0,    0,    0,
-        0,    8,    0,    0,    0,    0,    0,   36,    0,    0,
+        0,    8,    0,    0,    0,    0,    0,   37,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   50,   48,    0,   47,   46,    0,
+        0,    0,    0,    0,   51,   49,    0,   48,   47,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
-       46,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   19,    0,    0,
-        0,    0,   18,    0,    0,    0,   32,   33,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
+       47,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   27,    0,
+        0,    0,    0,   21,    0,    0,    0,   32,   33,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    7,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
-        0,    0,   20,    0,    0,    0,    0,    0,    0,    0,
-        0,   28,   21,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   25,
-        0,    0,    0,    0,   17,    0,    0,    0,    0,   13,
-       14,    0,    0,    0,    0,    0,    0,   24,    0,    0,
-        0,    0,   27,    0,    0,    0,    0,    0,    0,    0,
-        0,   31,   30,    0,    0,   15,   16,    0,    0,   12,
-        0,    0,    0,    0,    0,   22,   29,   26,    0
-
+        0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   29,
+        0,    0,    0,    0,    0,    0,   25,    0,    0,    0,
+        0,    0,    0,    0,    0,   23,   26,    0,    0,    0,
+        0,    0,    0,   34,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   31,    0,    0,    0,    0,   18,
+        0,    0,    0,    0,   13,   14,    0,    0,    0,    0,
+        0,    0,   30,    0,    0,    0,    0,   24,    0,    0,
+        0,    0,    0,    0,    0,    0,   19,   20,    0,    0,
+       16,   17,    0,    0,   12,    0,    0,    0,    0,    0,
+
+       28,   15,   22,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -613,85 +614,85 @@ static const YY_CHAR yy_meta[62] =
         3
     } ;
 
-static const flex_int16_t yy_base[312] =
+static const flex_int16_t yy_base[317] =
     {   0,
         0,    0,   60,   63,   66,    0,   64,   68,   48,   65,
-      287, 1953,   85,  279,  127,    0,   89, 1953,  108,  121,
-       83,  127, 1953,  260,  171,   75,   84,  118, 1953, 1953,
-      123,  133,  140, 1953, 1953, 1953,   86,  263,  225,    0,
-      249,  152,  245,  159,  189, 1953,  195,  202,  208,  210,
+      287, 2023,   85,  279,  127,    0,   89, 2023,  108,  121,
+       83,  127, 2023,  260,  171,   75,   84,  118, 2023, 2023,
+      123,  133,  140, 2023, 2023, 2023,   86,  263,  225,    0,
+      249,  152,  245,  159,  189, 2023,  195,  202,  208,  210,
       216,  226,  271,  277,  283,  289,  295,  301,  307,    0,
-      323,  344,  241,  352,  357, 1953,    0, 1953,  143,  219,
-       71,  136,  143,  172,  178,  169, 1953,  200,  225, 1953,
-      207, 1953,  342,  387,  399,  405,  215,  411,  436,  422,
+      323,  344,  241,  352,  357, 2023,    0, 2023,  143,  219,
+       71,  136,  143,  172,  178,  169, 2023,  200,  225, 2023,
+      207, 2023,  342,  387,  399,  405,  215,  411,  436,  422,
       430,  465,  479,  485,  491,  500,  506,  521,  527,  541,
 
       551,  557,  563,    0,  184,  216,  228,  208,  266,  273,
-      164, 1953,    0,  571,  577,  587,  201, 1953,  618,  612,
+      164, 2023,    0,  571,  577,  587,  201, 2023,  618,  612,
       601,  618,  648,  662,  669,  675,  683,  689,  700,  710,
-      731,  737,  748,  274, 1953, 1953,  285, 1953, 1953,  118,
-        0,  754,  761,  768,  801,  784,  796,  844,  850,  856,
-      862,  868,  874,  880,  892,  898,  911,  917,  923, 1953,
-     1953,  132,    0,  933,  939,  948,  954,  991,  960,  974,
-      990, 1034, 1040, 1046, 1018, 1053, 1059, 1953, 1065, 1076,
-     1084, 1090, 1953,  107,    0, 1096, 1953, 1953, 1102, 1120,
-     1126, 1132, 1146, 1156, 1163, 1169, 1183, 1191, 1200, 1206,
-
-     1213, 1221, 1227, 1953, 1258, 1243, 1264, 1271, 1279, 1285,
-     1295, 1306, 1315, 1322, 1332, 1341, 1953, 1352, 1358, 1371,
-     1377, 1383, 1953, 1389, 1396, 1413, 1407, 1432, 1438, 1444,
-     1451, 1953, 1953, 1460, 1468, 1481, 1487, 1495, 1507, 1517,
-     1525, 1531, 1537, 1543, 1555, 1561, 1568, 1574, 1580, 1953,
-     1586, 1596, 1604, 1610, 1953, 1616, 1622, 1635, 1641, 1953,
-     1953, 1652, 1659, 1665, 1679, 1687, 1700, 1953, 1707, 1714,
-     1722, 1728, 1953, 1737, 1749, 1763, 1775, 1784, 1790, 1798,
-     1805, 1953, 1953, 1821, 1828, 1953, 1953, 1835, 1844, 1953,
-     1851, 1858, 1865, 1872, 1879, 1953, 1953, 1953, 1953, 1914,
-
-     1919, 1924, 1929, 1934, 1939, 1944, 1947,  141,  127,  113,
-      102
+      731,  737,  748,  274, 2023, 2023,  285, 2023, 2023,  118,
+        0,  754,  761,  768,  801,  796,  831,  844,  851,  857,
+      869,  875,  881,  892,  899,  916,  906,  927,  936, 2023,
+     2023,  132,    0,  942,  951,  972,  978,  986, 1023,  993,
+      999, 1008, 1024, 1066, 1072, 1052, 1078, 1087, 2023, 1093,
+     1108, 1114, 1123, 2023,  107,    0, 1131, 2023, 2023, 1150,
+     1161, 1167, 1174, 1181, 1187, 1205, 1218, 1211, 1226, 1232,
+
+     1241, 1248, 1254, 1262, 1268, 2023, 1299, 1305, 1312, 1318,
+     1325, 1335, 1342, 1348, 1360, 1370, 1379, 1385, 1395, 2023,
+     1401, 1407, 1415, 1425, 1432, 1438, 2023, 1452, 1460, 1475,
+     1483, 1490, 1496, 1502, 1513, 2023, 2023, 1520, 1526, 1538,
+     1548, 1557, 1563, 2023, 1574, 1587, 1593, 1599, 1609, 1617,
+     1629, 1636, 1644, 1652, 2023, 1659, 1666, 1672, 1680, 2023,
+     1687, 1694, 1710, 1722, 2023, 2023, 1729, 1736, 1745, 1753,
+     1764, 1771, 2023, 1780, 1788, 1795, 1801, 2023, 1807, 1818,
+     1825, 1837, 1843, 1853, 1860, 1867, 2023, 2023, 1880, 1888,
+     2023, 2023, 1895, 1906, 2023, 1918, 1926, 1932, 1943, 1949,
+
+     2023, 2023, 2023, 2023, 1984, 1989, 1994, 1999, 2004, 2009,
+     2014, 2017,  141,  127,  113,  102
     } ;
 
-static const flex_int16_t yy_def[312] =
+static const flex_int16_t yy_def[317] =
     {   0,
-      299,    1,  300,  300,    1,    5,    5,    5,    5,    5,
-      299,  299,  299,  299,  301,  302,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  303,
-      299,  299,  299,  304,  301,  299,  301,  301,  301,  305,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  302,
-      299,  299,  299,  299,  299,  299,  306,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  303,  299,
-      304,  299,  299,  301,  301,  301,  307,  301,  305,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
-
-      301,  301,  301,  306,  299,  299,  299,  299,  299,  299,
-      299,  299,  308,  301,  301,  301,  307,  299,  305,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
-      301,  301,  301,  299,  299,  299,  299,  299,  299,  299,
-      309,  301,  301,  301,  305,  301,  301,  301,  301,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  299,
-      299,  299,  310,  301,  301,  301,  301,  305,  301,  301,
-      301,  301,  301,  301,  301,  301,  301,  299,  301,  301,
-      301,  301,  299,  299,  311,  301,  299,  299,  301,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
-
-      301,  301,  301,  299,  301,  301,  301,  301,  301,  301,
-      301,  301,  301,  301,  301,  301,  299,  301,  301,  301,
-      301,  301,  299,  301,  301,  301,  301,  301,  301,  301,
-      301,  299,  299,  301,  301,  301,  301,  301,  301,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  299,
-      301,  301,  301,  301,  299,  301,  301,  301,  301,  299,
-      299,  301,  301,  301,  301,  301,  301,  299,  301,  301,
-      301,  301,  299,  301,  301,  301,  301,  301,  301,  301,
-      301,  299,  299,  301,  301,  299,  299,  301,  301,  299,
-      301,  301,  301,  301,  301,  299,  299,  299,    0,  299,
-
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299
+      304,    1,  305,  305,    1,    5,    5,    5,    5,    5,
+      304,  304,  304,  304,  306,  307,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  308,
+      304,  304,  304,  309,  306,  304,  306,  306,  306,  310,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  307,
+      304,  304,  304,  304,  304,  304,  311,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  308,  304,
+      309,  304,  304,  306,  306,  306,  312,  306,  310,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+
+      306,  306,  306,  311,  304,  304,  304,  304,  304,  304,
+      304,  304,  313,  306,  306,  306,  312,  304,  310,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  304,  304,  304,  304,  304,  304,  304,
+      314,  306,  306,  306,  310,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  304,
+      304,  304,  315,  306,  306,  306,  306,  306,  310,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  304,  306,
+      306,  306,  306,  304,  304,  316,  306,  304,  304,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
+
+      306,  306,  306,  306,  306,  304,  306,  306,  306,  306,
+      306,  306,  306,  306,  306,  306,  306,  306,  306,  304,
+      306,  306,  306,  306,  306,  306,  304,  306,  306,  306,
+      306,  306,  306,  306,  306,  304,  304,  306,  306,  306,
+      306,  306,  306,  304,  306,  306,  306,  306,  306,  306,
+      306,  306,  306,  306,  304,  306,  306,  306,  306,  304,
+      306,  306,  306,  306,  304,  304,  306,  306,  306,  306,
+      306,  306,  304,  306,  306,  306,  306,  304,  306,  306,
+      306,  306,  306,  306,  306,  306,  304,  304,  306,  306,
+      304,  304,  306,  306,  304,  306,  306,  306,  306,  306,
+
+      304,  304,  304,    0,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304
     } ;
 
-static const flex_int16_t yy_nxt[2015] =
+static const flex_int16_t yy_nxt[2085] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   23,   24,   12,
@@ -705,13 +706,13 @@ static const flex_int16_t yy_nxt[2015] =
        66,   12,   12,   12,   12,   67,   71,   12,  105,   12,
 
        61,   12,   62,   62,   62,   62,   81,   12,   12,   12,
-       12,   39,   71,   12,   63,   12,   72,  185,  105,   61,
+       12,   39,   71,   12,   63,   12,   72,  186,  105,   61,
        12,   64,   64,   64,   64,   12,   12,   44,   44,   44,
        63,  163,   46,   63,   65,   65,   65,   65,   61,   72,
-       64,   64,   64,   64,   71,  141,   63,   73,  204,   63,
+       64,   64,   64,   64,   71,  141,   63,   73,  206,   63,
        47,   48,   63,   42,   49,   42,   70,   70,   70,   70,
        74,   50,   63,  106,   82,   72,   51,   52,   63,   73,
-       73,   53,  184,  162,   54,  107,   55,   56,   57,   69,
+       73,   53,  185,  162,   54,  107,   55,   56,   57,   69,
        58,   69,   59,  106,   70,   70,   70,   70,   75,   44,
        44,   44,   76,   83,   46,   44,   44,   44,  107,  105,
 
@@ -723,201 +724,208 @@ static const flex_int16_t yy_nxt[2015] =
        50,   69,   45,  136,   70,   70,   70,   70,   86,   45,
        50,  137,   45,  135,   45,   89,   90,   92,   80,  136,
        93,   44,   44,   44,   78,   77,   46,   44,   44,   44,
-       68,   43,   46,   44,   44,   44,  299,  299,   46,   44,
-       44,   44,  299,  135,   46,   44,   44,   44,  136,  160,
-
-       46,   44,   44,   44,  299,   50,   46,   44,   44,   44,
-      160,   50,   46,  138,  139,  160,  299,   50,  299,  299,
-       98,   94,   96,   50,  299,   95,  161,   97,  299,   50,
-      299,  299,  100,  299,  299,   50,   65,   65,   65,   65,
-      299,   50,  101,  299,   99,  299,  299,   81,   63,  299,
-      299,  102,  299,  299,   81,   61,  103,   62,   62,   62,
-       62,  299,  299,   61,   63,   64,   64,   64,   64,   63,
-       65,   65,   65,   65,  299,  299,   81,   63,  299,  299,
-       81,  299,   63,  299,   81,   63,  299,   44,   44,   44,
-      299,   81,   46,   63,   81,  299,   81,  113,   63,   44,
-
-       44,   44,  299,  299,   46,   44,   44,   44,  299,  299,
-       46,   44,   44,   44,  299,  299,   46,  299,  299,  299,
-      299,   50,   44,   44,   44,  299,  299,   46,  299,  299,
-       44,   44,   44,   50,  299,   46,  114,  299,  115,   50,
-      121,  299,  299,  299,  299,   50,  299,  299,  116,  119,
-      119,  119,  119,  299,  299,  299,   50,  119,  119,  119,
-      119,  119,  119,  299,   50,   44,   44,   44,  299,  299,
-       46,  120,  299,  119,  119,  119,  119,  119,  119,   44,
-       44,   44,  299,  299,   46,   44,   44,   44,  299,  299,
-       46,   44,   44,   44,  299,  299,   46,  299,  299,   50,
-
-       44,   44,   44,  122,  299,   46,   44,   44,   44,  299,
-      299,   46,  299,   50,  299,  299,  299,  299,  123,   50,
-      299,   44,   44,   44,  299,   50,   46,   44,   44,   44,
-      299,  299,   46,  299,   50,  124,  299,  299,  126,  299,
-       50,   44,   44,   44,  299,  125,   46,  299,  299,  127,
-      299,   44,   44,   44,  299,   50,   46,   44,   44,   44,
-      299,   50,   46,   44,   44,   44,  299,  299,   46,  128,
-      299,   44,   44,   44,  299,   50,   46,   44,   44,   44,
-      299,  129,   46,  299,  299,   50,  299,   44,   44,   44,
-      299,   50,   46,  130,  299,  299,  132,   50,  299,  299,
-
-      299,   44,   44,   44,  299,   50,   46,  131,  133,  299,
-      299,   50,   44,   44,   44,  299,  299,   46,   44,   44,
-       44,   50,  299,   46,  299,  142,  299,  299,  143,  299,
-      144,  145,  145,  145,  145,   50,  299,  299,  299,  145,
-      145,  145,  145,  145,  145,  299,   50,  299,   44,   44,
-       44,  299,   50,   46,  147,  145,  145,  145,  145,  145,
-      145,  299,   44,   44,   44,  299,  146,   46,  299,   44,
-       44,   44,  299,  148,   46,   44,   44,   44,  299,  299,
-       46,  299,   50,   44,   44,   44,  299,  299,   46,   44,
-       44,   44,  299,  299,   46,  299,   50,  299,  299,  149,
-
-       44,   44,   44,   50,  299,   46,  299,  299,  150,   50,
-       44,   44,   44,  299,  299,   46,  299,   50,  299,  299,
-      151,  299,  299,   50,  299,  299,  153,  152,  299,  299,
-      154,   44,   44,   44,   50,  299,   46,   44,   44,   44,
-      299,  299,   46,  299,   50,  299,  299,  156,   44,   44,
-       44,  155,  299,   46,   44,   44,   44,  299,  299,   46,
-      299,   44,   44,   44,  299,   50,   46,  299,   44,   44,
-       44,   50,  157,   46,  299,  299,  165,  166,  299,  299,
-      299,  299,   50,  158,   44,   44,   44,  299,   50,   46,
-      299,  299,  299,  299,  299,   50,   44,   44,   44,  299,
-
-      299,   46,   50,  299,  299,  159,  164,  299,  299,  299,
-      299,  299,  299,  167,  168,  168,  168,  168,   50,  299,
-      299,  299,  168,  168,  168,  168,  168,  168,  299,  299,
-       50,  299,  299,  299,  299,  299,  169,  170,  168,  168,
-      168,  168,  168,  168,   44,   44,   44,  299,  299,   46,
-       44,   44,   44,  299,  299,   46,   44,   44,   44,  299,
-      299,   46,   44,   44,   44,  172,  173,   46,   44,   44,
-       44,  299,  175,   46,   44,   44,   44,  299,   50,   46,
-       44,   44,   44,  299,   50,  178,  299,  171,  299,  299,
-       50,  299,   44,   44,   44,  299,   50,   46,   44,   44,
-
-       44,  299,   50,   46,  299,  176,  299,  299,   50,  174,
-      299,   44,   44,   44,   50,  177,   46,   44,   44,   44,
-      299,  299,   46,   44,   44,   44,   50,  299,  183,  299,
-      299,  299,   50,   44,   44,   44,  299,  299,   46,   44,
-       44,   44,  299,  299,  187,   50,  180,  179,   44,   44,
-       44,   50,  299,  188,   44,   44,   44,   50,  182,   46,
-       44,   44,   44,  181,  299,   46,  299,   50,  299,  299,
-      299,  299,  299,   50,   44,   44,   44,  299,  299,   46,
-      299,  299,   50,  186,  299,  299,  299,  299,   50,  299,
-       44,   44,   44,  299,   50,   46,  299,  299,  299,  299,
-
-      299,  299,  299,  189,   45,   45,   45,   45,   50,  299,
-      190,  299,   45,   45,   45,   45,   45,   45,   44,   44,
-       44,  299,  299,   46,   50,  299,  191,  299,   45,   45,
-       45,   45,   45,   45,   44,   44,   44,  192,  299,   46,
-       44,   44,   44,  299,  193,   46,   44,   44,   44,  299,
-      194,   46,   50,   44,   44,   44,  195,  299,   46,   44,
-       44,   44,  196,  299,   46,   44,   44,   44,   50,  197,
-       46,  299,  299,  299,   50,  299,   44,   44,   44,  299,
-       50,   46,  299,  299,   44,   44,   44,   50,  299,   46,
-       44,   44,   44,   50,  299,   46,   44,   44,   44,   50,
-
-      299,   46,   44,   44,   44,  198,  299,   46,  299,  299,
-       50,  199,  299,  299,  299,  299,  299,  201,   50,  200,
-       44,   44,   44,  299,   50,   46,   44,   44,   44,  202,
-       50,   46,   44,   44,   44,  299,   50,   46,  299,  299,
-      299,  299,  299,  205,  203,  206,   44,   44,   44,  299,
-      299,   46,  299,  299,   50,  299,   44,   44,   44,  299,
-       50,   46,  299,   44,   44,   44,   50,  207,   46,   44,
-       44,   44,  299,  209,   46,  299,  299,  299,  299,  299,
-       50,  299,  208,   44,   44,   44,  299,  299,   46,  299,
-       50,   44,   44,   44,  299,  299,   46,   50,  299,  210,
-
-       44,   44,   44,   50,  299,   46,   44,   44,   44,  211,
-      212,  217,  299,   44,   44,   44,  299,   50,   46,  213,
-      299,   44,   44,   44,  299,   50,   46,   44,   44,   44,
-      299,  299,   46,  214,   50,  299,  299,  221,  299,  299,
-       50,  299,  218,   44,   44,   44,  299,   50,  223,  215,
-      299,  299,  299,  216,  299,   50,  299,  299,   44,   44,
-       44,   50,  299,   46,   44,   44,   44,  219,  222,   46,
-      299,   44,   44,   44,  224,  220,   46,   50,  299,   44,
-       44,   44,  299,  299,   46,   44,   44,   44,  299,  299,
-       46,  299,   50,  299,  299,   44,   44,   44,   50,  299,
-
-       46,  299,  299,  299,  299,   50,   44,   44,   44,  299,
-      299,   46,  225,   50,  299,   44,   44,   44,  299,   50,
-       46,  299,   44,   44,   44,  299,  227,   46,  299,   50,
-      299,  299,   44,   44,   44,  226,  228,  232,  299,  299,
-       50,   44,   44,   44,  299,  299,  233,  299,  299,   50,
-      299,  229,   44,   44,   44,  299,   50,   46,   44,   44,
-       44,  299,  299,   46,  299,  299,   50,  299,  230,  299,
-      299,   44,   44,   44,  231,   50,   46,   44,   44,   44,
-      299,  299,   46,   44,   44,   44,   50,  299,   46,   44,
-       44,   44,   50,  299,   46,  299,   44,   44,   44,  235,
-
-      299,   46,  234,  299,  299,   50,  299,   44,   44,   44,
-      299,   50,   46,   44,   44,   44,  299,   50,   46,  299,
-      239,  299,  299,   50,  299,  299,  237,  299,  299,  236,
-       50,  238,   44,   44,   44,  299,  299,   46,   44,   44,
-       44,   50,  240,   46,   44,   44,   44,   50,  241,   46,
-      299,   44,   44,   44,  242,  299,   46,  299,  299,  243,
-       44,   44,   44,  299,  299,   46,   50,  299,   44,   44,
-       44,  299,   50,   46,  299,  299,  245,  299,   50,  299,
-      299,   44,   44,   44,  244,   50,  250,   44,   44,   44,
-      299,  299,   46,  299,   50,   44,   44,   44,  246,  299,
-
-       46,  299,   50,  299,  299,  247,  299,   44,   44,   44,
-      299,  248,   46,  299,  299,   50,  299,   44,   44,   44,
-      249,   50,   46,  299,  251,   44,   44,   44,  299,   50,
-      255,   44,   44,   44,  299,  299,   46,   44,   44,   44,
-      299,   50,   46,   44,   44,   44,  299,  299,   46,  299,
-      253,   50,  299,  252,  299,   44,   44,   44,  299,   50,
-       46,   44,   44,   44,  299,   50,  260,  254,   44,   44,
-       44,   50,  299,  261,   44,   44,   44,   50,  256,   46,
-       44,   44,   44,  299,  299,   46,   44,   44,   44,   50,
-      299,   46,  299,  257,  299,   50,   44,   44,   44,  258,
-
-      299,   46,   50,  299,   44,   44,   44,  259,   50,   46,
-       44,   44,   44,  299,   50,   46,   44,   44,   44,  299,
-       50,  268,   44,   44,   44,  299,  299,   46,  262,  299,
-       50,  299,  299,  263,  264,   44,   44,   44,   50,  299,
-       46,   44,   44,   44,   50,  266,   46,  265,  299,  267,
-       50,  299,   44,   44,   44,  299,   50,   46,  299,   44,
-       44,   44,  299,  269,  273,   44,   44,   44,  299,   50,
-       46,  299,  299,  299,  299,   50,  270,  299,  271,   44,
-       44,   44,  299,  299,   46,  299,   50,   44,   44,   44,
-      299,  299,   46,   50,  299,  299,  299,  272,  299,   50,
-
-       44,   44,   44,  299,  299,   46,  274,   44,   44,   44,
-      299,  299,   46,   50,   44,   44,   44,  299,  299,   46,
-      275,   50,   44,   44,   44,  299,  299,   46,   44,   44,
-       44,  299,  299,   46,   50,  299,  276,   44,   44,   44,
-      299,   50,  282,  299,  299,  299,  277,  299,   50,   44,
-       44,   44,  299,  299,  283,  299,   50,  299,  299,  278,
-      299,  299,   50,   44,   44,   44,  279,  299,   46,  299,
-      299,   50,  299,  299,  280,   44,   44,   44,  281,  299,
-       46,  299,  299,   50,   44,   44,   44,  299,  299,  286,
-       44,   44,   44,  299,  299,  287,  299,   50,   44,   44,
-
-       44,  299,  299,   46,  299,   44,   44,   44,  299,   50,
-       46,  299,  299,  299,  299,  299,  285,  284,   50,  299,
-      299,   44,   44,   44,   50,  299,  290,  299,   44,   44,
-       44,  299,   50,   46,  299,   44,   44,   44,  299,   50,
-       46,  299,  299,  288,   44,   44,   44,  299,  299,   46,
-      299,   44,   44,   44,  289,   50,   46,  299,   44,   44,
-       44,  299,   50,   46,  299,   44,   44,   44,  299,   50,
-      296,  299,   44,   44,   44,  299,  292,  297,   50,   44,
-       44,   44,  291,  299,  298,   50,  299,  299,  299,  299,
-      299,  299,   50,  299,  299,  299,  299,  293,  299,   50,
-
-      299,  299,  299,  299,  294,  299,   50,  299,  299,  299,
-      299,  295,  299,   50,   36,   36,   36,   36,   36,   45,
-       45,   45,   45,   45,   60,  299,   60,   60,   60,   79,
-      299,   79,  299,   79,   81,   81,   81,   81,   81,   87,
-       87,   87,   87,   87,  104,  299,  104,  104,  104,  117,
-      117,  117,   11,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299
+       68,   43,   46,   44,   44,   44,  304,  304,   46,   44,
+       44,   44,  304,  135,   46,   44,   44,   44,  136,  160,
+
+       46,   44,   44,   44,  304,   50,   46,   44,   44,   44,
+      160,   50,   46,  138,  139,  160,  304,   50,  304,  304,
+       98,   94,   96,   50,  304,   95,  161,   97,  304,   50,
+      304,  304,  100,  304,  304,   50,   65,   65,   65,   65,
+      304,   50,  101,  304,   99,  304,  304,   81,   63,  304,
+      304,  102,  304,  304,   81,   61,  103,   62,   62,   62,
+       62,  304,  304,   61,   63,   64,   64,   64,   64,   63,
+       65,   65,   65,   65,  304,  304,   81,   63,  304,  304,
+       81,  304,   63,  304,   81,   63,  304,   44,   44,   44,
+      304,   81,   46,   63,   81,  304,   81,  113,   63,   44,
+
+       44,   44,  304,  304,   46,   44,   44,   44,  304,  304,
+       46,   44,   44,   44,  304,  304,   46,  304,  304,  304,
+      304,   50,   44,   44,   44,  304,  304,   46,  304,  304,
+       44,   44,   44,   50,  304,   46,  114,  304,  115,   50,
+      121,  304,  304,  304,  304,   50,  304,  304,  116,  119,
+      119,  119,  119,  304,  304,  304,   50,  119,  119,  119,
+      119,  119,  119,  304,   50,   44,   44,   44,  304,  304,
+       46,  120,  304,  119,  119,  119,  119,  119,  119,   44,
+       44,   44,  304,  304,   46,   44,   44,   44,  304,  304,
+       46,   44,   44,   44,  304,  304,   46,  304,  304,   50,
+
+       44,   44,   44,  122,  304,   46,   44,   44,   44,  304,
+      304,   46,  304,   50,  304,  304,  304,  304,  123,   50,
+      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
+      304,  304,   46,  304,   50,  124,  304,  304,  126,  304,
+       50,   44,   44,   44,  304,  125,   46,  304,  304,  127,
+      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
+      304,   50,   46,   44,   44,   44,  304,  304,   46,  128,
+      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
+      304,  129,   46,  304,  304,   50,  304,   44,   44,   44,
+      304,   50,   46,  130,  304,  304,  132,   50,  304,  304,
+
+      304,   44,   44,   44,  304,   50,   46,  131,  133,  304,
+      304,   50,   44,   44,   44,  304,  304,   46,   44,   44,
+       44,   50,  304,   46,  304,  142,  304,  304,  143,  304,
+      144,  145,  145,  145,  145,   50,  304,  304,  304,  145,
+      145,  145,  145,  145,  145,  304,   50,  304,   44,   44,
+       44,  304,   50,   46,  147,  145,  145,  145,  145,  145,
+      145,  304,   44,   44,   44,  304,  146,   46,  304,   44,
+       44,   44,  304,  148,   46,   44,   44,   44,  304,  304,
+       46,  304,   50,   44,   44,   44,  304,  304,   46,   44,
+       44,   44,  304,  304,   46,  304,   50,  304,  304,  149,
+
+       44,   44,   44,   50,  304,   46,  304,  304,  150,   50,
+       44,   44,   44,  304,  304,   46,  304,   50,  304,  304,
+      151,  304,  304,   50,  304,  304,  153,  152,  304,  304,
+      154,   44,   44,   44,   50,  304,   46,   44,   44,   44,
+      304,  304,   46,  304,   50,  304,  304,  156,   44,   44,
+       44,  155,  304,   46,   44,   44,   44,  304,  304,   46,
+      304,   44,   44,   44,  304,   50,   46,  304,   44,   44,
+       44,   50,  157,   46,  304,  304,  165,  166,  304,  304,
+      304,  304,   50,  158,  304,  167,  304,  304,   50,  304,
+      304,  304,  304,  304,  304,   50,   44,   44,   44,  304,
+
+      304,   46,   50,  304,  304,  159,  164,  304,  304,  304,
+      304,  304,  304,  168,  169,  169,  169,  169,  304,  304,
+      304,  304,  169,  169,  169,  169,  169,  169,  304,  304,
+       50,   44,   44,   44,  304,  304,   46,  304,  169,  169,
+      169,  169,  169,  169,   44,   44,   44,  304,  170,   46,
+      304,   44,   44,   44,  304,  304,   46,   44,   44,   44,
+      304,  304,   46,  304,  304,   50,  173,  174,  304,   44,
+       44,   44,  171,  304,   46,   44,   44,   44,   50,  176,
+       46,   44,   44,   44,  304,   50,   46,  172,  304,  304,
+      304,   50,   44,   44,   44,  304,  304,  179,  304,   44,
+
+       44,   44,  304,   50,   46,  304,   44,   44,   44,   50,
+      175,   46,  177,  304,  304,   50,   44,   44,   44,  304,
+      304,   46,  178,  304,  304,  304,   50,   44,   44,   44,
+      304,  304,   46,   50,  304,  304,   44,   44,   44,  304,
+       50,  184,   44,   44,   44,  304,  304,   46,  304,  304,
+       50,   44,   44,   44,  180,  304,  188,  304,  182,  304,
+      304,   50,  304,  304,  181,  304,  304,  304,  183,  304,
+       50,  304,   44,   44,   44,  304,   50,  189,   44,   44,
+       44,  304,  304,   46,  304,   50,   44,   44,   44,  304,
+      304,   46,  187,   44,   44,   44,  304,  304,   46,   44,
+
+       44,   44,  304,  304,   46,  304,   50,  304,   44,   44,
+       44,  304,   50,   46,  304,  304,  304,  304,  190,  304,
+       50,  304,  304,  304,   44,   44,   44,   50,  304,   46,
+      304,  304,  304,   50,  195,  191,   45,   45,   45,   45,
+      304,  304,   50,  192,   45,   45,   45,   45,   45,   45,
+      304,  193,   44,   44,   44,  194,  304,   46,   50,  304,
+       45,   45,   45,   45,   45,   45,   44,   44,   44,  304,
+      304,   46,   44,   44,   44,  304,  196,   46,   44,   44,
+       44,  304,  197,   46,  304,  304,   50,   44,   44,   44,
+      304,  304,   46,   44,   44,   44,  198,  304,   46,  304,
+
+       50,  304,  304,  199,  304,  304,   50,  304,   44,   44,
+       44,  304,   50,   46,   44,   44,   44,  304,  304,   46,
+      304,   50,  304,   44,   44,   44,  304,   50,   46,  304,
+      200,   44,   44,   44,  304,  304,   46,  304,  304,  201,
+      304,  304,   50,  304,  304,  304,  304,  202,   50,  203,
+       44,   44,   44,  304,  304,   46,  304,   50,  304,  204,
+      304,   44,   44,   44,  304,   50,   46,   44,   44,   44,
+      304,  304,   46,  304,   44,   44,   44,  205,  207,   46,
+      304,   44,   44,   44,   50,  304,   46,   44,   44,   44,
+      304,  304,   46,  304,  304,   50,  304,  304,  304,  208,
+
+      304,   50,  304,  304,  209,   44,   44,   44,   50,  304,
+       46,   44,   44,   44,  210,   50,   46,  304,   44,   44,
+       44,   50,  212,   46,  304,  304,   44,   44,   44,  304,
+      211,   46,   44,   44,   44,  304,  304,   46,  304,   50,
+      213,   44,   44,   44,  304,   50,   46,  304,   44,   44,
+       44,  304,   50,  220,   44,   44,   44,  304,  214,   46,
+       50,  216,   44,   44,   44,  215,   50,   46,   44,   44,
+       44,  304,  304,   46,  304,   50,  217,  304,  224,  304,
+      304,  304,   50,  304,  221,  304,  304,  304,   50,  304,
+      218,  304,  304,  304,  219,  304,   50,  304,  304,   44,
+
+       44,   44,   50,  304,   46,   44,   44,   44,  222,  225,
+       46,  304,   44,   44,   44,  304,  223,  227,   44,   44,
+       44,  304,  304,   46,  304,   44,   44,   44,  228,  304,
+       46,  304,  304,   50,  304,   44,   44,   44,  304,   50,
+       46,  304,   44,   44,   44,  304,   50,   46,   44,   44,
+       44,  304,   50,   46,  304,  304,  304,  304,  226,   50,
+       44,   44,   44,  304,  304,   46,  229,  304,  304,   50,
+       44,   44,   44,  304,  304,   46,   50,  304,  304,   44,
+       44,   44,   50,  231,   46,   44,   44,   44,  304,  232,
+      236,  230,  304,  304,   50,   44,   44,   44,  304,  304,
+
+      237,   44,   44,   44,   50,  233,   46,   44,   44,   44,
+      304,  304,   46,   50,  304,   44,   44,   44,  304,   50,
+       46,  304,  304,  234,  304,   44,   44,   44,  304,   50,
+       46,  235,   44,   44,   44,   50,  304,   46,   44,   44,
+       44,   50,  304,  244,  304,  304,  304,  304,  239,   50,
+      304,  238,   44,   44,   44,  304,  304,   46,  304,   50,
+       44,   44,   44,  304,  304,   46,   50,  304,  304,  243,
+      304,  304,   50,  240,  241,   44,   44,   44,  304,  242,
+       46,  304,  304,   44,   44,   44,   50,  304,   46,  304,
+       44,   44,   44,  304,   50,   46,   44,   44,   44,  304,
+
+      304,   46,   44,   44,   44,  245,  304,   46,  304,   50,
+      304,  304,  246,   44,   44,   44,  247,   50,   46,  304,
+       44,   44,   44,  304,   50,   46,   44,   44,   44,  304,
+       50,   46,  304,  304,  250,  248,   50,  304,   44,   44,
+       44,  304,  249,  255,  304,  304,  304,   50,   44,   44,
+       44,  304,  304,   46,   50,  304,  251,   44,   44,   44,
+       50,  304,   46,   44,   44,   44,  304,  252,   46,  304,
+      304,  253,   50,  304,   44,   44,   44,  304,  254,   46,
+      304,  304,   50,  304,  304,  256,  304,   44,   44,   44,
+      304,   50,  260,   44,   44,   44,  304,   50,   46,   44,
+
+       44,   44,  304,  304,   46,  304,  258,  304,   50,   44,
+       44,   44,  304,  304,   46,  257,  304,   44,   44,   44,
+      304,   50,   46,  304,  259,  304,  304,   50,  304,   44,
+       44,   44,  304,   50,  265,  304,   44,   44,   44,  304,
+      261,  266,  304,   50,   44,   44,   44,  304,  304,   46,
+      304,   50,   44,   44,   44,  262,  304,   46,  304,   44,
+       44,   44,  304,   50,   46,  263,   44,   44,   44,  264,
+       50,   46,   44,   44,   44,  304,  304,   46,   50,  304,
+       44,   44,   44,  304,  304,   46,   50,   44,   44,   44,
+      304,  304,  273,   50,   44,   44,   44,  304,  267,   46,
+
+       50,  304,  304,  304,  304,  268,   50,  269,  304,  304,
+       44,   44,   44,  271,   50,   46,  304,  270,  304,  272,
+      304,   50,   44,   44,   44,  304,  304,   46,   50,   44,
+       44,   44,  304,  304,   46,  274,   44,   44,   44,  304,
+      304,  278,  304,  304,   50,   44,   44,   44,  304,  304,
+       46,  275,  304,   44,   44,   44,   50,  304,   46,  276,
+      304,  304,  304,   50,   44,   44,   44,  304,  304,   46,
+       50,   44,   44,   44,  277,  304,   46,  304,  304,   50,
+       44,   44,   44,  304,  304,   46,  279,   50,   44,   44,
+       44,  304,  304,   46,  280,   44,   44,   44,   50,  304,
+
+       46,   44,   44,   44,  304,   50,   46,   44,   44,   44,
+      304,  304,  287,  281,   50,  304,  304,  282,   44,   44,
+       44,  304,   50,  288,  304,   44,   44,   44,  304,   50,
+       46,  304,  283,  304,  304,   50,  304,   44,   44,   44,
+      284,   50,   46,   44,   44,   44,  304,  285,  291,  304,
+      304,  286,   50,   44,   44,   44,  304,  304,  292,   50,
+       44,   44,   44,  304,  304,   46,  304,   44,   44,   44,
+      304,   50,   46,  304,  304,  304,  304,   50,  290,  289,
+       44,   44,   44,  304,  304,  295,  304,   50,   44,   44,
+       44,  304,  304,   46,   50,   44,   44,   44,  304,  304,
+
+       46,   50,  304,  304,  304,  293,   44,   44,   44,  304,
+      304,   46,  304,  304,   50,  304,  294,  304,   44,   44,
+       44,  304,   50,   46,  304,  304,   44,   44,   44,   50,
+      304,   46,   44,   44,   44,  304,  297,  301,  304,  304,
+       50,  304,  296,   44,   44,   44,  304,  304,  302,   44,
+       44,   44,   50,  304,  303,  304,  304,  304,  304,  298,
+       50,  304,  304,  304,  304,  304,   50,  304,  304,  304,
+      304,  299,  304,  304,  304,  304,  304,   50,  304,  300,
+      304,  304,  304,   50,   36,   36,   36,   36,   36,   45,
+       45,   45,   45,   45,   60,  304,   60,   60,   60,   79,
+
+      304,   79,  304,   79,   81,   81,   81,   81,   81,   87,
+       87,   87,   87,   87,  104,  304,  104,  104,  104,  117,
+      117,  117,   11,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304
     } ;
 
-static const flex_int16_t yy_chk[2015] =
+static const flex_int16_t yy_chk[2085] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -930,11 +938,11 @@ static const flex_int16_t yy_chk[2015] =
         5,    5,    5,    5,    5,   10,   13,   37,   13,   37,
        21,    5,    5,    9,    5,   21,   26,    5,   71,    5,
 
-       17,    5,   17,   17,   17,   17,  311,    5,    5,    7,
-       10,    5,   26,    8,   17,    5,   27,  310,   71,   19,
+       17,    5,   17,   17,   17,   17,  316,    5,    5,    7,
+       10,    5,   26,    8,   17,    5,   27,  315,   71,   19,
         5,   19,   19,   19,   19,    5,    5,   15,   15,   15,
-       17,  309,   15,   19,   20,   20,   20,   20,   22,   27,
-       22,   22,   22,   22,   31,  308,   20,   28,  184,   19,
+       17,  314,   15,   19,   20,   20,   20,   20,   22,   27,
+       22,   22,   22,   22,   31,  313,   20,   28,  185,   19,
        15,   15,   22,   42,   15,   42,   69,   69,   69,   69,
        31,   15,   20,   72,   44,   32,   15,   15,   22,   33,
        28,   15,  162,  140,   15,   73,   15,   15,   15,   25,
@@ -1004,143 +1012,150 @@ static const flex_int16_t yy_chk[2015] =
       133,  129,    0,  133,  142,  142,  142,    0,    0,  142,
         0,  143,  143,  143,    0,  131,  143,    0,  144,  144,
       144,  132,  131,  144,    0,    0,  143,  143,    0,    0,
-        0,    0,  133,  132,  146,  146,  146,    0,  142,  146,
-        0,    0,    0,    0,    0,  143,  147,  147,  147,    0,
+        0,    0,  133,  132,    0,  143,    0,    0,  142,    0,
+        0,    0,    0,    0,    0,  143,  146,  146,  146,    0,
 
-        0,  147,  144,    0,    0,  133,  142,    0,    0,    0,
-        0,    0,    0,  144,  145,  145,  145,  145,  146,    0,
+        0,  146,  144,    0,    0,  133,  142,    0,    0,    0,
+        0,    0,    0,  144,  145,  145,  145,  145,    0,    0,
         0,    0,  145,  145,  145,  145,  145,  145,    0,    0,
-      147,    0,    0,    0,    0,    0,  146,  147,  145,  145,
-      145,  145,  145,  145,  148,  148,  148,    0,    0,  148,
-      149,  149,  149,    0,    0,  149,  150,  150,  150,    0,
-        0,  150,  151,  151,  151,  149,  149,  151,  152,  152,
-      152,    0,  151,  152,  153,  153,  153,    0,  148,  153,
-      154,  154,  154,    0,  149,  154,    0,  148,    0,    0,
-      150,    0,  155,  155,  155,    0,  151,  155,  156,  156,
-
-      156,    0,  152,  156,    0,  152,    0,    0,  153,  150,
-        0,  157,  157,  157,  154,  153,  157,  158,  158,  158,
-        0,    0,  158,  159,  159,  159,  155,    0,  159,    0,
-        0,    0,  156,  164,  164,  164,    0,    0,  164,  165,
-      165,  165,    0,    0,  165,  157,  156,  155,  166,  166,
-      166,  158,    0,  166,  167,  167,  167,  159,  158,  167,
-      169,  169,  169,  157,    0,  169,    0,  164,    0,    0,
-        0,    0,    0,  165,  170,  170,  170,    0,    0,  170,
-        0,    0,  166,  164,    0,    0,    0,    0,  167,    0,
-      171,  171,  171,    0,  169,  171,    0,    0,    0,    0,
-
-        0,    0,    0,  167,  168,  168,  168,  168,  170,    0,
-      169,    0,  168,  168,  168,  168,  168,  168,  175,  175,
-      175,    0,    0,  175,  171,    0,  170,    0,  168,  168,
-      168,  168,  168,  168,  172,  172,  172,  171,    0,  172,
-      173,  173,  173,    0,  172,  173,  174,  174,  174,    0,
-      173,  174,  175,  176,  176,  176,  174,    0,  176,  177,
-      177,  177,  175,    0,  177,  179,  179,  179,  172,  175,
-      179,    0,    0,    0,  173,    0,  180,  180,  180,    0,
-      174,  180,    0,    0,  181,  181,  181,  176,    0,  181,
-      182,  182,  182,  177,    0,  182,  186,  186,  186,  179,
-
-        0,  186,  189,  189,  189,  176,    0,  189,    0,    0,
-      180,  177,    0,    0,    0,    0,    0,  180,  181,  179,
-      190,  190,  190,    0,  182,  190,  191,  191,  191,  181,
-      186,  191,  192,  192,  192,    0,  189,  192,    0,    0,
-        0,    0,    0,  186,  182,  189,  193,  193,  193,    0,
-        0,  193,    0,    0,  190,    0,  194,  194,  194,    0,
-      191,  194,    0,  195,  195,  195,  192,  190,  195,  196,
-      196,  196,    0,  192,  196,    0,    0,    0,    0,    0,
-      193,    0,  191,  197,  197,  197,    0,    0,  197,    0,
-      194,  198,  198,  198,    0,    0,  198,  195,    0,  193,
-
-      199,  199,  199,  196,    0,  199,  200,  200,  200,  194,
-      195,  200,    0,  201,  201,  201,    0,  197,  201,  196,
-        0,  202,  202,  202,    0,  198,  202,  203,  203,  203,
-        0,    0,  203,  197,  199,    0,    0,  203,    0,    0,
-      200,    0,  200,  206,  206,  206,    0,  201,  206,  198,
-        0,    0,    0,  199,    0,  202,    0,    0,  205,  205,
-      205,  203,    0,  205,  207,  207,  207,  201,  205,  207,
-        0,  208,  208,  208,  207,  202,  208,  206,    0,  209,
-      209,  209,    0,    0,  209,  210,  210,  210,    0,    0,
-      210,    0,  205,    0,    0,  211,  211,  211,  207,    0,
-
-      211,    0,    0,    0,    0,  208,  212,  212,  212,    0,
-        0,  212,  208,  209,    0,  213,  213,  213,    0,  210,
-      213,    0,  214,  214,  214,    0,  210,  214,    0,  211,
-        0,    0,  215,  215,  215,  209,  211,  215,    0,    0,
-      212,  216,  216,  216,    0,    0,  216,    0,    0,  213,
-        0,  212,  218,  218,  218,    0,  214,  218,  219,  219,
-      219,    0,    0,  219,    0,    0,  215,    0,  213,    0,
-        0,  220,  220,  220,  214,  216,  220,  221,  221,  221,
-        0,    0,  221,  222,  222,  222,  218,    0,  222,  224,
-      224,  224,  219,    0,  224,    0,  225,  225,  225,  219,
-
-        0,  225,  218,    0,    0,  220,    0,  227,  227,  227,
-        0,  221,  227,  226,  226,  226,    0,  222,  226,    0,
-      222,    0,    0,  224,    0,    0,  221,    0,    0,  220,
-      225,  221,  228,  228,  228,    0,    0,  228,  229,  229,
-      229,  227,  224,  229,  230,  230,  230,  226,  225,  230,
-        0,  231,  231,  231,  226,    0,  231,    0,    0,  227,
-      234,  234,  234,    0,    0,  234,  228,    0,  235,  235,
-      235,    0,  229,  235,    0,    0,  229,    0,  230,    0,
-        0,  236,  236,  236,  228,  231,  236,  237,  237,  237,
-        0,    0,  237,    0,  234,  238,  238,  238,  230,    0,
-
-      238,    0,  235,    0,    0,  231,    0,  239,  239,  239,
-        0,  234,  239,    0,    0,  236,    0,  240,  240,  240,
-      235,  237,  240,    0,  237,  241,  241,  241,    0,  238,
-      241,  242,  242,  242,    0,    0,  242,  243,  243,  243,
-        0,  239,  243,  244,  244,  244,    0,    0,  244,    0,
-      239,  240,    0,  238,    0,  245,  245,  245,    0,  241,
-      245,  246,  246,  246,    0,  242,  246,  240,  247,  247,
-      247,  243,    0,  247,  248,  248,  248,  244,  242,  248,
-      249,  249,  249,    0,    0,  249,  251,  251,  251,  245,
-        0,  251,    0,  243,    0,  246,  252,  252,  252,  244,
-
-        0,  252,  247,    0,  253,  253,  253,  245,  248,  253,
-      254,  254,  254,    0,  249,  254,  256,  256,  256,    0,
-      251,  256,  257,  257,  257,    0,    0,  257,  248,    0,
-      252,    0,    0,  249,  251,  258,  258,  258,  253,    0,
-      258,  259,  259,  259,  254,  253,  259,  252,    0,  254,
-      256,    0,  262,  262,  262,    0,  257,  262,    0,  263,
-      263,  263,    0,  257,  263,  264,  264,  264,    0,  258,
-      264,    0,    0,    0,    0,  259,  258,    0,  259,  265,
-      265,  265,    0,    0,  265,    0,  262,  266,  266,  266,
-        0,    0,  266,  263,    0,    0,    0,  262,    0,  264,
-
-      267,  267,  267,    0,    0,  267,  264,  269,  269,  269,
-        0,    0,  269,  265,  270,  270,  270,    0,    0,  270,
-      265,  266,  271,  271,  271,    0,    0,  271,  272,  272,
-      272,    0,    0,  272,  267,    0,  266,  274,  274,  274,
-        0,  269,  274,    0,    0,    0,  267,    0,  270,  275,
-      275,  275,    0,    0,  275,    0,  271,    0,    0,  269,
-        0,    0,  272,  276,  276,  276,  270,    0,  276,    0,
-        0,  274,    0,    0,  271,  277,  277,  277,  272,    0,
-      277,    0,    0,  275,  278,  278,  278,    0,    0,  278,
-      279,  279,  279,    0,    0,  279,    0,  276,  280,  280,
-
-      280,    0,    0,  280,    0,  281,  281,  281,    0,  277,
-      281,    0,    0,    0,    0,    0,  277,  276,  278,    0,
-        0,  284,  284,  284,  279,    0,  284,    0,  285,  285,
-      285,    0,  280,  285,    0,  288,  288,  288,    0,  281,
-      288,    0,    0,  280,  289,  289,  289,    0,    0,  289,
-        0,  291,  291,  291,  281,  284,  291,    0,  292,  292,
-      292,    0,  285,  292,    0,  293,  293,  293,    0,  288,
-      293,    0,  294,  294,  294,    0,  288,  294,  289,  295,
-      295,  295,  285,    0,  295,  291,    0,    0,    0,    0,
-        0,    0,  292,    0,    0,    0,    0,  289,    0,  293,
-
-        0,    0,    0,    0,  291,    0,  294,    0,    0,    0,
-        0,  292,    0,  295,  300,  300,  300,  300,  300,  301,
-      301,  301,  301,  301,  302,    0,  302,  302,  302,  303,
-        0,  303,    0,  303,  304,  304,  304,  304,  304,  305,
-      305,  305,  305,  305,  306,    0,  306,  306,  306,  307,
-      307,  307,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299
+      146,  147,  147,  147,    0,    0,  147,    0,  145,  145,
+      145,  145,  145,  145,  148,  148,  148,    0,  146,  148,
+        0,  149,  149,  149,    0,    0,  149,  150,  150,  150,
+        0,    0,  150,    0,    0,  147,  149,  149,    0,  151,
+      151,  151,  147,    0,  151,  152,  152,  152,  148,  151,
+      152,  153,  153,  153,    0,  149,  153,  148,    0,    0,
+        0,  150,  154,  154,  154,    0,    0,  154,    0,  155,
+
+      155,  155,    0,  151,  155,    0,  157,  157,  157,  152,
+      150,  157,  152,    0,    0,  153,  156,  156,  156,    0,
+        0,  156,  153,    0,    0,    0,  154,  158,  158,  158,
+        0,    0,  158,  155,    0,    0,  159,  159,  159,    0,
+      157,  159,  164,  164,  164,    0,    0,  164,    0,    0,
+      156,  165,  165,  165,  155,    0,  165,    0,  157,    0,
+        0,  158,    0,    0,  156,    0,    0,    0,  158,    0,
+      159,    0,  166,  166,  166,    0,  164,  166,  167,  167,
+      167,    0,    0,  167,    0,  165,  168,  168,  168,    0,
+        0,  168,  164,  170,  170,  170,    0,    0,  170,  171,
+
+      171,  171,    0,    0,  171,    0,  166,    0,  172,  172,
+      172,    0,  167,  172,    0,    0,    0,    0,  167,    0,
+      168,    0,    0,    0,  173,  173,  173,  170,    0,  173,
+        0,    0,    0,  171,  173,  168,  169,  169,  169,  169,
+        0,    0,  172,  170,  169,  169,  169,  169,  169,  169,
+        0,  171,  176,  176,  176,  172,    0,  176,  173,    0,
+      169,  169,  169,  169,  169,  169,  174,  174,  174,    0,
+        0,  174,  175,  175,  175,    0,  174,  175,  177,  177,
+      177,    0,  175,  177,    0,    0,  176,  178,  178,  178,
+        0,    0,  178,  180,  180,  180,  176,    0,  180,    0,
+
+      174,    0,    0,  176,    0,    0,  175,    0,  181,  181,
+      181,    0,  177,  181,  182,  182,  182,    0,    0,  182,
+        0,  178,    0,  183,  183,  183,    0,  180,  183,    0,
+      177,  187,  187,  187,    0,    0,  187,    0,    0,  178,
+        0,    0,  181,    0,    0,    0,    0,  180,  182,  181,
+      190,  190,  190,    0,    0,  190,    0,  183,    0,  182,
+        0,  191,  191,  191,    0,  187,  191,  192,  192,  192,
+        0,    0,  192,    0,  193,  193,  193,  183,  187,  193,
+        0,  194,  194,  194,  190,    0,  194,  195,  195,  195,
+        0,    0,  195,    0,    0,  191,    0,    0,    0,  190,
+
+        0,  192,    0,    0,  191,  196,  196,  196,  193,    0,
+      196,  198,  198,  198,  192,  194,  198,    0,  197,  197,
+      197,  195,  194,  197,    0,    0,  199,  199,  199,    0,
+      193,  199,  200,  200,  200,    0,    0,  200,    0,  196,
+      195,  201,  201,  201,    0,  198,  201,    0,  202,  202,
+      202,    0,  197,  202,  203,  203,  203,    0,  196,  203,
+      199,  198,  204,  204,  204,  197,  200,  204,  205,  205,
+      205,    0,    0,  205,    0,  201,  199,    0,  205,    0,
+        0,    0,  202,    0,  202,    0,    0,    0,  203,    0,
+      200,    0,    0,    0,  201,    0,  204,    0,    0,  207,
+
+      207,  207,  205,    0,  207,  208,  208,  208,  203,  207,
+      208,    0,  209,  209,  209,    0,  204,  209,  210,  210,
+      210,    0,    0,  210,    0,  211,  211,  211,  210,    0,
+      211,    0,    0,  207,    0,  212,  212,  212,    0,  208,
+      212,    0,  213,  213,  213,    0,  209,  213,  214,  214,
+      214,    0,  210,  214,    0,    0,    0,    0,  208,  211,
+      215,  215,  215,    0,    0,  215,  211,    0,    0,  212,
+      216,  216,  216,    0,    0,  216,  213,    0,    0,  217,
+      217,  217,  214,  213,  217,  218,  218,  218,    0,  214,
+      218,  212,    0,    0,  215,  219,  219,  219,    0,    0,
+
+      219,  221,  221,  221,  216,  215,  221,  222,  222,  222,
+        0,    0,  222,  217,    0,  223,  223,  223,    0,  218,
+      223,    0,    0,  216,    0,  224,  224,  224,    0,  219,
+      224,  217,  225,  225,  225,  221,    0,  225,  226,  226,
+      226,  222,    0,  226,    0,    0,    0,    0,  222,  223,
+        0,  221,  228,  228,  228,    0,    0,  228,    0,  224,
+      229,  229,  229,    0,    0,  229,  225,    0,    0,  225,
+        0,    0,  226,  223,  224,  230,  230,  230,    0,  224,
+      230,    0,    0,  231,  231,  231,  228,    0,  231,    0,
+      232,  232,  232,    0,  229,  232,  233,  233,  233,    0,
+
+        0,  233,  234,  234,  234,  228,    0,  234,    0,  230,
+        0,    0,  229,  235,  235,  235,  230,  231,  235,    0,
+      238,  238,  238,    0,  232,  238,  239,  239,  239,    0,
+      233,  239,    0,    0,  233,  231,  234,    0,  240,  240,
+      240,    0,  232,  240,    0,    0,    0,  235,  241,  241,
+      241,    0,    0,  241,  238,    0,  234,  242,  242,  242,
+      239,    0,  242,  243,  243,  243,    0,  235,  243,    0,
+        0,  238,  240,    0,  245,  245,  245,    0,  239,  245,
+        0,    0,  241,    0,    0,  241,    0,  246,  246,  246,
+        0,  242,  246,  247,  247,  247,    0,  243,  247,  248,
+
+      248,  248,    0,    0,  248,    0,  243,    0,  245,  249,
+      249,  249,    0,    0,  249,  242,    0,  250,  250,  250,
+        0,  246,  250,    0,  245,    0,    0,  247,    0,  251,
+      251,  251,    0,  248,  251,    0,  252,  252,  252,    0,
+      247,  252,    0,  249,  253,  253,  253,    0,    0,  253,
+        0,  250,  254,  254,  254,  248,    0,  254,    0,  256,
+      256,  256,    0,  251,  256,  249,  257,  257,  257,  250,
+      252,  257,  258,  258,  258,    0,    0,  258,  253,    0,
+      259,  259,  259,    0,    0,  259,  254,  261,  261,  261,
+        0,    0,  261,  256,  262,  262,  262,    0,  253,  262,
+
+      257,    0,    0,    0,    0,  254,  258,  256,    0,    0,
+      263,  263,  263,  258,  259,  263,    0,  257,    0,  259,
+        0,  261,  264,  264,  264,    0,    0,  264,  262,  267,
+      267,  267,    0,    0,  267,  262,  268,  268,  268,    0,
+        0,  268,    0,    0,  263,  269,  269,  269,    0,    0,
+      269,  263,    0,  270,  270,  270,  264,    0,  270,  264,
+        0,    0,    0,  267,  271,  271,  271,    0,    0,  271,
+      268,  272,  272,  272,  267,    0,  272,    0,    0,  269,
+      274,  274,  274,    0,    0,  274,  269,  270,  275,  275,
+      275,    0,    0,  275,  270,  276,  276,  276,  271,    0,
+
+      276,  277,  277,  277,    0,  272,  277,  279,  279,  279,
+        0,    0,  279,  271,  274,    0,    0,  272,  280,  280,
+      280,    0,  275,  280,    0,  281,  281,  281,    0,  276,
+      281,    0,  274,    0,    0,  277,    0,  282,  282,  282,
+      275,  279,  282,  283,  283,  283,    0,  276,  283,    0,
+        0,  277,  280,  284,  284,  284,    0,    0,  284,  281,
+      285,  285,  285,    0,    0,  285,    0,  286,  286,  286,
+        0,  282,  286,    0,    0,    0,    0,  283,  282,  281,
+      289,  289,  289,    0,    0,  289,    0,  284,  290,  290,
+      290,    0,    0,  290,  285,  293,  293,  293,    0,    0,
+
+      293,  286,    0,    0,    0,  285,  294,  294,  294,    0,
+        0,  294,    0,    0,  289,    0,  286,    0,  296,  296,
+      296,    0,  290,  296,    0,    0,  297,  297,  297,  293,
+        0,  297,  298,  298,  298,    0,  293,  298,    0,    0,
+      294,    0,  290,  299,  299,  299,    0,    0,  299,  300,
+      300,  300,  296,    0,  300,    0,    0,    0,    0,  294,
+      297,    0,    0,    0,    0,    0,  298,    0,    0,    0,
+        0,  296,    0,    0,    0,    0,    0,  299,    0,  297,
+        0,    0,    0,  300,  305,  305,  305,  305,  305,  306,
+      306,  306,  306,  306,  307,    0,  307,  307,  307,  308,
+
+        0,  308,    0,  308,  309,  309,  309,  309,  309,  310,
+      310,  310,  310,  310,  311,    0,  311,  311,  311,  312,
+      312,  312,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  304,  304,  304
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1149,14 +1164,14 @@ static char *yy_last_accepting_cpos;
 extern int agent__flex_debug;
 int agent__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[52] =
+static const flex_int16_t yy_rule_linenum[53] =
     {   0,
       127,  129,  131,  136,  137,  142,  143,  144,  156,  159,
-      164,  171,  179,  187,  195,  203,  211,  219,  228,  237,
-      245,  253,  261,  269,  277,  285,  294,  302,  311,  319,
-      327,  335,  343,  351,  449,  454,  459,  464,  465,  466,
-      467,  468,  469,  471,  489,  502,  507,  511,  513,  515,
-      517
+      164,  171,  180,  189,  198,  207,  216,  225,  234,  243,
+      252,  261,  270,  279,  288,  297,  306,  315,  324,  333,
+      342,  351,  360,  369,  378,  476,  481,  486,  491,  492,
+      493,  494,  495,  496,  498,  516,  529,  534,  538,  540,
+      542,  544
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1205,7 +1220,7 @@ using isc::agent::AgentParser;
 
 // To avoid the call to exit... oops!
 #define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
-#line 1208 "agent_lexer.cc"
+#line 1223 "agent_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1231,8 +1246,8 @@ using isc::agent::AgentParser;
 // by moving it ahead by yyleng bytes. yyleng specifies the length of the
 // currently matched token.
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1234 "agent_lexer.cc"
-#line 1235 "agent_lexer.cc"
+#line 1249 "agent_lexer.cc"
+#line 1250 "agent_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1546,7 +1561,7 @@ YY_DECL
     }
 
 
-#line 1549 "agent_lexer.cc"
+#line 1564 "agent_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1575,13 +1590,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 300 )
+                               if ( yy_current_state >= 305 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 299 );
+               while ( yy_current_state != 304 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1600,13 +1615,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 52 )
+                       else if ( yy_act < 53 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], agent_text );
-                       else if ( yy_act == 52 )
+                       else if ( yy_act == 53 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         agent_text );
-                       else if ( yy_act == 53 )
+                       else if ( yy_act == 54 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1714,248 +1729,281 @@ case 12:
 YY_RULE_SETUP
 #line 171 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
+    switch(driver.ctx_) {
+    case ParserContext::CONFIG:
         return AgentParser::make_CONTROL_AGENT(driver.loc_);
-    } else {
+    default:
         return AgentParser::make_STRING("Control-agent", driver.loc_);
     }
 }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 179 "agent_lexer.ll"
+#line 180 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
+    switch(driver.ctx_) {
+    case ParserContext::AGENT:
         return AgentParser::make_HTTP_HOST(driver.loc_);
-    } else {
+    default:
         return AgentParser::make_STRING("http-host", driver.loc_);
     }
 }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 187 "agent_lexer.ll"
+#line 189 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
+    switch(driver.ctx_) {
+    case ParserContext::AGENT:
         return AgentParser::make_HTTP_PORT(driver.loc_);
-    } else {
+    default:
         return AgentParser::make_STRING("http-port", driver.loc_);
     }
 }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 195 "agent_lexer.ll"
+#line 198 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_DHCP4_SERVER(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("dhcp4-server", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::AGENT:
+        return AgentParser::make_CONTROL_SOCKETS(driver.loc_);
+    default:
+        return AgentParser::make_STRING("control-sockets", driver.loc_);
     }
 }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 203 "agent_lexer.ll"
+#line 207 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_DHCP6_SERVER(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("dhcp6-server", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::CONTROL_SOCKETS:
+        return AgentParser::make_DHCP4_SERVER(driver.loc_);
+    default:
+        return AgentParser::make_STRING("dhcp4-server", driver.loc_);
     }
 }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 211 "agent_lexer.ll"
+#line 216 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_D2_SERVER(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("d2-server", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::CONTROL_SOCKETS:
+        return AgentParser::make_DHCP6_SERVER(driver.loc_);
+    default:
+        return AgentParser::make_STRING("dhcp6-server", driver.loc_);
     }
 }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 219 "agent_lexer.ll"
+#line 225 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_UNIX(driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::CONTROL_SOCKETS:
+        return AgentParser::make_D2_SERVER(driver.loc_);
+    default:
+        return AgentParser::make_STRING("d2-server", driver.loc_);
     }
-    std::string tmp(yytext+1);
-    tmp.resize(tmp.size() - 1);
-    return AgentParser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 228 "agent_lexer.ll"
+#line 234 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_NAME(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("name", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::SERVER:
+        return AgentParser::make_SOCKET_NAME(driver.loc_);
+    default:
+        return AgentParser::make_STRING("socket-name", driver.loc_);
     }
 }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 237 "agent_lexer.ll"
+#line 243 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_LOGGING(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("Logging", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::SERVER:
+        return AgentParser::make_SOCKET_TYPE(driver.loc_);
+    default:
+        return AgentParser::make_STRING("socket-type", driver.loc_);
     }
 }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 245 "agent_lexer.ll"
+#line 252 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_LOGGERS(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("loggers", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::SOCKET_TYPE:
+        return AgentParser::make_UNIX(driver.loc_);
+    default:
+        return AgentParser::make_STRING("unix", driver.loc_);
     }
 }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 253 "agent_lexer.ll"
+#line 261 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_OUTPUT_OPTIONS(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("output_options", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::AGENT:
+        return AgentParser::make_HOOKS_LIBRARIES(driver.loc_);
+    default:
+        return AgentParser::make_STRING("hooks-libraries", driver.loc_);
     }
 }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 261 "agent_lexer.ll"
+#line 270 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_OUTPUT(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("output", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::HOOKS_LIBRARIES:
+        return AgentParser::make_LIBRARY(driver.loc_);
+    default:
+        return AgentParser::make_STRING("library", driver.loc_);
     }
 }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 269 "agent_lexer.ll"
+#line 279 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_DEBUGLEVEL(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("debuglevel", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::HOOKS_LIBRARIES:
+        return AgentParser::make_PARAMETERS(driver.loc_);
+    default:
+        return AgentParser::make_STRING("parameters", driver.loc_);
     }
 }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 277 "agent_lexer.ll"
+#line 288 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_SEVERITY(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("severity", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::CONFIG:
+        return AgentParser::make_LOGGING(driver.loc_);
+    default:
+        return AgentParser::make_STRING("Logging", driver.loc_);
     }
 }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 285 "agent_lexer.ll"
+#line 297 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_HOOKS_LIBRARIES(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("hooks-libraries", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::LOGGING:
+        return AgentParser::make_LOGGERS(driver.loc_);
+    default:
+        return AgentParser::make_STRING("loggers", driver.loc_);
     }
 }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 294 "agent_lexer.ll"
+#line 306 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_PARAMETERS(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("parameters", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::LOGGERS:
+        return AgentParser::make_NAME(driver.loc_);
+    default:
+        return AgentParser::make_STRING("name", driver.loc_);
     }
 }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 302 "agent_lexer.ll"
+#line 315 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_LIBRARY(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("library", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::LOGGERS:
+        return AgentParser::make_OUTPUT_OPTIONS(driver.loc_);
+    default:
+        return AgentParser::make_STRING("output_options", driver.loc_);
     }
 }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 311 "agent_lexer.ll"
+#line 324 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_CONTROL_SOCKETS(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("control-sockets", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_OUTPUT(driver.loc_);
+    default:
+        return AgentParser::make_STRING("output", driver.loc_);
     }
 }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 319 "agent_lexer.ll"
+#line 333 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_SOCKET_TYPE(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("socket-type", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::LOGGERS:
+        return AgentParser::make_DEBUGLEVEL(driver.loc_);
+    default:
+        return AgentParser::make_STRING("debuglevel", driver.loc_);
     }
 }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 327 "agent_lexer.ll"
+#line 342 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_SOCKET_NAME(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("socket-name", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::LOGGERS:
+        return AgentParser::make_SEVERITY(driver.loc_);
+    default:
+        return AgentParser::make_STRING("severity", driver.loc_);
     }
 }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 335 "agent_lexer.ll"
+#line 351 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
+    switch(driver.ctx_) {
+    case ParserContext::CONFIG:
         return AgentParser::make_DHCP4(driver.loc_);
-    } else {
+    default:
         return AgentParser::make_STRING("Dhcp4", driver.loc_);
     }
 }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 343 "agent_lexer.ll"
+#line 360 "agent_lexer.ll"
 {
-    if (driver.ctx_ != ParserContext::NO_KEYWORDS) {
-        return AgentParser::make_DHCP4(driver.loc_);
-    } else {
-        return AgentParser::make_STRING("Dhcp4", driver.loc_);
+    switch(driver.ctx_) {
+    case ParserContext::CONFIG:
+        return AgentParser::make_DHCP6(driver.loc_);
+    default:
+        return AgentParser::make_STRING("Dhcp6", driver.loc_);
     }
 }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 351 "agent_lexer.ll"
+#line 369 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::CONFIG:
+        return AgentParser::make_DHCPDDNS(driver.loc_);
+    default:
+        return AgentParser::make_STRING("DhcpDdns", driver.loc_);
+    }
+}
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 378 "agent_lexer.ll"
 {
     // A string has been matched. It contains the actual string and single quotes.
     // We need to get those quotes out of the way and just use its content, e.g.
@@ -2054,65 +2102,65 @@ YY_RULE_SETUP
     return AgentParser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 35:
-/* rule 35 can match eol */
+case 36:
+/* rule 36 can match eol */
 YY_RULE_SETUP
-#line 449 "agent_lexer.ll"
+#line 476 "agent_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 36:
-/* rule 36 can match eol */
+case 37:
+/* rule 37 can match eol */
 YY_RULE_SETUP
-#line 454 "agent_lexer.ll"
+#line 481 "agent_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
-#line 459 "agent_lexer.ll"
+#line 486 "agent_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 464 "agent_lexer.ll"
+#line 491 "agent_lexer.ll"
 { return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 465 "agent_lexer.ll"
+#line 492 "agent_lexer.ll"
 { return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 466 "agent_lexer.ll"
+#line 493 "agent_lexer.ll"
 { return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 467 "agent_lexer.ll"
+#line 494 "agent_lexer.ll"
 { return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 468 "agent_lexer.ll"
+#line 495 "agent_lexer.ll"
 { return AgentParser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 469 "agent_lexer.ll"
+#line 496 "agent_lexer.ll"
 { return AgentParser::make_COLON(driver.loc_); }
        YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 471 "agent_lexer.ll"
+#line 498 "agent_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
@@ -2131,9 +2179,9 @@ YY_RULE_SETUP
     return AgentParser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 489 "agent_lexer.ll"
+#line 516 "agent_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
@@ -2147,43 +2195,43 @@ YY_RULE_SETUP
     return AgentParser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 502 "agent_lexer.ll"
+#line 529 "agent_lexer.ll"
 {
     string tmp(yytext);
     return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 507 "agent_lexer.ll"
+#line 534 "agent_lexer.ll"
 {
    return AgentParser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 511 "agent_lexer.ll"
+#line 538 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 513 "agent_lexer.ll"
+#line 540 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 515 "agent_lexer.ll"
+#line 542 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 517 "agent_lexer.ll"
+#line 544 "agent_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 519 "agent_lexer.ll"
+#line 546 "agent_lexer.ll"
 {
     if (driver.states_.empty()) {
         return AgentParser::make_END(driver.loc_);
@@ -2207,12 +2255,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 542 "agent_lexer.ll"
+#line 569 "agent_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2215 "agent_lexer.cc"
+#line 2263 "agent_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2527,7 +2575,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 300 )
+                       if ( yy_current_state >= 305 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2560,11 +2608,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 300 )
+               if ( yy_current_state >= 305 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 299);
+       yy_is_jam = (yy_current_state == 304);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3313,7 +3361,7 @@ void agent_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 542 "agent_lexer.ll"
+#line 569 "agent_lexer.ll"
 
 
 using namespace isc::dhcp;
index a9aad17841483f9b3c0e2ec661875a07b280ee5b..b27e01698562bf61560a2eece33c0191b87320cb 100644 (file)
@@ -254,7 +254,7 @@ namespace isc { namespace agent {
       switch (that.type_get ())
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
@@ -290,7 +290,7 @@ namespace isc { namespace agent {
       switch (that.type_get ())
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
@@ -348,42 +348,42 @@ namespace isc { namespace agent {
     {
             case 36: // "constant string"
 
-#line 97 "agent_parser.yy" // lalr1.cc:636
+#line 96 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 354 "agent_parser.cc" // lalr1.cc:636
         break;
 
       case 37: // "integer"
 
-#line 97 "agent_parser.yy" // lalr1.cc:636
+#line 96 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 361 "agent_parser.cc" // lalr1.cc:636
         break;
 
       case 38: // "floating point"
 
-#line 97 "agent_parser.yy" // lalr1.cc:636
+#line 96 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 368 "agent_parser.cc" // lalr1.cc:636
         break;
 
       case 39: // "boolean"
 
-#line 97 "agent_parser.yy" // lalr1.cc:636
+#line 96 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 375 "agent_parser.cc" // lalr1.cc:636
         break;
 
       case 48: // value
 
-#line 97 "agent_parser.yy" // lalr1.cc:636
+#line 96 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 382 "agent_parser.cc" // lalr1.cc:636
         break;
 
-      case 94: // socket_type_value
+      case 97: // socket_type_value
 
-#line 97 "agent_parser.yy" // lalr1.cc:636
+#line 96 "agent_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 389 "agent_parser.cc" // lalr1.cc:636
         break;
@@ -586,7 +586,7 @@ namespace isc { namespace agent {
         switch (yyr1_[yyn])
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         yylhs.value.build< ElementPtr > ();
         break;
 
@@ -624,25 +624,25 @@ namespace isc { namespace agent {
           switch (yyn)
             {
   case 2:
-#line 108 "agent_parser.yy" // lalr1.cc:859
+#line 107 "agent_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 630 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 109 "agent_parser.yy" // lalr1.cc:859
-    { ctx.ctx_ = ctx.KEYWORDS; }
+#line 108 "agent_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.CONFIG; }
 #line 636 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 110 "agent_parser.yy" // lalr1.cc:859
-    { ctx.ctx_ = ctx.KEYWORDS; }
+#line 109 "agent_parser.yy" // lalr1.cc:859
+    { ctx.ctx_ = ctx.AGENT; }
 #line 642 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 118 "agent_parser.yy" // lalr1.cc:859
+#line 117 "agent_parser.yy" // lalr1.cc:859
     {
     // Parse the Control-agent map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -652,7 +652,7 @@ namespace isc { namespace agent {
     break;
 
   case 9:
-#line 122 "agent_parser.yy" // lalr1.cc:859
+#line 121 "agent_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -660,7 +660,7 @@ namespace isc { namespace agent {
     break;
 
   case 10:
-#line 129 "agent_parser.yy" // lalr1.cc:859
+#line 128 "agent_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -669,49 +669,49 @@ namespace isc { namespace agent {
     break;
 
   case 11:
-#line 135 "agent_parser.yy" // lalr1.cc:859
+#line 134 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 675 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 136 "agent_parser.yy" // lalr1.cc:859
+#line 135 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 681 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 13:
-#line 137 "agent_parser.yy" // lalr1.cc:859
+#line 136 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 687 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 138 "agent_parser.yy" // lalr1.cc:859
+#line 137 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 693 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 15:
-#line 139 "agent_parser.yy" // lalr1.cc:859
+#line 138 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 699 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 140 "agent_parser.yy" // lalr1.cc:859
+#line 139 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 705 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 17:
-#line 141 "agent_parser.yy" // lalr1.cc:859
+#line 140 "agent_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 711 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 145 "agent_parser.yy" // lalr1.cc:859
+#line 144 "agent_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -722,7 +722,7 @@ namespace isc { namespace agent {
     break;
 
   case 19:
-#line 150 "agent_parser.yy" // lalr1.cc:859
+#line 149 "agent_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -732,7 +732,7 @@ namespace isc { namespace agent {
     break;
 
   case 22:
-#line 168 "agent_parser.yy" // lalr1.cc:859
+#line 167 "agent_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -741,7 +741,7 @@ namespace isc { namespace agent {
     break;
 
   case 23:
-#line 172 "agent_parser.yy" // lalr1.cc:859
+#line 171 "agent_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -751,7 +751,7 @@ namespace isc { namespace agent {
     break;
 
   case 24:
-#line 179 "agent_parser.yy" // lalr1.cc:859
+#line 178 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -760,14 +760,14 @@ namespace isc { namespace agent {
     break;
 
   case 25:
-#line 182 "agent_parser.yy" // lalr1.cc:859
+#line 181 "agent_parser.yy" // lalr1.cc:859
     {
 }
 #line 767 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 189 "agent_parser.yy" // lalr1.cc:859
+#line 188 "agent_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -776,7 +776,7 @@ namespace isc { namespace agent {
     break;
 
   case 29:
-#line 193 "agent_parser.yy" // lalr1.cc:859
+#line 192 "agent_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -785,13 +785,14 @@ namespace isc { namespace agent {
     break;
 
   case 30:
-#line 206 "agent_parser.yy" // lalr1.cc:859
+#line 205 "agent_parser.yy" // lalr1.cc:859
     {
+    const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
-          "got unexpected keyword \"" + keyword + "\" in map.");
+          "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 795 "agent_parser.cc" // lalr1.cc:859
+#line 796 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
@@ -802,7 +803,7 @@ namespace isc { namespace agent {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 806 "agent_parser.cc" // lalr1.cc:859
+#line 807 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
@@ -812,443 +813,469 @@ namespace isc { namespace agent {
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 816 "agent_parser.cc" // lalr1.cc:859
+#line 817 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 41:
 #line 240 "agent_parser.yy" // lalr1.cc:859
     {
-    // Let's create a MapElement that will represent it, add it to the top level
-    // map (that's already on the stack) and put the new map on the stack as well,
-    // so child elements will be able to add themselves to it.
+
+    // Let's create a MapElement that will represent it, add it to the
+    // top level map (that's already on the stack) and put the new map
+    // on the stack as well, so child elements will be able to add
+    // themselves to it.
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Control-agent", m);
     ctx.stack_.push_back(m);
-
-    // And tell the lexer that we definitely want keywords to be recognized.
-    ctx.enter(ctx.KEYWORDS);
+    ctx.enter(ctx.AGENT);
 }
-#line 832 "agent_parser.cc" // lalr1.cc:859
+#line 833 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 42:
 #line 250 "agent_parser.yy" // lalr1.cc:859
     {
-    // Ok, we're done with parsing control-agent. Let's take the map off the stack.
+    // Ok, we're done with parsing control-agent. Let's take the map
+    // off the stack.
     ctx.stack_.pop_back();
-
-    // And tell the lexer to return to its previous state (probably KEYWORDS as well)
     ctx.leave();
 }
 #line 844 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 50:
-#line 271 "agent_parser.yy" // lalr1.cc:859
+#line 270 "agent_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORDS);
+}
+#line 852 "agent_parser.cc" // lalr1.cc:859
+    break;
+
+  case 51:
+#line 272 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-host", host);
+    ctx.leave();
 }
-#line 853 "agent_parser.cc" // lalr1.cc:859
+#line 862 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 51:
-#line 276 "agent_parser.yy" // lalr1.cc:859
+  case 52:
+#line 278 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-port", prf);
 }
-#line 862 "agent_parser.cc" // lalr1.cc:859
+#line 871 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 52:
-#line 282 "agent_parser.yy" // lalr1.cc:859
+  case 53:
+#line 284 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
+    ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 872 "agent_parser.cc" // lalr1.cc:859
+#line 882 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 53:
-#line 286 "agent_parser.yy" // lalr1.cc:859
+  case 54:
+#line 289 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 880 "agent_parser.cc" // lalr1.cc:859
+#line 891 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 58:
-#line 298 "agent_parser.yy" // lalr1.cc:859
+  case 59:
+#line 302 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 890 "agent_parser.cc" // lalr1.cc:859
+#line 901 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 59:
-#line 302 "agent_parser.yy" // lalr1.cc:859
+  case 60:
+#line 306 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 898 "agent_parser.cc" // lalr1.cc:859
+#line 909 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 65:
-#line 315 "agent_parser.yy" // lalr1.cc:859
+  case 66:
+#line 319 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 906 "agent_parser.cc" // lalr1.cc:859
+#line 917 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 66:
-#line 317 "agent_parser.yy" // lalr1.cc:859
+  case 67:
+#line 321 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 916 "agent_parser.cc" // lalr1.cc:859
+#line 927 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 67:
-#line 323 "agent_parser.yy" // lalr1.cc:859
+  case 68:
+#line 327 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 924 "agent_parser.cc" // lalr1.cc:859
+#line 935 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 68:
-#line 325 "agent_parser.yy" // lalr1.cc:859
+  case 69:
+#line 329 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 933 "agent_parser.cc" // lalr1.cc:859
+#line 944 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 69:
-#line 333 "agent_parser.yy" // lalr1.cc:859
+  case 70:
+#line 337 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
     ctx.stack_.back()->set("control-sockets", m);
     ctx.stack_.push_back(m);
+    ctx.enter(ctx.CONTROL_SOCKETS);
 }
-#line 943 "agent_parser.cc" // lalr1.cc:859
+#line 955 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 70:
-#line 337 "agent_parser.yy" // lalr1.cc:859
+  case 71:
+#line 342 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 951 "agent_parser.cc" // lalr1.cc:859
+#line 964 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 77:
-#line 357 "agent_parser.yy" // lalr1.cc:859
+  case 78:
+#line 363 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4-server", m);
     ctx.stack_.push_back(m);
+    ctx.enter(ctx.SERVER);
 }
-#line 961 "agent_parser.cc" // lalr1.cc:859
+#line 975 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 78:
-#line 361 "agent_parser.yy" // lalr1.cc:859
+  case 79:
+#line 368 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 969 "agent_parser.cc" // lalr1.cc:859
+#line 984 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 79:
-#line 366 "agent_parser.yy" // lalr1.cc:859
+  case 80:
+#line 374 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp6-server", m);
     ctx.stack_.push_back(m);
+    ctx.enter(ctx.SERVER);
 }
-#line 979 "agent_parser.cc" // lalr1.cc:859
+#line 995 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 80:
-#line 370 "agent_parser.yy" // lalr1.cc:859
+  case 81:
+#line 379 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 987 "agent_parser.cc" // lalr1.cc:859
+#line 1004 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 81:
-#line 375 "agent_parser.yy" // lalr1.cc:859
+  case 82:
+#line 385 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("d2-server", m);
     ctx.stack_.push_back(m);
+    ctx.enter(ctx.SERVER);
 }
-#line 997 "agent_parser.cc" // lalr1.cc:859
+#line 1015 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 82:
-#line 379 "agent_parser.yy" // lalr1.cc:859
+  case 83:
+#line 390 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 1005 "agent_parser.cc" // lalr1.cc:859
-    break;
-
-  case 87:
-#line 394 "agent_parser.yy" // lalr1.cc:859
-    {
-}
-#line 1012 "agent_parser.cc" // lalr1.cc:859
+#line 1024 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 88:
-#line 395 "agent_parser.yy" // lalr1.cc:859
+#line 406 "agent_parser.yy" // lalr1.cc:859
     {
-    ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ());
+    ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1020 "agent_parser.cc" // lalr1.cc:859
+#line 1032 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 89:
-#line 400 "agent_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1026 "agent_parser.cc" // lalr1.cc:859
+#line 408 "agent_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("socket-name", name);
+    ctx.leave();
+}
+#line 1042 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 90:
-#line 403 "agent_parser.yy" // lalr1.cc:859
+#line 415 "agent_parser.yy" // lalr1.cc:859
     {
-    ctx.enter(ctx.NO_KEYWORDS);
+    ctx.enter(ctx.SOCKET_TYPE);
 }
-#line 1034 "agent_parser.cc" // lalr1.cc:859
+#line 1050 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 91:
-#line 405 "agent_parser.yy" // lalr1.cc:859
+#line 417 "agent_parser.yy" // lalr1.cc:859
     {
-    ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("socket-name", name);
+    ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1044 "agent_parser.cc" // lalr1.cc:859
+#line 1059 "agent_parser.cc" // lalr1.cc:859
     break;
 
   case 92:
-#line 414 "agent_parser.yy" // lalr1.cc:859
+#line 423 "agent_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
+#line 1065 "agent_parser.cc" // lalr1.cc:859
+    break;
+
+  case 93:
+#line 429 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1052 "agent_parser.cc" // lalr1.cc:859
+#line 1073 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 93:
-#line 416 "agent_parser.yy" // lalr1.cc:859
+  case 94:
+#line 431 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1061 "agent_parser.cc" // lalr1.cc:859
+#line 1082 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 94:
-#line 421 "agent_parser.yy" // lalr1.cc:859
+  case 95:
+#line 436 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1069 "agent_parser.cc" // lalr1.cc:859
+#line 1090 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 95:
-#line 423 "agent_parser.yy" // lalr1.cc:859
+  case 96:
+#line 438 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1078 "agent_parser.cc" // lalr1.cc:859
+#line 1099 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 96:
-#line 428 "agent_parser.yy" // lalr1.cc:859
+  case 97:
+#line 443 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1086 "agent_parser.cc" // lalr1.cc:859
+#line 1107 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 97:
-#line 430 "agent_parser.yy" // lalr1.cc:859
+  case 98:
+#line 445 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1095 "agent_parser.cc" // lalr1.cc:859
+#line 1116 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 98:
-#line 440 "agent_parser.yy" // lalr1.cc:859
+  case 99:
+#line 455 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
+    ctx.enter(ctx.LOGGING);
 }
-#line 1105 "agent_parser.cc" // lalr1.cc:859
+#line 1127 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 99:
-#line 444 "agent_parser.yy" // lalr1.cc:859
+  case 100:
+#line 460 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 1113 "agent_parser.cc" // lalr1.cc:859
+#line 1136 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 460 "agent_parser.yy" // lalr1.cc:859
+  case 104:
+#line 477 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
+    ctx.enter(ctx.LOGGERS);
 }
-#line 1123 "agent_parser.cc" // lalr1.cc:859
+#line 1147 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 464 "agent_parser.yy" // lalr1.cc:859
+  case 105:
+#line 482 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 1131 "agent_parser.cc" // lalr1.cc:859
+#line 1156 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 475 "agent_parser.yy" // lalr1.cc:859
+  case 108:
+#line 494 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 1141 "agent_parser.cc" // lalr1.cc:859
+#line 1166 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 479 "agent_parser.yy" // lalr1.cc:859
+  case 109:
+#line 498 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1149 "agent_parser.cc" // lalr1.cc:859
+#line 1174 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 116:
-#line 494 "agent_parser.yy" // lalr1.cc:859
+  case 117:
+#line 513 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1157 "agent_parser.cc" // lalr1.cc:859
+#line 1182 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 117:
-#line 496 "agent_parser.yy" // lalr1.cc:859
+  case 118:
+#line 515 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1167 "agent_parser.cc" // lalr1.cc:859
+#line 1192 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 118:
-#line 502 "agent_parser.yy" // lalr1.cc:859
+  case 119:
+#line 521 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 1176 "agent_parser.cc" // lalr1.cc:859
+#line 1201 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 119:
-#line 506 "agent_parser.yy" // lalr1.cc:859
+  case 120:
+#line 526 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1184 "agent_parser.cc" // lalr1.cc:859
+#line 1209 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 120:
-#line 508 "agent_parser.yy" // lalr1.cc:859
+  case 121:
+#line 528 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 1194 "agent_parser.cc" // lalr1.cc:859
+#line 1219 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 121:
-#line 514 "agent_parser.yy" // lalr1.cc:859
+  case 122:
+#line 534 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
+    ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 1204 "agent_parser.cc" // lalr1.cc:859
+#line 1230 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 122:
-#line 518 "agent_parser.yy" // lalr1.cc:859
+  case 123:
+#line 539 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
+    ctx.leave();
 }
-#line 1212 "agent_parser.cc" // lalr1.cc:859
+#line 1239 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 526 "agent_parser.yy" // lalr1.cc:859
+  case 126:
+#line 548 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1222 "agent_parser.cc" // lalr1.cc:859
+#line 1249 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 530 "agent_parser.yy" // lalr1.cc:859
+  case 127:
+#line 552 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1230 "agent_parser.cc" // lalr1.cc:859
+#line 1257 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 538 "agent_parser.yy" // lalr1.cc:859
+  case 130:
+#line 560 "agent_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1238 "agent_parser.cc" // lalr1.cc:859
+#line 1265 "agent_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 540 "agent_parser.yy" // lalr1.cc:859
+  case 131:
+#line 562 "agent_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 1248 "agent_parser.cc" // lalr1.cc:859
+#line 1275 "agent_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 1252 "agent_parser.cc" // lalr1.cc:859
+#line 1279 "agent_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -1503,36 +1530,36 @@ namespace isc { namespace agent {
   }
 
 
-  const signed char AgentParser::yypact_ninf_ = -81;
+  const signed char AgentParser::yypact_ninf_ = -75;
 
   const signed char AgentParser::yytable_ninf_ = -1;
 
-  const short int
+  const signed char
   AgentParser::yypact_[] =
   {
-       7,   -81,   -81,   -81,     5,    -3,    14,    42,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,    -3,   -24,    -7,    -4,   -81,     8,
-      27,    81,    67,    83,   -81,   -81,   -81,   -81,   -81,    84,
-     -81,    12,   -81,   -81,   -81,   -81,   -81,   -81,    85,    86,
-      87,   -81,   -81,    19,   -81,   -81,   -81,   -81,   -81,   -81,
-      -3,    -3,   -81,    51,    88,    89,    90,    91,    92,   -81,
-      -7,   -81,    93,    68,    60,    94,    -4,   -81,   -81,   -81,
-      95,    96,    98,    -3,    -3,    -3,   -81,   -81,   -81,   -81,
-     101,   -81,    -3,    -4,    77,   -81,   -81,   -81,     3,   100,
-     -81,    23,   -81,    45,   -81,   -81,   -81,   -81,   -81,   -81,
-      47,   -81,   -81,   -81,   -81,   -81,   102,   106,   -81,   -81,
-     107,    77,   -81,   108,   109,   110,    64,   -81,    -8,   -81,
-     100,   105,   -81,   111,   112,   113,   -81,   -81,   -81,   -81,
-      48,   -81,   -81,   -81,   -81,   114,    61,    61,    61,   118,
-     119,    65,   -81,   -81,    70,   -81,   -81,   -81,    49,   -81,
-     -81,   -81,    55,    56,    79,    -3,   -81,    18,   114,   -81,
-     120,   121,    61,   -81,   -81,   -81,   -81,   -81,   -81,   122,
-     -81,   -81,   -81,    62,   -81,   -81,   -81,   -81,   -81,   -81,
-     115,    80,   -81,   123,    97,   124,   125,    18,   -81,   -81,
-     -81,   -81,   126,   -81,    99,   103,   -81,   129,   -81,   -81,
-     -81,    71,   -81,   104,   129,   -81,   -81,    63,   -81,   -81,
-     128,   104,   -81,   116,   -81,   -81
+      43,   -75,   -75,   -75,     5,    -3,     0,    34,   -75,   -75,
+     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,
+     -75,   -75,   -75,   -75,    -3,    -4,    -7,     6,   -75,    37,
+      48,    53,    56,    80,   -75,   -75,   -75,   -75,   -75,    81,
+     -75,    12,   -75,   -75,   -75,   -75,   -75,   -75,   -75,    82,
+      83,   -75,   -75,    44,   -75,   -75,   -75,   -75,   -75,   -75,
+      -3,    -3,   -75,    52,    85,    86,    87,    88,    89,   -75,
+      -7,   -75,    90,    58,    77,    92,     6,   -75,   -75,   -75,
+      93,    91,    95,    -3,    -3,    -3,   -75,    68,   -75,   -75,
+      94,   -75,    -3,     6,    76,   -75,   -75,   -75,   -75,    -6,
+      98,   -75,    47,   -75,    50,   -75,   -75,   -75,   -75,   -75,
+     -75,    51,   -75,   -75,   -75,   -75,   -75,   100,   104,   -75,
+     -75,   105,    76,   -75,   106,   107,   108,    -6,   -75,    -9,
+     -75,    98,   103,   -75,   109,   110,   111,   -75,   -75,   -75,
+     -75,    60,   -75,   -75,   -75,   -75,   112,     4,     4,     4,
+     116,   117,    18,   -75,   -75,     8,   -75,   -75,   -75,    62,
+     -75,   -75,   -75,    63,    64,    78,    -3,   -75,    20,   112,
+     -75,   118,   119,     4,   -75,   -75,   -75,   -75,   -75,   -75,
+     -75,   120,   -75,   -75,    71,   -75,   -75,   -75,   -75,   -75,
+     -75,    79,   113,   -75,   121,   122,    96,   123,    20,   -75,
+     -75,   -75,   -75,    99,   124,   -75,   101,   -75,   -75,   127,
+     -75,   -75,    25,   -75,   114,   127,   -75,   -75,    72,   -75,
+     -75,   126,   114,   -75,   102,   -75,   -75
   };
 
   const unsigned char
@@ -1541,40 +1568,40 @@ namespace isc { namespace agent {
        0,     2,     4,     6,     0,     0,     0,     0,     1,    24,
       18,    15,    14,    11,    12,    13,     3,    10,    16,    17,
       31,     5,     8,     7,    26,    20,     0,     0,    28,     0,
-      27,     0,     0,    21,    41,    98,    92,    94,    96,     0,
-      40,     0,    33,    35,    37,    38,    39,    36,     0,     0,
-       0,    52,    49,     0,    43,    45,    46,    48,    47,    25,
+      27,     0,     0,    21,    41,    99,    93,    95,    97,     0,
+      40,     0,    33,    35,    37,    38,    39,    36,    50,     0,
+       0,    53,    49,     0,    43,    45,    46,    48,    47,    25,
        0,     0,    19,     0,     0,     0,     0,     0,     0,    30,
        0,    32,     0,     0,     0,     0,     0,     9,    29,    22,
-       0,     0,     0,     0,     0,     0,    34,    69,    50,    51,
-       0,    44,     0,     0,     0,    93,    95,    97,     0,    54,
-      23,     0,   103,     0,   100,   102,    77,    79,    81,    73,
-       0,    71,    74,    75,    76,    58,     0,    55,    56,    42,
-       0,     0,    99,     0,     0,     0,     0,    70,     0,    53,
-       0,     0,   101,     0,     0,     0,    72,    65,    67,    62,
-       0,    60,    63,    64,    57,     0,     0,     0,     0,     0,
-       0,     0,    59,   107,     0,   105,    87,    90,     0,    83,
-      85,    86,     0,     0,     0,     0,    61,     0,     0,   104,
-       0,     0,     0,    78,    80,    82,    66,    68,   121,     0,
-     119,   116,   115,     0,   109,   111,   113,   114,   112,   106,
-       0,     0,    84,     0,     0,     0,     0,     0,   108,    89,
-      88,    91,     0,   118,     0,     0,   110,     0,   120,   117,
-     125,     0,   123,     0,     0,   122,   129,     0,   127,   124,
-       0,     0,   126,     0,   128,   130
+       0,     0,     0,     0,     0,     0,    34,     0,    52,    70,
+       0,    44,     0,     0,     0,    94,    96,    98,    51,     0,
+      55,    23,     0,   104,     0,   101,   103,    78,    80,    82,
+      77,     0,    72,    74,    75,    76,    59,     0,    56,    57,
+      42,     0,     0,   100,     0,     0,     0,     0,    71,     0,
+      54,     0,     0,   102,     0,     0,     0,    73,    66,    68,
+      63,     0,    61,    64,    65,    58,     0,     0,     0,     0,
+       0,     0,     0,    60,   108,     0,   106,    88,    90,     0,
+      84,    86,    87,     0,     0,     0,     0,    62,     0,     0,
+     105,     0,     0,     0,    79,    81,    83,    67,    69,   117,
+     122,     0,   120,   116,     0,   110,   112,   114,   115,   113,
+     107,     0,     0,    85,     0,     0,     0,     0,     0,   109,
+      89,    92,    91,     0,     0,   119,     0,   111,   118,     0,
+     121,   126,     0,   124,     0,     0,   123,   130,     0,   128,
+     125,     0,     0,   127,     0,   129,   131
   };
 
   const signed char
   AgentParser::yypgoto_[] =
   {
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -23,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -26,   -81,   -81,
-     -81,    73,   -81,   -81,    24,    57,   -81,   -81,   -81,   -81,
-     -81,   -81,    10,   -81,   -81,   -13,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,    20,   -81,   -81,   -81,   -81,   -81,   -81,
-     -80,   -28,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,    26,   -81,   -81,   -81,
-     -20,   -81,   -81,   -52,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -65,   -81,   -81,   -71,   -81
+     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -23,   -75,
+     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -26,   -75,   -75,
+     -75,    61,   -75,   -75,    35,    69,   -75,   -75,   -75,   -75,
+     -75,   -75,   -75,   -18,   -75,   -75,   -16,   -75,   -75,   -75,
+     -75,   -75,   -75,   -75,    13,   -75,   -75,   -75,   -75,   -75,
+     -75,   -67,   -34,   -75,   -75,   -75,   -75,   -75,   -75,   -75,
+     -75,   -75,   -75,   -75,   -75,   -75,   -75,    22,   -75,   -75,
+     -75,   -22,   -75,   -75,   -52,   -75,   -75,   -75,   -75,   -75,
+     -75,   -75,   -75,   -66,   -75,   -75,   -74,   -75
   };
 
   const short int
@@ -1582,59 +1609,59 @@ namespace isc { namespace agent {
   {
       -1,     4,     5,     6,     7,    23,    27,    16,    17,    18,
       25,    32,    33,    19,    24,    29,    30,    52,    21,    26,
-      41,    42,    43,    64,    53,    54,    55,    56,    57,    75,
-     116,   117,   118,   128,   140,   141,   142,   149,   143,   150,
-      58,    98,   110,   111,   112,   123,   113,   124,   114,   125,
-     158,   159,   160,   170,   200,   161,   171,    44,    66,    45,
-      67,    46,    68,    47,    65,   103,   104,   105,   120,   154,
-     155,   167,   183,   184,   185,   196,   186,   187,   195,   188,
-     193,   211,   212,   213,   217,   218,   220
+      41,    42,    43,    64,    53,    54,    55,    72,    56,    57,
+      75,   117,   118,   119,   129,   141,   142,   143,   150,   144,
+     151,    58,    99,   111,   112,   113,   124,   114,   125,   115,
+     126,   159,   160,   161,   171,   162,   172,   202,    44,    66,
+      45,    67,    46,    68,    47,    65,   104,   105,   106,   121,
+     155,   156,   168,   184,   185,   186,   194,   187,   188,   197,
+     189,   195,   212,   213,   214,   218,   219,   221
   };
 
   const unsigned char
   AgentParser::yytable_[] =
   {
-      40,    28,     9,    34,    10,     8,    11,    48,    49,    50,
-     137,   138,    31,    51,    59,    70,    35,   106,   107,   108,
-      71,    20,    76,    36,    37,    38,    76,    77,    39,    39,
-      60,   119,    39,    12,    13,    14,    15,    78,    79,    39,
-       1,     2,     3,   178,    40,   179,   180,   181,   121,    22,
-     126,   151,   172,   122,    39,   127,   152,   173,   172,   172,
-      95,    96,    97,   174,   175,   197,   221,   162,   163,   100,
-     198,   222,   109,   168,   214,    62,   169,   215,   106,   107,
-     108,   156,   157,   137,   138,    61,    63,    80,    69,    72,
-      73,    74,    81,    82,    83,    84,    85,    89,    90,    92,
-      87,   102,   139,    93,    88,    94,    99,   115,   129,   130,
-     145,   131,   133,   134,   135,   176,   201,   101,   146,   147,
-     148,   153,   164,   165,   190,   191,   194,   202,   204,   205,
-     216,   207,   223,    91,   203,   208,   210,   199,   166,   209,
-     144,   182,   177,    86,   192,   206,   136,   132,   189,   219,
-     224,     0,   225,     0,     0,     0,     0,     0,     0,     0,
+      40,    28,     9,    34,    10,     8,    11,    20,   107,   108,
+     109,   169,   138,   139,   170,    70,    35,    48,    49,    50,
+      71,   157,   158,    36,    37,    38,    51,    39,   215,    39,
+      39,   216,    31,    12,    13,    14,    15,    78,    79,   138,
+     139,    22,    39,    59,    40,   179,   180,    76,   181,   182,
+      76,    60,    77,   122,   127,   120,    39,    61,   123,   128,
+      95,    96,    97,   152,    62,   173,   173,   173,   153,   101,
+     174,   175,   176,   110,   198,   222,     1,     2,     3,   199,
+     223,   163,   164,    63,    89,    69,    73,    74,    80,    81,
+      82,    83,    84,    85,    87,    88,    90,    92,    93,   100,
+     103,   110,    94,   140,    98,   116,   130,   131,   146,   132,
+     134,   135,   136,   145,   177,   200,   147,   148,   149,   154,
+     165,   166,   191,   192,   196,   203,   204,   206,   102,   209,
+     224,    86,   201,   205,   211,   208,   167,   210,   226,   193,
+     137,   217,   183,   178,   133,    91,   207,   190,   225,   220,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   182
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   183
   };
 
   const short int
   AgentParser::yycheck_[] =
   {
-      26,    24,     5,    10,     7,     0,     9,    11,    12,    13,
-      18,    19,    36,    17,     6,     3,    23,    14,    15,    16,
-       8,     7,     3,    30,    31,    32,     3,     8,    36,    36,
-       3,     8,    36,    36,    37,    38,    39,    60,    61,    36,
-      33,    34,    35,    25,    70,    27,    28,    29,     3,     7,
-       3,     3,     3,     8,    36,     8,     8,     8,     3,     3,
-      83,    84,    85,     8,     8,     3,     3,   147,   148,    92,
-       8,     8,    98,     3,     3,     8,     6,     6,    14,    15,
-      16,    20,    21,    18,    19,     4,     3,    36,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,    37,     4,     4,
-       7,    24,   128,     7,    36,     7,     5,     7,     6,     3,
-       5,     4,     4,     4,     4,    36,    36,    93,     7,     7,
-       7,     7,     4,     4,     4,     4,     4,     4,     4,     4,
-      26,     5,     4,    76,    37,    36,     7,    22,   151,    36,
-     130,   167,   165,    70,   172,   197,   126,   121,   168,   214,
-     221,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      26,    24,     5,    10,     7,     0,     9,     7,    14,    15,
+      16,     3,    21,    22,     6,     3,    23,    11,    12,    13,
+       8,    17,    18,    30,    31,    32,    20,    36,     3,    36,
+      36,     6,    36,    36,    37,    38,    39,    60,    61,    21,
+      22,     7,    36,     6,    70,    25,    26,     3,    28,    29,
+       3,     3,     8,     3,     3,     8,    36,     4,     8,     8,
+      83,    84,    85,     3,     8,     3,     3,     3,     8,    92,
+       8,     8,     8,    99,     3,     3,    33,    34,    35,     8,
+       8,   148,   149,     3,     7,     4,     4,     4,    36,     4,
+       4,     4,     4,     4,     4,    37,     4,     4,     7,     5,
+      24,   127,     7,   129,    36,     7,     6,     3,     5,     4,
+       4,     4,     4,   131,    36,    36,     7,     7,     7,     7,
+       4,     4,     4,     4,     4,     4,     4,     4,    93,     5,
+       4,    70,    19,    37,     7,    36,   152,    36,    36,   173,
+     127,    27,   168,   166,   122,    76,   198,   169,   222,   215,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   197
+      -1,    -1,   198
   };
 
   const unsigned char
@@ -1644,25 +1671,25 @@ namespace isc { namespace agent {
        7,     9,    36,    37,    38,    39,    47,    48,    49,    53,
        7,    58,     7,    45,    54,    50,    59,    46,    48,    55,
       56,    36,    51,    52,    10,    23,    30,    31,    32,    36,
-      57,    60,    61,    62,    97,    99,   101,   103,    11,    12,
-      13,    17,    57,    64,    65,    66,    67,    68,    80,     6,
-       3,     4,     8,     3,    63,   104,    98,   100,   102,     4,
-       3,     8,     4,     4,     4,    69,     3,     8,    48,    48,
-      36,     4,     4,     4,     4,     4,    61,     7,    36,    37,
-       4,    65,     4,     7,     7,    48,    48,    48,    81,     5,
-      48,    64,    24,   105,   106,   107,    14,    15,    16,    57,
-      82,    83,    84,    86,    88,     7,    70,    71,    72,     8,
-     108,     3,     8,    85,    87,    89,     3,     8,    73,     6,
-       3,     4,   106,     4,     4,     4,    83,    18,    19,    57,
-      74,    75,    76,    78,    72,     5,     7,     7,     7,    77,
-      79,     3,     8,     7,   109,   110,    20,    21,    90,    91,
-      92,    95,    90,    90,     4,     4,    75,   111,     3,     6,
-      93,    96,     3,     8,     8,     8,    36,    48,    25,    27,
-      28,    29,    57,   112,   113,   114,   116,   117,   119,   110,
-       4,     4,    91,   120,     4,   118,   115,     3,     8,    22,
-      94,    36,     4,    37,     4,     4,   113,     5,    36,    36,
-       7,   121,   122,   123,     3,     6,    26,   124,   125,   122,
-     126,     3,     8,     4,   125,    36
+      57,    60,    61,    62,    98,   100,   102,   104,    11,    12,
+      13,    20,    57,    64,    65,    66,    68,    69,    81,     6,
+       3,     4,     8,     3,    63,   105,    99,   101,   103,     4,
+       3,     8,    67,     4,     4,    70,     3,     8,    48,    48,
+      36,     4,     4,     4,     4,     4,    61,     4,    37,     7,
+       4,    65,     4,     7,     7,    48,    48,    48,    36,    82,
+       5,    48,    64,    24,   106,   107,   108,    14,    15,    16,
+      57,    83,    84,    85,    87,    89,     7,    71,    72,    73,
+       8,   109,     3,     8,    86,    88,    90,     3,     8,    74,
+       6,     3,     4,   107,     4,     4,     4,    84,    21,    22,
+      57,    75,    76,    77,    79,    73,     5,     7,     7,     7,
+      78,    80,     3,     8,     7,   110,   111,    17,    18,    91,
+      92,    93,    95,    91,    91,     4,     4,    76,   112,     3,
+       6,    94,    96,     3,     8,     8,     8,    36,    48,    25,
+      26,    28,    29,    57,   113,   114,   115,   117,   118,   120,
+     111,     4,     4,    92,   116,   121,     4,   119,     3,     8,
+      36,    19,    97,     4,     4,    37,     4,   114,    36,     5,
+      36,     7,   122,   123,   124,     3,     6,    27,   125,   126,
+     123,   127,     3,     8,     4,   126,    36
   };
 
   const unsigned char
@@ -1673,15 +1700,15 @@ namespace isc { namespace agent {
       51,    51,    52,    52,    54,    53,    55,    55,    56,    56,
       57,    59,    58,    60,    60,    61,    61,    61,    61,    61,
       61,    63,    62,    64,    64,    65,    65,    65,    65,    65,
-      66,    67,    69,    68,    70,    70,    71,    71,    73,    72,
-      74,    74,    74,    75,    75,    77,    76,    79,    78,    81,
-      80,    82,    82,    82,    83,    83,    83,    85,    84,    87,
-      86,    89,    88,    90,    90,    91,    91,    93,    92,    94,
-      96,    95,    98,    97,   100,    99,   102,   101,   104,   103,
-     105,   105,   106,   108,   107,   109,   109,   111,   110,   112,
-     112,   113,   113,   113,   113,   113,   115,   114,   116,   118,
-     117,   120,   119,   121,   121,   123,   122,   124,   124,   126,
-     125
+      67,    66,    68,    70,    69,    71,    71,    72,    72,    74,
+      73,    75,    75,    75,    76,    76,    78,    77,    80,    79,
+      82,    81,    83,    83,    84,    84,    84,    84,    86,    85,
+      88,    87,    90,    89,    91,    91,    92,    92,    94,    93,
+      96,    95,    97,    99,    98,   101,   100,   103,   102,   105,
+     104,   106,   106,   107,   109,   108,   110,   110,   112,   111,
+     113,   113,   114,   114,   114,   114,   114,   116,   115,   117,
+     119,   118,   121,   120,   122,   122,   124,   123,   125,   125,
+     127,   126
   };
 
   const unsigned char
@@ -1692,15 +1719,15 @@ namespace isc { namespace agent {
        0,     1,     3,     5,     0,     4,     0,     1,     1,     3,
        2,     0,     4,     1,     3,     1,     1,     1,     1,     1,
        1,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     0,     4,     0,     4,     0,
-       6,     1,     3,     1,     1,     1,     1,     0,     6,     0,
-       6,     0,     6,     1,     3,     1,     1,     0,     4,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     6,
-       1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       4,     0,     6,     1,     3,     0,     4,     1,     3,     0,
-       4
+       0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
+       4,     1,     3,     1,     1,     1,     0,     4,     0,     4,
+       0,     6,     1,     3,     1,     1,     1,     1,     0,     6,
+       0,     6,     0,     6,     1,     3,     1,     1,     0,     4,
+       0,     4,     1,     0,     4,     0,     4,     0,     4,     0,
+       6,     1,     3,     1,     0,     6,     1,     3,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     0,     4,     3,
+       0,     4,     0,     6,     1,     3,     0,     4,     1,     3,
+       0,     4
   };
 
 
@@ -1712,53 +1739,52 @@ namespace isc { namespace agent {
   {
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
   "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Control-agent\"",
-  "\"control-sockets\"", "\"http-host\"", "\"http-port\"",
+  "\"http-host\"", "\"http-port\"", "\"control-sockets\"",
   "\"dhcp4-server\"", "\"dhcp6-server\"", "\"d2-server\"",
-  "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
-  "\"socket-type\"", "\"socket-name\"", "\"unix\"", "\"Logging\"",
-  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"name\"", "\"Dhcp4\"", "\"Dhcp6\"", "\"DhcpDdns\"",
-  "START_JSON", "START_AGENT", "START_SUB_AGENT", "\"constant string\"",
-  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
-  "$@1", "$@2", "$@3", "sub_agent", "$@4", "json", "value", "map", "$@5",
-  "map_content", "not_empty_map", "list_generic", "$@6", "list_content",
-  "not_empty_list", "unknown_map_entry", "agent_syntax_map", "$@7",
-  "global_objects", "global_object", "agent_object", "$@8",
-  "global_params", "global_param", "http_host", "http_port",
-  "hooks_libraries", "$@9", "hooks_libraries_list",
-  "not_empty_hooks_libraries_list", "hooks_library", "$@10",
-  "hooks_params", "hooks_param", "library", "$@11", "parameters", "$@12",
-  "control_sockets", "$@13", "control_sockets_params", "control_socket",
-  "dhcp4_server_socket", "$@14", "dhcp6_server_socket", "$@15",
-  "d2_server_socket", "$@16", "control_socket_params",
-  "control_socket_param", "socket_type", "$@17", "socket_type_value",
-  "socket_name", "$@18", "dhcp4_json_object", "$@19", "dhcp6_json_object",
-  "$@20", "dhcpddns_json_object", "$@21", "logging_object", "$@22",
-  "logging_params", "logging_param", "loggers", "$@23", "loggers_entries",
-  "logger_entry", "$@24", "logger_params", "logger_param", "name", "$@25",
-  "debuglevel", "severity", "$@26", "output_options_list", "$@27",
-  "output_options_list_content", "output_entry", "$@28", "output_params",
-  "output_param", "$@29", YY_NULLPTR
+  "\"socket-name\"", "\"socket-type\"", "\"unix\"", "\"hooks-libraries\"",
+  "\"library\"", "\"parameters\"", "\"Logging\"", "\"loggers\"",
+  "\"name\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
+  "\"severity\"", "\"Dhcp4\"", "\"Dhcp6\"", "\"DhcpDdns\"", "START_JSON",
+  "START_AGENT", "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "sub_agent", "$@4", "json", "value", "map", "$@5", "map_content",
+  "not_empty_map", "list_generic", "$@6", "list_content", "not_empty_list",
+  "unknown_map_entry", "agent_syntax_map", "$@7", "global_objects",
+  "global_object", "agent_object", "$@8", "global_params", "global_param",
+  "http_host", "$@9", "http_port", "hooks_libraries", "$@10",
+  "hooks_libraries_list", "not_empty_hooks_libraries_list",
+  "hooks_library", "$@11", "hooks_params", "hooks_param", "library",
+  "$@12", "parameters", "$@13", "control_sockets", "$@14",
+  "control_sockets_params", "control_socket", "dhcp4_server_socket",
+  "$@15", "dhcp6_server_socket", "$@16", "d2_server_socket", "$@17",
+  "control_socket_params", "control_socket_param", "socket_name", "$@18",
+  "socket_type", "$@19", "socket_type_value", "dhcp4_json_object", "$@20",
+  "dhcp6_json_object", "$@21", "dhcpddns_json_object", "$@22",
+  "logging_object", "$@23", "logging_params", "logging_param", "loggers",
+  "$@24", "loggers_entries", "logger_entry", "$@25", "logger_params",
+  "logger_param", "name", "$@26", "debuglevel", "severity", "$@27",
+  "output_options_list", "$@28", "output_options_list_content",
+  "output_entry", "$@29", "output_params", "output_param", "$@30", YY_NULLPTR
   };
 
 #if AGENT_DEBUG
   const unsigned short int
   AgentParser::yyrline_[] =
   {
-       0,   108,   108,   108,   109,   109,   110,   110,   118,   118,
-     129,   135,   136,   137,   138,   139,   140,   141,   145,   145,
-     159,   160,   168,   172,   179,   179,   185,   186,   189,   193,
-     206,   214,   214,   226,   227,   231,   232,   233,   234,   235,
-     236,   240,   240,   258,   259,   264,   265,   266,   267,   268,
-     271,   276,   282,   282,   290,   291,   294,   295,   298,   298,
-     306,   307,   308,   311,   312,   315,   315,   323,   323,   333,
-     333,   344,   345,   346,   351,   352,   353,   357,   357,   366,
-     366,   375,   375,   384,   385,   389,   390,   394,   394,   400,
-     403,   403,   414,   414,   421,   421,   428,   428,   440,   440,
-     451,   452,   456,   460,   460,   470,   471,   475,   475,   483,
-     484,   487,   488,   489,   490,   491,   494,   494,   502,   506,
-     506,   514,   514,   522,   523,   526,   526,   534,   535,   538,
-     538
+       0,   107,   107,   107,   108,   108,   109,   109,   117,   117,
+     128,   134,   135,   136,   137,   138,   139,   140,   144,   144,
+     158,   159,   167,   171,   178,   178,   184,   185,   188,   192,
+     205,   214,   214,   226,   227,   231,   232,   233,   234,   235,
+     236,   240,   240,   257,   258,   263,   264,   265,   266,   267,
+     270,   270,   278,   284,   284,   294,   295,   298,   299,   302,
+     302,   310,   311,   312,   315,   316,   319,   319,   327,   327,
+     337,   337,   350,   351,   356,   357,   358,   359,   363,   363,
+     374,   374,   385,   385,   396,   397,   401,   402,   406,   406,
+     415,   415,   423,   429,   429,   436,   436,   443,   443,   455,
+     455,   468,   469,   473,   477,   477,   489,   490,   494,   494,
+     502,   503,   506,   507,   508,   509,   510,   513,   513,   521,
+     526,   526,   534,   534,   544,   545,   548,   548,   556,   557,
+     560,   560
   };
 
   // Print the state stack on the debug stream.
@@ -1793,8 +1819,8 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy" // lalr1.cc:1167
 } } // isc::agent
-#line 1797 "agent_parser.cc" // lalr1.cc:1167
-#line 546 "agent_parser.yy" // lalr1.cc:1168
+#line 1823 "agent_parser.cc" // lalr1.cc:1167
+#line 568 "agent_parser.yy" // lalr1.cc:1168
 
 
 void
index a1345c0171bf161817bfb1dccacfb3c2b5f93604..e9354131ebcccbd2083b03258550a2a728d834e6 100644 (file)
@@ -349,25 +349,25 @@ namespace isc { namespace agent {
         TOKEN_RCURLY_BRACKET = 263,
         TOKEN_NULL_TYPE = 264,
         TOKEN_CONTROL_AGENT = 265,
-        TOKEN_CONTROL_SOCKETS = 266,
-        TOKEN_HTTP_HOST = 267,
-        TOKEN_HTTP_PORT = 268,
+        TOKEN_HTTP_HOST = 266,
+        TOKEN_HTTP_PORT = 267,
+        TOKEN_CONTROL_SOCKETS = 268,
         TOKEN_DHCP4_SERVER = 269,
         TOKEN_DHCP6_SERVER = 270,
         TOKEN_D2_SERVER = 271,
-        TOKEN_HOOKS_LIBRARIES = 272,
-        TOKEN_LIBRARY = 273,
-        TOKEN_PARAMETERS = 274,
-        TOKEN_SOCKET_TYPE = 275,
-        TOKEN_SOCKET_NAME = 276,
-        TOKEN_UNIX = 277,
+        TOKEN_SOCKET_NAME = 272,
+        TOKEN_SOCKET_TYPE = 273,
+        TOKEN_UNIX = 274,
+        TOKEN_HOOKS_LIBRARIES = 275,
+        TOKEN_LIBRARY = 276,
+        TOKEN_PARAMETERS = 277,
         TOKEN_LOGGING = 278,
         TOKEN_LOGGERS = 279,
-        TOKEN_OUTPUT_OPTIONS = 280,
-        TOKEN_OUTPUT = 281,
-        TOKEN_DEBUGLEVEL = 282,
-        TOKEN_SEVERITY = 283,
-        TOKEN_NAME = 284,
+        TOKEN_NAME = 280,
+        TOKEN_OUTPUT_OPTIONS = 281,
+        TOKEN_OUTPUT = 282,
+        TOKEN_DEBUGLEVEL = 283,
+        TOKEN_SEVERITY = 284,
         TOKEN_DHCP4 = 285,
         TOKEN_DHCP6 = 286,
         TOKEN_DHCPDDNS = 287,
@@ -530,15 +530,15 @@ namespace isc { namespace agent {
 
     static inline
     symbol_type
-    make_CONTROL_SOCKETS (const location_type& l);
+    make_HTTP_HOST (const location_type& l);
 
     static inline
     symbol_type
-    make_HTTP_HOST (const location_type& l);
+    make_HTTP_PORT (const location_type& l);
 
     static inline
     symbol_type
-    make_HTTP_PORT (const location_type& l);
+    make_CONTROL_SOCKETS (const location_type& l);
 
     static inline
     symbol_type
@@ -554,27 +554,27 @@ namespace isc { namespace agent {
 
     static inline
     symbol_type
-    make_HOOKS_LIBRARIES (const location_type& l);
+    make_SOCKET_NAME (const location_type& l);
 
     static inline
     symbol_type
-    make_LIBRARY (const location_type& l);
+    make_SOCKET_TYPE (const location_type& l);
 
     static inline
     symbol_type
-    make_PARAMETERS (const location_type& l);
+    make_UNIX (const location_type& l);
 
     static inline
     symbol_type
-    make_SOCKET_TYPE (const location_type& l);
+    make_HOOKS_LIBRARIES (const location_type& l);
 
     static inline
     symbol_type
-    make_SOCKET_NAME (const location_type& l);
+    make_LIBRARY (const location_type& l);
 
     static inline
     symbol_type
-    make_UNIX (const location_type& l);
+    make_PARAMETERS (const location_type& l);
 
     static inline
     symbol_type
@@ -584,6 +584,10 @@ namespace isc { namespace agent {
     symbol_type
     make_LOGGERS (const location_type& l);
 
+    static inline
+    symbol_type
+    make_NAME (const location_type& l);
+
     static inline
     symbol_type
     make_OUTPUT_OPTIONS (const location_type& l);
@@ -600,10 +604,6 @@ namespace isc { namespace agent {
     symbol_type
     make_SEVERITY (const location_type& l);
 
-    static inline
-    symbol_type
-    make_NAME (const location_type& l);
-
     static inline
     symbol_type
     make_DHCP4 (const location_type& l);
@@ -711,7 +711,7 @@ namespace isc { namespace agent {
     // Tables.
   // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
   // STATE-NUM.
-  static const short int yypact_[];
+  static const signed char yypact_[];
 
   // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
   // Performed when YYTABLE does not specify something else to do.  Zero
@@ -849,8 +849,8 @@ namespace isc { namespace agent {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 171,     ///< Last index in yytable_.
-      yynnts_ = 87,  ///< Number of nonterminal symbols.
+      yylast_ = 172,     ///< Last index in yytable_.
+      yynnts_ = 88,  ///< Number of nonterminal symbols.
       yyfinal_ = 8, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
@@ -936,7 +936,7 @@ namespace isc { namespace agent {
       switch (other.type_get ())
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         value.copy< ElementPtr > (other.value);
         break;
 
@@ -974,7 +974,7 @@ namespace isc { namespace agent {
       switch (this->type_get ())
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         value.copy< ElementPtr > (v);
         break;
 
@@ -1071,7 +1071,7 @@ namespace isc { namespace agent {
     switch (yytype)
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
@@ -1115,7 +1115,7 @@ namespace isc { namespace agent {
       switch (this->type_get ())
     {
       case 48: // value
-      case 94: // socket_type_value
+      case 97: // socket_type_value
         value.move< ElementPtr > (s.value);
         break;
 
@@ -1252,12 +1252,6 @@ namespace isc { namespace agent {
     return symbol_type (token::TOKEN_CONTROL_AGENT, l);
   }
 
-  AgentParser::symbol_type
-  AgentParser::make_CONTROL_SOCKETS (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
-  }
-
   AgentParser::symbol_type
   AgentParser::make_HTTP_HOST (const location_type& l)
   {
@@ -1270,6 +1264,12 @@ namespace isc { namespace agent {
     return symbol_type (token::TOKEN_HTTP_PORT, l);
   }
 
+  AgentParser::symbol_type
+  AgentParser::make_CONTROL_SOCKETS (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
+  }
+
   AgentParser::symbol_type
   AgentParser::make_DHCP4_SERVER (const location_type& l)
   {
@@ -1289,39 +1289,39 @@ namespace isc { namespace agent {
   }
 
   AgentParser::symbol_type
-  AgentParser::make_HOOKS_LIBRARIES (const location_type& l)
+  AgentParser::make_SOCKET_NAME (const location_type& l)
   {
-    return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+    return symbol_type (token::TOKEN_SOCKET_NAME, l);
   }
 
   AgentParser::symbol_type
-  AgentParser::make_LIBRARY (const location_type& l)
+  AgentParser::make_SOCKET_TYPE (const location_type& l)
   {
-    return symbol_type (token::TOKEN_LIBRARY, l);
+    return symbol_type (token::TOKEN_SOCKET_TYPE, l);
   }
 
   AgentParser::symbol_type
-  AgentParser::make_PARAMETERS (const location_type& l)
+  AgentParser::make_UNIX (const location_type& l)
   {
-    return symbol_type (token::TOKEN_PARAMETERS, l);
+    return symbol_type (token::TOKEN_UNIX, l);
   }
 
   AgentParser::symbol_type
-  AgentParser::make_SOCKET_TYPE (const location_type& l)
+  AgentParser::make_HOOKS_LIBRARIES (const location_type& l)
   {
-    return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+    return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
   }
 
   AgentParser::symbol_type
-  AgentParser::make_SOCKET_NAME (const location_type& l)
+  AgentParser::make_LIBRARY (const location_type& l)
   {
-    return symbol_type (token::TOKEN_SOCKET_NAME, l);
+    return symbol_type (token::TOKEN_LIBRARY, l);
   }
 
   AgentParser::symbol_type
-  AgentParser::make_UNIX (const location_type& l)
+  AgentParser::make_PARAMETERS (const location_type& l)
   {
-    return symbol_type (token::TOKEN_UNIX, l);
+    return symbol_type (token::TOKEN_PARAMETERS, l);
   }
 
   AgentParser::symbol_type
@@ -1336,6 +1336,12 @@ namespace isc { namespace agent {
     return symbol_type (token::TOKEN_LOGGERS, l);
   }
 
+  AgentParser::symbol_type
+  AgentParser::make_NAME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_NAME, l);
+  }
+
   AgentParser::symbol_type
   AgentParser::make_OUTPUT_OPTIONS (const location_type& l)
   {
@@ -1360,12 +1366,6 @@ namespace isc { namespace agent {
     return symbol_type (token::TOKEN_SEVERITY, l);
   }
 
-  AgentParser::symbol_type
-  AgentParser::make_NAME (const location_type& l)
-  {
-    return symbol_type (token::TOKEN_NAME, l);
-  }
-
   AgentParser::symbol_type
   AgentParser::make_DHCP4 (const location_type& l)
   {
index 6ecc3752ba84f4cacb3656a5052c94fab43f6aea..d693d64b41547c8d5974eaa637662569aa8e3b3b 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702071235
+// Generated 201702082310
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 299235ff5535657fed1fdb7da1fbd40ea234c372..a547206d730be123a8da4ce8606502635e58abc3 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702071235
+// Generated 201702082310
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 5ef2ff3b8fbc4be8ca56f2df34cde9081a2650d5..2f29806e76f3cb132fbe80a1b48b6a976fd96d80 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201702071235
+// Generated 201702082310
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++