-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Generated 202003301427
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Locations for Bison parsers in C++
-// Generated 202003301427
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202003301427
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Generated 202003301427
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Locations for Bison parsers in C++
-// Generated 202003301427
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202003301427
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-#line 2 "dhcp4_lexer.cc"
+#line 1 "dhcp4_lexer.cc"
-#line 4 "dhcp4_lexer.cc"
+#line 3 "dhcp4_lexer.cc"
#define YY_INT_ALIGNED short int
184, 191, 200, 209, 218, 227, 236, 245, 255, 264,
273, 282, 291, 300, 309, 318, 327, 336, 345, 354,
363, 375, 384, 393, 402, 411, 422, 433, 444, 455,
- 465, 475, 486, 497, 508, 519, 530, 541, 552, 563,
- 574, 585, 594, 605, 616, 627, 638, 649, 658, 667,
- 676, 685, 696, 707, 718, 729, 740, 751, 761, 772,
- 781, 791, 805, 821, 830, 839, 848, 857, 879, 901,
- 910, 920, 929, 940, 949, 958, 967, 976, 985, 995,
- 1004, 1015, 1026, 1038, 1047, 1057, 1066, 1075, 1084, 1093,
-
- 1102, 1111, 1120, 1129, 1139, 1150, 1162, 1171, 1180, 1190,
- 1200, 1210, 1220, 1230, 1240, 1249, 1259, 1268, 1277, 1286,
- 1295, 1305, 1315, 1324, 1334, 1343, 1352, 1361, 1370, 1379,
- 1388, 1397, 1406, 1415, 1424, 1433, 1442, 1451, 1460, 1469,
- 1478, 1487, 1496, 1505, 1514, 1523, 1532, 1541, 1550, 1559,
- 1568, 1577, 1586, 1595, 1604, 1613, 1622, 1631, 1640, 1649,
- 1661, 1673, 1683, 1693, 1703, 1713, 1723, 1733, 1743, 1753,
- 1763, 1772, 1781, 1790, 1799, 1808, 1817, 1826, 1837, 1848,
- 1861, 1874, 1887, 1986, 1991, 1996, 2001, 2002, 2003, 2004,
- 2005, 2006, 2008, 2026, 2039, 2044, 2048, 2050, 2052, 2054
+ 466, 477, 488, 499, 510, 521, 532, 543, 554, 565,
+ 576, 587, 596, 607, 618, 629, 640, 651, 660, 669,
+ 678, 687, 698, 709, 720, 731, 742, 753, 763, 774,
+ 783, 793, 807, 823, 832, 841, 850, 859, 881, 903,
+ 912, 922, 931, 942, 951, 960, 969, 978, 987, 997,
+ 1006, 1017, 1028, 1040, 1049, 1059, 1068, 1077, 1086, 1095,
+
+ 1104, 1113, 1122, 1131, 1141, 1152, 1164, 1173, 1182, 1192,
+ 1202, 1212, 1222, 1232, 1242, 1251, 1261, 1270, 1279, 1288,
+ 1297, 1307, 1317, 1326, 1336, 1345, 1354, 1363, 1372, 1381,
+ 1390, 1399, 1408, 1417, 1426, 1435, 1444, 1453, 1462, 1471,
+ 1480, 1489, 1498, 1507, 1516, 1525, 1534, 1543, 1552, 1561,
+ 1570, 1579, 1588, 1597, 1606, 1615, 1624, 1633, 1642, 1651,
+ 1663, 1675, 1685, 1695, 1705, 1715, 1725, 1735, 1745, 1755,
+ 1765, 1774, 1783, 1792, 1801, 1810, 1819, 1828, 1839, 1850,
+ 1863, 1876, 1889, 1988, 1993, 1998, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2010, 2028, 2041, 2046, 2050, 2052, 2054, 2056
} ;
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1968 "dhcp4_lexer.cc"
+#line 1967 "dhcp4_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
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 1993 "dhcp4_lexer.cc"
#line 1994 "dhcp4_lexer.cc"
-#line 1995 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
}
-#line 2325 "dhcp4_lexer.cc"
+#line 2324 "dhcp4_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
return isc::dhcp::Dhcp4Parser::make_PERSIST(driver.loc_);
default:
return isc::dhcp::Dhcp4Parser::make_STRING("persist", driver.loc_);
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 465 "dhcp4_lexer.ll"
+#line 466 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
return isc::dhcp::Dhcp4Parser::make_LFC_INTERVAL(driver.loc_);
default:
return isc::dhcp::Dhcp4Parser::make_STRING("lfc-interval", driver.loc_);
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 475 "dhcp4_lexer.ll"
+#line 477 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 486 "dhcp4_lexer.ll"
+#line 488 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 497 "dhcp4_lexer.ll"
+#line 499 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 508 "dhcp4_lexer.ll"
+#line 510 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 519 "dhcp4_lexer.ll"
+#line 521 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 530 "dhcp4_lexer.ll"
+#line 532 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 541 "dhcp4_lexer.ll"
+#line 543 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 552 "dhcp4_lexer.ll"
+#line 554 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 563 "dhcp4_lexer.ll"
+#line 565 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 574 "dhcp4_lexer.ll"
+#line 576 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 585 "dhcp4_lexer.ll"
+#line 587 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 594 "dhcp4_lexer.ll"
+#line 596 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 605 "dhcp4_lexer.ll"
+#line 607 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 616 "dhcp4_lexer.ll"
+#line 618 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 627 "dhcp4_lexer.ll"
+#line 629 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 638 "dhcp4_lexer.ll"
+#line 640 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 649 "dhcp4_lexer.ll"
+#line 651 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 658 "dhcp4_lexer.ll"
+#line 660 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 667 "dhcp4_lexer.ll"
+#line 669 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 676 "dhcp4_lexer.ll"
+#line 678 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 685 "dhcp4_lexer.ll"
+#line 687 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 696 "dhcp4_lexer.ll"
+#line 698 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 707 "dhcp4_lexer.ll"
+#line 709 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 718 "dhcp4_lexer.ll"
+#line 720 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 729 "dhcp4_lexer.ll"
+#line 731 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 740 "dhcp4_lexer.ll"
+#line 742 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 751 "dhcp4_lexer.ll"
+#line 753 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 761 "dhcp4_lexer.ll"
+#line 763 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 772 "dhcp4_lexer.ll"
+#line 774 "dhcp4_lexer.ll"
{
switch (driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 781 "dhcp4_lexer.ll"
+#line 783 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 791 "dhcp4_lexer.ll"
+#line 793 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 805 "dhcp4_lexer.ll"
+#line 807 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 821 "dhcp4_lexer.ll"
+#line 823 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 830 "dhcp4_lexer.ll"
+#line 832 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 839 "dhcp4_lexer.ll"
+#line 841 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 848 "dhcp4_lexer.ll"
+#line 850 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::POOLS:
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 857 "dhcp4_lexer.ll"
+#line 859 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 879 "dhcp4_lexer.ll"
+#line 881 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 901 "dhcp4_lexer.ll"
+#line 903 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 910 "dhcp4_lexer.ll"
+#line 912 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 920 "dhcp4_lexer.ll"
+#line 922 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 929 "dhcp4_lexer.ll"
+#line 931 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 940 "dhcp4_lexer.ll"
+#line 942 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 949 "dhcp4_lexer.ll"
+#line 951 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 958 "dhcp4_lexer.ll"
+#line 960 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 967 "dhcp4_lexer.ll"
+#line 969 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 976 "dhcp4_lexer.ll"
+#line 978 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 985 "dhcp4_lexer.ll"
+#line 987 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 995 "dhcp4_lexer.ll"
+#line 997 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 1004 "dhcp4_lexer.ll"
+#line 1006 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 1015 "dhcp4_lexer.ll"
+#line 1017 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 1026 "dhcp4_lexer.ll"
+#line 1028 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 1038 "dhcp4_lexer.ll"
+#line 1040 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 1047 "dhcp4_lexer.ll"
+#line 1049 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 1057 "dhcp4_lexer.ll"
+#line 1059 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 1066 "dhcp4_lexer.ll"
+#line 1068 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1075 "dhcp4_lexer.ll"
+#line 1077 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1084 "dhcp4_lexer.ll"
+#line 1086 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 1093 "dhcp4_lexer.ll"
+#line 1095 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 1102 "dhcp4_lexer.ll"
+#line 1104 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 1111 "dhcp4_lexer.ll"
+#line 1113 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 1120 "dhcp4_lexer.ll"
+#line 1122 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 1129 "dhcp4_lexer.ll"
+#line 1131 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 1139 "dhcp4_lexer.ll"
+#line 1141 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 1150 "dhcp4_lexer.ll"
+#line 1152 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 1162 "dhcp4_lexer.ll"
+#line 1164 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 1171 "dhcp4_lexer.ll"
+#line 1173 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 1180 "dhcp4_lexer.ll"
+#line 1182 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 1190 "dhcp4_lexer.ll"
+#line 1192 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 1200 "dhcp4_lexer.ll"
+#line 1202 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 1210 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 1220 "dhcp4_lexer.ll"
+#line 1222 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 1230 "dhcp4_lexer.ll"
+#line 1232 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 1240 "dhcp4_lexer.ll"
+#line 1242 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATIONS:
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 1249 "dhcp4_lexer.ll"
+#line 1251 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 1259 "dhcp4_lexer.ll"
+#line 1261 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 1268 "dhcp4_lexer.ll"
+#line 1270 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 1277 "dhcp4_lexer.ll"
+#line 1279 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 1286 "dhcp4_lexer.ll"
+#line 1288 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 1295 "dhcp4_lexer.ll"
+#line 1297 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 1305 "dhcp4_lexer.ll"
+#line 1307 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 1315 "dhcp4_lexer.ll"
+#line 1317 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 1324 "dhcp4_lexer.ll"
+#line 1326 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 1334 "dhcp4_lexer.ll"
+#line 1336 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 1343 "dhcp4_lexer.ll"
+#line 1345 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 1352 "dhcp4_lexer.ll"
+#line 1354 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 1361 "dhcp4_lexer.ll"
+#line 1363 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 1370 "dhcp4_lexer.ll"
+#line 1372 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 1379 "dhcp4_lexer.ll"
+#line 1381 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 1388 "dhcp4_lexer.ll"
+#line 1390 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 1397 "dhcp4_lexer.ll"
+#line 1399 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 1406 "dhcp4_lexer.ll"
+#line 1408 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 1415 "dhcp4_lexer.ll"
+#line 1417 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 1424 "dhcp4_lexer.ll"
+#line 1426 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 1433 "dhcp4_lexer.ll"
+#line 1435 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 1442 "dhcp4_lexer.ll"
+#line 1444 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 1451 "dhcp4_lexer.ll"
+#line 1453 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 1460 "dhcp4_lexer.ll"
+#line 1462 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 1469 "dhcp4_lexer.ll"
+#line 1471 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 1478 "dhcp4_lexer.ll"
+#line 1480 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 1487 "dhcp4_lexer.ll"
+#line 1489 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 1496 "dhcp4_lexer.ll"
+#line 1498 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 1505 "dhcp4_lexer.ll"
+#line 1507 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 1514 "dhcp4_lexer.ll"
+#line 1516 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 1523 "dhcp4_lexer.ll"
+#line 1525 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 1532 "dhcp4_lexer.ll"
+#line 1534 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 1541 "dhcp4_lexer.ll"
+#line 1543 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 149:
YY_RULE_SETUP
-#line 1550 "dhcp4_lexer.ll"
+#line 1552 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 1559 "dhcp4_lexer.ll"
+#line 1561 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 151:
YY_RULE_SETUP
-#line 1568 "dhcp4_lexer.ll"
+#line 1570 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 1577 "dhcp4_lexer.ll"
+#line 1579 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 1586 "dhcp4_lexer.ll"
+#line 1588 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 1595 "dhcp4_lexer.ll"
+#line 1597 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 1604 "dhcp4_lexer.ll"
+#line 1606 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 1613 "dhcp4_lexer.ll"
+#line 1615 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 157:
YY_RULE_SETUP
-#line 1622 "dhcp4_lexer.ll"
+#line 1624 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 1631 "dhcp4_lexer.ll"
+#line 1633 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 1640 "dhcp4_lexer.ll"
+#line 1642 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 160:
YY_RULE_SETUP
-#line 1649 "dhcp4_lexer.ll"
+#line 1651 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 161:
YY_RULE_SETUP
-#line 1661 "dhcp4_lexer.ll"
+#line 1663 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 162:
YY_RULE_SETUP
-#line 1673 "dhcp4_lexer.ll"
+#line 1675 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
YY_BREAK
case 163:
YY_RULE_SETUP
-#line 1683 "dhcp4_lexer.ll"
+#line 1685 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
YY_BREAK
case 164:
YY_RULE_SETUP
-#line 1693 "dhcp4_lexer.ll"
+#line 1695 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
YY_BREAK
case 165:
YY_RULE_SETUP
-#line 1703 "dhcp4_lexer.ll"
+#line 1705 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 166:
YY_RULE_SETUP
-#line 1713 "dhcp4_lexer.ll"
+#line 1715 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 167:
YY_RULE_SETUP
-#line 1723 "dhcp4_lexer.ll"
+#line 1725 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 168:
YY_RULE_SETUP
-#line 1733 "dhcp4_lexer.ll"
+#line 1735 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 169:
YY_RULE_SETUP
-#line 1743 "dhcp4_lexer.ll"
+#line 1745 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 170:
YY_RULE_SETUP
-#line 1753 "dhcp4_lexer.ll"
+#line 1755 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 171:
YY_RULE_SETUP
-#line 1763 "dhcp4_lexer.ll"
+#line 1765 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 172:
YY_RULE_SETUP
-#line 1772 "dhcp4_lexer.ll"
+#line 1774 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 173:
YY_RULE_SETUP
-#line 1781 "dhcp4_lexer.ll"
+#line 1783 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 174:
YY_RULE_SETUP
-#line 1790 "dhcp4_lexer.ll"
+#line 1792 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 175:
YY_RULE_SETUP
-#line 1799 "dhcp4_lexer.ll"
+#line 1801 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 176:
YY_RULE_SETUP
-#line 1808 "dhcp4_lexer.ll"
+#line 1810 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 177:
YY_RULE_SETUP
-#line 1817 "dhcp4_lexer.ll"
+#line 1819 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 178:
YY_RULE_SETUP
-#line 1826 "dhcp4_lexer.ll"
+#line 1828 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 179:
YY_RULE_SETUP
-#line 1837 "dhcp4_lexer.ll"
+#line 1839 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 180:
YY_RULE_SETUP
-#line 1848 "dhcp4_lexer.ll"
+#line 1850 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 181:
YY_RULE_SETUP
-#line 1861 "dhcp4_lexer.ll"
+#line 1863 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 182:
YY_RULE_SETUP
-#line 1874 "dhcp4_lexer.ll"
+#line 1876 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 183:
YY_RULE_SETUP
-#line 1887 "dhcp4_lexer.ll"
+#line 1889 "dhcp4_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.
case 184:
/* rule 184 can match eol */
YY_RULE_SETUP
-#line 1986 "dhcp4_lexer.ll"
+#line 1988 "dhcp4_lexer.ll"
{
/* Bad string with a forbidden control character inside */
driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
case 185:
/* rule 185 can match eol */
YY_RULE_SETUP
-#line 1991 "dhcp4_lexer.ll"
+#line 1993 "dhcp4_lexer.ll"
{
/* Bad string with a bad escape inside */
driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
YY_BREAK
case 186:
YY_RULE_SETUP
-#line 1996 "dhcp4_lexer.ll"
+#line 1998 "dhcp4_lexer.ll"
{
/* Bad string with an open escape at the end */
driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
YY_BREAK
case 187:
YY_RULE_SETUP
-#line 2001 "dhcp4_lexer.ll"
+#line 2003 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 188:
YY_RULE_SETUP
-#line 2002 "dhcp4_lexer.ll"
+#line 2004 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 189:
YY_RULE_SETUP
-#line 2003 "dhcp4_lexer.ll"
+#line 2005 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 190:
YY_RULE_SETUP
-#line 2004 "dhcp4_lexer.ll"
+#line 2006 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 191:
YY_RULE_SETUP
-#line 2005 "dhcp4_lexer.ll"
+#line 2007 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 192:
YY_RULE_SETUP
-#line 2006 "dhcp4_lexer.ll"
+#line 2008 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
YY_BREAK
case 193:
YY_RULE_SETUP
-#line 2008 "dhcp4_lexer.ll"
+#line 2010 "dhcp4_lexer.ll"
{
/* An integer was found. */
std::string tmp(yytext);
YY_BREAK
case 194:
YY_RULE_SETUP
-#line 2026 "dhcp4_lexer.ll"
+#line 2028 "dhcp4_lexer.ll"
{
/* A floating point was found. */
std::string tmp(yytext);
YY_BREAK
case 195:
YY_RULE_SETUP
-#line 2039 "dhcp4_lexer.ll"
+#line 2041 "dhcp4_lexer.ll"
{
string tmp(yytext);
return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
YY_BREAK
case 196:
YY_RULE_SETUP
-#line 2044 "dhcp4_lexer.ll"
+#line 2046 "dhcp4_lexer.ll"
{
return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 197:
YY_RULE_SETUP
-#line 2048 "dhcp4_lexer.ll"
+#line 2050 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 198:
YY_RULE_SETUP
-#line 2050 "dhcp4_lexer.ll"
+#line 2052 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 199:
YY_RULE_SETUP
-#line 2052 "dhcp4_lexer.ll"
+#line 2054 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 200:
YY_RULE_SETUP
-#line 2054 "dhcp4_lexer.ll"
+#line 2056 "dhcp4_lexer.ll"
driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 2056 "dhcp4_lexer.ll"
+#line 2058 "dhcp4_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
YY_BREAK
case 201:
YY_RULE_SETUP
-#line 2079 "dhcp4_lexer.ll"
+#line 2081 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 4956 "dhcp4_lexer.cc"
+#line 4957 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 2079 "dhcp4_lexer.ll"
+#line 2081 "dhcp4_lexer.ll"
using namespace isc::dhcp;
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details. Do not rely on them.
+
+
// Take the name prefix into account.
#define yylex parser4_lex
-// First part of user declarations.
-#line 39 "dhcp4_parser.cc" // lalr1.cc:404
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
#include "dhcp4_parser.h"
-// User implementation prologue.
-#line 53 "dhcp4_parser.cc" // lalr1.cc:412
// Unqualified %code blocks.
-#line 34 "dhcp4_parser.yy" // lalr1.cc:413
+#line 34 "dhcp4_parser.yy"
#include <dhcp4/parser_context.h>
-#line 59 "dhcp4_parser.cc" // lalr1.cc:413
+#line 51 "dhcp4_parser.cc"
#ifndef YY_
# endif
#endif
+// Whether we are compiled with exception support.
+#ifndef YY_EXCEPTIONS
+# if defined __GNUC__ && !defined __EXCEPTIONS
+# define YY_EXCEPTIONS 0
+# else
+# define YY_EXCEPTIONS 1
+# endif
+#endif
+
#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
- while (/*CONSTCOND*/ false)
+ while (false)
# endif
-// Suppress unused-variable warnings by "using" E.
-#define YYUSE(E) ((void) (E))
-
// Enable debugging if requested.
#if PARSER4_DEBUG
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << std::endl; \
+ *yycdebug_ << '\n'; \
} \
} while (false)
#else // !PARSER4_DEBUG
# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
-# define YY_STACK_PRINT() static_cast<void>(0)
+# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
+# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
+# define YY_STACK_PRINT() static_cast<void> (0)
#endif // !PARSER4_DEBUG
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "dhcp4_parser.yy" // lalr1.cc:479
+#line 14 "dhcp4_parser.yy"
namespace isc { namespace dhcp {
-#line 145 "dhcp4_parser.cc" // lalr1.cc:479
+#line 143 "dhcp4_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
{
if (*yystr == '"')
{
- std::string yyr = "";
+ std::string yyr;
char const *yyp = yystr;
for (;;)
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- // Fall through.
+ else
+ goto append;
+
+ append:
default:
yyr += *yyp;
break;
/// Build a parser object.
Dhcp4Parser::Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg)
- :
#if PARSER4_DEBUG
- yydebug_ (false),
+ : yydebug_ (false),
yycdebug_ (&std::cerr),
+#else
+ :
#endif
ctx (ctx_yyarg)
{}
Dhcp4Parser::~Dhcp4Parser ()
{}
+ Dhcp4Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+ {}
/*---------------.
| Symbol types. |
// by_state.
- inline
- Dhcp4Parser::by_state::by_state ()
+ Dhcp4Parser::by_state::by_state () YY_NOEXCEPT
: state (empty_state)
{}
- inline
- Dhcp4Parser::by_state::by_state (const by_state& other)
- : state (other.state)
+ Dhcp4Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+ : state (that.state)
{}
- inline
void
- Dhcp4Parser::by_state::clear ()
+ Dhcp4Parser::by_state::clear () YY_NOEXCEPT
{
state = empty_state;
}
- inline
void
Dhcp4Parser::by_state::move (by_state& that)
{
that.clear ();
}
- inline
- Dhcp4Parser::by_state::by_state (state_type s)
+ Dhcp4Parser::by_state::by_state (state_type s) YY_NOEXCEPT
: state (s)
{}
- inline
Dhcp4Parser::symbol_number_type
- Dhcp4Parser::by_state::type_get () const
+ Dhcp4Parser::by_state::type_get () const YY_NOEXCEPT
{
if (state == empty_state)
return empty_symbol;
else
- return yystos_[state];
+ return yystos_[+state];
}
- inline
Dhcp4Parser::stack_symbol_type::stack_symbol_type ()
{}
+ Dhcp4Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
+ : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
+ {
+ switch (that.type_get ())
+ {
+ case 211: // value
+ case 215: // map_value
+ case 256: // ddns_replace_client_name_value
+ case 278: // socket_type
+ case 281: // outbound_interface_value
+ case 303: // db_type
+ case 397: // hr_mode
+ case 552: // ncr_protocol_value
+ value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
+ break;
+
+ case 194: // "boolean"
+ value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
+ break;
+
+ case 193: // "floating point"
+ value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
+ break;
+
+ case 192: // "integer"
+ value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
+ break;
+
+ case 191: // "constant string"
+ value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
- : super_type (s, that.location)
+ default:
+ break;
+ }
+
+#if 201103L <= YY_CPLUSPLUS
+ // that is emptied.
+ that.state = empty_state;
+#endif
+ }
+
+ Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
+ : super_type (s, YY_MOVE (that.location))
{
- switch (that.type_get ())
+ switch (that.type_get ())
{
case 211: // value
case 215: // map_value
case 303: // db_type
case 397: // hr_mode
case 552: // ncr_protocol_value
- value.move< ElementPtr > (that.value);
+ value.move< ElementPtr > (YY_MOVE (that.value));
break;
case 194: // "boolean"
- value.move< bool > (that.value);
+ value.move< bool > (YY_MOVE (that.value));
break;
case 193: // "floating point"
- value.move< double > (that.value);
+ value.move< double > (YY_MOVE (that.value));
break;
case 192: // "integer"
- value.move< int64_t > (that.value);
+ value.move< int64_t > (YY_MOVE (that.value));
break;
case 191: // "constant string"
- value.move< std::string > (that.value);
+ value.move< std::string > (YY_MOVE (that.value));
break;
default:
that.type = empty_symbol;
}
- inline
+#if YY_CPLUSPLUS < 201103L
Dhcp4Parser::stack_symbol_type&
Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
{
state = that.state;
- switch (that.type_get ())
+ switch (that.type_get ())
{
case 211: // value
case 215: // map_value
return *this;
}
+ Dhcp4Parser::stack_symbol_type&
+ Dhcp4Parser::stack_symbol_type::operator= (stack_symbol_type& that)
+ {
+ state = that.state;
+ switch (that.type_get ())
+ {
+ case 211: // value
+ case 215: // map_value
+ case 256: // ddns_replace_client_name_value
+ case 278: // socket_type
+ case 281: // outbound_interface_value
+ case 303: // db_type
+ case 397: // hr_mode
+ case 552: // ncr_protocol_value
+ value.move< ElementPtr > (that.value);
+ break;
+
+ case 194: // "boolean"
+ value.move< bool > (that.value);
+ break;
+
+ case 193: // "floating point"
+ value.move< double > (that.value);
+ break;
+
+ case 192: // "integer"
+ value.move< int64_t > (that.value);
+ break;
+
+ case 191: // "constant string"
+ value.move< std::string > (that.value);
+ break;
+
+ default:
+ break;
+ }
+
+ location = that.location;
+ // that is emptied.
+ that.state = empty_state;
+ return *this;
+ }
+#endif
template <typename Base>
- inline
void
Dhcp4Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
+#endif
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
switch (yytype)
{
- case 191: // "constant string"
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< std::string > (); }
-#line 366 "dhcp4_parser.cc" // lalr1.cc:636
+ case 191: // "constant string"
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < std::string > (); }
+#line 447 "dhcp4_parser.cc"
break;
case 192: // "integer"
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< int64_t > (); }
-#line 373 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < int64_t > (); }
+#line 453 "dhcp4_parser.cc"
break;
case 193: // "floating point"
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< double > (); }
-#line 380 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < double > (); }
+#line 459 "dhcp4_parser.cc"
break;
case 194: // "boolean"
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< bool > (); }
-#line 387 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < bool > (); }
+#line 465 "dhcp4_parser.cc"
break;
case 211: // value
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 394 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 471 "dhcp4_parser.cc"
break;
case 215: // map_value
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 401 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 477 "dhcp4_parser.cc"
break;
case 256: // ddns_replace_client_name_value
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 408 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 483 "dhcp4_parser.cc"
break;
case 278: // socket_type
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 415 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 489 "dhcp4_parser.cc"
break;
case 281: // outbound_interface_value
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 422 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 495 "dhcp4_parser.cc"
break;
case 303: // db_type
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 429 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 501 "dhcp4_parser.cc"
break;
case 397: // hr_mode
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 436 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 507 "dhcp4_parser.cc"
break;
case 552: // ncr_protocol_value
-
-#line 274 "dhcp4_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 443 "dhcp4_parser.cc" // lalr1.cc:636
+#line 274 "dhcp4_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 513 "dhcp4_parser.cc"
break;
-
default:
break;
}
}
#endif
- inline
void
- Dhcp4Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
+ Dhcp4Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
{
- stack_symbol_type t (s, sym);
- yypush_ (m, t);
+ if (m)
+ YY_SYMBOL_PRINT (m, sym);
+ yystack_.push (YY_MOVE (sym));
}
- inline
void
- Dhcp4Parser::yypush_ (const char* m, stack_symbol_type& s)
+ Dhcp4Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
{
- if (m)
- YY_SYMBOL_PRINT (m, s);
- yystack_.push (s);
+#if 201103L <= YY_CPLUSPLUS
+ yypush_ (m, stack_symbol_type (s, std::move (sym)));
+#else
+ stack_symbol_type ss (s, sym);
+ yypush_ (m, ss);
+#endif
}
- inline
void
- Dhcp4Parser::yypop_ (unsigned int n)
+ Dhcp4Parser::yypop_ (int n)
{
yystack_.pop (n);
}
}
#endif // PARSER4_DEBUG
- inline Dhcp4Parser::state_type
+ Dhcp4Parser::state_type
Dhcp4Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
return yydefgoto_[yysym - yyntokens_];
}
- inline bool
+ bool
Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
- inline bool
+ bool
Dhcp4Parser::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
}
+ int
+ Dhcp4Parser::operator() ()
+ {
+ return parse ();
+ }
+
int
Dhcp4Parser::parse ()
{
- // State.
int yyn;
/// Length of the RHS of the rule being reduced.
int yylen = 0;
/// The return value of parse ().
int yyresult;
- // FIXME: This shoud be completely indented. It is not yet to
- // avoid gratuitous conflicts when merging into the master branch.
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
- YYCDEBUG << "Starting parse" << std::endl;
+ YYCDEBUG << "Starting parse\n";
/* Initialize the stack. The initial state will be set in
location values to have been already stored, initialize these
stacks with a primary value. */
yystack_.clear ();
- yypush_ (YY_NULLPTR, 0, yyla);
+ yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
- // A new symbol was pushed on the stack.
+ /*-----------------------------------------------.
+ | yynewstate -- push a new symbol on the stack. |
+ `-----------------------------------------------*/
yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
+ YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
+ YYACCEPT;
goto yybackup;
- // Backup.
- yybackup:
+ /*-----------.
+ | yybackup. |
+ `-----------*/
+ yybackup:
// Try to take a decision without lookahead.
- yyn = yypact_[yystack_[0].state];
+ yyn = yypact_[+yystack_[0].state];
if (yy_pact_value_is_default_ (yyn))
goto yydefault;
if (yyla.empty ())
{
YYCDEBUG << "Reading a token: ";
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
symbol_type yylookahead (yylex (ctx));
yyla.move (yylookahead);
}
+#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
goto yyerrlab1;
}
+#endif // YY_EXCEPTIONS
}
YY_SYMBOL_PRINT ("Next token is", yyla);
to detect an error, take that action. */
yyn += yyla.type_get ();
if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
- goto yydefault;
+ {
+ goto yydefault;
+ }
// Reduce or error.
yyn = yytable_[yyn];
--yyerrstatus_;
// Shift the lookahead token.
- yypush_ ("Shifting", yyn, yyla);
+ yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
goto yynewstate;
+
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
yydefault:
- yyn = yydefact_[yystack_[0].state];
+ yyn = yydefact_[+yystack_[0].state];
if (yyn == 0)
goto yyerrlab;
goto yyreduce;
+
/*-----------------------------.
- | yyreduce -- Do a reduction. |
+ | yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
- yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
+ yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
- switch (yyr1_[yyn])
+ switch (yyr1_[yyn])
{
case 211: // value
case 215: // map_value
case 303: // db_type
case 397: // hr_mode
case 552: // ncr_protocol_value
- yylhs.value.build< ElementPtr > ();
+ yylhs.value.emplace< ElementPtr > ();
break;
case 194: // "boolean"
- yylhs.value.build< bool > ();
+ yylhs.value.emplace< bool > ();
break;
case 193: // "floating point"
- yylhs.value.build< double > ();
+ yylhs.value.emplace< double > ();
break;
case 192: // "integer"
- yylhs.value.build< int64_t > ();
+ yylhs.value.emplace< int64_t > ();
break;
case 191: // "constant string"
- yylhs.value.build< std::string > ();
+ yylhs.value.emplace< std::string > ();
break;
default:
}
- // Compute the default @$.
+ // Default location.
{
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ stack_type::slice range (yystack_, yylen);
+ YYLLOC_DEFAULT (yylhs.location, range, yylen);
+ yyerror_range[1].location = yylhs.location;
}
// Perform the reduction.
YY_REDUCE_PRINT (yyn);
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
switch (yyn)
{
case 2:
-#line 283 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 690 "dhcp4_parser.cc" // lalr1.cc:859
+#line 283 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.NO_KEYWORD; }
+#line 781 "dhcp4_parser.cc"
break;
case 4:
-#line 284 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.CONFIG; }
-#line 696 "dhcp4_parser.cc" // lalr1.cc:859
+#line 284 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.CONFIG; }
+#line 787 "dhcp4_parser.cc"
break;
case 6:
-#line 285 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.DHCP4; }
-#line 702 "dhcp4_parser.cc" // lalr1.cc:859
+#line 285 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.DHCP4; }
+#line 793 "dhcp4_parser.cc"
break;
case 8:
-#line 286 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 708 "dhcp4_parser.cc" // lalr1.cc:859
+#line 286 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
+#line 799 "dhcp4_parser.cc"
break;
case 10:
-#line 287 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.SUBNET4; }
-#line 714 "dhcp4_parser.cc" // lalr1.cc:859
+#line 287 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.SUBNET4; }
+#line 805 "dhcp4_parser.cc"
break;
case 12:
-#line 288 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.POOLS; }
-#line 720 "dhcp4_parser.cc" // lalr1.cc:859
+#line 288 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.POOLS; }
+#line 811 "dhcp4_parser.cc"
break;
case 14:
-#line 289 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 726 "dhcp4_parser.cc" // lalr1.cc:859
+#line 289 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.RESERVATIONS; }
+#line 817 "dhcp4_parser.cc"
break;
case 16:
-#line 290 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.DHCP4; }
-#line 732 "dhcp4_parser.cc" // lalr1.cc:859
+#line 290 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.DHCP4; }
+#line 823 "dhcp4_parser.cc"
break;
case 18:
-#line 291 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 738 "dhcp4_parser.cc" // lalr1.cc:859
+#line 291 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.OPTION_DEF; }
+#line 829 "dhcp4_parser.cc"
break;
case 20:
-#line 292 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 744 "dhcp4_parser.cc" // lalr1.cc:859
+#line 292 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.OPTION_DATA; }
+#line 835 "dhcp4_parser.cc"
break;
case 22:
-#line 293 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 750 "dhcp4_parser.cc" // lalr1.cc:859
+#line 293 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
+#line 841 "dhcp4_parser.cc"
break;
case 24:
-#line 294 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 756 "dhcp4_parser.cc" // lalr1.cc:859
+#line 294 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.DHCP_DDNS; }
+#line 847 "dhcp4_parser.cc"
break;
case 26:
-#line 295 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.LOGGING; }
-#line 762 "dhcp4_parser.cc" // lalr1.cc:859
+#line 295 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.LOGGING; }
+#line 853 "dhcp4_parser.cc"
break;
case 28:
-#line 296 "dhcp4_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 768 "dhcp4_parser.cc" // lalr1.cc:859
+#line 296 "dhcp4_parser.yy"
+ { ctx.ctx_ = ctx.CONFIG_CONTROL; }
+#line 859 "dhcp4_parser.cc"
break;
case 30:
-#line 304 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 774 "dhcp4_parser.cc" // lalr1.cc:859
+#line 304 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 865 "dhcp4_parser.cc"
break;
case 31:
-#line 305 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 780 "dhcp4_parser.cc" // lalr1.cc:859
+#line 305 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 871 "dhcp4_parser.cc"
break;
case 32:
-#line 306 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 786 "dhcp4_parser.cc" // lalr1.cc:859
+#line 306 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 877 "dhcp4_parser.cc"
break;
case 33:
-#line 307 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 792 "dhcp4_parser.cc" // lalr1.cc:859
+#line 307 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 883 "dhcp4_parser.cc"
break;
case 34:
-#line 308 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 798 "dhcp4_parser.cc" // lalr1.cc:859
+#line 308 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 889 "dhcp4_parser.cc"
break;
case 35:
-#line 309 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 804 "dhcp4_parser.cc" // lalr1.cc:859
+#line 309 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 895 "dhcp4_parser.cc"
break;
case 36:
-#line 310 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 810 "dhcp4_parser.cc" // lalr1.cc:859
+#line 310 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 901 "dhcp4_parser.cc"
break;
case 37:
-#line 313 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 313 "dhcp4_parser.yy"
+ {
// Push back the JSON value on the stack
- ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 819 "dhcp4_parser.cc" // lalr1.cc:859
+#line 910 "dhcp4_parser.cc"
break;
case 38:
-#line 318 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 318 "dhcp4_parser.yy"
+ {
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 830 "dhcp4_parser.cc" // lalr1.cc:859
+#line 921 "dhcp4_parser.cc"
break;
case 39:
-#line 323 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 323 "dhcp4_parser.yy"
+ {
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 840 "dhcp4_parser.cc" // lalr1.cc:859
+#line 931 "dhcp4_parser.cc"
break;
case 40:
-#line 329 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 846 "dhcp4_parser.cc" // lalr1.cc:859
+#line 329 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 937 "dhcp4_parser.cc"
break;
case 43:
-#line 336 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 336 "dhcp4_parser.yy"
+ {
// map containing a single entry
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 855 "dhcp4_parser.cc" // lalr1.cc:859
+#line 946 "dhcp4_parser.cc"
break;
case 44:
-#line 340 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 340 "dhcp4_parser.yy"
+ {
// map consisting of a shorter map followed by
// comma and string:value
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 865 "dhcp4_parser.cc" // lalr1.cc:859
+#line 956 "dhcp4_parser.cc"
break;
case 45:
-#line 347 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 347 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 874 "dhcp4_parser.cc" // lalr1.cc:859
+#line 965 "dhcp4_parser.cc"
break;
case 46:
-#line 350 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 350 "dhcp4_parser.yy"
+ {
// list parsing complete. Put any sanity checking here
}
-#line 882 "dhcp4_parser.cc" // lalr1.cc:859
+#line 973 "dhcp4_parser.cc"
break;
case 49:
-#line 358 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 358 "dhcp4_parser.yy"
+ {
// List consisting of a single element.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 891 "dhcp4_parser.cc" // lalr1.cc:859
+#line 982 "dhcp4_parser.cc"
break;
case 50:
-#line 362 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 362 "dhcp4_parser.yy"
+ {
// List ending with , and a value.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 900 "dhcp4_parser.cc" // lalr1.cc:859
+#line 991 "dhcp4_parser.cc"
break;
case 51:
-#line 369 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 369 "dhcp4_parser.yy"
+ {
// List parsing about to start
}
-#line 908 "dhcp4_parser.cc" // lalr1.cc:859
+#line 999 "dhcp4_parser.cc"
break;
case 52:
-#line 371 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 371 "dhcp4_parser.yy"
+ {
// list parsing complete. Put any sanity checking here
//ctx.stack_.pop_back();
}
-#line 917 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1008 "dhcp4_parser.cc"
break;
case 55:
-#line 380 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 380 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 926 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1017 "dhcp4_parser.cc"
break;
case 56:
-#line 384 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 384 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 935 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1026 "dhcp4_parser.cc"
break;
case 57:
-#line 395 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 395 "dhcp4_parser.yy"
+ {
const std::string& where = ctx.contextName();
- const std::string& keyword = yystack_[1].value.as< std::string > ();
+ const std::string& keyword = yystack_[1].value.as < std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 946 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1037 "dhcp4_parser.cc"
break;
case 58:
-#line 405 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 405 "dhcp4_parser.yy"
+ {
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 957 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1048 "dhcp4_parser.cc"
break;
case 59:
-#line 410 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 410 "dhcp4_parser.yy"
+ {
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
// Dhcp4 is required
ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 970 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1061 "dhcp4_parser.cc"
break;
case 68:
-#line 434 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 434 "dhcp4_parser.yy"
+ {
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP4);
}
-#line 983 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1074 "dhcp4_parser.cc"
break;
case 69:
-#line 441 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 441 "dhcp4_parser.yy"
+ {
// No global parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 993 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1084 "dhcp4_parser.cc"
break;
case 70:
-#line 449 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 449 "dhcp4_parser.yy"
+ {
// Parse the Dhcp4 map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1094 "dhcp4_parser.cc"
break;
case 71:
-#line 453 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 453 "dhcp4_parser.yy"
+ {
// No global parameter is required
// parsing completed
}
-#line 1012 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1103 "dhcp4_parser.cc"
break;
case 126:
-#line 518 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 518 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("valid-lifetime", prf);
}
-#line 1021 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1112 "dhcp4_parser.cc"
break;
case 127:
-#line 523 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 523 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("min-valid-lifetime", prf);
}
-#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1121 "dhcp4_parser.cc"
break;
case 128:
-#line 528 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 528 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-valid-lifetime", prf);
}
-#line 1039 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1130 "dhcp4_parser.cc"
break;
case 129:
-#line 533 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 533 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("renew-timer", prf);
}
-#line 1048 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1139 "dhcp4_parser.cc"
break;
case 130:
-#line 538 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 538 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rebind-timer", prf);
}
-#line 1057 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1148 "dhcp4_parser.cc"
break;
case 131:
-#line 543 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 543 "dhcp4_parser.yy"
+ {
+ ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("calculate-tee-times", ctt);
}
-#line 1066 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1157 "dhcp4_parser.cc"
break;
case 132:
-#line 548 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+#line 548 "dhcp4_parser.yy"
+ {
+ ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t1-percent", t1);
}
-#line 1075 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1166 "dhcp4_parser.cc"
break;
case 133:
-#line 553 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+#line 553 "dhcp4_parser.yy"
+ {
+ ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t2-percent", t2);
}
-#line 1084 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1175 "dhcp4_parser.cc"
break;
case 134:
-#line 558 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 558 "dhcp4_parser.yy"
+ {
+ ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("decline-probation-period", dpp);
}
-#line 1093 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1184 "dhcp4_parser.cc"
break;
case 135:
-#line 563 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 563 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1101 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1192 "dhcp4_parser.cc"
break;
case 136:
-#line 565 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 565 "dhcp4_parser.yy"
+ {
+ ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-tag", stag);
ctx.leave();
}
-#line 1111 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1202 "dhcp4_parser.cc"
break;
case 137:
-#line 571 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 571 "dhcp4_parser.yy"
+ {
+ ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("echo-client-id", echo);
}
-#line 1120 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1211 "dhcp4_parser.cc"
break;
case 138:
-#line 576 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 576 "dhcp4_parser.yy"
+ {
+ ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("match-client-id", match);
}
-#line 1129 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1220 "dhcp4_parser.cc"
break;
case 139:
-#line 581 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 581 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("authoritative", prf);
}
-#line 1138 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1229 "dhcp4_parser.cc"
break;
case 140:
-#line 586 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 586 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-send-updates", b);
}
-#line 1147 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1238 "dhcp4_parser.cc"
break;
case 141:
-#line 591 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 591 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-override-no-update", b);
}
-#line 1156 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1247 "dhcp4_parser.cc"
break;
case 142:
-#line 596 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 596 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-override-client-update", b);
}
-#line 1165 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1256 "dhcp4_parser.cc"
break;
case 143:
-#line 601 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 601 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 1173 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1264 "dhcp4_parser.cc"
break;
case 144:
-#line 603 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as< ElementPtr > ());
+#line 603 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1182 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1273 "dhcp4_parser.cc"
break;
case 145:
-#line 609 "dhcp4_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+#line 609 "dhcp4_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 1190 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1281 "dhcp4_parser.cc"
break;
case 146:
-#line 612 "dhcp4_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+#line 612 "dhcp4_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 1198 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1289 "dhcp4_parser.cc"
break;
case 147:
-#line 615 "dhcp4_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+#line 615 "dhcp4_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 1206 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1297 "dhcp4_parser.cc"
break;
case 148:
-#line 618 "dhcp4_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+#line 618 "dhcp4_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 1214 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1305 "dhcp4_parser.cc"
break;
case 149:
-#line 621 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 621 "dhcp4_parser.yy"
+ {
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 1223 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1314 "dhcp4_parser.cc"
break;
case 150:
-#line 627 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 627 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1231 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1322 "dhcp4_parser.cc"
break;
case 151:
-#line 629 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 629 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-generated-prefix", s);
ctx.leave();
}
-#line 1241 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1332 "dhcp4_parser.cc"
break;
case 152:
-#line 635 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 635 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1340 "dhcp4_parser.cc"
break;
case 153:
-#line 637 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 637 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-qualifying-suffix", s);
ctx.leave();
}
-#line 1259 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1350 "dhcp4_parser.cc"
break;
case 154:
-#line 643 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 643 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1267 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1358 "dhcp4_parser.cc"
break;
case 155:
-#line 645 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 645 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 1277 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1368 "dhcp4_parser.cc"
break;
case 156:
-#line 651 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 651 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1285 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1376 "dhcp4_parser.cc"
break;
case 157:
-#line 653 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 653 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 1295 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1386 "dhcp4_parser.cc"
break;
case 158:
-#line 659 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 659 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("store-extended-info", b);
}
-#line 1304 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1395 "dhcp4_parser.cc"
break;
case 159:
-#line 664 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr count(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 664 "dhcp4_parser.yy"
+ {
+ ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-count", count);
}
-#line 1313 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1404 "dhcp4_parser.cc"
break;
case 160:
-#line 669 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr age(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 669 "dhcp4_parser.yy"
+ {
+ ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-age", age);
}
-#line 1322 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1413 "dhcp4_parser.cc"
break;
case 161:
-#line 674 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 674 "dhcp4_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces-config", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.INTERFACES_CONFIG);
}
-#line 1333 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1424 "dhcp4_parser.cc"
break;
case 162:
-#line 679 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 679 "dhcp4_parser.yy"
+ {
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1343 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1434 "dhcp4_parser.cc"
break;
case 172:
-#line 698 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 698 "dhcp4_parser.yy"
+ {
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1353 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1444 "dhcp4_parser.cc"
break;
case 173:
-#line 702 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 702 "dhcp4_parser.yy"
+ {
// No interfaces config param is required
// parsing completed
}
-#line 1362 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1453 "dhcp4_parser.cc"
break;
case 174:
-#line 707 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 707 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1373 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1464 "dhcp4_parser.cc"
break;
case 175:
-#line 712 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 712 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1382 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1473 "dhcp4_parser.cc"
break;
case 176:
-#line 717 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 717 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.DHCP_SOCKET_TYPE);
}
-#line 1390 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1481 "dhcp4_parser.cc"
break;
case 177:
-#line 719 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
+#line 719 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1399 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1490 "dhcp4_parser.cc"
break;
case 178:
-#line 724 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1405 "dhcp4_parser.cc" // lalr1.cc:859
+#line 724 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
+#line 1496 "dhcp4_parser.cc"
break;
case 179:
-#line 725 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1411 "dhcp4_parser.cc" // lalr1.cc:859
+#line 725 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
+#line 1502 "dhcp4_parser.cc"
break;
case 180:
-#line 728 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 728 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.OUTBOUND_INTERFACE);
}
-#line 1419 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1510 "dhcp4_parser.cc"
break;
case 181:
-#line 730 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
+#line 730 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1428 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1519 "dhcp4_parser.cc"
break;
case 182:
-#line 735 "dhcp4_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
+#line 735 "dhcp4_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
}
-#line 1436 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1527 "dhcp4_parser.cc"
break;
case 183:
-#line 737 "dhcp4_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
+#line 737 "dhcp4_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
}
-#line 1444 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1535 "dhcp4_parser.cc"
break;
case 184:
-#line 741 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 741 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1453 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1544 "dhcp4_parser.cc"
break;
case 185:
-#line 747 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 747 "dhcp4_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.LEASE_DATABASE);
}
-#line 1464 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1555 "dhcp4_parser.cc"
break;
case 186:
-#line 752 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 752 "dhcp4_parser.yy"
+ {
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1475 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1566 "dhcp4_parser.cc"
break;
case 187:
-#line 759 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 759 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sanity-checks", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SANITY_CHECKS);
}
-#line 1486 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1577 "dhcp4_parser.cc"
break;
case 188:
-#line 764 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 764 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1495 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1586 "dhcp4_parser.cc"
break;
case 192:
-#line 774 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 774 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1503 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1594 "dhcp4_parser.cc"
break;
case 193:
-#line 776 "dhcp4_parser.yy" // lalr1.cc:859
- {
-
- if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
- (string(yystack_[0].value.as< std::string > ()) == "warn") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
- (string(yystack_[0].value.as< std::string > ()) == "del")) {
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 776 "dhcp4_parser.yy"
+ {
+
+ if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
+ (string(yystack_[0].value.as < std::string > ()) == "warn") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
+ (string(yystack_[0].value.as < std::string > ()) == "del")) {
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-checks", user);
ctx.leave();
} else {
- error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
+ error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 1523 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1614 "dhcp4_parser.cc"
break;
case 194:
-#line 792 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 792 "dhcp4_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1534 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1625 "dhcp4_parser.cc"
break;
case 195:
-#line 797 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 797 "dhcp4_parser.yy"
+ {
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1545 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1636 "dhcp4_parser.cc"
break;
case 196:
-#line 804 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 804 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1556 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1647 "dhcp4_parser.cc"
break;
case 197:
-#line 809 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 809 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1565 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1656 "dhcp4_parser.cc"
break;
case 202:
-#line 822 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 822 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1575 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1666 "dhcp4_parser.cc"
break;
case 203:
-#line 826 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 826 "dhcp4_parser.yy"
+ {
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1585 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1676 "dhcp4_parser.cc"
break;
case 227:
-#line 859 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 859 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 1593 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1684 "dhcp4_parser.cc"
break;
case 228:
-#line 861 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+#line 861 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1602 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1693 "dhcp4_parser.cc"
break;
case 229:
-#line 866 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1608 "dhcp4_parser.cc" // lalr1.cc:859
+#line 866 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1699 "dhcp4_parser.cc"
break;
case 230:
-#line 867 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1614 "dhcp4_parser.cc" // lalr1.cc:859
+#line 867 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1705 "dhcp4_parser.cc"
break;
case 231:
-#line 868 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1620 "dhcp4_parser.cc" // lalr1.cc:859
+#line 868 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1711 "dhcp4_parser.cc"
break;
case 232:
-#line 869 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1626 "dhcp4_parser.cc" // lalr1.cc:859
+#line 869 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1717 "dhcp4_parser.cc"
break;
case 233:
-#line 872 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 872 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1634 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1725 "dhcp4_parser.cc"
break;
case 234:
-#line 874 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 874 "dhcp4_parser.yy"
+ {
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 1644 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1735 "dhcp4_parser.cc"
break;
case 235:
-#line 880 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 880 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1652 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1743 "dhcp4_parser.cc"
break;
case 236:
-#line 882 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 882 "dhcp4_parser.yy"
+ {
+ ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 1662 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1753 "dhcp4_parser.cc"
break;
case 237:
-#line 888 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 888 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1670 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1761 "dhcp4_parser.cc"
break;
case 238:
-#line 890 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 890 "dhcp4_parser.yy"
+ {
+ ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 1680 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1771 "dhcp4_parser.cc"
break;
case 239:
-#line 896 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 896 "dhcp4_parser.yy"
+ {
+ ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 1689 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1780 "dhcp4_parser.cc"
break;
case 240:
-#line 901 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 901 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1697 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1788 "dhcp4_parser.cc"
break;
case 241:
-#line 903 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 903 "dhcp4_parser.yy"
+ {
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1707 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1798 "dhcp4_parser.cc"
break;
case 242:
-#line 909 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 909 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 1716 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1807 "dhcp4_parser.cc"
break;
case 243:
-#line 914 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 914 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 1725 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1816 "dhcp4_parser.cc"
break;
case 244:
-#line 919 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 919 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 1734 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1825 "dhcp4_parser.cc"
break;
case 245:
-#line 924 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 924 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 1743 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1834 "dhcp4_parser.cc"
break;
case 246:
-#line 929 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 929 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("request-timeout", n);
}
-#line 1752 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1843 "dhcp4_parser.cc"
break;
case 247:
-#line 934 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 934 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-keepalive", n);
}
-#line 1761 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1852 "dhcp4_parser.cc"
break;
case 248:
-#line 939 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 939 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-nodelay", n);
}
-#line 1770 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1861 "dhcp4_parser.cc"
break;
case 249:
-#line 944 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 944 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1778 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1869 "dhcp4_parser.cc"
break;
case 250:
-#line 946 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 946 "dhcp4_parser.yy"
+ {
+ ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("contact-points", cp);
ctx.leave();
}
-#line 1788 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1879 "dhcp4_parser.cc"
break;
case 251:
-#line 952 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 952 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1796 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1887 "dhcp4_parser.cc"
break;
case 252:
-#line 954 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 954 "dhcp4_parser.yy"
+ {
+ ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("keyspace", ks);
ctx.leave();
}
-#line 1806 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1897 "dhcp4_parser.cc"
break;
case 253:
-#line 960 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 960 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1814 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1905 "dhcp4_parser.cc"
break;
case 254:
-#line 962 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 962 "dhcp4_parser.yy"
+ {
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("consistency", c);
ctx.leave();
}
-#line 1824 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1915 "dhcp4_parser.cc"
break;
case 255:
-#line 968 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 968 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1832 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1923 "dhcp4_parser.cc"
break;
case 256:
-#line 970 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 970 "dhcp4_parser.yy"
+ {
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("serial-consistency", c);
ctx.leave();
}
-#line 1842 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1933 "dhcp4_parser.cc"
break;
case 257:
-#line 976 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 976 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 1851 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1942 "dhcp4_parser.cc"
break;
case 258:
-#line 981 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 981 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 1860 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1951 "dhcp4_parser.cc"
break;
case 259:
-#line 986 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 986 "dhcp4_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-row-errors", n);
}
-#line 1869 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1960 "dhcp4_parser.cc"
break;
case 260:
-#line 992 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 992 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host-reservation-identifiers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
}
-#line 1880 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1971 "dhcp4_parser.cc"
break;
case 261:
-#line 997 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 997 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1889 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1980 "dhcp4_parser.cc"
break;
case 269:
-#line 1013 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1013 "dhcp4_parser.yy"
+ {
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1898 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1989 "dhcp4_parser.cc"
break;
case 270:
-#line 1018 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1018 "dhcp4_parser.yy"
+ {
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 1907 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1998 "dhcp4_parser.cc"
break;
case 271:
-#line 1023 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1023 "dhcp4_parser.yy"
+ {
ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(circuit);
}
-#line 1916 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2007 "dhcp4_parser.cc"
break;
case 272:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1028 "dhcp4_parser.yy"
+ {
ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(client);
}
-#line 1925 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2016 "dhcp4_parser.cc"
break;
case 273:
-#line 1033 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1033 "dhcp4_parser.yy"
+ {
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 1934 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2025 "dhcp4_parser.cc"
break;
case 274:
-#line 1040 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1040 "dhcp4_parser.yy"
+ {
ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("multi-threading", mt);
ctx.stack_.push_back(mt);
ctx.enter(ctx.DHCP_MULTI_THREADING);
}
-#line 1945 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2036 "dhcp4_parser.cc"
break;
case 275:
-#line 1045 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1045 "dhcp4_parser.yy"
+ {
// The enable parameter is required.
ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1956 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2047 "dhcp4_parser.cc"
break;
case 284:
-#line 1064 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1064 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-multi-threading", b);
}
-#line 1965 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2056 "dhcp4_parser.cc"
break;
case 285:
-#line 1069 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1069 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("thread-pool-size", prf);
}
-#line 1974 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2065 "dhcp4_parser.cc"
break;
case 286:
-#line 1074 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1074 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("packet-queue-size", prf);
}
-#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2074 "dhcp4_parser.cc"
break;
case 287:
-#line 1079 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1079 "dhcp4_parser.yy"
+ {
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 1994 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2085 "dhcp4_parser.cc"
break;
case 288:
-#line 1084 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1084 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2094 "dhcp4_parser.cc"
break;
case 293:
-#line 1097 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1097 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2104 "dhcp4_parser.cc"
break;
case 294:
-#line 1101 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1101 "dhcp4_parser.yy"
+ {
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2023 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2114 "dhcp4_parser.cc"
break;
case 295:
-#line 1107 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1107 "dhcp4_parser.yy"
+ {
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2033 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2124 "dhcp4_parser.cc"
break;
case 296:
-#line 1111 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1111 "dhcp4_parser.yy"
+ {
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2043 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2134 "dhcp4_parser.cc"
break;
case 302:
-#line 1126 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1126 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2051 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2142 "dhcp4_parser.cc"
break;
case 303:
-#line 1128 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1128 "dhcp4_parser.yy"
+ {
+ ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 2061 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2152 "dhcp4_parser.cc"
break;
case 304:
-#line 1134 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1134 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2069 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2160 "dhcp4_parser.cc"
break;
case 305:
-#line 1136 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
+#line 1136 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2078 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2169 "dhcp4_parser.cc"
break;
case 306:
-#line 1142 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1142 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("expired-leases-processing", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
}
-#line 2089 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2180 "dhcp4_parser.cc"
break;
case 307:
-#line 1147 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1147 "dhcp4_parser.yy"
+ {
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2099 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2190 "dhcp4_parser.cc"
break;
case 316:
-#line 1165 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1165 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reclaim-timer-wait-time", value);
}
-#line 2108 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2199 "dhcp4_parser.cc"
break;
case 317:
-#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1170 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
}
-#line 2117 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2208 "dhcp4_parser.cc"
break;
case 318:
-#line 1175 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1175 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 2126 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2217 "dhcp4_parser.cc"
break;
case 319:
-#line 1180 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1180 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 2135 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2226 "dhcp4_parser.cc"
break;
case 320:
-#line 1185 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1185 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 2144 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2235 "dhcp4_parser.cc"
break;
case 321:
-#line 1190 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1190 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 2153 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2244 "dhcp4_parser.cc"
break;
case 322:
-#line 1198 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1198 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet4", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET4);
}
-#line 2164 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2255 "dhcp4_parser.cc"
break;
case 323:
-#line 1203 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1203 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2173 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2264 "dhcp4_parser.cc"
break;
case 328:
-#line 1223 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1223 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2183 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2274 "dhcp4_parser.cc"
break;
case 329:
-#line 1227 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1227 "dhcp4_parser.yy"
+ {
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
// In particular we can do things like this:
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2209 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2300 "dhcp4_parser.cc"
break;
case 330:
-#line 1249 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1249 "dhcp4_parser.yy"
+ {
// Parse the subnet4 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2219 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2310 "dhcp4_parser.cc"
break;
case 331:
-#line 1253 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1253 "dhcp4_parser.yy"
+ {
// The subnet subnet4 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2229 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2320 "dhcp4_parser.cc"
break;
case 372:
-#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1305 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2237 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2328 "dhcp4_parser.cc"
break;
case 373:
-#line 1307 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1307 "dhcp4_parser.yy"
+ {
+ ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 2247 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2338 "dhcp4_parser.cc"
break;
case 374:
-#line 1313 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1313 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2255 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2346 "dhcp4_parser.cc"
break;
case 375:
-#line 1315 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1315 "dhcp4_parser.yy"
+ {
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface", iface);
ctx.leave();
}
-#line 2265 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2356 "dhcp4_parser.cc"
break;
case 376:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1321 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2273 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2364 "dhcp4_parser.cc"
break;
case 377:
-#line 1323 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1323 "dhcp4_parser.yy"
+ {
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface-id", iface);
ctx.leave();
}
-#line 2283 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2374 "dhcp4_parser.cc"
break;
case 378:
-#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1329 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2291 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2382 "dhcp4_parser.cc"
break;
case 379:
-#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1331 "dhcp4_parser.yy"
+ {
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-subnet", iface);
ctx.leave();
}
-#line 2301 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2392 "dhcp4_parser.cc"
break;
case 380:
-#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1337 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2309 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2400 "dhcp4_parser.cc"
break;
case 381:
-#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1339 "dhcp4_parser.yy"
+ {
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2319 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2410 "dhcp4_parser.cc"
break;
case 382:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1345 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2327 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2418 "dhcp4_parser.cc"
break;
case 383:
-#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1347 "dhcp4_parser.yy"
+ {
+ ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 2337 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2428 "dhcp4_parser.cc"
break;
case 384:
-#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1353 "dhcp4_parser.yy"
+ {
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("require-client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2348 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2439 "dhcp4_parser.cc"
break;
case 385:
-#line 1358 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1358 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2357 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2448 "dhcp4_parser.cc"
break;
case 386:
-#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1363 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2365 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2456 "dhcp4_parser.cc"
break;
case 387:
-#line 1365 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
+#line 1365 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2374 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2465 "dhcp4_parser.cc"
break;
case 388:
-#line 1370 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2380 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1370 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2471 "dhcp4_parser.cc"
break;
case 389:
-#line 1371 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2386 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1371 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2477 "dhcp4_parser.cc"
break;
case 390:
-#line 1372 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2392 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1372 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2483 "dhcp4_parser.cc"
break;
case 391:
-#line 1373 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2398 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1373 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2489 "dhcp4_parser.cc"
break;
case 392:
-#line 1376 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1376 "dhcp4_parser.yy"
+ {
+ ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2407 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2498 "dhcp4_parser.cc"
break;
case 393:
-#line 1383 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1383 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("shared-networks", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SHARED_NETWORK);
}
-#line 2418 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2509 "dhcp4_parser.cc"
break;
case 394:
-#line 1388 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1388 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2427 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2518 "dhcp4_parser.cc"
break;
case 399:
-#line 1403 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1403 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2437 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2528 "dhcp4_parser.cc"
break;
case 400:
-#line 1407 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1407 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
}
-#line 2445 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2536 "dhcp4_parser.cc"
break;
case 436:
-#line 1454 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1454 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 2456 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2547 "dhcp4_parser.cc"
break;
case 437:
-#line 1459 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1459 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2465 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2556 "dhcp4_parser.cc"
break;
case 438:
-#line 1467 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1467 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2474 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2565 "dhcp4_parser.cc"
break;
case 439:
-#line 1470 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1470 "dhcp4_parser.yy"
+ {
// parsing completed
}
-#line 2482 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2573 "dhcp4_parser.cc"
break;
case 444:
-#line 1486 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1486 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2583 "dhcp4_parser.cc"
break;
case 445:
-#line 1490 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1490 "dhcp4_parser.yy"
+ {
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2504 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2595 "dhcp4_parser.cc"
break;
case 446:
-#line 1501 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1501 "dhcp4_parser.yy"
+ {
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2514 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2605 "dhcp4_parser.cc"
break;
case 447:
-#line 1505 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1505 "dhcp4_parser.yy"
+ {
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2526 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2617 "dhcp4_parser.cc"
break;
case 463:
-#line 1537 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1537 "dhcp4_parser.yy"
+ {
+ ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 2535 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2626 "dhcp4_parser.cc"
break;
case 465:
-#line 1544 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1544 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2543 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2634 "dhcp4_parser.cc"
break;
case 466:
-#line 1546 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1546 "dhcp4_parser.yy"
+ {
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 2553 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2644 "dhcp4_parser.cc"
break;
case 467:
-#line 1552 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1552 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2561 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2652 "dhcp4_parser.cc"
break;
case 468:
-#line 1554 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1554 "dhcp4_parser.yy"
+ {
+ ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 2571 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2662 "dhcp4_parser.cc"
break;
case 469:
-#line 1560 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1560 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2579 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2670 "dhcp4_parser.cc"
break;
case 470:
-#line 1562 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1562 "dhcp4_parser.yy"
+ {
+ ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 2589 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2680 "dhcp4_parser.cc"
break;
case 472:
-#line 1570 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1570 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2597 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2688 "dhcp4_parser.cc"
break;
case 473:
-#line 1572 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1572 "dhcp4_parser.yy"
+ {
+ ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 2607 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2698 "dhcp4_parser.cc"
break;
case 474:
-#line 1578 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1578 "dhcp4_parser.yy"
+ {
+ ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 2616 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2707 "dhcp4_parser.cc"
break;
case 475:
-#line 1587 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1587 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 2627 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2718 "dhcp4_parser.cc"
break;
case 476:
-#line 1592 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1592 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2636 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2727 "dhcp4_parser.cc"
break;
case 481:
-#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1611 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2646 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2737 "dhcp4_parser.cc"
break;
case 482:
-#line 1615 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1615 "dhcp4_parser.yy"
+ {
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 2655 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2746 "dhcp4_parser.cc"
break;
case 483:
-#line 1623 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1623 "dhcp4_parser.yy"
+ {
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2665 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2756 "dhcp4_parser.cc"
break;
case 484:
-#line 1627 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1627 "dhcp4_parser.yy"
+ {
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 2674 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2765 "dhcp4_parser.cc"
break;
case 499:
-#line 1660 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1660 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2682 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2773 "dhcp4_parser.cc"
break;
case 500:
-#line 1662 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1662 "dhcp4_parser.yy"
+ {
+ ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2692 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2783 "dhcp4_parser.cc"
break;
case 503:
-#line 1672 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1672 "dhcp4_parser.yy"
+ {
+ ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2701 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2792 "dhcp4_parser.cc"
break;
case 504:
-#line 1677 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1677 "dhcp4_parser.yy"
+ {
+ ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2710 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2801 "dhcp4_parser.cc"
break;
case 505:
-#line 1685 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1685 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 2721 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2812 "dhcp4_parser.cc"
break;
case 506:
-#line 1690 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1690 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2730 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2821 "dhcp4_parser.cc"
break;
case 511:
-#line 1705 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1705 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2740 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2831 "dhcp4_parser.cc"
break;
case 512:
-#line 1709 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1709 "dhcp4_parser.yy"
+ {
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2750 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2841 "dhcp4_parser.cc"
break;
case 513:
-#line 1715 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1715 "dhcp4_parser.yy"
+ {
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2760 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2851 "dhcp4_parser.cc"
break;
case 514:
-#line 1719 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1719 "dhcp4_parser.yy"
+ {
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2770 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2861 "dhcp4_parser.cc"
break;
case 524:
-#line 1738 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1738 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2778 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2869 "dhcp4_parser.cc"
break;
case 525:
-#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1740 "dhcp4_parser.yy"
+ {
+ ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2788 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2879 "dhcp4_parser.cc"
break;
case 526:
-#line 1746 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1746 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2796 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2887 "dhcp4_parser.cc"
break;
case 527:
-#line 1748 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1748 "dhcp4_parser.yy"
+ {
ElementPtr parent = ctx.stack_.back();
- ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
ConstElementPtr old = parent->get("user-context");
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2823 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2914 "dhcp4_parser.cc"
break;
case 528:
-#line 1771 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1771 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2831 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2922 "dhcp4_parser.cc"
break;
case 529:
-#line 1773 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1773 "dhcp4_parser.yy"
+ {
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
- ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
user_context->set("comment", comment);
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2860 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2951 "dhcp4_parser.cc"
break;
case 530:
-#line 1801 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1801 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 2871 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2962 "dhcp4_parser.cc"
break;
case 531:
-#line 1806 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1806 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2880 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2971 "dhcp4_parser.cc"
break;
case 536:
-#line 1819 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1819 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2890 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2981 "dhcp4_parser.cc"
break;
case 537:
-#line 1823 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1823 "dhcp4_parser.yy"
+ {
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2899 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2990 "dhcp4_parser.cc"
break;
case 538:
-#line 1828 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1828 "dhcp4_parser.yy"
+ {
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2909 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3000 "dhcp4_parser.cc"
break;
case 539:
-#line 1832 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1832 "dhcp4_parser.yy"
+ {
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 2918 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3009 "dhcp4_parser.cc"
break;
case 559:
-#line 1863 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1863 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2926 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3017 "dhcp4_parser.cc"
break;
case 560:
-#line 1865 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1865 "dhcp4_parser.yy"
+ {
+ ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("next-server", next_server);
ctx.leave();
}
-#line 2936 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3027 "dhcp4_parser.cc"
break;
case 561:
-#line 1871 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1871 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2944 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3035 "dhcp4_parser.cc"
break;
case 562:
-#line 1873 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1873 "dhcp4_parser.yy"
+ {
+ ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-hostname", srv);
ctx.leave();
}
-#line 2954 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3045 "dhcp4_parser.cc"
break;
case 563:
-#line 1879 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1879 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2962 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3053 "dhcp4_parser.cc"
break;
case 564:
-#line 1881 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1881 "dhcp4_parser.yy"
+ {
+ ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-file-name", bootfile);
ctx.leave();
}
-#line 2972 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3063 "dhcp4_parser.cc"
break;
case 565:
-#line 1887 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1887 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2980 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3071 "dhcp4_parser.cc"
break;
case 566:
-#line 1889 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1889 "dhcp4_parser.yy"
+ {
+ ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 2990 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3081 "dhcp4_parser.cc"
break;
case 567:
-#line 1895 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1895 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-addresses", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3001 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3092 "dhcp4_parser.cc"
break;
case 568:
-#line 1900 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1900 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3010 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3101 "dhcp4_parser.cc"
break;
case 569:
-#line 1905 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1905 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3018 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3109 "dhcp4_parser.cc"
break;
case 570:
-#line 1907 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1907 "dhcp4_parser.yy"
+ {
+ ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 3028 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3119 "dhcp4_parser.cc"
break;
case 571:
-#line 1913 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1913 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3036 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3127 "dhcp4_parser.cc"
break;
case 572:
-#line 1915 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1915 "dhcp4_parser.yy"
+ {
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 3046 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3137 "dhcp4_parser.cc"
break;
case 573:
-#line 1921 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1921 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3054 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3145 "dhcp4_parser.cc"
break;
case 574:
-#line 1923 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1923 "dhcp4_parser.yy"
+ {
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-id", hw);
ctx.leave();
}
-#line 3064 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3155 "dhcp4_parser.cc"
break;
case 575:
-#line 1929 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1929 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3072 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3163 "dhcp4_parser.cc"
break;
case 576:
-#line 1931 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1931 "dhcp4_parser.yy"
+ {
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("circuit-id", hw);
ctx.leave();
}
-#line 3082 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3173 "dhcp4_parser.cc"
break;
case 577:
-#line 1937 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1937 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3090 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3181 "dhcp4_parser.cc"
break;
case 578:
-#line 1939 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1939 "dhcp4_parser.yy"
+ {
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 3100 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3191 "dhcp4_parser.cc"
break;
case 579:
-#line 1945 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1945 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3108 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3199 "dhcp4_parser.cc"
break;
case 580:
-#line 1947 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1947 "dhcp4_parser.yy"
+ {
+ ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 3118 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3209 "dhcp4_parser.cc"
break;
case 581:
-#line 1953 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1953 "dhcp4_parser.yy"
+ {
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3129 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3220 "dhcp4_parser.cc"
break;
case 582:
-#line 1958 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1958 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3138 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3229 "dhcp4_parser.cc"
break;
case 583:
-#line 1966 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1966 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 3149 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3240 "dhcp4_parser.cc"
break;
case 584:
-#line 1971 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1971 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3158 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3249 "dhcp4_parser.cc"
break;
case 587:
-#line 1983 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1983 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 3169 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3260 "dhcp4_parser.cc"
break;
case 588:
-#line 1988 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1988 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3178 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3269 "dhcp4_parser.cc"
break;
case 591:
-#line 1997 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 1997 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3188 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3279 "dhcp4_parser.cc"
break;
case 592:
-#line 2001 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2001 "dhcp4_parser.yy"
+ {
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3198 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3289 "dhcp4_parser.cc"
break;
case 609:
-#line 2030 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2030 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3206 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3297 "dhcp4_parser.cc"
break;
case 610:
-#line 2032 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2032 "dhcp4_parser.yy"
+ {
+ ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 3216 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3307 "dhcp4_parser.cc"
break;
case 611:
-#line 2038 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2038 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 3225 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3316 "dhcp4_parser.cc"
break;
case 612:
-#line 2045 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2045 "dhcp4_parser.yy"
+ {
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 3234 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3325 "dhcp4_parser.cc"
break;
case 613:
-#line 2052 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2052 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 3245 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3336 "dhcp4_parser.cc"
break;
case 614:
-#line 2057 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2057 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3254 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3345 "dhcp4_parser.cc"
break;
case 622:
-#line 2073 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2073 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3262 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3353 "dhcp4_parser.cc"
break;
case 623:
-#line 2075 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2075 "dhcp4_parser.yy"
+ {
+ ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 3272 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3363 "dhcp4_parser.cc"
break;
case 624:
-#line 2081 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2081 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3280 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3371 "dhcp4_parser.cc"
break;
case 625:
-#line 2083 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2083 "dhcp4_parser.yy"
+ {
+ 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 3290 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3381 "dhcp4_parser.cc"
break;
case 626:
-#line 2092 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2092 "dhcp4_parser.yy"
+ {
ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-queue-control", qc);
ctx.stack_.push_back(qc);
ctx.enter(ctx.DHCP_QUEUE_CONTROL);
}
-#line 3301 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3392 "dhcp4_parser.cc"
break;
case 627:
-#line 2097 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2097 "dhcp4_parser.yy"
+ {
// The enable queue parameter is required.
ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3312 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3403 "dhcp4_parser.cc"
break;
case 636:
-#line 2116 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2116 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-queue", b);
}
-#line 3321 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3412 "dhcp4_parser.cc"
break;
case 637:
-#line 2121 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2121 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3329 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3420 "dhcp4_parser.cc"
break;
case 638:
-#line 2123 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr qt(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2123 "dhcp4_parser.yy"
+ {
+ ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("queue-type", qt);
ctx.leave();
}
-#line 3339 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3430 "dhcp4_parser.cc"
break;
case 639:
-#line 2129 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr c(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2129 "dhcp4_parser.yy"
+ {
+ ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("capacity", c);
}
-#line 3348 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3439 "dhcp4_parser.cc"
break;
case 640:
-#line 2134 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2134 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3356 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3447 "dhcp4_parser.cc"
break;
case 641:
-#line 2136 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set(yystack_[3].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+#line 2136 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3365 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3456 "dhcp4_parser.cc"
break;
case 642:
-#line 2143 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2143 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 3376 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3467 "dhcp4_parser.cc"
break;
case 643:
-#line 2148 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2148 "dhcp4_parser.yy"
+ {
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3387 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3478 "dhcp4_parser.cc"
break;
case 644:
-#line 2155 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2155 "dhcp4_parser.yy"
+ {
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3397 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3488 "dhcp4_parser.cc"
break;
case 645:
-#line 2159 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2159 "dhcp4_parser.yy"
+ {
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3407 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3498 "dhcp4_parser.cc"
break;
case 666:
-#line 2189 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2189 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 3416 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3507 "dhcp4_parser.cc"
break;
case 667:
-#line 2194 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2194 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3424 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3515 "dhcp4_parser.cc"
break;
case 668:
-#line 2196 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2196 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 3434 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3525 "dhcp4_parser.cc"
break;
case 669:
-#line 2202 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2202 "dhcp4_parser.yy"
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 3443 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3534 "dhcp4_parser.cc"
break;
case 670:
-#line 2207 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2207 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3451 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3542 "dhcp4_parser.cc"
break;
case 671:
-#line 2209 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2209 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 3461 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3552 "dhcp4_parser.cc"
break;
case 672:
-#line 2215 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2215 "dhcp4_parser.yy"
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 3470 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3561 "dhcp4_parser.cc"
break;
case 673:
-#line 2220 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2220 "dhcp4_parser.yy"
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 3479 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3570 "dhcp4_parser.cc"
break;
case 674:
-#line 2225 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2225 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 3487 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3578 "dhcp4_parser.cc"
break;
case 675:
-#line 2227 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
+#line 2227 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3496 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3587 "dhcp4_parser.cc"
break;
case 676:
-#line 2233 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3502 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2233 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3593 "dhcp4_parser.cc"
break;
case 677:
-#line 2234 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3508 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2234 "dhcp4_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3599 "dhcp4_parser.cc"
break;
case 678:
-#line 2237 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2237 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NCR_FORMAT);
}
-#line 3516 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3607 "dhcp4_parser.cc"
break;
case 679:
-#line 2239 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2239 "dhcp4_parser.yy"
+ {
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 3526 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3617 "dhcp4_parser.cc"
break;
case 680:
-#line 2246 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2246 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3534 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3625 "dhcp4_parser.cc"
break;
case 681:
-#line 2248 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2248 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 3544 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3635 "dhcp4_parser.cc"
break;
case 682:
-#line 2255 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2255 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 3553 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3644 "dhcp4_parser.cc"
break;
case 683:
-#line 2261 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2261 "dhcp4_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 3562 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3653 "dhcp4_parser.cc"
break;
case 684:
-#line 2267 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2267 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 3570 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3661 "dhcp4_parser.cc"
break;
case 685:
-#line 2269 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
+#line 2269 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3579 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3670 "dhcp4_parser.cc"
break;
case 686:
-#line 2275 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2275 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3587 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3678 "dhcp4_parser.cc"
break;
case 687:
-#line 2277 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2277 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 3597 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3688 "dhcp4_parser.cc"
break;
case 688:
-#line 2284 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2284 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3605 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3696 "dhcp4_parser.cc"
break;
case 689:
-#line 2286 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2286 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 3615 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3706 "dhcp4_parser.cc"
break;
case 690:
-#line 2293 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2293 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3623 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3714 "dhcp4_parser.cc"
break;
case 691:
-#line 2295 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2295 "dhcp4_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 3633 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3724 "dhcp4_parser.cc"
break;
case 692:
-#line 2304 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2304 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3641 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3732 "dhcp4_parser.cc"
break;
case 693:
-#line 2306 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
+#line 2306 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3650 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3741 "dhcp4_parser.cc"
break;
case 694:
-#line 2311 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2311 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3658 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3749 "dhcp4_parser.cc"
break;
case 695:
-#line 2313 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
+#line 2313 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3667 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3758 "dhcp4_parser.cc"
break;
case 696:
-#line 2318 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2318 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3675 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3766 "dhcp4_parser.cc"
break;
case 697:
-#line 2320 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+#line 2320 "dhcp4_parser.yy"
+ {
+ ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3684 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3775 "dhcp4_parser.cc"
break;
case 698:
-#line 2327 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2327 "dhcp4_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-control", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.CONFIG_CONTROL);
}
-#line 3695 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3786 "dhcp4_parser.cc"
break;
case 699:
-#line 2332 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2332 "dhcp4_parser.yy"
+ {
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3705 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3796 "dhcp4_parser.cc"
break;
case 700:
-#line 2338 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2338 "dhcp4_parser.yy"
+ {
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3715 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3806 "dhcp4_parser.cc"
break;
case 701:
-#line 2342 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2342 "dhcp4_parser.yy"
+ {
// No config_control params are required
// parsing completed
}
-#line 3724 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3815 "dhcp4_parser.cc"
break;
case 706:
-#line 2357 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2357 "dhcp4_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CONFIG_DATABASE);
}
-#line 3735 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3826 "dhcp4_parser.cc"
break;
case 707:
-#line 2362 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2362 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3744 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3835 "dhcp4_parser.cc"
break;
case 708:
-#line 2367 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2367 "dhcp4_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
}
-#line 3753 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3844 "dhcp4_parser.cc"
break;
case 709:
-#line 2377 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2377 "dhcp4_parser.yy"
+ {
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 3764 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3855 "dhcp4_parser.cc"
break;
case 710:
-#line 2382 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2382 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3773 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3864 "dhcp4_parser.cc"
break;
case 711:
-#line 2387 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2387 "dhcp4_parser.yy"
+ {
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3783 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3874 "dhcp4_parser.cc"
break;
case 712:
-#line 2391 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2391 "dhcp4_parser.yy"
+ {
// parsing completed
}
-#line 3791 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3882 "dhcp4_parser.cc"
break;
case 716:
-#line 2407 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2407 "dhcp4_parser.yy"
+ {
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 3802 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3893 "dhcp4_parser.cc"
break;
case 717:
-#line 2412 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2412 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3811 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3902 "dhcp4_parser.cc"
break;
case 720:
-#line 2424 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2424 "dhcp4_parser.yy"
+ {
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3821 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3912 "dhcp4_parser.cc"
break;
case 721:
-#line 2428 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2428 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
}
-#line 3829 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3920 "dhcp4_parser.cc"
break;
case 731:
-#line 2445 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2445 "dhcp4_parser.yy"
+ {
+ ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 3838 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3929 "dhcp4_parser.cc"
break;
case 732:
-#line 2450 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2450 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3846 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3937 "dhcp4_parser.cc"
break;
case 733:
-#line 2452 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2452 "dhcp4_parser.yy"
+ {
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3856 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3947 "dhcp4_parser.cc"
break;
case 734:
-#line 2458 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2458 "dhcp4_parser.yy"
+ {
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 3867 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3958 "dhcp4_parser.cc"
break;
case 735:
-#line 2463 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2463 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3876 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3967 "dhcp4_parser.cc"
break;
case 738:
-#line 2472 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2472 "dhcp4_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3886 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3977 "dhcp4_parser.cc"
break;
case 739:
-#line 2476 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2476 "dhcp4_parser.yy"
+ {
ctx.stack_.pop_back();
}
-#line 3894 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3985 "dhcp4_parser.cc"
break;
case 747:
-#line 2491 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2491 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3902 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3993 "dhcp4_parser.cc"
break;
case 748:
-#line 2493 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2493 "dhcp4_parser.yy"
+ {
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3912 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4003 "dhcp4_parser.cc"
break;
case 749:
-#line 2499 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2499 "dhcp4_parser.yy"
+ {
+ ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3921 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4012 "dhcp4_parser.cc"
break;
case 750:
-#line 2504 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2504 "dhcp4_parser.yy"
+ {
+ ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3930 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4021 "dhcp4_parser.cc"
break;
case 751:
-#line 2509 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2509 "dhcp4_parser.yy"
+ {
+ ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 3939 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4030 "dhcp4_parser.cc"
break;
case 752:
-#line 2514 "dhcp4_parser.yy" // lalr1.cc:859
- {
+#line 2514 "dhcp4_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3947 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4038 "dhcp4_parser.cc"
break;
case 753:
-#line 2516 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2516 "dhcp4_parser.yy"
+ {
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 3957 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4048 "dhcp4_parser.cc"
break;
-#line 3961 "dhcp4_parser.cc" // lalr1.cc:859
+#line 4052 "dhcp4_parser.cc"
+
default:
break;
}
}
+#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
YYERROR;
}
+#endif // YY_EXCEPTIONS
YY_SYMBOL_PRINT ("-> $$ =", yylhs);
yypop_ (yylen);
yylen = 0;
YY_STACK_PRINT ();
// Shift the result of the reduction.
- yypush_ (YY_NULLPTR, yylhs);
+ yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
}
goto yynewstate;
+
/*--------------------------------------.
| yyerrlab -- here on detecting error. |
`--------------------------------------*/
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
+ /* Pacify compilers when the user code never invokes YYERROR and
+ the label yyerrorlab therefore never appears in user code. */
if (false)
- goto yyerrorlab;
- yyerror_range[1].location = yystack_[yylen - 1].location;
+ YYERROR;
+
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
yylen = 0;
goto yyerrlab1;
+
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
stack_symbol_type error_token;
for (;;)
{
- yyn = yypact_[yystack_[0].state];
+ yyn = yypact_[+yystack_[0].state];
if (!yy_pact_value_is_default_ (yyn))
{
- yyn += yyterror_;
- if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
+ yyn += yy_error_token_;
+ if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yy_error_token_)
{
yyn = yytable_[yyn];
if (0 < yyn)
YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
// Shift the error token.
- error_token.state = yyn;
- yypush_ ("Shifting", error_token);
+ error_token.state = state_type (yyn);
+ yypush_ ("Shifting", YY_MOVE (error_token));
}
goto yynewstate;
- // Accept.
+
+ /*-------------------------------------.
+ | yyacceptlab -- YYACCEPT comes here. |
+ `-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
- // Abort.
+
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
+
+ /*-----------------------------------------------------.
+ | yyreturn -- parsing is finished, return the result. |
+ `-----------------------------------------------------*/
yyreturn:
if (!yyla.empty ())
yy_destroy_ ("Cleanup: discarding lookahead", yyla);
return yyresult;
}
+#if YY_EXCEPTIONS
catch (...)
{
- YYCDEBUG << "Exception caught: cleaning lookahead and stack"
- << std::endl;
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
// Do not try to display the values of the reclaimed symbols,
- // as their printer might throw an exception.
+ // as their printers might throw an exception.
if (!yyla.empty ())
yy_destroy_ (YY_NULLPTR, yyla);
}
throw;
}
+#endif // YY_EXCEPTIONS
}
void
Dhcp4Parser::error (const syntax_error& yyexc)
{
- error (yyexc.location, yyexc.what());
+ error (yyexc.location, yyexc.what ());
}
// Generate an error message.
{
// Number of reported tokens (one for the "unexpected", one per
// "expected").
- size_t yycount = 0;
+ std::ptrdiff_t yycount = 0;
// Its maximum.
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
// Arguments of yyformat.
- Of course, the expected token list depends on states to have
correct lookahead information, and it depends on the parser not
to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state
- merging (from LALR or IELR) and default reductions corrupt the
- expected token list. However, the list is correct for
- canonical LR with one exception: it will still contain any
- token that will not be accepted due to an error action in a
- later state.
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
*/
if (!yyla.empty ())
{
- int yytoken = yyla.type_get ();
+ symbol_number_type yytoken = yyla.type_get ();
yyarg[yycount++] = yytname_[yytoken];
- int yyn = yypact_[yystate];
+
+ int yyn = yypact_[+yystate];
if (!yy_pact_value_is_default_ (yyn))
{
/* Start YYX at -YYN if negative to avoid negative indexes in
int yychecklim = yylast_ - yyn + 1;
int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
+ if (yycheck_[yyx + yyn] == yyx && yyx != yy_error_token_
&& !yy_table_value_is_error_ (yytable_[yyx + yyn]))
{
if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
case N: \
yyformat = S; \
break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+ default: // Avoid compiler warnings.
+ YYCASE_ (0, YY_("syntax error"));
+ YYCASE_ (1, YY_("syntax error, unexpected %s"));
+ YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
#undef YYCASE_
}
std::string yyres;
// Argument number.
- size_t yyi = 0;
+ std::ptrdiff_t yyi = 0;
for (char const* yyp = yyformat; *yyp; ++yyp)
if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
{
}
- const short int Dhcp4Parser::yypact_ninf_ = -939;
+ const short Dhcp4Parser::yypact_ninf_ = -939;
const signed char Dhcp4Parser::yytable_ninf_ = -1;
- const short int
+ const short
Dhcp4Parser::yypact_[] =
{
370, -939, -939, -939, -939, -939, -939, -939, -939, -939,
-40, -939, 686, -939, -939, -939, 687, -939, -939, -939
};
- const unsigned short int
+ const short
Dhcp4Parser::yydefact_[] =
{
0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
0, 739, 0, 749, 750, 751, 0, 741, 748, 753
};
- const short int
+ const short
Dhcp4Parser::yypgoto_[] =
{
-939, -939, -939, -939, -939, -939, -939, -939, -939, -939,
-939, -939, -939, -939, -939, -939, -939
};
- const short int
+ const short
Dhcp4Parser::yydefgoto_[] =
{
-1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1189, 1195, 1190, 1191, 1192, 1193, 1199
};
- const unsigned short int
+ const short
Dhcp4Parser::yytable_[] =
{
95, 154, 212, 231, 272, 289, 273, 315, 334, 351,
0, 0, 0, 0, 0, 0, 0, 94
};
- const short int
+ const short
Dhcp4Parser::yycheck_[] =
{
70, 71, 72, 73, 74, 75, 74, 77, 78, 79,
-1, -1, -1, -1, -1, -1, -1, 191
};
- const unsigned short int
+ const short
Dhcp4Parser::yystos_[] =
{
0, 177, 178, 179, 180, 181, 182, 183, 184, 185,
3, 8, 4, 194, 192, 192, 4, 604, 191, 191
};
- const unsigned short int
+ const short
Dhcp4Parser::yyr1_[] =
{
0, 195, 197, 196, 198, 196, 199, 196, 200, 196,
608, 609, 611, 610
};
- const unsigned char
+ const signed char
Dhcp4Parser::yyr2_[] =
{
0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
};
#if PARSER4_DEBUG
- const unsigned short int
+ const short
Dhcp4Parser::yyrline_[] =
{
0, 283, 283, 283, 284, 284, 285, 285, 286, 286,
i = yystack_.begin (),
i_end = yystack_.end ();
i != i_end; ++i)
- *yycdebug_ << ' ' << i->state;
- *yycdebug_ << std::endl;
+ *yycdebug_ << ' ' << int (i->state);
+ *yycdebug_ << '\n';
}
// Report on the debug stream that the rule \a yyrule is going to be reduced.
void
Dhcp4Parser::yy_reduce_print_ (int yyrule)
{
- unsigned int yylno = yyrline_[yyrule];
+ int yylno = yyrline_[yyrule];
int yynrhs = yyr2_[yyrule];
// Print the symbols being reduced, and their result.
*yycdebug_ << "Reducing stack by rule " << yyrule - 1
- << " (line " << yylno << "):" << std::endl;
+ << " (line " << yylno << "):\n";
// The symbols being reduced.
for (int yyi = 0; yyi < yynrhs; yyi++)
YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
#endif // PARSER4_DEBUG
-#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
+#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 5418 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 2522 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 5525 "dhcp4_parser.cc"
+
+#line 2522 "dhcp4_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
+
/**
** \file dhcp4_parser.h
** Define the isc::dhcp::parser class.
// C++ LALR(1) parser skeleton written by Akim Demaille.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details. Do not rely on them.
+
#ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
# define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
-// // "%code requires" blocks.
-#line 17 "dhcp4_parser.yy" // lalr1.cc:377
+// "%code requires" blocks.
+#line 17 "dhcp4_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 56 "dhcp4_parser.h" // lalr1.cc:377
+#line 60 "dhcp4_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# include <stdexcept>
# include <string>
# include <vector>
-# include "stack.hh"
+
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
+// Support move semantics when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_MOVE std::move
+# define YY_MOVE_OR_COPY move
+# define YY_MOVE_REF(Type) Type&&
+# define YY_RVREF(Type) Type&&
+# define YY_COPY(Type) Type
+#else
+# define YY_MOVE
+# define YY_MOVE_OR_COPY copy
+# define YY_MOVE_REF(Type) Type&
+# define YY_RVREF(Type) const Type&
+# define YY_COPY(Type) const Type&
+#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
# include "location.hh"
#include <typeinfo>
-#ifndef YYASSERT
+#ifndef YY_ASSERT
# include <cassert>
-# define YYASSERT assert
+# define YY_ASSERT assert
#endif
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
-# define YY_ATTRIBUTE(Spec) /* empty */
+# define YY_ATTRIBUTE_PURE
# endif
#endif
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
-#endif
-
#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# define YY_ATTRIBUTE_UNUSED
# endif
#endif
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
/* Debug traces. */
#ifndef PARSER4_DEBUG
# if defined YYDEBUG
# endif /* ! defined YYDEBUG */
#endif /* ! defined PARSER4_DEBUG */
-#line 14 "dhcp4_parser.yy" // lalr1.cc:377
+#line 14 "dhcp4_parser.yy"
namespace isc { namespace dhcp {
-#line 141 "dhcp4_parser.h" // lalr1.cc:377
+#line 203 "dhcp4_parser.h"
+
- /// A char[S] buffer to store and retrieve objects.
+ /// A Bison parser.
+ class Dhcp4Parser
+ {
+ public:
+#ifndef PARSER4_STYPE
+ /// A buffer to store and retrieve objects.
///
/// Sort of a variant, but does not keep track of the nature
/// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
+ /// via the current parser state.
+ class semantic_type
{
+ public:
/// Type of *this.
- typedef variant<S> self_type;
+ typedef semantic_type self_type;
/// Empty construction.
- variant ()
- : yytypeid_ (YY_NULLPTR)
+ semantic_type () YY_NOEXCEPT
+ : yybuffer_ ()
+ , yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (const T& t)
+ semantic_type (YY_RVREF (T) t)
: yytypeid_ (&typeid (T))
{
- YYASSERT (sizeof (T) <= S);
- new (yyas_<T> ()) T (t);
+ YY_ASSERT (sizeof (T) <= size);
+ new (yyas_<T> ()) T (YY_MOVE (t));
}
/// Destruction, allowed only if empty.
- ~variant ()
+ ~semantic_type () YY_NOEXCEPT
{
- YYASSERT (!yytypeid_);
+ YY_ASSERT (!yytypeid_);
}
+# if 201103L <= YY_CPLUSPLUS
+ /// Instantiate a \a T in here from \a t.
+ template <typename T, typename... U>
+ T&
+ emplace (U&&... u)
+ {
+ YY_ASSERT (!yytypeid_);
+ YY_ASSERT (sizeof (T) <= size);
+ yytypeid_ = & typeid (T);
+ return *new (yyas_<T> ()) T (std::forward <U>(u)...);
+ }
+# else
/// Instantiate an empty \a T in here.
template <typename T>
T&
- build ()
+ emplace ()
{
- YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (!yytypeid_);
+ YY_ASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T;
+ return *new (yyas_<T> ()) T ();
}
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
- build (const T& t)
+ emplace (const T& t)
{
- YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (!yytypeid_);
+ YY_ASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
+# endif
+
+ /// Instantiate an empty \a T in here.
+ /// Obsolete, use emplace.
+ template <typename T>
+ T&
+ build ()
+ {
+ return emplace<T> ();
+ }
+
+ /// Instantiate a \a T in here from \a t.
+ /// Obsolete, use emplace.
+ template <typename T>
+ T&
+ build (const T& t)
+ {
+ return emplace<T> (t);
+ }
/// Accessor to a built \a T.
template <typename T>
T&
- as ()
+ as () YY_NOEXCEPT
{
- YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (yytypeid_);
+ YY_ASSERT (*yytypeid_ == typeid (T));
+ YY_ASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
/// Const accessor to a built \a T (for %printer).
template <typename T>
const T&
- as () const
+ as () const YY_NOEXCEPT
{
- YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (yytypeid_);
+ YY_ASSERT (*yytypeid_ == typeid (T));
+ YY_ASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
- /// Swap the content with \a other, of same type.
+ /// Swap the content with \a that, of same type.
///
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
- /// should not be the variant's responsability.
+ /// should not be the variant's responsibility.
/// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
+ /// self_type::move ().
template <typename T>
void
- swap (self_type& other)
+ swap (self_type& that) YY_NOEXCEPT
{
- YYASSERT (yytypeid_);
- YYASSERT (*yytypeid_ == *other.yytypeid_);
- std::swap (as<T> (), other.as<T> ());
+ YY_ASSERT (yytypeid_);
+ YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+ std::swap (as<T> (), that.as<T> ());
}
- /// Move the content of \a other to this.
+ /// Move the content of \a that to this.
///
- /// Destroys \a other.
+ /// Destroys \a that.
+ template <typename T>
+ void
+ move (self_type& that)
+ {
+# if 201103L <= YY_CPLUSPLUS
+ emplace<T> (std::move (that.as<T> ()));
+# else
+ emplace<T> ();
+ swap<T> (that);
+# endif
+ that.destroy<T> ();
+ }
+
+# if 201103L <= YY_CPLUSPLUS
+ /// Move the content of \a that to this.
template <typename T>
void
- move (self_type& other)
+ move (self_type&& that)
{
- build<T> ();
- swap<T> (other);
- other.destroy<T> ();
+ emplace<T> (std::move (that.as<T> ()));
+ that.destroy<T> ();
}
+#endif
- /// Copy the content of \a other to this.
+ /// Copy the content of \a that to this.
template <typename T>
void
- copy (const self_type& other)
+ copy (const self_type& that)
{
- build<T> (other.as<T> ());
+ emplace<T> (that.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
- self_type& operator=(const self_type&);
- variant (const self_type&);
+ self_type& operator= (const self_type&);
+ semantic_type (const self_type&);
/// Accessor to raw memory as \a T.
template <typename T>
T*
- yyas_ ()
+ yyas_ () YY_NOEXCEPT
{
void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- yyas_ () const
+ yyas_ () const YY_NOEXCEPT
{
const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;
-
- /// Whether the content is built: if defined, the name of the stored type.
- const std::type_info *yytypeid_;
- };
-
-
- /// A Bison parser.
- class Dhcp4Parser
- {
- public:
-#ifndef PARSER4_STYPE
/// An auxiliary type to compute the largest semantic type.
union union_type
{
// db_type
// hr_mode
// ncr_protocol_value
- char dummy1[sizeof(ElementPtr)];
+ char dummy1[sizeof (ElementPtr)];
// "boolean"
- char dummy2[sizeof(bool)];
+ char dummy2[sizeof (bool)];
// "floating point"
- char dummy3[sizeof(double)];
+ char dummy3[sizeof (double)];
// "integer"
- char dummy4[sizeof(int64_t)];
+ char dummy4[sizeof (int64_t)];
// "constant string"
- char dummy5[sizeof(std::string)];
-};
+ char dummy5[sizeof (std::string)];
+ };
+
+ /// The size of the largest semantic type.
+ enum { size = sizeof (union_type) };
+
+ /// A buffer to store semantic values.
+ union
+ {
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[size];
+ } yybuffer_;
+
+ /// Whether the content is built: if defined, the name of the stored type.
+ const std::type_info *yytypeid_;
+ };
- /// Symbol semantic values.
- typedef variant<sizeof(union_type)> semantic_type;
#else
typedef PARSER4_STYPE semantic_type;
#endif
/// Syntax errors thrown from user actions.
struct syntax_error : std::runtime_error
{
- syntax_error (const location_type& l, const std::string& m);
+ syntax_error (const location_type& l, const std::string& m)
+ : std::runtime_error (m)
+ , location (l)
+ {}
+
+ syntax_error (const syntax_error& s)
+ : std::runtime_error (s.what ())
+ , location (s.location)
+ {}
+
+ ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+
location_type location;
};
/// A complete symbol.
///
/// Expects its Base type to provide access to the symbol type
- /// via type_get().
+ /// via type_get ().
///
/// Provide access to semantic value and location.
template <typename Base>
typedef Base super_type;
/// Default constructor.
- basic_symbol ();
+ basic_symbol ()
+ : value ()
+ , location ()
+ {}
+
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ basic_symbol (basic_symbol&& that);
+#endif
/// Copy constructor.
- basic_symbol (const basic_symbol& other);
+ basic_symbol (const basic_symbol& that);
/// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, location_type&& l)
+ : Base (t)
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const location_type& l)
+ : Base (t)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
- basic_symbol (typename Base::kind_type t, const location_type& l);
-
- basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
-
- basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
+ /// Destroy the symbol.
+ ~basic_symbol ()
+ {
+ clear ();
+ }
- basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
+ /// Destroy contents, and record that is empty.
+ void clear ()
+ {
+ // User destructor.
+ symbol_number_type yytype = this->type_get ();
+ basic_symbol<Base>& yysym = *this;
+ (void) yysym;
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+
+ // Type destructor.
+switch (yytype)
+ {
+ case 211: // value
+ case 215: // map_value
+ case 256: // ddns_replace_client_name_value
+ case 278: // socket_type
+ case 281: // outbound_interface_value
+ case 303: // db_type
+ case 397: // hr_mode
+ case 552: // ncr_protocol_value
+ value.template destroy< ElementPtr > ();
+ break;
- basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
+ case 194: // "boolean"
+ value.template destroy< bool > ();
+ break;
- basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l);
+ case 193: // "floating point"
+ value.template destroy< double > ();
+ break;
+ case 192: // "integer"
+ value.template destroy< int64_t > ();
+ break;
- /// Constructor for symbols with semantic value.
- basic_symbol (typename Base::kind_type t,
- const semantic_type& v,
- const location_type& l);
+ case 191: // "constant string"
+ value.template destroy< std::string > ();
+ break;
- /// Destroy the symbol.
- ~basic_symbol ();
+ default:
+ break;
+ }
- /// Destroy contents, and record that is empty.
- void clear ();
+ Base::clear ();
+ }
/// Whether empty.
- bool empty () const;
+ bool empty () const YY_NOEXCEPT;
/// Destructive move, \a s is emptied into this.
void move (basic_symbol& s);
location_type location;
private:
+#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
+ basic_symbol& operator= (const basic_symbol& that);
+#endif
};
/// Type access provider for token (enum) based symbols.
/// Default constructor.
by_type ();
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ by_type (by_type&& that);
+#endif
+
/// Copy constructor.
- by_type (const by_type& other);
+ by_type (const by_type& that);
/// The symbol type as needed by the constructor.
typedef token_type kind_type;
/// The (internal) type number (corresponding to \a type).
/// \a empty when empty.
- symbol_number_type type_get () const;
-
- /// The token.
- token_type token () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The symbol type.
/// \a empty_symbol when empty.
};
/// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
-
- // Symbol constructors declarations.
- static inline
- symbol_type
- make_END (const location_type& l);
-
- static inline
- symbol_type
- make_COMMA (const location_type& l);
-
- static inline
- symbol_type
- make_COLON (const location_type& l);
-
- static inline
- symbol_type
- make_LSQUARE_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_RSQUARE_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_LCURLY_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_RCURLY_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_NULL_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_DATABASES (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_FETCH_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACES_CONFIG (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACES (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_SOCKET_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_RAW (const location_type& l);
-
- static inline
- symbol_type
- make_UDP (const location_type& l);
-
- static inline
- symbol_type
- make_OUTBOUND_INTERFACE (const location_type& l);
-
- static inline
- symbol_type
- make_SAME_AS_INBOUND (const location_type& l);
-
- static inline
- symbol_type
- make_USE_ROUTING (const location_type& l);
-
- static inline
- symbol_type
- make_RE_DETECT (const location_type& l);
-
- static inline
- symbol_type
- make_SANITY_CHECKS (const location_type& l);
-
- static inline
- symbol_type
- make_LEASE_CHECKS (const location_type& l);
-
- static inline
- symbol_type
- make_ECHO_CLIENT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_MATCH_CLIENT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_AUTHORITATIVE (const location_type& l);
-
- static inline
- symbol_type
- make_NEXT_SERVER (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_HOSTNAME (const location_type& l);
-
- static inline
- symbol_type
- make_BOOT_FILE_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_LEASE_DATABASE (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTS_DATABASE (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTS_DATABASES (const location_type& l);
-
- static inline
- symbol_type
- make_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_MEMFILE (const location_type& l);
-
- static inline
- symbol_type
- make_MYSQL (const location_type& l);
-
- static inline
- symbol_type
- make_POSTGRESQL (const location_type& l);
-
- static inline
- symbol_type
- make_CQL (const location_type& l);
-
- static inline
- symbol_type
- make_USER (const location_type& l);
-
- static inline
- symbol_type
- make_PASSWORD (const location_type& l);
-
- static inline
- symbol_type
- make_HOST (const location_type& l);
-
- static inline
- symbol_type
- make_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_PERSIST (const location_type& l);
-
- static inline
- symbol_type
- make_LFC_INTERVAL (const location_type& l);
-
- static inline
- symbol_type
- make_READONLY (const location_type& l);
-
- static inline
- symbol_type
- make_CONNECT_TIMEOUT (const location_type& l);
-
- static inline
- symbol_type
- make_CONTACT_POINTS (const location_type& l);
-
- static inline
- symbol_type
- make_KEYSPACE (const location_type& l);
-
- static inline
- symbol_type
- make_CONSISTENCY (const location_type& l);
-
- static inline
- symbol_type
- make_SERIAL_CONSISTENCY (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECONNECT_TRIES (const location_type& l);
-
- static inline
- symbol_type
- make_RECONNECT_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_REQUEST_TIMEOUT (const location_type& l);
-
- static inline
- symbol_type
- make_TCP_KEEPALIVE (const location_type& l);
+ struct symbol_type : basic_symbol<by_type>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_type> super_type;
- static inline
- symbol_type
- make_TCP_NODELAY (const location_type& l);
+ /// Empty symbol.
+ symbol_type () {}
- static inline
- symbol_type
- make_MAX_ROW_ERRORS (const location_type& l);
+ /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, location_type l)
+ : super_type(token_type (tok), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#else
+ symbol_type (int tok, const location_type& l)
+ : super_type(token_type (tok), l)
+ {
+ YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, bool v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#else
+ symbol_type (int tok, const bool& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, double v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_FLOAT);
+ }
+#else
+ symbol_type (int tok, const double& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_FLOAT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, int64_t v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_INTEGER);
+ }
+#else
+ symbol_type (int tok, const int64_t& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_INTEGER);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, std::string v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_STRING);
+ }
+#else
+ symbol_type (int tok, const std::string& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_STRING);
+ }
+#endif
+ };
- static inline
- symbol_type
- make_VALID_LIFETIME (const location_type& l);
+ /// Build a parser object.
+ Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
+ virtual ~Dhcp4Parser ();
- static inline
- symbol_type
- make_MIN_VALID_LIFETIME (const location_type& l);
+ /// Parse. An alias for parse ().
+ /// \returns 0 iff parsing succeeded.
+ int operator() ();
- static inline
- symbol_type
- make_MAX_VALID_LIFETIME (const location_type& l);
+ /// Parse.
+ /// \returns 0 iff parsing succeeded.
+ virtual int parse ();
- static inline
- symbol_type
- make_RENEW_TIMER (const location_type& l);
+#if PARSER4_DEBUG
+ /// The current debugging stream.
+ std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging stream.
+ void set_debug_stream (std::ostream &);
- static inline
- symbol_type
- make_REBIND_TIMER (const location_type& l);
+ /// Type for debugging levels.
+ typedef int debug_level_type;
+ /// The current debugging level.
+ debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging level.
+ void set_debug_level (debug_level_type l);
+#endif
- static inline
- symbol_type
- make_CALCULATE_TEE_TIMES (const location_type& l);
+ /// Report a syntax error.
+ /// \param loc where the syntax error is found.
+ /// \param msg a description of the syntax error.
+ virtual void error (const location_type& loc, const std::string& msg);
- static inline
- symbol_type
- make_T1_PERCENT (const location_type& l);
+ /// Report a syntax error.
+ void error (const syntax_error& err);
- static inline
- symbol_type
- make_T2_PERCENT (const location_type& l);
-
- static inline
- symbol_type
- make_DECLINE_PROBATION_PERIOD (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_TAG (const location_type& l);
-
- static inline
- symbol_type
- make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l);
-
- static inline
- symbol_type
- make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l);
-
- static inline
- symbol_type
- make_DDNS_SEND_UPDATES (const location_type& l);
-
- static inline
- symbol_type
- make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_DDNS_REPLACE_CLIENT_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DDNS_GENERATED_PREFIX (const location_type& l);
-
- static inline
- symbol_type
- make_DDNS_QUALIFYING_SUFFIX (const location_type& l);
-
- static inline
- symbol_type
- make_STORE_EXTENDED_INFO (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET_4O6_INTERFACE (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET_4O6_INTERFACE_ID (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET_4O6_SUBNET (const location_type& l);
-
- static inline
- symbol_type
- make_OPTION_DEF (const location_type& l);
-
- static inline
- symbol_type
- make_OPTION_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_CODE (const location_type& l);
-
- static inline
- symbol_type
- make_SPACE (const location_type& l);
-
- static inline
- symbol_type
- make_CSV_FORMAT (const location_type& l);
-
- static inline
- symbol_type
- make_ALWAYS_SEND (const location_type& l);
-
- static inline
- symbol_type
- make_RECORD_TYPES (const location_type& l);
-
- static inline
- symbol_type
- make_ENCAPSULATE (const location_type& l);
-
- static inline
- symbol_type
- make_ARRAY (const location_type& l);
-
- static inline
- symbol_type
- make_SHARED_NETWORKS (const location_type& l);
-
- static inline
- symbol_type
- make_POOLS (const location_type& l);
-
- static inline
- symbol_type
- make_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_USER_CONTEXT (const location_type& l);
-
- static inline
- symbol_type
- make_COMMENT (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACE (const location_type& l);
-
- static inline
- symbol_type
- make_ID (const location_type& l);
-
- static inline
- symbol_type
- make_RESERVATION_MODE (const location_type& l);
-
- static inline
- symbol_type
- make_DISABLED (const location_type& l);
-
- static inline
- symbol_type
- make_OUT_OF_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_GLOBAL (const location_type& l);
-
- static inline
- symbol_type
- make_ALL (const location_type& l);
-
- static inline
- symbol_type
- make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_CLASSES (const location_type& l);
-
- static inline
- symbol_type
- make_REQUIRE_CLIENT_CLASSES (const location_type& l);
-
- static inline
- symbol_type
- make_TEST (const location_type& l);
-
- static inline
- symbol_type
- make_ONLY_IF_REQUIRED (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_CLASS (const location_type& l);
-
- static inline
- symbol_type
- make_RESERVATIONS (const location_type& l);
-
- static inline
- symbol_type
- make_DUID (const location_type& l);
-
- static inline
- symbol_type
- make_HW_ADDRESS (const location_type& l);
-
- static inline
- symbol_type
- make_CIRCUIT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_ID (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME (const location_type& l);
-
- static inline
- symbol_type
- make_FLEX_ID (const location_type& l);
-
- static inline
- symbol_type
- make_RELAY (const location_type& l);
-
- static inline
- symbol_type
- make_IP_ADDRESS (const location_type& l);
-
- static inline
- symbol_type
- make_IP_ADDRESSES (const location_type& l);
-
- static inline
- symbol_type
- make_HOOKS_LIBRARIES (const location_type& l);
-
- static inline
- symbol_type
- make_LIBRARY (const location_type& l);
-
- static inline
- symbol_type
- make_PARAMETERS (const location_type& l);
-
- static inline
- symbol_type
- make_EXPIRED_LEASES_PROCESSING (const location_type& l);
-
- static inline
- symbol_type
- make_RECLAIM_TIMER_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_HOLD_RECLAIMED_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECLAIM_LEASES (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECLAIM_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_UNWARNED_RECLAIM_CYCLES (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP4O6_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_MULTI_THREADING (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_MULTI_THREADING (const location_type& l);
-
- static inline
- symbol_type
- make_THREAD_POOL_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_PACKET_QUEUE_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_CONTROL_SOCKET (const location_type& l);
-
- static inline
- symbol_type
- make_SOCKET_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_SOCKET_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_QUEUE_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_QUEUE (const location_type& l);
-
- static inline
- symbol_type
- make_QUEUE_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_CAPACITY (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_DDNS (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_UPDATES (const location_type& l);
-
- static inline
- symbol_type
- make_QUALIFYING_SUFFIX (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_IP (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_SENDER_IP (const location_type& l);
-
- static inline
- symbol_type
- make_SENDER_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_QUEUE_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_NCR_PROTOCOL (const location_type& l);
-
- static inline
- symbol_type
- make_NCR_FORMAT (const location_type& l);
-
- static inline
- symbol_type
- make_OVERRIDE_NO_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_OVERRIDE_CLIENT_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_REPLACE_CLIENT_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_GENERATED_PREFIX (const location_type& l);
-
- static inline
- symbol_type
- make_TCP (const location_type& l);
-
- static inline
- symbol_type
- make_JSON (const location_type& l);
-
- static inline
- symbol_type
- make_WHEN_PRESENT (const location_type& l);
-
- static inline
- symbol_type
- make_NEVER (const location_type& l);
-
- static inline
- symbol_type
- make_ALWAYS (const location_type& l);
-
- static inline
- symbol_type
- make_WHEN_NOT_PRESENT (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME_CHAR_SET (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l);
-
- static inline
- symbol_type
- make_LOGGING (const location_type& l);
-
- static inline
- symbol_type
- make_LOGGERS (const location_type& l);
-
- static inline
- symbol_type
- make_OUTPUT_OPTIONS (const location_type& l);
-
- static inline
- symbol_type
- make_OUTPUT (const location_type& l);
-
- static inline
- symbol_type
- make_DEBUGLEVEL (const location_type& l);
-
- static inline
- symbol_type
- make_SEVERITY (const location_type& l);
-
- static inline
- symbol_type
- make_FLUSH (const location_type& l);
-
- static inline
- symbol_type
- make_MAXSIZE (const location_type& l);
-
- static inline
- symbol_type
- make_MAXVER (const location_type& l);
-
- static inline
- symbol_type
- make_PATTERN (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP6 (const location_type& l);
-
- static inline
- symbol_type
- make_DHCPDDNS (const location_type& l);
-
- static inline
- symbol_type
- make_CONTROL_AGENT (const location_type& l);
-
- static inline
- symbol_type
- make_TOPLEVEL_JSON (const location_type& l);
-
- static inline
- symbol_type
- make_TOPLEVEL_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_INTERFACES4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_SUBNET4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_POOL4 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_RESERVATION (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DEFS (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DEF (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_HOOKS_LIBRARY (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_DHCP_DDNS (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_LOGGING (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_CONFIG_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_STRING (const std::string& v, const location_type& l);
-
- static inline
- symbol_type
- make_INTEGER (const int64_t& v, const location_type& l);
-
- static inline
- symbol_type
- make_FLOAT (const double& v, const location_type& l);
-
- static inline
- symbol_type
- make_BOOLEAN (const bool& v, const location_type& l);
-
-
- /// Build a parser object.
- Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
- virtual ~Dhcp4Parser ();
-
- /// Parse.
- /// \returns 0 iff parsing succeeded.
- virtual int parse ();
-
-#if PARSER4_DEBUG
- /// The current debugging stream.
- std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging stream.
- void set_debug_stream (std::ostream &);
-
- /// Type for debugging levels.
- typedef int debug_level_type;
- /// The current debugging level.
- debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging level.
- void set_debug_level (debug_level_type l);
+ // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_END (location_type l)
+ {
+ return symbol_type (token::TOKEN_END, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_END (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_END, l);
+ }
#endif
-
- /// Report a syntax error.
- /// \param loc where the syntax error is found.
- /// \param msg a description of the syntax error.
- virtual void error (const location_type& loc, const std::string& msg);
-
- /// Report a syntax error.
- void error (const syntax_error& err);
-
- private:
- /// This class is not copyable.
- Dhcp4Parser (const Dhcp4Parser&);
- Dhcp4Parser& operator= (const Dhcp4Parser&);
-
- /// State numbers.
- typedef int state_type;
-
- /// Generate an error message.
- /// \param yystate the state where the error occurred.
- /// \param yyla the lookahead token.
- virtual std::string yysyntax_error_ (state_type yystate,
- const symbol_type& yyla) const;
-
- /// Compute post-reduction state.
- /// \param yystate the current state
- /// \param yysym the nonterminal to push on the stack
- state_type yy_lr_goto_state_ (state_type yystate, int yysym);
-
- /// Whether the given \c yypact_ value indicates a defaulted state.
- /// \param yyvalue the value to check
- static bool yy_pact_value_is_default_ (int yyvalue);
-
- /// Whether the given \c yytable_ value indicates a syntax error.
- /// \param yyvalue the value to check
- static bool yy_table_value_is_error_ (int yyvalue);
-
- static const short int yypact_ninf_;
- static const signed char yytable_ninf_;
-
- /// Convert a scanner token number \a t to a symbol number.
- static token_number_type yytranslate_ (token_type t);
-
- // Tables.
- // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- // STATE-NUM.
- static const short int yypact_[];
-
- // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
- // Performed when YYTABLE does not specify something else to do. Zero
- // means the default is an error.
- static const unsigned short int yydefact_[];
-
- // YYPGOTO[NTERM-NUM].
- static const short int yypgoto_[];
-
- // YYDEFGOTO[NTERM-NUM].
- static const short int yydefgoto_[];
-
- // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
- // positive, shift that token. If negative, reduce the rule whose
- // number is the opposite. If YYTABLE_NINF, syntax error.
- static const unsigned short int yytable_[];
-
- static const short int yycheck_[];
-
- // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- // symbol of state STATE-NUM.
- static const unsigned short int yystos_[];
-
- // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
- static const unsigned short int yyr1_[];
-
- // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
- static const unsigned char yyr2_[];
-
-
- /// Convert the symbol name \a n to a form suitable for a diagnostic.
- static std::string yytnamerr_ (const char *n);
-
-
- /// For a symbol, its name in clear.
- static const char* const yytname_[];
-#if PARSER4_DEBUG
- // YYRLINE[YYN] -- Source line where rule number YYN was defined.
- static const unsigned short int yyrline_[];
- /// Report on the debug stream that the rule \a r is going to be reduced.
- virtual void yy_reduce_print_ (int r);
- /// Print the state stack on the debug stream.
- virtual void yystack_print_ ();
-
- // Debugging.
- int yydebug_;
- std::ostream* yycdebug_;
-
- /// \brief Display a symbol type, value and location.
- /// \param yyo The output stream.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMA (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COLON (location_type l)
+ {
+ return symbol_type (token::TOKEN_COLON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COLON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COLON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NULL_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NULL_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RAW (location_type l)
+ {
+ return symbol_type (token::TOKEN_RAW, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RAW (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RAW, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UDP (location_type l)
+ {
+ return symbol_type (token::TOKEN_UDP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UDP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UDP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTBOUND_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTBOUND_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SAME_AS_INBOUND (location_type l)
+ {
+ return symbol_type (token::TOKEN_SAME_AS_INBOUND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SAME_AS_INBOUND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USE_ROUTING (location_type l)
+ {
+ return symbol_type (token::TOKEN_USE_ROUTING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USE_ROUTING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USE_ROUTING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RE_DETECT (location_type l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RE_DETECT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SANITY_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SANITY_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ECHO_CLIENT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ECHO_CLIENT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ECHO_CLIENT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MATCH_CLIENT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_MATCH_CLIENT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MATCH_CLIENT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_AUTHORITATIVE (location_type l)
+ {
+ return symbol_type (token::TOKEN_AUTHORITATIVE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_AUTHORITATIVE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_AUTHORITATIVE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NEXT_SERVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_NEXT_SERVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NEXT_SERVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NEXT_SERVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_HOSTNAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_HOSTNAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_HOSTNAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOT_FILE_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOT_FILE_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOT_FILE_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MEMFILE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MEMFILE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MYSQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MYSQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POSTGRESQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POSTGRESQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PASSWORD (location_type l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PASSWORD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PERSIST (location_type l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PERSIST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LFC_INTERVAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LFC_INTERVAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_READONLY (location_type l)
+ {
+ return symbol_type (token::TOKEN_READONLY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_READONLY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_READONLY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTACT_POINTS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTACT_POINTS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_KEYSPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_KEYSPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_NODELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_NODELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_ROW_ERRORS (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_ROW_ERRORS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_ROW_ERRORS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RENEW_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RENEW_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REBIND_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REBIND_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T1_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T1_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T2_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T2_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (location_type l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_TAG (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_TAG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_COUNT (location_type l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_AGE (location_type l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_SEND_UPDATES (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_SEND_UPDATES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_NO_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_CLIENT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_REPLACE_CLIENT_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_GENERATED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_GENERATED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_QUALIFYING_SUFFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STORE_EXTENDED_INFO (location_type l)
+ {
+ return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STORE_EXTENDED_INFO (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET_4O6_SUBNET (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET_4O6_SUBNET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_CODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CSV_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CSV_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS_SEND (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS_SEND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECORD_TYPES (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECORD_TYPES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENCAPSULATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENCAPSULATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ARRAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ARRAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SHARED_NETWORKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SHARED_NETWORKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOLS (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOLS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOLS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOLS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER_CONTEXT (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER_CONTEXT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATION_MODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATION_MODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DISABLED (location_type l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DISABLED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUT_OF_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUT_OF_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GLOBAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GLOBAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALL (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TEST (location_type l)
+ {
+ return symbol_type (token::TOKEN_TEST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TEST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TEST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (location_type l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DUID (location_type l)
+ {
+ return symbol_type (token::TOKEN_DUID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DUID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DUID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HW_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HW_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CIRCUIT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_CIRCUIT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CIRCUIT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CIRCUIT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLEX_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLEX_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_RELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PARAMETERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PARAMETERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (location_type l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4O6_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4O6_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_MULTI_THREADING (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_MULTI_THREADING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_MULTI_THREADING (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_MULTI_THREADING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_THREAD_POOL_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_THREAD_POOL_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_THREAD_POOL_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PACKET_QUEUE_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PACKET_QUEUE_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_SOCKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_SOCKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_QUEUE (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_QUEUE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_QUEUE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_QUEUE_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_QUEUE_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_QUEUE_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_QUEUE_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CAPACITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_CAPACITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CAPACITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CAPACITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_UPDATES (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_UPDATES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_PROTOCOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_PROTOCOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GENERATED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GENERATED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NEVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_NEVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NEVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NEVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DEBUGLEVEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DEBUGLEVEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SEVERITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SEVERITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXSIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXSIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PATTERN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PATTERN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCPDDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCPDDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_INTERFACES4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_INTERFACES4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_SUBNET4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_SUBNET4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_POOL4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_POOL4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_RESERVATION (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_RESERVATION (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STRING (std::string v, location_type l)
+ {
+ return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTEGER (int64_t v, location_type l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLOAT (double v, location_type l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOLEAN (bool v, location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOLEAN (const bool& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ }
#endif
- /// \brief Reclaim the memory associated to a symbol.
- /// \param yymsg Why this token is reclaimed.
- /// If null, print nothing.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
-
- private:
- /// Type access provider for state based symbols.
- struct by_state
- {
- /// Default constructor.
- by_state ();
-
- /// The symbol type as needed by the constructor.
- typedef state_type kind_type;
-
- /// Constructor.
- by_state (kind_type s);
-
- /// Copy constructor.
- by_state (const by_state& other);
-
- /// Record that this symbol is empty.
- void clear ();
-
- /// Steal the symbol type from \a that.
- void move (by_state& that);
-
- /// The (internal) type number (corresponding to \a state).
- /// \a empty_symbol when empty.
- symbol_number_type type_get () const;
-
- /// The state number used to denote an empty symbol.
- enum { empty_state = -1 };
-
- /// The state.
- /// \a empty when empty.
- state_type state;
- };
-
- /// "Internal" symbol: element of the stack.
- struct stack_symbol_type : basic_symbol<by_state>
- {
- /// Superclass.
- typedef basic_symbol<by_state> super_type;
- /// Construct an empty symbol.
- stack_symbol_type ();
- /// Steal the contents from \a sym to build this.
- stack_symbol_type (state_type s, symbol_type& sym);
- /// Assignment, needed by push_back.
- stack_symbol_type& operator= (const stack_symbol_type& that);
- };
-
- /// Stack type.
- typedef stack<stack_symbol_type> stack_type;
-
- /// The stack.
- stack_type yystack_;
-
- /// Push a new state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the symbol
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, stack_symbol_type& s);
-
- /// Push a new look ahead token on the state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the state
- /// \param sym the symbol (for its value and location).
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, state_type s, symbol_type& sym);
-
- /// Pop \a n symbols the three stacks.
- void yypop_ (unsigned int n = 1);
-
- /// Constants.
- enum
- {
- yyeof_ = 0,
- yylast_ = 1357, ///< Last index in yytable_.
- yynnts_ = 417, ///< Number of nonterminal symbols.
- yyfinal_ = 30, ///< Termination state number.
- yyterror_ = 1,
- yyerrcode_ = 256,
- yyntokens_ = 195 ///< Number of tokens.
- };
-
-
- // User arguments.
- isc::dhcp::Parser4Context& ctx;
- };
-
- // Symbol number corresponding to token number t.
- inline
- Dhcp4Parser::token_number_type
- Dhcp4Parser::yytranslate_ (token_type t)
- {
- static
- const token_number_type
- translate_table[] =
- {
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194
- };
- const unsigned int user_token_number_max_ = 449;
- const token_number_type undef_token_ = 2;
-
- if (static_cast<int>(t) <= yyeof_)
- return yyeof_;
- else if (static_cast<unsigned int> (t) <= user_token_number_max_)
- return translate_table[t];
- else
- return undef_token_;
- }
-
- inline
- Dhcp4Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
- : std::runtime_error (m)
- , location (l)
- {}
-
- // basic_symbol.
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::basic_symbol ()
- : value ()
- {}
-
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
- : Base (other)
- , value ()
- , location (other.location)
- {
- switch (other.type_get ())
- {
- case 211: // value
- case 215: // map_value
- case 256: // ddns_replace_client_name_value
- case 278: // socket_type
- case 281: // outbound_interface_value
- case 303: // db_type
- case 397: // hr_mode
- case 552: // ncr_protocol_value
- value.copy< ElementPtr > (other.value);
- break;
-
- case 194: // "boolean"
- value.copy< bool > (other.value);
- break;
-
- case 193: // "floating point"
- value.copy< double > (other.value);
- break;
-
- case 192: // "integer"
- value.copy< int64_t > (other.value);
- break;
-
- case 191: // "constant string"
- value.copy< std::string > (other.value);
- break;
-
- default:
- break;
- }
-
- }
-
-
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
- : Base (t)
- , value ()
- , location (l)
- {
- (void) v;
- switch (this->type_get ())
- {
- case 211: // value
- case 215: // map_value
- case 256: // ddns_replace_client_name_value
- case 278: // socket_type
- case 281: // outbound_interface_value
- case 303: // db_type
- case 397: // hr_mode
- case 552: // ncr_protocol_value
- value.copy< ElementPtr > (v);
- break;
-
- case 194: // "boolean"
- value.copy< bool > (v);
- break;
-
- case 193: // "floating point"
- value.copy< double > (v);
- break;
-
- case 192: // "integer"
- value.copy< int64_t > (v);
- break;
-
- case 191: // "constant string"
- value.copy< std::string > (v);
- break;
-
- default:
- break;
- }
-}
-
-
- // Implementation of basic_symbol constructor for each type.
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
- : Base (t)
- , value ()
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
-
- template <typename Base>
- inline
- Dhcp4Parser::basic_symbol<Base>::~basic_symbol ()
- {
- clear ();
- }
-
- template <typename Base>
- inline
- void
- Dhcp4Parser::basic_symbol<Base>::clear ()
- {
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- basic_symbol<Base>& yysym = *this;
- (void) yysym;
- switch (yytype)
- {
- default:
- break;
- }
-
- // Type destructor.
- switch (yytype)
- {
- case 211: // value
- case 215: // map_value
- case 256: // ddns_replace_client_name_value
- case 278: // socket_type
- case 281: // outbound_interface_value
- case 303: // db_type
- case 397: // hr_mode
- case 552: // ncr_protocol_value
- value.template destroy< ElementPtr > ();
- break;
-
- case 194: // "boolean"
- value.template destroy< bool > ();
- break;
-
- case 193: // "floating point"
- value.template destroy< double > ();
- break;
-
- case 192: // "integer"
- value.template destroy< int64_t > ();
- break;
-
- case 191: // "constant string"
- value.template destroy< std::string > ();
- break;
-
- default:
- break;
- }
-
- Base::clear ();
- }
-
- template <typename Base>
- inline
- bool
- Dhcp4Parser::basic_symbol<Base>::empty () const
- {
- return Base::type_get () == empty_symbol;
- }
-
- template <typename Base>
- inline
- void
- Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
- {
- super_type::move(s);
- switch (this->type_get ())
- {
- case 211: // value
- case 215: // map_value
- case 256: // ddns_replace_client_name_value
- case 278: // socket_type
- case 281: // outbound_interface_value
- case 303: // db_type
- case 397: // hr_mode
- case 552: // ncr_protocol_value
- value.move< ElementPtr > (s.value);
- break;
-
- case 194: // "boolean"
- value.move< bool > (s.value);
- break;
-
- case 193: // "floating point"
- value.move< double > (s.value);
- break;
-
- case 192: // "integer"
- value.move< int64_t > (s.value);
- break;
-
- case 191: // "constant string"
- value.move< std::string > (s.value);
- break;
-
- default:
- break;
- }
-
- location = s.location;
- }
-
- // by_type.
- inline
- Dhcp4Parser::by_type::by_type ()
- : type (empty_symbol)
- {}
-
- inline
- Dhcp4Parser::by_type::by_type (const by_type& other)
- : type (other.type)
- {}
-
- inline
- Dhcp4Parser::by_type::by_type (token_type t)
- : type (yytranslate_ (t))
- {}
-
- inline
- void
- Dhcp4Parser::by_type::clear ()
- {
- type = empty_symbol;
- }
-
- inline
- void
- Dhcp4Parser::by_type::move (by_type& that)
- {
- type = that.type;
- that.clear ();
- }
-
- inline
- int
- Dhcp4Parser::by_type::type_get () const
- {
- return type;
- }
-
- inline
- Dhcp4Parser::token_type
- Dhcp4Parser::by_type::token () const
- {
- // YYTOKNUM[NUM] -- (External) token number corresponding to the
- // (internal) symbol number NUM (which must be that of a token). */
- static
- const unsigned short int
- yytoken_number_[] =
- {
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449
- };
- return static_cast<token_type> (yytoken_number_[type]);
- }
- // Implementation of make_symbol for each symbol type.
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_END (const location_type& l)
- {
- return symbol_type (token::TOKEN_END, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COMMA (const location_type& l)
- {
- return symbol_type (token::TOKEN_COMMA, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COLON (const location_type& l)
- {
- return symbol_type (token::TOKEN_COLON, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LSQUARE_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RSQUARE_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LCURLY_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RCURLY_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NULL_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_NULL_TYPE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP4, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_DATABASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACES_CONFIG (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACES (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_SOCKET_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RAW (const location_type& l)
- {
- return symbol_type (token::TOKEN_RAW, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_UDP (const location_type& l)
- {
- return symbol_type (token::TOKEN_UDP, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTBOUND_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SAME_AS_INBOUND (const location_type& l)
- {
- return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USE_ROUTING (const location_type& l)
- {
- return symbol_type (token::TOKEN_USE_ROUTING, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RE_DETECT (const location_type& l)
- {
- return symbol_type (token::TOKEN_RE_DETECT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SANITY_CHECKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SANITY_CHECKS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LEASE_CHECKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_LEASE_CHECKS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MATCH_CLIENT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_AUTHORITATIVE (const location_type& l)
- {
- return symbol_type (token::TOKEN_AUTHORITATIVE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NEXT_SERVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_NEXT_SERVER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_HOSTNAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_BOOT_FILE_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LEASE_DATABASE (const location_type& l)
- {
- return symbol_type (token::TOKEN_LEASE_DATABASE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTS_DATABASE (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTS_DATABASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_TYPE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MEMFILE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MEMFILE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MYSQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_MYSQL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POSTGRESQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_POSTGRESQL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_CQL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USER (const location_type& l)
- {
- return symbol_type (token::TOKEN_USER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PASSWORD (const location_type& l)
- {
- return symbol_type (token::TOKEN_PASSWORD, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOST (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOST, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_PORT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PERSIST (const location_type& l)
- {
- return symbol_type (token::TOKEN_PERSIST, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LFC_INTERVAL (const location_type& l)
- {
- return symbol_type (token::TOKEN_LFC_INTERVAL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_READONLY (const location_type& l)
- {
- return symbol_type (token::TOKEN_READONLY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONNECT_TIMEOUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTACT_POINTS (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTACT_POINTS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_KEYSPACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_KEYSPACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONSISTENCY (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONSISTENCY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERIAL_CONSISTENCY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECONNECT_TRIES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REQUEST_TIMEOUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP_NODELAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP_NODELAY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_ROW_ERRORS (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_VALID_LIFETIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MIN_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RENEW_TIMER (const location_type& l)
- {
- return symbol_type (token::TOKEN_RENEW_TIMER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REBIND_TIMER (const location_type& l)
- {
- return symbol_type (token::TOKEN_REBIND_TIMER, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CALCULATE_TEE_TIMES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_T1_PERCENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_T1_PERCENT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_T2_PERCENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_T2_PERCENT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
- {
- return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_TAG (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_TAG, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
- {
- return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
- {
- return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DDNS_SEND_UPDATES (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DDNS_GENERATED_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_STORE_EXTENDED_INFO (const location_type& l)
- {
- return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET4, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_SUBNET (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OPTION_DEF (const location_type& l)
- {
- return symbol_type (token::TOKEN_OPTION_DEF, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OPTION_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_OPTION_DATA, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_NAME, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_DATA, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CODE (const location_type& l)
- {
- return symbol_type (token::TOKEN_CODE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SPACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SPACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CSV_FORMAT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CSV_FORMAT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALWAYS_SEND (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALWAYS_SEND, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECORD_TYPES (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECORD_TYPES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENCAPSULATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENCAPSULATE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ARRAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_ARRAY, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SHARED_NETWORKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POOLS (const location_type& l)
- {
- return symbol_type (token::TOKEN_POOLS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_POOL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USER_CONTEXT (const location_type& l)
- {
- return symbol_type (token::TOKEN_USER_CONTEXT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COMMENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_COMMENT, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_ID, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RESERVATION_MODE (const location_type& l)
- {
- return symbol_type (token::TOKEN_RESERVATION_MODE, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DISABLED (const location_type& l)
- {
- return symbol_type (token::TOKEN_DISABLED, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUT_OF_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUT_OF_POOL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_GLOBAL (const location_type& l)
- {
- return symbol_type (token::TOKEN_GLOBAL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALL (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALL, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_CLASSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TEST (const location_type& l)
- {
- return symbol_type (token::TOKEN_TEST, l);
- }
-
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ONLY_IF_REQUIRED (const location_type& l)
- {
- return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_CLASS (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASS, l);
- }
+ private:
+ /// This class is not copyable.
+ Dhcp4Parser (const Dhcp4Parser&);
+ Dhcp4Parser& operator= (const Dhcp4Parser&);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RESERVATIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_RESERVATIONS, l);
- }
+ /// Stored state numbers (used for stacks).
+ typedef short state_type;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DUID (const location_type& l)
- {
- return symbol_type (token::TOKEN_DUID, l);
- }
+ /// Generate an error message.
+ /// \param yystate the state where the error occurred.
+ /// \param yyla the lookahead token.
+ virtual std::string yysyntax_error_ (state_type yystate,
+ const symbol_type& yyla) const;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HW_ADDRESS (const location_type& l)
- {
- return symbol_type (token::TOKEN_HW_ADDRESS, l);
- }
+ /// Compute post-reduction state.
+ /// \param yystate the current state
+ /// \param yysym the nonterminal to push on the stack
+ static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CIRCUIT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_CIRCUIT_ID, l);
- }
+ /// Whether the given \c yypact_ value indicates a defaulted state.
+ /// \param yyvalue the value to check
+ static bool yy_pact_value_is_default_ (int yyvalue);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_ID, l);
- }
+ /// Whether the given \c yytable_ value indicates a syntax error.
+ /// \param yyvalue the value to check
+ static bool yy_table_value_is_error_ (int yyvalue);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTNAME, l);
- }
+ static const short yypact_ninf_;
+ static const signed char yytable_ninf_;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLEX_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLEX_ID, l);
- }
+ /// Convert a scanner token number \a t to a symbol number.
+ /// In theory \a t should be a token_type, but character literals
+ /// are valid, yet not members of the token_type enum.
+ static token_number_type yytranslate_ (int t);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RELAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_RELAY, l);
- }
+ // Tables.
+ // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ // STATE-NUM.
+ static const short yypact_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_IP_ADDRESS (const location_type& l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESS, l);
- }
+ // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ // Performed when YYTABLE does not specify something else to do. Zero
+ // means the default is an error.
+ static const short yydefact_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_IP_ADDRESSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESSES, l);
- }
+ // YYPGOTO[NTERM-NUM].
+ static const short yypgoto_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOOKS_LIBRARIES (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
- }
+ // YYDEFGOTO[NTERM-NUM].
+ static const short yydefgoto_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LIBRARY (const location_type& l)
- {
- return symbol_type (token::TOKEN_LIBRARY, l);
- }
+ // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ // positive, shift that token. If negative, reduce the rule whose
+ // number is the opposite. If YYTABLE_NINF, syntax error.
+ static const short yytable_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PARAMETERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_PARAMETERS, l);
- }
+ static const short yycheck_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l)
- {
- return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
- }
+ // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ // symbol of state STATE-NUM.
+ static const short yystos_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
- }
+ // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+ static const short yyr1_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
- }
+ // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+ static const signed char yyr2_[];
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOLD_RECLAIMED_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECLAIM_LEASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
- }
+ /// Convert the symbol name \a n to a form suitable for a diagnostic.
+ static std::string yytnamerr_ (const char *n);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECLAIM_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
- {
- return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
- }
+ /// For a symbol, its name in clear.
+ static const char* const yytname_[];
+#if PARSER4_DEBUG
+ // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+ static const short yyrline_[];
+ /// Report on the debug stream that the rule \a r is going to be reduced.
+ virtual void yy_reduce_print_ (int r);
+ /// Print the state stack on the debug stream.
+ virtual void yystack_print_ ();
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP4O6_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
- }
+ /// Debugging level.
+ int yydebug_;
+ /// Debug stream.
+ std::ostream* yycdebug_;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_MULTI_THREADING (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
- }
+ /// \brief Display a symbol type, value and location.
+ /// \param yyo The output stream.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#endif
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENABLE_MULTI_THREADING (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
- }
+ /// \brief Reclaim the memory associated to a symbol.
+ /// \param yymsg Why this token is reclaimed.
+ /// If null, print nothing.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_THREAD_POOL_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
- }
+ private:
+ /// Type access provider for state based symbols.
+ struct by_state
+ {
+ /// Default constructor.
+ by_state () YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PACKET_QUEUE_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l);
- }
+ /// The symbol type as needed by the constructor.
+ typedef state_type kind_type;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTROL_SOCKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
- }
+ /// Constructor.
+ by_state (kind_type s) YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SOCKET_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SOCKET_TYPE, l);
- }
+ /// Copy constructor.
+ by_state (const by_state& that) YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SOCKET_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_SOCKET_NAME, l);
- }
+ /// Record that this symbol is empty.
+ void clear () YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
- }
+ /// Steal the symbol type from \a that.
+ void move (by_state& that);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENABLE_QUEUE (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
- }
+ /// The (internal) type number (corresponding to \a state).
+ /// \a empty_symbol when empty.
+ symbol_number_type type_get () const YY_NOEXCEPT;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_QUEUE_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_QUEUE_TYPE, l);
- }
+ /// The state number used to denote an empty symbol.
+ /// We use the initial state, as it does not have a value.
+ enum { empty_state = 0 };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CAPACITY (const location_type& l)
- {
- return symbol_type (token::TOKEN_CAPACITY, l);
- }
+ /// The state.
+ /// \a empty when empty.
+ state_type state;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_DDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_DDNS, l);
- }
+ /// "Internal" symbol: element of the stack.
+ struct stack_symbol_type : basic_symbol<by_state>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_state> super_type;
+ /// Construct an empty symbol.
+ stack_symbol_type ();
+ /// Move or copy construction.
+ stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+ /// Steal the contents from \a sym to build this.
+ stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if YY_CPLUSPLUS < 201103L
+ /// Assignment, needed by push_back by some old implementations.
+ /// Moves the contents of that.
+ stack_symbol_type& operator= (stack_symbol_type& that);
+
+ /// Assignment, needed by push_back by other implementations.
+ /// Needed by some other old implementations.
+ stack_symbol_type& operator= (const stack_symbol_type& that);
+#endif
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENABLE_UPDATES (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
- }
+ /// A stack with random access from its top.
+ template <typename T, typename S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+ typedef typename S::size_type size_type;
+ typedef typename std::ptrdiff_t index_type;
+
+ stack (size_type n = 200)
+ : seq_ (n)
+ {}
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (index_type i) const
+ {
+ return seq_[size_type (size () - 1 - i)];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (index_type i)
+ {
+ return seq_[size_type (size () - 1 - i)];
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ void
+ push (YY_MOVE_REF (T) t)
+ {
+ seq_.push_back (T ());
+ operator[] (0).move (t);
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_QUALIFYING_SUFFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
- }
+ /// Pop elements from the stack.
+ void
+ pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
+ {
+ for (; 0 < n; --n)
+ seq_.pop_back ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_IP (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_IP, l);
- }
+ /// Pop all elements from the stack.
+ void
+ clear () YY_NOEXCEPT
+ {
+ seq_.clear ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_PORT, l);
- }
+ /// Number of elements on the stack.
+ index_type
+ size () const YY_NOEXCEPT
+ {
+ return index_type (seq_.size ());
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SENDER_IP (const location_type& l)
- {
- return symbol_type (token::TOKEN_SENDER_IP, l);
- }
+ std::ptrdiff_t
+ ssize () const YY_NOEXCEPT
+ {
+ return std::ptrdiff_t (size ());
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SENDER_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_SENDER_PORT, l);
- }
+ /// Iterator on top of the stack (going downwards).
+ const_iterator
+ begin () const YY_NOEXCEPT
+ {
+ return seq_.rbegin ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_QUEUE_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
- }
+ /// Bottom of the stack.
+ const_iterator
+ end () const YY_NOEXCEPT
+ {
+ return seq_.rend ();
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NCR_PROTOCOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
- }
+ /// Present a slice of the top of a stack.
+ class slice
+ {
+ public:
+ slice (const stack& stack, index_type range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ const T&
+ operator[] (index_type i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const stack& stack_;
+ index_type range_;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NCR_FORMAT (const location_type& l)
- {
- return symbol_type (token::TOKEN_NCR_FORMAT, l);
- }
+ private:
+ stack (const stack&);
+ stack& operator= (const stack&);
+ /// The wrapped container.
+ S seq_;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
- }
+ /// Stack type.
+ typedef stack<stack_symbol_type> stack_type;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
- }
+ /// The stack.
+ stack_type yystack_;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_GENERATED_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
- }
+ /// Push a new state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param sym the symbol
+ /// \warning the contents of \a s.value is stolen.
+ void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP, l);
- }
+ /// Push a new look ahead token on the state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param s the state
+ /// \param sym the symbol (for its value and location).
+ /// \warning the contents of \a sym.value is stolen.
+ void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_JSON (const location_type& l)
- {
- return symbol_type (token::TOKEN_JSON, l);
- }
+ /// Pop \a n symbols from the stack.
+ void yypop_ (int n = 1);
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_WHEN_PRESENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_WHEN_PRESENT, l);
- }
+ /// Some specific tokens.
+ static const token_number_type yy_error_token_ = 1;
+ static const token_number_type yy_undef_token_ = 2;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NEVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_NEVER, l);
- }
+ /// Constants.
+ enum
+ {
+ yyeof_ = 0,
+ yylast_ = 1357, ///< Last index in yytable_.
+ yynnts_ = 417, ///< Number of nonterminal symbols.
+ yyfinal_ = 30, ///< Termination state number.
+ yyntokens_ = 195 ///< Number of tokens.
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALWAYS (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALWAYS, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_WHEN_NOT_PRESENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
- }
+ // User arguments.
+ isc::dhcp::Parser4Context& ctx;
+ };
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
+ inline
+ Dhcp4Parser::token_number_type
+ Dhcp4Parser::yytranslate_ (int t)
{
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
- }
+ // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+ // TOKEN-NUM as returned by yylex.
+ static
+ const token_number_type
+ translate_table[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194
+ };
+ const int user_token_number_max_ = 449;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+ if (t <= 0)
+ return yyeof_;
+ else if (t <= user_token_number_max_)
+ return translate_table[t];
+ else
+ return yy_undef_token_;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LOGGING (const location_type& l)
+ // basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
+ template <typename Base>
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+ : Base (std::move (that))
+ , value ()
+ , location (std::move (that.location))
{
- return symbol_type (token::TOKEN_LOGGING, l);
- }
+ switch (this->type_get ())
+ {
+ case 211: // value
+ case 215: // map_value
+ case 256: // ddns_replace_client_name_value
+ case 278: // socket_type
+ case 281: // outbound_interface_value
+ case 303: // db_type
+ case 397: // hr_mode
+ case 552: // ncr_protocol_value
+ value.move< ElementPtr > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LOGGERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_LOGGERS, l);
- }
+ case 194: // "boolean"
+ value.move< bool > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTPUT_OPTIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
- }
+ case 193: // "floating point"
+ value.move< double > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTPUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTPUT, l);
- }
+ case 192: // "integer"
+ value.move< int64_t > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DEBUGLEVEL (const location_type& l)
- {
- return symbol_type (token::TOKEN_DEBUGLEVEL, l);
- }
+ case 191: // "constant string"
+ value.move< std::string > (std::move (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SEVERITY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SEVERITY, l);
- }
+ default:
+ break;
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLUSH (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLUSH, l);
}
+#endif
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAXSIZE (const location_type& l)
+ template <typename Base>
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+ : Base (that)
+ , value ()
+ , location (that.location)
{
- return symbol_type (token::TOKEN_MAXSIZE, l);
- }
+ switch (this->type_get ())
+ {
+ case 211: // value
+ case 215: // map_value
+ case 256: // ddns_replace_client_name_value
+ case 278: // socket_type
+ case 281: // outbound_interface_value
+ case 303: // db_type
+ case 397: // hr_mode
+ case 552: // ncr_protocol_value
+ value.copy< ElementPtr > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAXVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAXVER, l);
- }
+ case 194: // "boolean"
+ value.copy< bool > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PATTERN (const location_type& l)
- {
- return symbol_type (token::TOKEN_PATTERN, l);
- }
+ case 193: // "floating point"
+ value.copy< double > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP6, l);
- }
+ case 192: // "integer"
+ value.copy< int64_t > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCPDDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCPDDNS, l);
- }
+ case 191: // "constant string"
+ value.copy< std::string > (YY_MOVE (that.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTROL_AGENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTROL_AGENT, l);
- }
+ default:
+ break;
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TOPLEVEL_JSON (const location_type& l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TOPLEVEL_DHCP4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_DHCP4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_DHCP4, l);
- }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_INTERFACES4 (const location_type& l)
+ template <typename Base>
+ bool
+ Dhcp4Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
+ return Base::type_get () == empty_symbol;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_SUBNET4 (const location_type& l)
+ template <typename Base>
+ void
+ Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
{
- return symbol_type (token::TOKEN_SUB_SUBNET4, l);
- }
+ super_type::move (s);
+ switch (this->type_get ())
+ {
+ case 211: // value
+ case 215: // map_value
+ case 256: // ddns_replace_client_name_value
+ case 278: // socket_type
+ case 281: // outbound_interface_value
+ case 303: // db_type
+ case 397: // hr_mode
+ case 552: // ncr_protocol_value
+ value.move< ElementPtr > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_POOL4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_POOL4, l);
- }
+ case 194: // "boolean"
+ value.move< bool > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_RESERVATION (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_RESERVATION, l);
- }
+ case 193: // "floating point"
+ value.move< double > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DEFS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
- }
+ case 192: // "integer"
+ value.move< int64_t > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DEF (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
- }
+ case 191: // "constant string"
+ value.move< std::string > (YY_MOVE (s.value));
+ break;
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
- }
+ default:
+ break;
+ }
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+ location = YY_MOVE (s.location);
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_DHCP_DDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
- }
+ // by_type.
+ inline
+ Dhcp4Parser::by_type::by_type ()
+ : type (empty_symbol)
+ {}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_LOGGING (const location_type& l)
+#if 201103L <= YY_CPLUSPLUS
+ inline
+ Dhcp4Parser::by_type::by_type (by_type&& that)
+ : type (that.type)
{
- return symbol_type (token::TOKEN_SUB_LOGGING, l);
+ that.clear ();
}
+#endif
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
- }
+ inline
+ Dhcp4Parser::by_type::by_type (const by_type& that)
+ : type (that.type)
+ {}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_STRING (const std::string& v, const location_type& l)
- {
- return symbol_type (token::TOKEN_STRING, v, l);
- }
+ inline
+ Dhcp4Parser::by_type::by_type (token_type t)
+ : type (yytranslate_ (t))
+ {}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTEGER (const int64_t& v, const location_type& l)
+ inline
+ void
+ Dhcp4Parser::by_type::clear ()
{
- return symbol_type (token::TOKEN_INTEGER, v, l);
+ type = empty_symbol;
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLOAT (const double& v, const location_type& l)
+ inline
+ void
+ Dhcp4Parser::by_type::move (by_type& that)
{
- return symbol_type (token::TOKEN_FLOAT, v, l);
+ type = that.type;
+ that.clear ();
}
- Dhcp4Parser::symbol_type
- Dhcp4Parser::make_BOOLEAN (const bool& v, const location_type& l)
+ inline
+ int
+ Dhcp4Parser::by_type::type_get () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ return type;
}
-
-#line 14 "dhcp4_parser.yy" // lalr1.cc:377
+#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 3200 "dhcp4_parser.h" // lalr1.cc:377
+#line 4472 "dhcp4_parser.h"
+
-// A Bison parser, made by GNU Bison 3.0.4.
+// Generated 202004241255
+// A Bison parser, made by GNU Bison 3.5.4.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#ifndef YY_PARSER4_LOCATION_HH_INCLUDED
# define YY_PARSER4_LOCATION_HH_INCLUDED
-# include "position.hh"
+# include <iostream>
+# include <string>
-#line 14 "dhcp4_parser.yy" // location.cc:296
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
+#line 14 "dhcp4_parser.yy"
namespace isc { namespace dhcp {
-#line 46 "location.hh" // location.cc:296
- /// Abstract a location.
+#line 59 "location.hh"
+
+ /// A point in a source file.
+ class position
+ {
+ public:
+ /// Type for line and column numbers.
+ typedef int counter_type;
+
+ /// Construct a position.
+ explicit position (std::string* f = YY_NULLPTR,
+ counter_type l = 1,
+ counter_type c = 1)
+ : filename (f)
+ , line (l)
+ , column (c)
+ {}
+
+
+ /// Initialization.
+ void initialize (std::string* fn = YY_NULLPTR,
+ counter_type l = 1,
+ counter_type c = 1)
+ {
+ filename = fn;
+ line = l;
+ column = c;
+ }
+
+ /** \name Line and Column related manipulators
+ ** \{ */
+ /// (line related) Advance to the COUNT next lines.
+ void lines (counter_type count = 1)
+ {
+ if (count)
+ {
+ column = 1;
+ line = add_ (line, count, 1);
+ }
+ }
+
+ /// (column related) Advance to the COUNT next columns.
+ void columns (counter_type count = 1)
+ {
+ column = add_ (column, count, 1);
+ }
+ /** \} */
+
+ /// File name to which this position refers.
+ std::string* filename;
+ /// Current line number.
+ counter_type line;
+ /// Current column number.
+ counter_type column;
+
+ private:
+ /// Compute max (min, lhs+rhs).
+ static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min)
+ {
+ return lhs + rhs < min ? min : lhs + rhs;
+ }
+ };
+
+ /// Add \a width columns, in place.
+ inline position&
+ operator+= (position& res, position::counter_type width)
+ {
+ res.columns (width);
+ return res;
+ }
+
+ /// Add \a width columns.
+ inline position
+ operator+ (position res, position::counter_type width)
+ {
+ return res += width;
+ }
+
+ /// Subtract \a width columns, in place.
+ inline position&
+ operator-= (position& res, position::counter_type width)
+ {
+ return res += -width;
+ }
+
+ /// Subtract \a width columns.
+ inline position
+ operator- (position res, position::counter_type width)
+ {
+ return res -= width;
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator== (const position& pos1, const position& pos2)
+ {
+ return (pos1.line == pos2.line
+ && pos1.column == pos2.column
+ && (pos1.filename == pos2.filename
+ || (pos1.filename && pos2.filename
+ && *pos1.filename == *pos2.filename)));
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator!= (const position& pos1, const position& pos2)
+ {
+ return !(pos1 == pos2);
+ }
+
+ /** \brief Intercept output stream redirection.
+ ** \param ostr the destination output stream
+ ** \param pos a reference to the position to redirect
+ */
+ template <typename YYChar>
+ std::basic_ostream<YYChar>&
+ operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
+ {
+ if (pos.filename)
+ ostr << *pos.filename << ':';
+ return ostr << pos.line << '.' << pos.column;
+ }
+
+ /// Two points in a source file.
class location
{
public:
+ /// Type for line and column numbers.
+ typedef position::counter_type counter_type;
/// Construct a location from \a b to \a e.
location (const position& b, const position& e)
: begin (b)
, end (e)
- {
- }
+ {}
/// Construct a 0-width location in \a p.
explicit location (const position& p = position ())
: begin (p)
, end (p)
- {
- }
+ {}
/// Construct a 0-width location in \a f, \a l, \a c.
explicit location (std::string* f,
- unsigned int l = 1u,
- unsigned int c = 1u)
+ counter_type l = 1,
+ counter_type c = 1)
: begin (f, l, c)
, end (f, l, c)
- {
- }
+ {}
/// Initialization.
void initialize (std::string* f = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
+ counter_type l = 1,
+ counter_type c = 1)
{
begin.initialize (f, l, c);
end = begin;
}
/// Extend the current location to the COUNT next columns.
- void columns (int count = 1)
+ void columns (counter_type count = 1)
{
end += count;
}
/// Extend the current location to the COUNT next lines.
- void lines (int count = 1)
+ void lines (counter_type count = 1)
{
end.lines (count);
}
};
/// Join two locations, in place.
- inline location& operator+= (location& res, const location& end)
+ inline location&
+ operator+= (location& res, const location& end)
{
res.end = end.end;
return res;
}
/// Join two locations.
- inline location operator+ (location res, const location& end)
+ inline location
+ operator+ (location res, const location& end)
{
return res += end;
}
/// Add \a width columns to the end position, in place.
- inline location& operator+= (location& res, int width)
+ inline location&
+ operator+= (location& res, location::counter_type width)
{
res.columns (width);
return res;
}
/// Add \a width columns to the end position.
- inline location operator+ (location res, int width)
+ inline location
+ operator+ (location res, location::counter_type width)
{
return res += width;
}
/// Subtract \a width columns to the end position, in place.
- inline location& operator-= (location& res, int width)
+ inline location&
+ operator-= (location& res, location::counter_type width)
{
return res += -width;
}
/// Subtract \a width columns to the end position.
- inline location operator- (location res, int width)
+ inline location
+ operator- (location res, location::counter_type width)
{
return res -= width;
}
** Avoid duplicate information.
*/
template <typename YYChar>
- inline std::basic_ostream<YYChar>&
+ std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
{
- unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+ location::counter_type end_col
+ = 0 < loc.end.column ? loc.end.column - 1 : 0;
ostr << loc.begin;
if (loc.end.filename
&& (!loc.begin.filename
return ostr;
}
-#line 14 "dhcp4_parser.yy" // location.cc:296
+#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 192 "location.hh" // location.cc:296
+#line 333 "location.hh"
+
#endif // !YY_PARSER4_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.0.4.
-
-// Positions for Bison parsers in C++
-
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file position.hh
- ** Define the isc::dhcp::position class.
- */
-
-#ifndef YY_PARSER4_POSITION_HH_INCLUDED
-# define YY_PARSER4_POSITION_HH_INCLUDED
-
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
-
-#line 14 "dhcp4_parser.yy" // location.cc:296
-namespace isc { namespace dhcp {
-#line 56 "position.hh" // location.cc:296
- /// Abstract a position.
- class position
- {
- public:
- /// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
- : filename (f)
- , line (l)
- , column (c)
- {
- }
-
-
- /// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
- {
- filename = fn;
- line = l;
- column = c;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- /// (line related) Advance to the COUNT next lines.
- void lines (int count = 1)
- {
- if (count)
- {
- column = 1u;
- line = add_ (line, count, 1);
- }
- }
-
- /// (column related) Advance to the COUNT next columns.
- void columns (int count = 1)
- {
- column = add_ (column, count, 1);
- }
- /** \} */
-
- /// File name to which this position refers.
- std::string* filename;
- /// Current line number.
- unsigned int line;
- /// Current column number.
- unsigned int column;
-
- private:
- /// Compute max(min, lhs+rhs) (provided min <= lhs).
- static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
- {
- return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
- ? rhs + lhs
- : min);
- }
- };
-
- /// Add \a width columns, in place.
- inline position&
- operator+= (position& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add \a width columns.
- inline position
- operator+ (position res, int width)
- {
- return res += width;
- }
-
- /// Subtract \a width columns, in place.
- inline position&
- operator-= (position& res, int width)
- {
- return res += -width;
- }
-
- /// Subtract \a width columns.
- inline position
- operator- (position res, int width)
- {
- return res -= width;
- }
-
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param pos a reference to the position to redirect
- */
- template <typename YYChar>
- inline std::basic_ostream<YYChar>&
- operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
- {
- if (pos.filename)
- ostr << *pos.filename << ':';
- return ostr << pos.line << '.' << pos.column;
- }
-
-#line 14 "dhcp4_parser.yy" // location.cc:296
-} } // isc::dhcp
-#line 180 "position.hh" // location.cc:296
-#endif // !YY_PARSER4_POSITION_HH_INCLUDED
+// Generated 202004241255
+// A Bison parser, made by GNU Bison 3.5.4.
+
+// Starting with Bison 3.2, this file is useless: the structure it
+// used to define is now defined in "location.hh".
+//
+// To get rid of this file:
+// 1. add '%require "3.2"' (or newer) to your grammar file
+// 2. remove references to this file from your build system
+// 3. if you used to include it, include "location.hh" instead.
+
+#include "location.hh"
-// A Bison parser, made by GNU Bison 3.0.4.
-
-// Stack handling for Bison parsers in C++
-
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file stack.hh
- ** Define the isc::dhcp::stack class.
- */
-
-#ifndef YY_PARSER4_STACK_HH_INCLUDED
-# define YY_PARSER4_STACK_HH_INCLUDED
-
-# include <vector>
-
-#line 14 "dhcp4_parser.yy" // stack.hh:132
-namespace isc { namespace dhcp {
-#line 46 "stack.hh" // stack.hh:132
- template <class T, class S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
-
- stack ()
- : seq_ ()
- {
- seq_.reserve (200);
- }
-
- stack (unsigned int n)
- : seq_ (n)
- {}
-
- inline
- T&
- operator[] (unsigned int i)
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- inline
- const T&
- operator[] (unsigned int i) const
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- inline
- void
- push (T& t)
- {
- seq_.push_back (T());
- operator[](0).move (t);
- }
-
- inline
- void
- pop (unsigned int n = 1)
- {
- for (; n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- inline
- typename S::size_type
- size () const
- {
- return seq_.size ();
- }
-
- inline
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
-
- inline
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
-
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
-
- /// Present a slice of the top of a stack.
- template <class T, class S = stack<T> >
- class slice
- {
- public:
- slice (const S& stack, unsigned int range)
- : stack_ (stack)
- , range_ (range)
- {}
-
- inline
- const T&
- operator [] (unsigned int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- unsigned int range_;
- };
-
-#line 14 "dhcp4_parser.yy" // stack.hh:132
-} } // isc::dhcp
-#line 156 "stack.hh" // stack.hh:132
-
-#endif // !YY_PARSER4_STACK_HH_INCLUDED
+// Generated 202004241255
+// A Bison parser, made by GNU Bison 3.5.4.
+
+// Starting with Bison 3.2, this file is useless: the structure it
+// used to define is now defined with the parser itself.
+//
+// To get rid of this file:
+// 1. add '%require "3.2"' (or newer) to your grammar file
+// 2. remove references to this file from your build system.
-#line 2 "dhcp6_lexer.cc"
+#line 1 "dhcp6_lexer.cc"
-#line 4 "dhcp6_lexer.cc"
+#line 3 "dhcp6_lexer.cc"
#define YY_INT_ALIGNED short int
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1987 "dhcp6_lexer.cc"
+#line 1986 "dhcp6_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
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 2012 "dhcp6_lexer.cc"
#line 2013 "dhcp6_lexer.cc"
-#line 2014 "dhcp6_lexer.cc"
#define INITIAL 0
#define COMMENT 1
}
-#line 2346 "dhcp6_lexer.cc"
+#line 2345 "dhcp6_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
#line 2142 "dhcp6_lexer.ll"
ECHO;
YY_BREAK
-#line 5061 "dhcp6_lexer.cc"
+#line 5060 "dhcp6_lexer.cc"
case YY_END_OF_BUFFER:
{
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details. Do not rely on them.
+
+
// Take the name prefix into account.
#define yylex parser6_lex
-// First part of user declarations.
-#line 39 "dhcp6_parser.cc" // lalr1.cc:404
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
#include "dhcp6_parser.h"
-// User implementation prologue.
-#line 53 "dhcp6_parser.cc" // lalr1.cc:412
// Unqualified %code blocks.
-#line 34 "dhcp6_parser.yy" // lalr1.cc:413
+#line 34 "dhcp6_parser.yy"
#include <dhcp6/parser_context.h>
-#line 59 "dhcp6_parser.cc" // lalr1.cc:413
+#line 51 "dhcp6_parser.cc"
#ifndef YY_
# endif
#endif
+// Whether we are compiled with exception support.
+#ifndef YY_EXCEPTIONS
+# if defined __GNUC__ && !defined __EXCEPTIONS
+# define YY_EXCEPTIONS 0
+# else
+# define YY_EXCEPTIONS 1
+# endif
+#endif
+
#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
- while (/*CONSTCOND*/ false)
+ while (false)
# endif
-// Suppress unused-variable warnings by "using" E.
-#define YYUSE(E) ((void) (E))
-
// Enable debugging if requested.
#if PARSER6_DEBUG
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << std::endl; \
+ *yycdebug_ << '\n'; \
} \
} while (false)
#else // !PARSER6_DEBUG
# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
-# define YY_STACK_PRINT() static_cast<void>(0)
+# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
+# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
+# define YY_STACK_PRINT() static_cast<void> (0)
#endif // !PARSER6_DEBUG
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "dhcp6_parser.yy" // lalr1.cc:479
+#line 14 "dhcp6_parser.yy"
namespace isc { namespace dhcp {
-#line 145 "dhcp6_parser.cc" // lalr1.cc:479
+#line 143 "dhcp6_parser.cc"
+
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
{
if (*yystr == '"')
{
- std::string yyr = "";
+ std::string yyr;
char const *yyp = yystr;
for (;;)
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
- // Fall through.
+ else
+ goto append;
+
+ append:
default:
yyr += *yyp;
break;
/// Build a parser object.
Dhcp6Parser::Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg)
- :
#if PARSER6_DEBUG
- yydebug_ (false),
+ : yydebug_ (false),
yycdebug_ (&std::cerr),
+#else
+ :
#endif
ctx (ctx_yyarg)
{}
Dhcp6Parser::~Dhcp6Parser ()
{}
+ Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+ {}
/*---------------.
| Symbol types. |
// by_state.
- inline
- Dhcp6Parser::by_state::by_state ()
+ Dhcp6Parser::by_state::by_state () YY_NOEXCEPT
: state (empty_state)
{}
- inline
- Dhcp6Parser::by_state::by_state (const by_state& other)
- : state (other.state)
+ Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
+ : state (that.state)
{}
- inline
void
- Dhcp6Parser::by_state::clear ()
+ Dhcp6Parser::by_state::clear () YY_NOEXCEPT
{
state = empty_state;
}
- inline
void
Dhcp6Parser::by_state::move (by_state& that)
{
that.clear ();
}
- inline
- Dhcp6Parser::by_state::by_state (state_type s)
+ Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT
: state (s)
{}
- inline
Dhcp6Parser::symbol_number_type
- Dhcp6Parser::by_state::type_get () const
+ Dhcp6Parser::by_state::type_get () const YY_NOEXCEPT
{
if (state == empty_state)
return empty_symbol;
else
- return yystos_[state];
+ return yystos_[+state];
}
- inline
Dhcp6Parser::stack_symbol_type::stack_symbol_type ()
{}
+ Dhcp6Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
+ : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
+ {
+ switch (that.type_get ())
+ {
+ case 220: // value
+ case 224: // map_value
+ case 265: // ddns_replace_client_name_value
+ case 302: // db_type
+ case 403: // hr_mode
+ case 539: // duid_type
+ case 582: // ncr_protocol_value
+ value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
+ break;
+
+ case 202: // "boolean"
+ value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
+ break;
+
+ case 201: // "floating point"
+ value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
+ break;
- inline
- Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
- : super_type (s, that.location)
+ case 200: // "integer"
+ value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
+ break;
+
+ case 199: // "constant string"
+ value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
+ break;
+
+ default:
+ break;
+ }
+
+#if 201103L <= YY_CPLUSPLUS
+ // that is emptied.
+ that.state = empty_state;
+#endif
+ }
+
+ Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
+ : super_type (s, YY_MOVE (that.location))
{
- switch (that.type_get ())
+ switch (that.type_get ())
{
case 220: // value
case 224: // map_value
case 403: // hr_mode
case 539: // duid_type
case 582: // ncr_protocol_value
- value.move< ElementPtr > (that.value);
+ value.move< ElementPtr > (YY_MOVE (that.value));
break;
case 202: // "boolean"
- value.move< bool > (that.value);
+ value.move< bool > (YY_MOVE (that.value));
break;
case 201: // "floating point"
- value.move< double > (that.value);
+ value.move< double > (YY_MOVE (that.value));
break;
case 200: // "integer"
- value.move< int64_t > (that.value);
+ value.move< int64_t > (YY_MOVE (that.value));
break;
case 199: // "constant string"
- value.move< std::string > (that.value);
+ value.move< std::string > (YY_MOVE (that.value));
break;
default:
that.type = empty_symbol;
}
- inline
+#if YY_CPLUSPLUS < 201103L
Dhcp6Parser::stack_symbol_type&
Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
{
state = that.state;
- switch (that.type_get ())
+ switch (that.type_get ())
{
case 220: // value
case 224: // map_value
return *this;
}
+ Dhcp6Parser::stack_symbol_type&
+ Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
+ {
+ state = that.state;
+ switch (that.type_get ())
+ {
+ case 220: // value
+ case 224: // map_value
+ case 265: // ddns_replace_client_name_value
+ case 302: // db_type
+ case 403: // hr_mode
+ case 539: // duid_type
+ case 582: // ncr_protocol_value
+ value.move< ElementPtr > (that.value);
+ break;
+
+ case 202: // "boolean"
+ value.move< bool > (that.value);
+ break;
+
+ case 201: // "floating point"
+ value.move< double > (that.value);
+ break;
+
+ case 200: // "integer"
+ value.move< int64_t > (that.value);
+ break;
+
+ case 199: // "constant string"
+ value.move< std::string > (that.value);
+ break;
+
+ default:
+ break;
+ }
+
+ location = that.location;
+ // that is emptied.
+ that.state = empty_state;
+ return *this;
+ }
+#endif
template <typename Base>
- inline
void
Dhcp6Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
+#endif
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
switch (yytype)
{
- case 199: // "constant string"
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< std::string > (); }
-#line 364 "dhcp6_parser.cc" // lalr1.cc:636
+ case 199: // "constant string"
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < std::string > (); }
+#line 443 "dhcp6_parser.cc"
break;
case 200: // "integer"
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< int64_t > (); }
-#line 371 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < int64_t > (); }
+#line 449 "dhcp6_parser.cc"
break;
case 201: // "floating point"
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< double > (); }
-#line 378 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < double > (); }
+#line 455 "dhcp6_parser.cc"
break;
case 202: // "boolean"
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< bool > (); }
-#line 385 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < bool > (); }
+#line 461 "dhcp6_parser.cc"
break;
case 220: // value
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 392 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 467 "dhcp6_parser.cc"
break;
case 224: // map_value
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 399 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 473 "dhcp6_parser.cc"
break;
case 265: // ddns_replace_client_name_value
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 406 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 479 "dhcp6_parser.cc"
break;
case 302: // db_type
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 413 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 485 "dhcp6_parser.cc"
break;
case 403: // hr_mode
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 420 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 491 "dhcp6_parser.cc"
break;
case 539: // duid_type
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 427 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 497 "dhcp6_parser.cc"
break;
case 582: // ncr_protocol_value
-
-#line 280 "dhcp6_parser.yy" // lalr1.cc:636
- { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 434 "dhcp6_parser.cc" // lalr1.cc:636
+#line 280 "dhcp6_parser.yy"
+ { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 503 "dhcp6_parser.cc"
break;
-
default:
break;
}
}
#endif
- inline
void
- Dhcp6Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
+ Dhcp6Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
{
- stack_symbol_type t (s, sym);
- yypush_ (m, t);
+ if (m)
+ YY_SYMBOL_PRINT (m, sym);
+ yystack_.push (YY_MOVE (sym));
}
- inline
void
- Dhcp6Parser::yypush_ (const char* m, stack_symbol_type& s)
+ Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
{
- if (m)
- YY_SYMBOL_PRINT (m, s);
- yystack_.push (s);
+#if 201103L <= YY_CPLUSPLUS
+ yypush_ (m, stack_symbol_type (s, std::move (sym)));
+#else
+ stack_symbol_type ss (s, sym);
+ yypush_ (m, ss);
+#endif
}
- inline
void
- Dhcp6Parser::yypop_ (unsigned int n)
+ Dhcp6Parser::yypop_ (int n)
{
yystack_.pop (n);
}
}
#endif // PARSER6_DEBUG
- inline Dhcp6Parser::state_type
+ Dhcp6Parser::state_type
Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
return yydefgoto_[yysym - yyntokens_];
}
- inline bool
+ bool
Dhcp6Parser::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
- inline bool
+ bool
Dhcp6Parser::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
}
+ int
+ Dhcp6Parser::operator() ()
+ {
+ return parse ();
+ }
+
int
Dhcp6Parser::parse ()
{
- // State.
int yyn;
/// Length of the RHS of the rule being reduced.
int yylen = 0;
/// The return value of parse ().
int yyresult;
- // FIXME: This shoud be completely indented. It is not yet to
- // avoid gratuitous conflicts when merging into the master branch.
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
- YYCDEBUG << "Starting parse" << std::endl;
+ YYCDEBUG << "Starting parse\n";
/* Initialize the stack. The initial state will be set in
location values to have been already stored, initialize these
stacks with a primary value. */
yystack_.clear ();
- yypush_ (YY_NULLPTR, 0, yyla);
+ yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
- // A new symbol was pushed on the stack.
+ /*-----------------------------------------------.
+ | yynewstate -- push a new symbol on the stack. |
+ `-----------------------------------------------*/
yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
+ YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n';
// Accept?
if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
+ YYACCEPT;
goto yybackup;
- // Backup.
- yybackup:
+ /*-----------.
+ | yybackup. |
+ `-----------*/
+ yybackup:
// Try to take a decision without lookahead.
- yyn = yypact_[yystack_[0].state];
+ yyn = yypact_[+yystack_[0].state];
if (yy_pact_value_is_default_ (yyn))
goto yydefault;
if (yyla.empty ())
{
YYCDEBUG << "Reading a token: ";
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
symbol_type yylookahead (yylex (ctx));
yyla.move (yylookahead);
}
+#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
goto yyerrlab1;
}
+#endif // YY_EXCEPTIONS
}
YY_SYMBOL_PRINT ("Next token is", yyla);
to detect an error, take that action. */
yyn += yyla.type_get ();
if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
- goto yydefault;
+ {
+ goto yydefault;
+ }
// Reduce or error.
yyn = yytable_[yyn];
--yyerrstatus_;
// Shift the lookahead token.
- yypush_ ("Shifting", yyn, yyla);
+ yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
goto yynewstate;
+
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
yydefault:
- yyn = yydefact_[yystack_[0].state];
+ yyn = yydefact_[+yystack_[0].state];
if (yyn == 0)
goto yyerrlab;
goto yyreduce;
+
/*-----------------------------.
- | yyreduce -- Do a reduction. |
+ | yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
- yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
+ yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
- switch (yyr1_[yyn])
+ switch (yyr1_[yyn])
{
case 220: // value
case 224: // map_value
case 403: // hr_mode
case 539: // duid_type
case 582: // ncr_protocol_value
- yylhs.value.build< ElementPtr > ();
+ yylhs.value.emplace< ElementPtr > ();
break;
case 202: // "boolean"
- yylhs.value.build< bool > ();
+ yylhs.value.emplace< bool > ();
break;
case 201: // "floating point"
- yylhs.value.build< double > ();
+ yylhs.value.emplace< double > ();
break;
case 200: // "integer"
- yylhs.value.build< int64_t > ();
+ yylhs.value.emplace< int64_t > ();
break;
case 199: // "constant string"
- yylhs.value.build< std::string > ();
+ yylhs.value.emplace< std::string > ();
break;
default:
}
- // Compute the default @$.
+ // Default location.
{
- slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
+ stack_type::slice range (yystack_, yylen);
+ YYLLOC_DEFAULT (yylhs.location, range, yylen);
+ yyerror_range[1].location = yylhs.location;
}
// Perform the reduction.
YY_REDUCE_PRINT (yyn);
+#if YY_EXCEPTIONS
try
+#endif // YY_EXCEPTIONS
{
switch (yyn)
{
case 2:
-#line 289 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 680 "dhcp6_parser.cc" // lalr1.cc:859
+#line 289 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.NO_KEYWORD; }
+#line 770 "dhcp6_parser.cc"
break;
case 4:
-#line 290 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.CONFIG; }
-#line 686 "dhcp6_parser.cc" // lalr1.cc:859
+#line 290 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.CONFIG; }
+#line 776 "dhcp6_parser.cc"
break;
case 6:
-#line 291 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.DHCP6; }
-#line 692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 291 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.DHCP6; }
+#line 782 "dhcp6_parser.cc"
break;
case 8:
-#line 292 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 698 "dhcp6_parser.cc" // lalr1.cc:859
+#line 292 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
+#line 788 "dhcp6_parser.cc"
break;
case 10:
-#line 293 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.SUBNET6; }
-#line 704 "dhcp6_parser.cc" // lalr1.cc:859
+#line 293 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.SUBNET6; }
+#line 794 "dhcp6_parser.cc"
break;
case 12:
-#line 294 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.POOLS; }
-#line 710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 294 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.POOLS; }
+#line 800 "dhcp6_parser.cc"
break;
case 14:
-#line 295 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.PD_POOLS; }
-#line 716 "dhcp6_parser.cc" // lalr1.cc:859
+#line 295 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.PD_POOLS; }
+#line 806 "dhcp6_parser.cc"
break;
case 16:
-#line 296 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 722 "dhcp6_parser.cc" // lalr1.cc:859
+#line 296 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.RESERVATIONS; }
+#line 812 "dhcp6_parser.cc"
break;
case 18:
-#line 297 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.DHCP6; }
-#line 728 "dhcp6_parser.cc" // lalr1.cc:859
+#line 297 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.DHCP6; }
+#line 818 "dhcp6_parser.cc"
break;
case 20:
-#line 298 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 734 "dhcp6_parser.cc" // lalr1.cc:859
+#line 298 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.OPTION_DEF; }
+#line 824 "dhcp6_parser.cc"
break;
case 22:
-#line 299 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 740 "dhcp6_parser.cc" // lalr1.cc:859
+#line 299 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.OPTION_DATA; }
+#line 830 "dhcp6_parser.cc"
break;
case 24:
-#line 300 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 746 "dhcp6_parser.cc" // lalr1.cc:859
+#line 300 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
+#line 836 "dhcp6_parser.cc"
break;
case 26:
-#line 301 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 752 "dhcp6_parser.cc" // lalr1.cc:859
+#line 301 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.DHCP_DDNS; }
+#line 842 "dhcp6_parser.cc"
break;
case 28:
-#line 302 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.LOGGING; }
-#line 758 "dhcp6_parser.cc" // lalr1.cc:859
+#line 302 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.LOGGING; }
+#line 848 "dhcp6_parser.cc"
break;
case 30:
-#line 303 "dhcp6_parser.yy" // lalr1.cc:859
- { ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 764 "dhcp6_parser.cc" // lalr1.cc:859
+#line 303 "dhcp6_parser.yy"
+ { ctx.ctx_ = ctx.CONFIG_CONTROL; }
+#line 854 "dhcp6_parser.cc"
break;
case 32:
-#line 311 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 770 "dhcp6_parser.cc" // lalr1.cc:859
+#line 311 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
+#line 860 "dhcp6_parser.cc"
break;
case 33:
-#line 312 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 776 "dhcp6_parser.cc" // lalr1.cc:859
+#line 312 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
+#line 866 "dhcp6_parser.cc"
break;
case 34:
-#line 313 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 782 "dhcp6_parser.cc" // lalr1.cc:859
+#line 313 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
+#line 872 "dhcp6_parser.cc"
break;
case 35:
-#line 314 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 788 "dhcp6_parser.cc" // lalr1.cc:859
+#line 314 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
+#line 878 "dhcp6_parser.cc"
break;
case 36:
-#line 315 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 794 "dhcp6_parser.cc" // lalr1.cc:859
+#line 315 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
+#line 884 "dhcp6_parser.cc"
break;
case 37:
-#line 316 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 800 "dhcp6_parser.cc" // lalr1.cc:859
+#line 316 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 890 "dhcp6_parser.cc"
break;
case 38:
-#line 317 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 806 "dhcp6_parser.cc" // lalr1.cc:859
+#line 317 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 896 "dhcp6_parser.cc"
break;
case 39:
-#line 320 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 320 "dhcp6_parser.yy"
+ {
// Push back the JSON value on the stack
- ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
}
-#line 815 "dhcp6_parser.cc" // lalr1.cc:859
+#line 905 "dhcp6_parser.cc"
break;
case 40:
-#line 325 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 325 "dhcp6_parser.yy"
+ {
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 826 "dhcp6_parser.cc" // lalr1.cc:859
+#line 916 "dhcp6_parser.cc"
break;
case 41:
-#line 330 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 330 "dhcp6_parser.yy"
+ {
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
}
-#line 836 "dhcp6_parser.cc" // lalr1.cc:859
+#line 926 "dhcp6_parser.cc"
break;
case 42:
-#line 336 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 842 "dhcp6_parser.cc" // lalr1.cc:859
+#line 336 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
+#line 932 "dhcp6_parser.cc"
break;
case 45:
-#line 343 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 343 "dhcp6_parser.yy"
+ {
// map containing a single entry
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 851 "dhcp6_parser.cc" // lalr1.cc:859
+#line 941 "dhcp6_parser.cc"
break;
case 46:
-#line 347 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 347 "dhcp6_parser.yy"
+ {
// map consisting of a shorter map followed by
// comma and string:value
- ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
}
-#line 861 "dhcp6_parser.cc" // lalr1.cc:859
+#line 951 "dhcp6_parser.cc"
break;
case 47:
-#line 354 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 354 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 870 "dhcp6_parser.cc" // lalr1.cc:859
+#line 960 "dhcp6_parser.cc"
break;
case 48:
-#line 357 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 357 "dhcp6_parser.yy"
+ {
// list parsing complete. Put any sanity checking here
}
-#line 878 "dhcp6_parser.cc" // lalr1.cc:859
+#line 968 "dhcp6_parser.cc"
break;
case 51:
-#line 365 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 365 "dhcp6_parser.yy"
+ {
// List consisting of a single element.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 887 "dhcp6_parser.cc" // lalr1.cc:859
+#line 977 "dhcp6_parser.cc"
break;
case 52:
-#line 369 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 369 "dhcp6_parser.yy"
+ {
// List ending with , and a value.
- ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
}
-#line 896 "dhcp6_parser.cc" // lalr1.cc:859
+#line 986 "dhcp6_parser.cc"
break;
case 53:
-#line 376 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 376 "dhcp6_parser.yy"
+ {
// List parsing about to start
}
-#line 904 "dhcp6_parser.cc" // lalr1.cc:859
+#line 994 "dhcp6_parser.cc"
break;
case 54:
-#line 378 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 378 "dhcp6_parser.yy"
+ {
// list parsing complete. Put any sanity checking here
//ctx.stack_.pop_back();
}
-#line 913 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1003 "dhcp6_parser.cc"
break;
case 57:
-#line 387 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 387 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 922 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1012 "dhcp6_parser.cc"
break;
case 58:
-#line 391 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 391 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 931 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1021 "dhcp6_parser.cc"
break;
case 59:
-#line 402 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 402 "dhcp6_parser.yy"
+ {
const std::string& where = ctx.contextName();
- const std::string& keyword = yystack_[1].value.as< std::string > ();
+ const std::string& keyword = yystack_[1].value.as < std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 942 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1032 "dhcp6_parser.cc"
break;
case 60:
-#line 412 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 412 "dhcp6_parser.yy"
+ {
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 953 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1043 "dhcp6_parser.cc"
break;
case 61:
-#line 417 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 417 "dhcp6_parser.yy"
+ {
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// for it.
// Dhcp6 is required
ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 966 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1056 "dhcp6_parser.cc"
break;
case 70:
-#line 441 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 441 "dhcp6_parser.yy"
+ {
// This code is executed when we're about to start parsing
// the content of the map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP6);
}
-#line 979 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1069 "dhcp6_parser.cc"
break;
case 71:
-#line 448 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 448 "dhcp6_parser.yy"
+ {
// No global parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 989 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1079 "dhcp6_parser.cc"
break;
case 72:
-#line 456 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 456 "dhcp6_parser.yy"
+ {
// Parse the Dhcp6 map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 999 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1089 "dhcp6_parser.cc"
break;
case 73:
-#line 460 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 460 "dhcp6_parser.yy"
+ {
// No global parameter is required
// parsing completed
}
-#line 1008 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1098 "dhcp6_parser.cc"
break;
case 129:
-#line 526 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 526 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1016 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1106 "dhcp6_parser.cc"
break;
case 130:
-#line 528 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 528 "dhcp6_parser.yy"
+ {
+ ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data-directory", datadir);
ctx.leave();
}
-#line 1026 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1116 "dhcp6_parser.cc"
break;
case 131:
-#line 534 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 534 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("preferred-lifetime", prf);
}
-#line 1035 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1125 "dhcp6_parser.cc"
break;
case 132:
-#line 539 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 539 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("min-preferred-lifetime", prf);
}
-#line 1044 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1134 "dhcp6_parser.cc"
break;
case 133:
-#line 544 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 544 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-preferred-lifetime", prf);
}
-#line 1053 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1143 "dhcp6_parser.cc"
break;
case 134:
-#line 549 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 549 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("valid-lifetime", prf);
}
-#line 1062 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1152 "dhcp6_parser.cc"
break;
case 135:
-#line 554 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 554 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("min-valid-lifetime", prf);
}
-#line 1071 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1161 "dhcp6_parser.cc"
break;
case 136:
-#line 559 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 559 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-valid-lifetime", prf);
}
-#line 1080 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1170 "dhcp6_parser.cc"
break;
case 137:
-#line 564 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 564 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("renew-timer", prf);
}
-#line 1089 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1179 "dhcp6_parser.cc"
break;
case 138:
-#line 569 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 569 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rebind-timer", prf);
}
-#line 1098 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1188 "dhcp6_parser.cc"
break;
case 139:
-#line 574 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 574 "dhcp6_parser.yy"
+ {
+ ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("calculate-tee-times", ctt);
}
-#line 1107 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1197 "dhcp6_parser.cc"
break;
case 140:
-#line 579 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+#line 579 "dhcp6_parser.yy"
+ {
+ ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t1-percent", t1);
}
-#line 1116 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1206 "dhcp6_parser.cc"
break;
case 141:
-#line 584 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+#line 584 "dhcp6_parser.yy"
+ {
+ ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("t2-percent", t2);
}
-#line 1125 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1215 "dhcp6_parser.cc"
break;
case 142:
-#line 589 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 589 "dhcp6_parser.yy"
+ {
+ ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("decline-probation-period", dpp);
}
-#line 1134 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1224 "dhcp6_parser.cc"
break;
case 143:
-#line 594 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 594 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-send-updates", b);
}
-#line 1143 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1233 "dhcp6_parser.cc"
break;
case 144:
-#line 599 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 599 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-override-no-update", b);
}
-#line 1152 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1242 "dhcp6_parser.cc"
break;
case 145:
-#line 604 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 604 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-override-client-update", b);
}
-#line 1161 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1251 "dhcp6_parser.cc"
break;
case 146:
-#line 609 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 609 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 1169 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1259 "dhcp6_parser.cc"
break;
case 147:
-#line 611 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as< ElementPtr > ());
+#line 611 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1178 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1268 "dhcp6_parser.cc"
break;
case 148:
-#line 617 "dhcp6_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
+#line 617 "dhcp6_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 1186 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1276 "dhcp6_parser.cc"
break;
case 149:
-#line 620 "dhcp6_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
+#line 620 "dhcp6_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 1194 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1284 "dhcp6_parser.cc"
break;
case 150:
-#line 623 "dhcp6_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+#line 623 "dhcp6_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 1202 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1292 "dhcp6_parser.cc"
break;
case 151:
-#line 626 "dhcp6_parser.yy" // lalr1.cc:859
- {
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+#line 626 "dhcp6_parser.yy"
+ {
+ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 1210 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1300 "dhcp6_parser.cc"
break;
case 152:
-#line 629 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 629 "dhcp6_parser.yy"
+ {
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 1219 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1309 "dhcp6_parser.cc"
break;
case 153:
-#line 635 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 635 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1227 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1317 "dhcp6_parser.cc"
break;
case 154:
-#line 637 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 637 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-generated-prefix", s);
ctx.leave();
}
-#line 1237 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1327 "dhcp6_parser.cc"
break;
case 155:
-#line 643 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 643 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1245 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1335 "dhcp6_parser.cc"
break;
case 156:
-#line 645 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 645 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-qualifying-suffix", s);
ctx.leave();
}
-#line 1255 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1345 "dhcp6_parser.cc"
break;
case 157:
-#line 651 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 651 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1263 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1353 "dhcp6_parser.cc"
break;
case 158:
-#line 653 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 653 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 1273 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1363 "dhcp6_parser.cc"
break;
case 159:
-#line 659 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 659 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1281 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1371 "dhcp6_parser.cc"
break;
case 160:
-#line 661 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 661 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 1291 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1381 "dhcp6_parser.cc"
break;
case 161:
-#line 667 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 667 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("store-extended-info", b);
}
-#line 1300 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1390 "dhcp6_parser.cc"
break;
case 162:
-#line 672 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr count(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 672 "dhcp6_parser.yy"
+ {
+ ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-count", count);
}
-#line 1309 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1399 "dhcp6_parser.cc"
break;
case 163:
-#line 677 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr age(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 677 "dhcp6_parser.yy"
+ {
+ ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-age", age);
}
-#line 1318 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1408 "dhcp6_parser.cc"
break;
case 164:
-#line 682 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 682 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1326 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1416 "dhcp6_parser.cc"
break;
case 165:
-#line 684 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 684 "dhcp6_parser.yy"
+ {
+ ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-tag", stag);
ctx.leave();
}
-#line 1336 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1426 "dhcp6_parser.cc"
break;
case 166:
-#line 690 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 690 "dhcp6_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces-config", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.INTERFACES_CONFIG);
}
-#line 1347 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1437 "dhcp6_parser.cc"
break;
case 167:
-#line 695 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 695 "dhcp6_parser.yy"
+ {
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1357 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1447 "dhcp6_parser.cc"
break;
case 168:
-#line 701 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 701 "dhcp6_parser.yy"
+ {
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1367 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1457 "dhcp6_parser.cc"
break;
case 169:
-#line 705 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 705 "dhcp6_parser.yy"
+ {
// No interfaces config param is required
// parsing completed
}
-#line 1376 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1466 "dhcp6_parser.cc"
break;
case 177:
-#line 721 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 721 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1387 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1477 "dhcp6_parser.cc"
break;
case 178:
-#line 726 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 726 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1396 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1486 "dhcp6_parser.cc"
break;
case 179:
-#line 731 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 731 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1405 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1495 "dhcp6_parser.cc"
break;
case 180:
-#line 736 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 736 "dhcp6_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.LEASE_DATABASE);
}
-#line 1416 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1506 "dhcp6_parser.cc"
break;
case 181:
-#line 741 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 741 "dhcp6_parser.yy"
+ {
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1427 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1517 "dhcp6_parser.cc"
break;
case 182:
-#line 748 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 748 "dhcp6_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-database", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1438 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1528 "dhcp6_parser.cc"
break;
case 183:
-#line 753 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 753 "dhcp6_parser.yy"
+ {
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1449 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1539 "dhcp6_parser.cc"
break;
case 184:
-#line 760 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 760 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1460 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1550 "dhcp6_parser.cc"
break;
case 185:
-#line 765 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 765 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1469 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1559 "dhcp6_parser.cc"
break;
case 190:
-#line 778 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 778 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1479 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1569 "dhcp6_parser.cc"
break;
case 191:
-#line 782 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 782 "dhcp6_parser.yy"
+ {
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1489 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1579 "dhcp6_parser.cc"
break;
case 215:
-#line 815 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 815 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 1497 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1587 "dhcp6_parser.cc"
break;
case 216:
-#line 817 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+#line 817 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1506 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1596 "dhcp6_parser.cc"
break;
case 217:
-#line 822 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1512 "dhcp6_parser.cc" // lalr1.cc:859
+#line 822 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1602 "dhcp6_parser.cc"
break;
case 218:
-#line 823 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1518 "dhcp6_parser.cc" // lalr1.cc:859
+#line 823 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1608 "dhcp6_parser.cc"
break;
case 219:
-#line 824 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1524 "dhcp6_parser.cc" // lalr1.cc:859
+#line 824 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1614 "dhcp6_parser.cc"
break;
case 220:
-#line 825 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1530 "dhcp6_parser.cc" // lalr1.cc:859
+#line 825 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1620 "dhcp6_parser.cc"
break;
case 221:
-#line 828 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 828 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1538 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1628 "dhcp6_parser.cc"
break;
case 222:
-#line 830 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 830 "dhcp6_parser.yy"
+ {
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 1548 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1638 "dhcp6_parser.cc"
break;
case 223:
-#line 836 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 836 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1556 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1646 "dhcp6_parser.cc"
break;
case 224:
-#line 838 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 838 "dhcp6_parser.yy"
+ {
+ ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 1566 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1656 "dhcp6_parser.cc"
break;
case 225:
-#line 844 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 844 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1574 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1664 "dhcp6_parser.cc"
break;
case 226:
-#line 846 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 846 "dhcp6_parser.yy"
+ {
+ ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 1584 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1674 "dhcp6_parser.cc"
break;
case 227:
-#line 852 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 852 "dhcp6_parser.yy"
+ {
+ ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 1593 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1683 "dhcp6_parser.cc"
break;
case 228:
-#line 857 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 857 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1601 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1691 "dhcp6_parser.cc"
break;
case 229:
-#line 859 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 859 "dhcp6_parser.yy"
+ {
+ ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1611 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1701 "dhcp6_parser.cc"
break;
case 230:
-#line 865 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 865 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 1620 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1710 "dhcp6_parser.cc"
break;
case 231:
-#line 870 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 870 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 1629 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1719 "dhcp6_parser.cc"
break;
case 232:
-#line 875 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 875 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 1638 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1728 "dhcp6_parser.cc"
break;
case 233:
-#line 880 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 880 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 1647 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1737 "dhcp6_parser.cc"
break;
case 234:
-#line 885 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 885 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 1656 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1746 "dhcp6_parser.cc"
break;
case 235:
-#line 890 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 890 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-row-errors", n);
}
-#line 1665 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1755 "dhcp6_parser.cc"
break;
case 236:
-#line 895 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 895 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("request-timeout", n);
}
-#line 1674 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1764 "dhcp6_parser.cc"
break;
case 237:
-#line 900 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 900 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-keepalive", n);
}
-#line 1683 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1773 "dhcp6_parser.cc"
break;
case 238:
-#line 905 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 905 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-nodelay", n);
}
-#line 1692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1782 "dhcp6_parser.cc"
break;
case 239:
-#line 910 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 910 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1700 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1790 "dhcp6_parser.cc"
break;
case 240:
-#line 912 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 912 "dhcp6_parser.yy"
+ {
+ ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("contact-points", cp);
ctx.leave();
}
-#line 1710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1800 "dhcp6_parser.cc"
break;
case 241:
-#line 918 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 918 "dhcp6_parser.yy"
+ {
+ ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 1719 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1809 "dhcp6_parser.cc"
break;
case 242:
-#line 923 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 923 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1727 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1817 "dhcp6_parser.cc"
break;
case 243:
-#line 925 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 925 "dhcp6_parser.yy"
+ {
+ ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("keyspace", ks);
ctx.leave();
}
-#line 1737 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1827 "dhcp6_parser.cc"
break;
case 244:
-#line 931 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 931 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1745 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1835 "dhcp6_parser.cc"
break;
case 245:
-#line 933 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 933 "dhcp6_parser.yy"
+ {
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("consistency", c);
ctx.leave();
}
-#line 1755 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1845 "dhcp6_parser.cc"
break;
case 246:
-#line 939 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 939 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1763 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1853 "dhcp6_parser.cc"
break;
case 247:
-#line 941 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 941 "dhcp6_parser.yy"
+ {
+ ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("serial-consistency", c);
ctx.leave();
}
-#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1863 "dhcp6_parser.cc"
break;
case 248:
-#line 947 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 947 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sanity-checks", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SANITY_CHECKS);
}
-#line 1784 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1874 "dhcp6_parser.cc"
break;
case 249:
-#line 952 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 952 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1793 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1883 "dhcp6_parser.cc"
break;
case 253:
-#line 962 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 962 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1801 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1891 "dhcp6_parser.cc"
break;
case 254:
-#line 964 "dhcp6_parser.yy" // lalr1.cc:859
- {
-
- if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
- (string(yystack_[0].value.as< std::string > ()) == "warn") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix") ||
- (string(yystack_[0].value.as< std::string > ()) == "fix-del") ||
- (string(yystack_[0].value.as< std::string > ()) == "del")) {
- ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 964 "dhcp6_parser.yy"
+ {
+
+ if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
+ (string(yystack_[0].value.as < std::string > ()) == "warn") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix") ||
+ (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
+ (string(yystack_[0].value.as < std::string > ()) == "del")) {
+ ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-checks", user);
ctx.leave();
} else {
- error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) +
+ error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1911 "dhcp6_parser.cc"
break;
case 255:
-#line 980 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 980 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("mac-sources", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.MAC_SOURCES);
}
-#line 1832 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1922 "dhcp6_parser.cc"
break;
case 256:
-#line 985 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 985 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1841 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1931 "dhcp6_parser.cc"
break;
case 261:
-#line 998 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 998 "dhcp6_parser.yy"
+ {
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1850 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1940 "dhcp6_parser.cc"
break;
case 262:
-#line 1003 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1003 "dhcp6_parser.yy"
+ {
+ ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1859 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1949 "dhcp6_parser.cc"
break;
case 263:
-#line 1008 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1008 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host-reservation-identifiers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
}
-#line 1870 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1960 "dhcp6_parser.cc"
break;
case 264:
-#line 1013 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1013 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1879 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1969 "dhcp6_parser.cc"
break;
case 270:
-#line 1027 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1027 "dhcp6_parser.yy"
+ {
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 1888 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1978 "dhcp6_parser.cc"
break;
case 271:
-#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1032 "dhcp6_parser.yy"
+ {
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 1897 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1987 "dhcp6_parser.cc"
break;
case 272:
-#line 1039 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1039 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay-supplied-options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1908 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1998 "dhcp6_parser.cc"
break;
case 273:
-#line 1044 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1044 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1917 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2007 "dhcp6_parser.cc"
break;
case 274:
-#line 1051 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1051 "dhcp6_parser.yy"
+ {
ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("multi-threading", mt);
ctx.stack_.push_back(mt);
ctx.enter(ctx.DHCP_MULTI_THREADING);
}
-#line 1928 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2018 "dhcp6_parser.cc"
break;
case 275:
-#line 1056 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1056 "dhcp6_parser.yy"
+ {
// The enable parameter is required.
ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1939 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2029 "dhcp6_parser.cc"
break;
case 284:
-#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1075 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-multi-threading", b);
}
-#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2038 "dhcp6_parser.cc"
break;
case 285:
-#line 1080 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1080 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("thread-pool-size", prf);
}
-#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2047 "dhcp6_parser.cc"
break;
case 286:
-#line 1085 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1085 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("packet-queue-size", prf);
}
-#line 1966 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2056 "dhcp6_parser.cc"
break;
case 287:
-#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1090 "dhcp6_parser.yy"
+ {
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 1977 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2067 "dhcp6_parser.cc"
break;
case 288:
-#line 1095 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1095 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1986 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2076 "dhcp6_parser.cc"
break;
case 293:
-#line 1108 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1108 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1996 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2086 "dhcp6_parser.cc"
break;
case 294:
-#line 1112 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1112 "dhcp6_parser.yy"
+ {
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2006 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2096 "dhcp6_parser.cc"
break;
case 295:
-#line 1118 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1118 "dhcp6_parser.yy"
+ {
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2016 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2106 "dhcp6_parser.cc"
break;
case 296:
-#line 1122 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1122 "dhcp6_parser.yy"
+ {
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2026 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2116 "dhcp6_parser.cc"
break;
case 302:
-#line 1137 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1137 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2034 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2124 "dhcp6_parser.cc"
break;
case 303:
-#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1139 "dhcp6_parser.yy"
+ {
+ ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 2044 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2134 "dhcp6_parser.cc"
break;
case 304:
-#line 1145 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1145 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2052 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2142 "dhcp6_parser.cc"
break;
case 305:
-#line 1147 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
+#line 1147 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2061 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2151 "dhcp6_parser.cc"
break;
case 306:
-#line 1153 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1153 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("expired-leases-processing", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
}
-#line 2072 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2162 "dhcp6_parser.cc"
break;
case 307:
-#line 1158 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1158 "dhcp6_parser.yy"
+ {
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2082 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2172 "dhcp6_parser.cc"
break;
case 316:
-#line 1176 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1176 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reclaim-timer-wait-time", value);
}
-#line 2091 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2181 "dhcp6_parser.cc"
break;
case 317:
-#line 1181 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1181 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
}
-#line 2100 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2190 "dhcp6_parser.cc"
break;
case 318:
-#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1186 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 2109 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2199 "dhcp6_parser.cc"
break;
case 319:
-#line 1191 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1191 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 2118 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2208 "dhcp6_parser.cc"
break;
case 320:
-#line 1196 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1196 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 2127 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2217 "dhcp6_parser.cc"
break;
case 321:
-#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1201 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 2136 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2226 "dhcp6_parser.cc"
break;
case 322:
-#line 1209 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1209 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet6", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET6);
}
-#line 2147 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2237 "dhcp6_parser.cc"
break;
case 323:
-#line 1214 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1214 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2156 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2246 "dhcp6_parser.cc"
break;
case 328:
-#line 1234 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1234 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2166 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2256 "dhcp6_parser.cc"
break;
case 329:
-#line 1238 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1238 "dhcp6_parser.yy"
+ {
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
// In particular we can do things like this:
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2192 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2282 "dhcp6_parser.cc"
break;
case 330:
-#line 1260 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1260 "dhcp6_parser.yy"
+ {
// Parse the subnet6 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2202 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2292 "dhcp6_parser.cc"
break;
case 331:
-#line 1264 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1264 "dhcp6_parser.yy"
+ {
// The subnet subnet6 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2212 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2302 "dhcp6_parser.cc"
break;
case 370:
-#line 1314 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1314 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2220 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2310 "dhcp6_parser.cc"
break;
case 371:
-#line 1316 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1316 "dhcp6_parser.yy"
+ {
+ ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2320 "dhcp6_parser.cc"
break;
case 372:
-#line 1322 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1322 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2238 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2328 "dhcp6_parser.cc"
break;
case 373:
-#line 1324 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1324 "dhcp6_parser.yy"
+ {
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2248 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2338 "dhcp6_parser.cc"
break;
case 374:
-#line 1330 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1330 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2256 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2346 "dhcp6_parser.cc"
break;
case 375:
-#line 1332 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1332 "dhcp6_parser.yy"
+ {
+ ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface-id", iface);
ctx.leave();
}
-#line 2266 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2356 "dhcp6_parser.cc"
break;
case 376:
-#line 1338 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1338 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2274 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2364 "dhcp6_parser.cc"
break;
case 377:
-#line 1340 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1340 "dhcp6_parser.yy"
+ {
+ ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 2284 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2374 "dhcp6_parser.cc"
break;
case 378:
-#line 1346 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1346 "dhcp6_parser.yy"
+ {
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("require-client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2295 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2385 "dhcp6_parser.cc"
break;
case 379:
-#line 1351 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1351 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2304 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2394 "dhcp6_parser.cc"
break;
case 380:
-#line 1356 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1356 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2312 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2402 "dhcp6_parser.cc"
break;
case 381:
-#line 1358 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
+#line 1358 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2321 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2411 "dhcp6_parser.cc"
break;
case 382:
-#line 1363 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2327 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1363 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
+#line 2417 "dhcp6_parser.cc"
break;
case 383:
-#line 1364 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2333 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1364 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
+#line 2423 "dhcp6_parser.cc"
break;
case 384:
-#line 1365 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2339 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1365 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
+#line 2429 "dhcp6_parser.cc"
break;
case 385:
-#line 1366 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2345 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1366 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
+#line 2435 "dhcp6_parser.cc"
break;
case 386:
-#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1369 "dhcp6_parser.yy"
+ {
+ ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2354 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2444 "dhcp6_parser.cc"
break;
case 387:
-#line 1374 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1374 "dhcp6_parser.yy"
+ {
+ ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rapid-commit", rc);
}
-#line 2363 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2453 "dhcp6_parser.cc"
break;
case 388:
-#line 1381 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1381 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("shared-networks", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SHARED_NETWORK);
}
-#line 2374 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2464 "dhcp6_parser.cc"
break;
case 389:
-#line 1386 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1386 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2383 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2473 "dhcp6_parser.cc"
break;
case 394:
-#line 1401 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1401 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2393 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2483 "dhcp6_parser.cc"
break;
case 395:
-#line 1405 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1405 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
}
-#line 2401 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2491 "dhcp6_parser.cc"
break;
case 431:
-#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1452 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 2412 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2502 "dhcp6_parser.cc"
break;
case 432:
-#line 1457 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1457 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2421 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2511 "dhcp6_parser.cc"
break;
case 433:
-#line 1465 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1465 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2430 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2520 "dhcp6_parser.cc"
break;
case 434:
-#line 1468 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1468 "dhcp6_parser.yy"
+ {
// parsing completed
}
-#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2528 "dhcp6_parser.cc"
break;
case 439:
-#line 1484 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1484 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2448 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2538 "dhcp6_parser.cc"
break;
case 440:
-#line 1488 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1488 "dhcp6_parser.yy"
+ {
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2460 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2550 "dhcp6_parser.cc"
break;
case 441:
-#line 1499 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1499 "dhcp6_parser.yy"
+ {
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2470 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2560 "dhcp6_parser.cc"
break;
case 442:
-#line 1503 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1503 "dhcp6_parser.yy"
+ {
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2482 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2572 "dhcp6_parser.cc"
break;
case 458:
-#line 1535 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1535 "dhcp6_parser.yy"
+ {
+ ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 2491 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2581 "dhcp6_parser.cc"
break;
case 460:
-#line 1542 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1542 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2499 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2589 "dhcp6_parser.cc"
break;
case 461:
-#line 1544 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1544 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 2509 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2599 "dhcp6_parser.cc"
break;
case 462:
-#line 1550 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1550 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2517 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2607 "dhcp6_parser.cc"
break;
case 463:
-#line 1552 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1552 "dhcp6_parser.yy"
+ {
+ ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 2527 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2617 "dhcp6_parser.cc"
break;
case 464:
-#line 1558 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1558 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2535 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2625 "dhcp6_parser.cc"
break;
case 465:
-#line 1560 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1560 "dhcp6_parser.yy"
+ {
+ ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 2545 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2635 "dhcp6_parser.cc"
break;
case 467:
-#line 1568 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1568 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2553 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2643 "dhcp6_parser.cc"
break;
case 468:
-#line 1570 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1570 "dhcp6_parser.yy"
+ {
+ ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 2563 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2653 "dhcp6_parser.cc"
break;
case 469:
-#line 1576 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1576 "dhcp6_parser.yy"
+ {
+ ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 2572 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2662 "dhcp6_parser.cc"
break;
case 470:
-#line 1585 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1585 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 2583 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2673 "dhcp6_parser.cc"
break;
case 471:
-#line 1590 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1590 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2592 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2682 "dhcp6_parser.cc"
break;
case 476:
-#line 1609 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1609 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2602 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2692 "dhcp6_parser.cc"
break;
case 477:
-#line 1613 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1613 "dhcp6_parser.yy"
+ {
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 2611 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2701 "dhcp6_parser.cc"
break;
case 478:
-#line 1621 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1621 "dhcp6_parser.yy"
+ {
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2621 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2711 "dhcp6_parser.cc"
break;
case 479:
-#line 1625 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1625 "dhcp6_parser.yy"
+ {
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 2630 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2720 "dhcp6_parser.cc"
break;
case 494:
-#line 1658 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1658 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2638 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2728 "dhcp6_parser.cc"
break;
case 495:
-#line 1660 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1660 "dhcp6_parser.yy"
+ {
+ ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2648 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2738 "dhcp6_parser.cc"
break;
case 498:
-#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1670 "dhcp6_parser.yy"
+ {
+ ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2657 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2747 "dhcp6_parser.cc"
break;
case 499:
-#line 1675 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 1675 "dhcp6_parser.yy"
+ {
+ ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2666 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2756 "dhcp6_parser.cc"
break;
case 500:
-#line 1683 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1683 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 2677 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2767 "dhcp6_parser.cc"
break;
case 501:
-#line 1688 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1688 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2686 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2776 "dhcp6_parser.cc"
break;
case 506:
-#line 1703 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1703 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2696 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2786 "dhcp6_parser.cc"
break;
case 507:
-#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1707 "dhcp6_parser.yy"
+ {
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2706 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2796 "dhcp6_parser.cc"
break;
case 508:
-#line 1713 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1713 "dhcp6_parser.yy"
+ {
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2716 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2806 "dhcp6_parser.cc"
break;
case 509:
-#line 1717 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1717 "dhcp6_parser.yy"
+ {
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2726 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2816 "dhcp6_parser.cc"
break;
case 519:
-#line 1736 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1736 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2734 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2824 "dhcp6_parser.cc"
break;
case 520:
-#line 1738 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1738 "dhcp6_parser.yy"
+ {
+ ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2744 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2834 "dhcp6_parser.cc"
break;
case 521:
-#line 1744 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1744 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2752 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2842 "dhcp6_parser.cc"
break;
case 522:
-#line 1746 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1746 "dhcp6_parser.yy"
+ {
ElementPtr parent = ctx.stack_.back();
- ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
+ ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
ConstElementPtr old = parent->get("user-context");
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2779 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2869 "dhcp6_parser.cc"
break;
case 523:
-#line 1769 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1769 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2787 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2877 "dhcp6_parser.cc"
break;
case 524:
-#line 1771 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1771 "dhcp6_parser.yy"
+ {
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
- ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
user_context->set("comment", comment);
// Handle already existing user context
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2816 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2906 "dhcp6_parser.cc"
break;
case 525:
-#line 1799 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1799 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pd-pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.PD_POOLS);
}
-#line 2827 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2917 "dhcp6_parser.cc"
break;
case 526:
-#line 1804 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1804 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2836 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2926 "dhcp6_parser.cc"
break;
case 531:
-#line 1819 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1819 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2846 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2936 "dhcp6_parser.cc"
break;
case 532:
-#line 1823 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1823 "dhcp6_parser.yy"
+ {
// The prefix, prefix len and delegated len parameters are required.
ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2858 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2948 "dhcp6_parser.cc"
break;
case 533:
-#line 1831 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1831 "dhcp6_parser.yy"
+ {
// Parse the pd-pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2868 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2958 "dhcp6_parser.cc"
break;
case 534:
-#line 1835 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1835 "dhcp6_parser.yy"
+ {
// The prefix, prefix len and delegated len parameters are required.
ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2880 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2970 "dhcp6_parser.cc"
break;
case 548:
-#line 1860 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1860 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2888 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2978 "dhcp6_parser.cc"
break;
case 549:
-#line 1862 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1862 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix", prf);
ctx.leave();
}
-#line 2898 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2988 "dhcp6_parser.cc"
break;
case 550:
-#line 1868 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1868 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix-len", prf);
}
-#line 2907 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2997 "dhcp6_parser.cc"
break;
case 551:
-#line 1873 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1873 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2915 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3005 "dhcp6_parser.cc"
break;
case 552:
-#line 1875 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1875 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix", prf);
ctx.leave();
}
-#line 2925 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3015 "dhcp6_parser.cc"
break;
case 553:
-#line 1881 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1881 "dhcp6_parser.yy"
+ {
+ ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix-len", prf);
}
-#line 2934 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3024 "dhcp6_parser.cc"
break;
case 554:
-#line 1886 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 1886 "dhcp6_parser.yy"
+ {
+ ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("delegated-len", deleg);
}
-#line 2943 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3033 "dhcp6_parser.cc"
break;
case 555:
-#line 1894 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1894 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 2954 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3044 "dhcp6_parser.cc"
break;
case 556:
-#line 1899 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1899 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2963 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3053 "dhcp6_parser.cc"
break;
case 561:
-#line 1912 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1912 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2973 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3063 "dhcp6_parser.cc"
break;
case 562:
-#line 1916 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1916 "dhcp6_parser.yy"
+ {
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2982 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3072 "dhcp6_parser.cc"
break;
case 563:
-#line 1921 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1921 "dhcp6_parser.yy"
+ {
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2992 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3082 "dhcp6_parser.cc"
break;
case 564:
-#line 1925 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1925 "dhcp6_parser.yy"
+ {
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 3001 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3091 "dhcp6_parser.cc"
break;
case 580:
-#line 1952 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1952 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-addresses", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3012 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3102 "dhcp6_parser.cc"
break;
case 581:
-#line 1957 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1957 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3021 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3111 "dhcp6_parser.cc"
break;
case 582:
-#line 1962 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1962 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefixes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3032 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3122 "dhcp6_parser.cc"
break;
case 583:
-#line 1967 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1967 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3041 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3131 "dhcp6_parser.cc"
break;
case 584:
-#line 1972 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1972 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3049 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3139 "dhcp6_parser.cc"
break;
case 585:
-#line 1974 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1974 "dhcp6_parser.yy"
+ {
+ ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 3059 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3149 "dhcp6_parser.cc"
break;
case 586:
-#line 1980 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1980 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3157 "dhcp6_parser.cc"
break;
case 587:
-#line 1982 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1982 "dhcp6_parser.yy"
+ {
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 3077 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3167 "dhcp6_parser.cc"
break;
case 588:
-#line 1988 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1988 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3085 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3175 "dhcp6_parser.cc"
break;
case 589:
-#line 1990 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1990 "dhcp6_parser.yy"
+ {
+ ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 3095 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3185 "dhcp6_parser.cc"
break;
case 590:
-#line 1996 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 1996 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3103 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3193 "dhcp6_parser.cc"
break;
case 591:
-#line 1998 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 1998 "dhcp6_parser.yy"
+ {
+ ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 3113 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3203 "dhcp6_parser.cc"
break;
case 592:
-#line 2004 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2004 "dhcp6_parser.yy"
+ {
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3124 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3214 "dhcp6_parser.cc"
break;
case 593:
-#line 2009 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2009 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3133 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3223 "dhcp6_parser.cc"
break;
case 594:
-#line 2017 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2017 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 3144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3234 "dhcp6_parser.cc"
break;
case 595:
-#line 2022 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2022 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3153 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3243 "dhcp6_parser.cc"
break;
case 598:
-#line 2031 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2031 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3251 "dhcp6_parser.cc"
break;
case 599:
-#line 2033 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2033 "dhcp6_parser.yy"
+ {
+ ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 3171 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3261 "dhcp6_parser.cc"
break;
case 600:
-#line 2042 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2042 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 3182 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3272 "dhcp6_parser.cc"
break;
case 601:
-#line 2047 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2047 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3191 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3281 "dhcp6_parser.cc"
break;
case 604:
-#line 2056 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2056 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3201 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3291 "dhcp6_parser.cc"
break;
case 605:
-#line 2060 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2060 "dhcp6_parser.yy"
+ {
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3211 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3301 "dhcp6_parser.cc"
break;
case 618:
-#line 2085 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2085 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3219 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3309 "dhcp6_parser.cc"
break;
case 619:
-#line 2087 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2087 "dhcp6_parser.yy"
+ {
+ ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 3229 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3319 "dhcp6_parser.cc"
break;
case 620:
-#line 2093 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2093 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 3238 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3328 "dhcp6_parser.cc"
break;
case 621:
-#line 2101 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2101 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-id", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER_ID);
}
-#line 3249 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3339 "dhcp6_parser.cc"
break;
case 622:
-#line 2106 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2106 "dhcp6_parser.yy"
+ {
// The type parameter is required.
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3260 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3350 "dhcp6_parser.cc"
break;
case 634:
-#line 2128 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2128 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.DUID_TYPE);
}
-#line 3268 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3358 "dhcp6_parser.cc"
break;
case 635:
-#line 2130 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+#line 2130 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3277 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3367 "dhcp6_parser.cc"
break;
case 636:
-#line 2135 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3283 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2135 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 3373 "dhcp6_parser.cc"
break;
case 637:
-#line 2136 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3289 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2136 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 3379 "dhcp6_parser.cc"
break;
case 638:
-#line 2137 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3295 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2137 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 3385 "dhcp6_parser.cc"
break;
case 639:
-#line 2140 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2140 "dhcp6_parser.yy"
+ {
+ ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("htype", htype);
}
-#line 3304 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3394 "dhcp6_parser.cc"
break;
case 640:
-#line 2145 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2145 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3312 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3402 "dhcp6_parser.cc"
break;
case 641:
-#line 2147 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2147 "dhcp6_parser.yy"
+ {
+ ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("identifier", id);
ctx.leave();
}
-#line 3322 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3412 "dhcp6_parser.cc"
break;
case 642:
-#line 2153 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2153 "dhcp6_parser.yy"
+ {
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("time", time);
}
-#line 3331 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3421 "dhcp6_parser.cc"
break;
case 643:
-#line 2158 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2158 "dhcp6_parser.yy"
+ {
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enterprise-id", time);
}
-#line 3340 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3430 "dhcp6_parser.cc"
break;
case 644:
-#line 2165 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2165 "dhcp6_parser.yy"
+ {
+ ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 3349 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3439 "dhcp6_parser.cc"
break;
case 645:
-#line 2172 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2172 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 3360 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3450 "dhcp6_parser.cc"
break;
case 646:
-#line 2177 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2177 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3369 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3459 "dhcp6_parser.cc"
break;
case 654:
-#line 2193 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2193 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3377 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3467 "dhcp6_parser.cc"
break;
case 655:
-#line 2195 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2195 "dhcp6_parser.yy"
+ {
+ ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 3387 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3477 "dhcp6_parser.cc"
break;
case 656:
-#line 2201 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2201 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3395 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3485 "dhcp6_parser.cc"
break;
case 657:
-#line 2203 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2203 "dhcp6_parser.yy"
+ {
+ 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 3405 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3495 "dhcp6_parser.cc"
break;
case 658:
-#line 2212 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2212 "dhcp6_parser.yy"
+ {
ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-queue-control", qc);
ctx.stack_.push_back(qc);
ctx.enter(ctx.DHCP_QUEUE_CONTROL);
}
-#line 3416 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3506 "dhcp6_parser.cc"
break;
case 659:
-#line 2217 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2217 "dhcp6_parser.yy"
+ {
// The enable queue parameter is required.
ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3427 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3517 "dhcp6_parser.cc"
break;
case 668:
-#line 2236 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2236 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-queue", b);
}
-#line 3436 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3526 "dhcp6_parser.cc"
break;
case 669:
-#line 2241 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2241 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3444 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3534 "dhcp6_parser.cc"
break;
case 670:
-#line 2243 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr qt(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2243 "dhcp6_parser.yy"
+ {
+ ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("queue-type", qt);
ctx.leave();
}
-#line 3454 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3544 "dhcp6_parser.cc"
break;
case 671:
-#line 2249 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr c(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2249 "dhcp6_parser.yy"
+ {
+ ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("capacity", c);
}
-#line 3463 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3553 "dhcp6_parser.cc"
break;
case 672:
-#line 2254 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2254 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3471 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3561 "dhcp6_parser.cc"
break;
case 673:
-#line 2256 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set(yystack_[3].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
+#line 2256 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3480 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3570 "dhcp6_parser.cc"
break;
case 674:
-#line 2263 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2263 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 3491 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3581 "dhcp6_parser.cc"
break;
case 675:
-#line 2268 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2268 "dhcp6_parser.yy"
+ {
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3502 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3592 "dhcp6_parser.cc"
break;
case 676:
-#line 2275 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2275 "dhcp6_parser.yy"
+ {
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3512 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3602 "dhcp6_parser.cc"
break;
case 677:
-#line 2279 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2279 "dhcp6_parser.yy"
+ {
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3522 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3612 "dhcp6_parser.cc"
break;
case 698:
-#line 2309 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2309 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 3531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3621 "dhcp6_parser.cc"
break;
case 699:
-#line 2314 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2314 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3539 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3629 "dhcp6_parser.cc"
break;
case 700:
-#line 2316 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2316 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 3549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3639 "dhcp6_parser.cc"
break;
case 701:
-#line 2322 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2322 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3557 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3647 "dhcp6_parser.cc"
break;
case 702:
-#line 2324 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2324 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 3567 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3657 "dhcp6_parser.cc"
break;
case 703:
-#line 2330 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2330 "dhcp6_parser.yy"
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 3576 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3666 "dhcp6_parser.cc"
break;
case 704:
-#line 2335 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2335 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3584 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3674 "dhcp6_parser.cc"
break;
case 705:
-#line 2337 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2337 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 3594 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3684 "dhcp6_parser.cc"
break;
case 706:
-#line 2343 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2343 "dhcp6_parser.yy"
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 3603 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3693 "dhcp6_parser.cc"
break;
case 707:
-#line 2348 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2348 "dhcp6_parser.yy"
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 3612 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3702 "dhcp6_parser.cc"
break;
case 708:
-#line 2353 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2353 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 3620 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3710 "dhcp6_parser.cc"
break;
case 709:
-#line 2355 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
+#line 2355 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3629 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3719 "dhcp6_parser.cc"
break;
case 710:
-#line 2361 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3635 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2361 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3725 "dhcp6_parser.cc"
break;
case 711:
-#line 2362 "dhcp6_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3641 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2362 "dhcp6_parser.yy"
+ { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3731 "dhcp6_parser.cc"
break;
case 712:
-#line 2365 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2365 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NCR_FORMAT);
}
-#line 3649 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3739 "dhcp6_parser.cc"
break;
case 713:
-#line 2367 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2367 "dhcp6_parser.yy"
+ {
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 3659 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3749 "dhcp6_parser.cc"
break;
case 714:
-#line 2374 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2374 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 3668 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3758 "dhcp6_parser.cc"
break;
case 715:
-#line 2380 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2380 "dhcp6_parser.yy"
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 3677 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3767 "dhcp6_parser.cc"
break;
case 716:
-#line 2386 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2386 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 3685 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3775 "dhcp6_parser.cc"
break;
case 717:
-#line 2388 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
+#line 2388 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3694 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3784 "dhcp6_parser.cc"
break;
case 718:
-#line 2394 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2394 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3702 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3792 "dhcp6_parser.cc"
break;
case 719:
-#line 2396 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2396 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 3712 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3802 "dhcp6_parser.cc"
break;
case 720:
-#line 2403 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2403 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3720 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3810 "dhcp6_parser.cc"
break;
case 721:
-#line 2405 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2405 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 3730 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3820 "dhcp6_parser.cc"
break;
case 722:
-#line 2412 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2412 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3738 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3828 "dhcp6_parser.cc"
break;
case 723:
-#line 2414 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2414 "dhcp6_parser.yy"
+ {
+ ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 3748 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3838 "dhcp6_parser.cc"
break;
case 724:
-#line 2423 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2423 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3756 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3846 "dhcp6_parser.cc"
break;
case 725:
-#line 2425 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
+#line 2425 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3765 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3855 "dhcp6_parser.cc"
break;
case 726:
-#line 2430 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2430 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3773 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3863 "dhcp6_parser.cc"
break;
case 727:
-#line 2432 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
+#line 2432 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3782 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3872 "dhcp6_parser.cc"
break;
case 728:
-#line 2437 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2437 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3790 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3880 "dhcp6_parser.cc"
break;
case 729:
-#line 2439 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+#line 2439 "dhcp6_parser.yy"
+ {
+ ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 3799 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3889 "dhcp6_parser.cc"
break;
case 730:
-#line 2446 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2446 "dhcp6_parser.yy"
+ {
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-control", i);
ctx.stack_.push_back(i);
ctx.enter(ctx.CONFIG_CONTROL);
}
-#line 3810 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3900 "dhcp6_parser.cc"
break;
case 731:
-#line 2451 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2451 "dhcp6_parser.yy"
+ {
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3820 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3910 "dhcp6_parser.cc"
break;
case 732:
-#line 2457 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2457 "dhcp6_parser.yy"
+ {
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3830 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3920 "dhcp6_parser.cc"
break;
case 733:
-#line 2461 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2461 "dhcp6_parser.yy"
+ {
// No config_control params are required
// parsing completed
}
-#line 3839 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3929 "dhcp6_parser.cc"
break;
case 738:
-#line 2476 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2476 "dhcp6_parser.yy"
+ {
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-databases", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CONFIG_DATABASE);
}
-#line 3850 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3940 "dhcp6_parser.cc"
break;
case 739:
-#line 2481 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2481 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3859 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3949 "dhcp6_parser.cc"
break;
case 740:
-#line 2486 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2486 "dhcp6_parser.yy"
+ {
+ ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
}
-#line 3868 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3958 "dhcp6_parser.cc"
break;
case 741:
-#line 2496 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2496 "dhcp6_parser.yy"
+ {
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 3879 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3969 "dhcp6_parser.cc"
break;
case 742:
-#line 2501 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2501 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3888 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3978 "dhcp6_parser.cc"
break;
case 743:
-#line 2506 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2506 "dhcp6_parser.yy"
+ {
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3898 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3988 "dhcp6_parser.cc"
break;
case 744:
-#line 2510 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2510 "dhcp6_parser.yy"
+ {
// parsing completed
}
-#line 3906 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3996 "dhcp6_parser.cc"
break;
case 748:
-#line 2526 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2526 "dhcp6_parser.yy"
+ {
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 3917 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4007 "dhcp6_parser.cc"
break;
case 749:
-#line 2531 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2531 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3926 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4016 "dhcp6_parser.cc"
break;
case 752:
-#line 2543 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2543 "dhcp6_parser.yy"
+ {
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3936 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4026 "dhcp6_parser.cc"
break;
case 753:
-#line 2547 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2547 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
}
-#line 3944 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4034 "dhcp6_parser.cc"
break;
case 763:
-#line 2564 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2564 "dhcp6_parser.yy"
+ {
+ ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 3953 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4043 "dhcp6_parser.cc"
break;
case 764:
-#line 2569 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2569 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3961 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4051 "dhcp6_parser.cc"
break;
case 765:
-#line 2571 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2571 "dhcp6_parser.yy"
+ {
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3971 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4061 "dhcp6_parser.cc"
break;
case 766:
-#line 2577 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2577 "dhcp6_parser.yy"
+ {
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 3982 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4072 "dhcp6_parser.cc"
break;
case 767:
-#line 2582 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2582 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3991 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4081 "dhcp6_parser.cc"
break;
case 770:
-#line 2591 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2591 "dhcp6_parser.yy"
+ {
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 4001 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4091 "dhcp6_parser.cc"
break;
case 771:
-#line 2595 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2595 "dhcp6_parser.yy"
+ {
ctx.stack_.pop_back();
}
-#line 4009 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4099 "dhcp6_parser.cc"
break;
case 779:
-#line 2610 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2610 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4017 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4107 "dhcp6_parser.cc"
break;
case 780:
-#line 2612 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2612 "dhcp6_parser.yy"
+ {
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 4027 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4117 "dhcp6_parser.cc"
break;
case 781:
-#line 2618 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+#line 2618 "dhcp6_parser.yy"
+ {
+ ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 4036 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4126 "dhcp6_parser.cc"
break;
case 782:
-#line 2623 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2623 "dhcp6_parser.yy"
+ {
+ ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 4045 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4135 "dhcp6_parser.cc"
break;
case 783:
-#line 2628 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+#line 2628 "dhcp6_parser.yy"
+ {
+ ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 4054 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4144 "dhcp6_parser.cc"
break;
case 784:
-#line 2633 "dhcp6_parser.yy" // lalr1.cc:859
- {
+#line 2633 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4062 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4152 "dhcp6_parser.cc"
break;
case 785:
-#line 2635 "dhcp6_parser.yy" // lalr1.cc:859
- {
- ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+#line 2635 "dhcp6_parser.yy"
+ {
+ ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 4072 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4162 "dhcp6_parser.cc"
break;
-#line 4076 "dhcp6_parser.cc" // lalr1.cc:859
+#line 4166 "dhcp6_parser.cc"
+
default:
break;
}
}
+#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
+ YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
error (yyexc);
YYERROR;
}
+#endif // YY_EXCEPTIONS
YY_SYMBOL_PRINT ("-> $$ =", yylhs);
yypop_ (yylen);
yylen = 0;
YY_STACK_PRINT ();
// Shift the result of the reduction.
- yypush_ (YY_NULLPTR, yylhs);
+ yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
}
goto yynewstate;
+
/*--------------------------------------.
| yyerrlab -- here on detecting error. |
`--------------------------------------*/
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
+ /* Pacify compilers when the user code never invokes YYERROR and
+ the label yyerrorlab therefore never appears in user code. */
if (false)
- goto yyerrorlab;
- yyerror_range[1].location = yystack_[yylen - 1].location;
+ YYERROR;
+
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
yylen = 0;
goto yyerrlab1;
+
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
stack_symbol_type error_token;
for (;;)
{
- yyn = yypact_[yystack_[0].state];
+ yyn = yypact_[+yystack_[0].state];
if (!yy_pact_value_is_default_ (yyn))
{
- yyn += yyterror_;
- if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
+ yyn += yy_error_token_;
+ if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yy_error_token_)
{
yyn = yytable_[yyn];
if (0 < yyn)
YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
// Shift the error token.
- error_token.state = yyn;
- yypush_ ("Shifting", error_token);
+ error_token.state = state_type (yyn);
+ yypush_ ("Shifting", YY_MOVE (error_token));
}
goto yynewstate;
- // Accept.
+
+ /*-------------------------------------.
+ | yyacceptlab -- YYACCEPT comes here. |
+ `-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
- // Abort.
+
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
+
+ /*-----------------------------------------------------.
+ | yyreturn -- parsing is finished, return the result. |
+ `-----------------------------------------------------*/
yyreturn:
if (!yyla.empty ())
yy_destroy_ ("Cleanup: discarding lookahead", yyla);
return yyresult;
}
+#if YY_EXCEPTIONS
catch (...)
{
- YYCDEBUG << "Exception caught: cleaning lookahead and stack"
- << std::endl;
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
// Do not try to display the values of the reclaimed symbols,
- // as their printer might throw an exception.
+ // as their printers might throw an exception.
if (!yyla.empty ())
yy_destroy_ (YY_NULLPTR, yyla);
}
throw;
}
+#endif // YY_EXCEPTIONS
}
void
Dhcp6Parser::error (const syntax_error& yyexc)
{
- error (yyexc.location, yyexc.what());
+ error (yyexc.location, yyexc.what ());
}
// Generate an error message.
{
// Number of reported tokens (one for the "unexpected", one per
// "expected").
- size_t yycount = 0;
+ std::ptrdiff_t yycount = 0;
// Its maximum.
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
// Arguments of yyformat.
- Of course, the expected token list depends on states to have
correct lookahead information, and it depends on the parser not
to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state
- merging (from LALR or IELR) and default reductions corrupt the
- expected token list. However, the list is correct for
- canonical LR with one exception: it will still contain any
- token that will not be accepted due to an error action in a
- later state.
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
*/
if (!yyla.empty ())
{
- int yytoken = yyla.type_get ();
+ symbol_number_type yytoken = yyla.type_get ();
yyarg[yycount++] = yytname_[yytoken];
- int yyn = yypact_[yystate];
+
+ int yyn = yypact_[+yystate];
if (!yy_pact_value_is_default_ (yyn))
{
/* Start YYX at -YYN if negative to avoid negative indexes in
int yychecklim = yylast_ - yyn + 1;
int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
+ if (yycheck_[yyx + yyn] == yyx && yyx != yy_error_token_
&& !yy_table_value_is_error_ (yytable_[yyx + yyn]))
{
if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
case N: \
yyformat = S; \
break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+ default: // Avoid compiler warnings.
+ YYCASE_ (0, YY_("syntax error"));
+ YYCASE_ (1, YY_("syntax error, unexpected %s"));
+ YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
#undef YYCASE_
}
std::string yyres;
// Argument number.
- size_t yyi = 0;
+ std::ptrdiff_t yyi = 0;
for (char const* yyp = yyformat; *yyp; ++yyp)
if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
{
}
- const short int Dhcp6Parser::yypact_ninf_ = -961;
+ const short Dhcp6Parser::yypact_ninf_ = -961;
const signed char Dhcp6Parser::yytable_ninf_ = -1;
- const short int
+ const short
Dhcp6Parser::yypact_[] =
{
403, -961, -961, -961, -961, -961, -961, -961, -961, -961,
878, -961, -961, -961
};
- const unsigned short int
+ const short
Dhcp6Parser::yydefact_[] =
{
0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
0, 773, 780, 785
};
- const short int
+ const short
Dhcp6Parser::yypgoto_[] =
{
-961, -961, -961, -961, -961, -961, -961, -961, -961, -961,
-961, -961, -961, -961, -961, -961, -961
};
- const short int
+ const short
Dhcp6Parser::yydefgoto_[] =
{
-1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1253, 1259, 1254, 1255, 1256, 1257, 1263
};
- const unsigned short int
+ const short
Dhcp6Parser::yytable_[] =
{
100, 160, 217, 234, 273, 287, 307, 350, 329, 348,
1110, 0, 0, 0, 1109
};
- const short int
+ const short
Dhcp6Parser::yycheck_[] =
{
74, 75, 76, 77, 78, 79, 80, 83, 82, 83,
1202, -1, -1, -1, 1202
};
- const unsigned short int
+ const short
Dhcp6Parser::yystos_[] =
{
0, 184, 185, 186, 187, 188, 189, 190, 191, 192,
4, 632, 199, 199
};
- const unsigned short int
+ const short
Dhcp6Parser::yyr1_[] =
{
0, 203, 205, 204, 206, 204, 207, 204, 208, 204,
633, 635, 636, 637, 639, 638
};
- const unsigned char
+ const signed char
Dhcp6Parser::yyr2_[] =
{
0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
};
#if PARSER6_DEBUG
- const unsigned short int
+ const short
Dhcp6Parser::yyrline_[] =
{
0, 289, 289, 289, 290, 290, 291, 291, 292, 292,
i = yystack_.begin (),
i_end = yystack_.end ();
i != i_end; ++i)
- *yycdebug_ << ' ' << i->state;
- *yycdebug_ << std::endl;
+ *yycdebug_ << ' ' << int (i->state);
+ *yycdebug_ << '\n';
}
// Report on the debug stream that the rule \a yyrule is going to be reduced.
void
Dhcp6Parser::yy_reduce_print_ (int yyrule)
{
- unsigned int yylno = yyrline_[yyrule];
+ int yylno = yyrline_[yyrule];
int yynrhs = yyr2_[yyrule];
// Print the symbols being reduced, and their result.
*yycdebug_ << "Reducing stack by rule " << yyrule - 1
- << " (line " << yylno << "):" << std::endl;
+ << " (line " << yylno << "):\n";
// The symbols being reduced.
for (int yyi = 0; yyi < yynrhs; yyi++)
YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
#endif // PARSER6_DEBUG
-#line 14 "dhcp6_parser.yy" // lalr1.cc:1167
+#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 5554 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 2641 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 5660 "dhcp6_parser.cc"
+
+#line 2641 "dhcp6_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.0.4.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
+
/**
** \file dhcp6_parser.h
** Define the isc::dhcp::parser class.
// C++ LALR(1) parser skeleton written by Akim Demaille.
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details. Do not rely on them.
+
#ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
# define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
-// // "%code requires" blocks.
-#line 17 "dhcp6_parser.yy" // lalr1.cc:377
+// "%code requires" blocks.
+#line 17 "dhcp6_parser.yy"
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 56 "dhcp6_parser.h" // lalr1.cc:377
+#line 60 "dhcp6_parser.h"
# include <cassert>
# include <cstdlib> // std::abort
# include <stdexcept>
# include <string>
# include <vector>
-# include "stack.hh"
+
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
+// Support move semantics when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_MOVE std::move
+# define YY_MOVE_OR_COPY move
+# define YY_MOVE_REF(Type) Type&&
+# define YY_RVREF(Type) Type&&
+# define YY_COPY(Type) Type
+#else
+# define YY_MOVE
+# define YY_MOVE_OR_COPY copy
+# define YY_MOVE_REF(Type) Type&
+# define YY_RVREF(Type) const Type&
+# define YY_COPY(Type) const Type&
+#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
# include "location.hh"
#include <typeinfo>
-#ifndef YYASSERT
+#ifndef YY_ASSERT
# include <cassert>
-# define YYASSERT assert
+# define YY_ASSERT assert
#endif
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
-# define YY_ATTRIBUTE(Spec) /* empty */
+# define YY_ATTRIBUTE_PURE
# endif
#endif
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
-#endif
-
#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# define YY_ATTRIBUTE_UNUSED
# endif
#endif
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
/* Debug traces. */
#ifndef PARSER6_DEBUG
# if defined YYDEBUG
# endif /* ! defined YYDEBUG */
#endif /* ! defined PARSER6_DEBUG */
-#line 14 "dhcp6_parser.yy" // lalr1.cc:377
+#line 14 "dhcp6_parser.yy"
namespace isc { namespace dhcp {
-#line 141 "dhcp6_parser.h" // lalr1.cc:377
+#line 203 "dhcp6_parser.h"
+
- /// A char[S] buffer to store and retrieve objects.
+ /// A Bison parser.
+ class Dhcp6Parser
+ {
+ public:
+#ifndef PARSER6_STYPE
+ /// A buffer to store and retrieve objects.
///
/// Sort of a variant, but does not keep track of the nature
/// of the stored data, since that knowledge is available
- /// via the current state.
- template <size_t S>
- struct variant
+ /// via the current parser state.
+ class semantic_type
{
+ public:
/// Type of *this.
- typedef variant<S> self_type;
+ typedef semantic_type self_type;
/// Empty construction.
- variant ()
- : yytypeid_ (YY_NULLPTR)
+ semantic_type () YY_NOEXCEPT
+ : yybuffer_ ()
+ , yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (const T& t)
+ semantic_type (YY_RVREF (T) t)
: yytypeid_ (&typeid (T))
{
- YYASSERT (sizeof (T) <= S);
- new (yyas_<T> ()) T (t);
+ YY_ASSERT (sizeof (T) <= size);
+ new (yyas_<T> ()) T (YY_MOVE (t));
}
/// Destruction, allowed only if empty.
- ~variant ()
+ ~semantic_type () YY_NOEXCEPT
{
- YYASSERT (!yytypeid_);
+ YY_ASSERT (!yytypeid_);
}
+# if 201103L <= YY_CPLUSPLUS
+ /// Instantiate a \a T in here from \a t.
+ template <typename T, typename... U>
+ T&
+ emplace (U&&... u)
+ {
+ YY_ASSERT (!yytypeid_);
+ YY_ASSERT (sizeof (T) <= size);
+ yytypeid_ = & typeid (T);
+ return *new (yyas_<T> ()) T (std::forward <U>(u)...);
+ }
+# else
/// Instantiate an empty \a T in here.
template <typename T>
T&
- build ()
+ emplace ()
{
- YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (!yytypeid_);
+ YY_ASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T;
+ return *new (yyas_<T> ()) T ();
}
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
- build (const T& t)
+ emplace (const T& t)
{
- YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (!yytypeid_);
+ YY_ASSERT (sizeof (T) <= size);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
+# endif
+
+ /// Instantiate an empty \a T in here.
+ /// Obsolete, use emplace.
+ template <typename T>
+ T&
+ build ()
+ {
+ return emplace<T> ();
+ }
+
+ /// Instantiate a \a T in here from \a t.
+ /// Obsolete, use emplace.
+ template <typename T>
+ T&
+ build (const T& t)
+ {
+ return emplace<T> (t);
+ }
/// Accessor to a built \a T.
template <typename T>
T&
- as ()
+ as () YY_NOEXCEPT
{
- YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (yytypeid_);
+ YY_ASSERT (*yytypeid_ == typeid (T));
+ YY_ASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
/// Const accessor to a built \a T (for %printer).
template <typename T>
const T&
- as () const
+ as () const YY_NOEXCEPT
{
- YYASSERT (*yytypeid_ == typeid (T));
- YYASSERT (sizeof (T) <= S);
+ YY_ASSERT (yytypeid_);
+ YY_ASSERT (*yytypeid_ == typeid (T));
+ YY_ASSERT (sizeof (T) <= size);
return *yyas_<T> ();
}
- /// Swap the content with \a other, of same type.
+ /// Swap the content with \a that, of same type.
///
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
- /// should not be the variant's responsability.
+ /// should not be the variant's responsibility.
/// Swapping between built and (possibly) non-built is done with
- /// variant::move ().
+ /// self_type::move ().
template <typename T>
void
- swap (self_type& other)
+ swap (self_type& that) YY_NOEXCEPT
{
- YYASSERT (yytypeid_);
- YYASSERT (*yytypeid_ == *other.yytypeid_);
- std::swap (as<T> (), other.as<T> ());
+ YY_ASSERT (yytypeid_);
+ YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+ std::swap (as<T> (), that.as<T> ());
}
- /// Move the content of \a other to this.
+ /// Move the content of \a that to this.
///
- /// Destroys \a other.
+ /// Destroys \a that.
+ template <typename T>
+ void
+ move (self_type& that)
+ {
+# if 201103L <= YY_CPLUSPLUS
+ emplace<T> (std::move (that.as<T> ()));
+# else
+ emplace<T> ();
+ swap<T> (that);
+# endif
+ that.destroy<T> ();
+ }
+
+# if 201103L <= YY_CPLUSPLUS
+ /// Move the content of \a that to this.
template <typename T>
void
- move (self_type& other)
+ move (self_type&& that)
{
- build<T> ();
- swap<T> (other);
- other.destroy<T> ();
+ emplace<T> (std::move (that.as<T> ()));
+ that.destroy<T> ();
}
+#endif
- /// Copy the content of \a other to this.
+ /// Copy the content of \a that to this.
template <typename T>
void
- copy (const self_type& other)
+ copy (const self_type& that)
{
- build<T> (other.as<T> ());
+ emplace<T> (that.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
- self_type& operator=(const self_type&);
- variant (const self_type&);
+ self_type& operator= (const self_type&);
+ semantic_type (const self_type&);
/// Accessor to raw memory as \a T.
template <typename T>
T*
- yyas_ ()
+ yyas_ () YY_NOEXCEPT
{
void *yyp = yybuffer_.yyraw;
return static_cast<T*> (yyp);
/// Const accessor to raw memory as \a T.
template <typename T>
const T*
- yyas_ () const
+ yyas_ () const YY_NOEXCEPT
{
const void *yyp = yybuffer_.yyraw;
return static_cast<const T*> (yyp);
}
- union
- {
- /// Strongest alignment constraints.
- long double yyalign_me;
- /// A buffer large enough to store any of the semantic values.
- char yyraw[S];
- } yybuffer_;
-
- /// Whether the content is built: if defined, the name of the stored type.
- const std::type_info *yytypeid_;
- };
-
-
- /// A Bison parser.
- class Dhcp6Parser
- {
- public:
-#ifndef PARSER6_STYPE
/// An auxiliary type to compute the largest semantic type.
union union_type
{
// hr_mode
// duid_type
// ncr_protocol_value
- char dummy1[sizeof(ElementPtr)];
+ char dummy1[sizeof (ElementPtr)];
// "boolean"
- char dummy2[sizeof(bool)];
+ char dummy2[sizeof (bool)];
// "floating point"
- char dummy3[sizeof(double)];
+ char dummy3[sizeof (double)];
// "integer"
- char dummy4[sizeof(int64_t)];
+ char dummy4[sizeof (int64_t)];
// "constant string"
- char dummy5[sizeof(std::string)];
-};
+ char dummy5[sizeof (std::string)];
+ };
+
+ /// The size of the largest semantic type.
+ enum { size = sizeof (union_type) };
+
+ /// A buffer to store semantic values.
+ union
+ {
+ /// Strongest alignment constraints.
+ long double yyalign_me;
+ /// A buffer large enough to store any of the semantic values.
+ char yyraw[size];
+ } yybuffer_;
+
+ /// Whether the content is built: if defined, the name of the stored type.
+ const std::type_info *yytypeid_;
+ };
- /// Symbol semantic values.
- typedef variant<sizeof(union_type)> semantic_type;
#else
typedef PARSER6_STYPE semantic_type;
#endif
/// Syntax errors thrown from user actions.
struct syntax_error : std::runtime_error
{
- syntax_error (const location_type& l, const std::string& m);
+ syntax_error (const location_type& l, const std::string& m)
+ : std::runtime_error (m)
+ , location (l)
+ {}
+
+ syntax_error (const syntax_error& s)
+ : std::runtime_error (s.what ())
+ , location (s.location)
+ {}
+
+ ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+
location_type location;
};
/// A complete symbol.
///
/// Expects its Base type to provide access to the symbol type
- /// via type_get().
+ /// via type_get ().
///
/// Provide access to semantic value and location.
template <typename Base>
typedef Base super_type;
/// Default constructor.
- basic_symbol ();
+ basic_symbol ()
+ : value ()
+ , location ()
+ {}
+
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ basic_symbol (basic_symbol&& that);
+#endif
/// Copy constructor.
- basic_symbol (const basic_symbol& other);
+ basic_symbol (const basic_symbol& that);
/// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, location_type&& l)
+ : Base (t)
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const location_type& l)
+ : Base (t)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
+ : Base (t)
+ , value (std::move (v))
+ , location (std::move (l))
+ {}
+#else
+ basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ : Base (t)
+ , value (v)
+ , location (l)
+ {}
+#endif
- basic_symbol (typename Base::kind_type t, const location_type& l);
-
- basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
-
- basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
+ /// Destroy the symbol.
+ ~basic_symbol ()
+ {
+ clear ();
+ }
- basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
+ /// Destroy contents, and record that is empty.
+ void clear ()
+ {
+ // User destructor.
+ symbol_number_type yytype = this->type_get ();
+ basic_symbol<Base>& yysym = *this;
+ (void) yysym;
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+
+ // Type destructor.
+switch (yytype)
+ {
+ case 220: // value
+ case 224: // map_value
+ case 265: // ddns_replace_client_name_value
+ case 302: // db_type
+ case 403: // hr_mode
+ case 539: // duid_type
+ case 582: // ncr_protocol_value
+ value.template destroy< ElementPtr > ();
+ break;
- basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
+ case 202: // "boolean"
+ value.template destroy< bool > ();
+ break;
- basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l);
+ case 201: // "floating point"
+ value.template destroy< double > ();
+ break;
+ case 200: // "integer"
+ value.template destroy< int64_t > ();
+ break;
- /// Constructor for symbols with semantic value.
- basic_symbol (typename Base::kind_type t,
- const semantic_type& v,
- const location_type& l);
+ case 199: // "constant string"
+ value.template destroy< std::string > ();
+ break;
- /// Destroy the symbol.
- ~basic_symbol ();
+ default:
+ break;
+ }
- /// Destroy contents, and record that is empty.
- void clear ();
+ Base::clear ();
+ }
/// Whether empty.
- bool empty () const;
+ bool empty () const YY_NOEXCEPT;
/// Destructive move, \a s is emptied into this.
void move (basic_symbol& s);
location_type location;
private:
+#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
- basic_symbol& operator= (const basic_symbol& other);
+ basic_symbol& operator= (const basic_symbol& that);
+#endif
};
/// Type access provider for token (enum) based symbols.
/// Default constructor.
by_type ();
+#if 201103L <= YY_CPLUSPLUS
+ /// Move constructor.
+ by_type (by_type&& that);
+#endif
+
/// Copy constructor.
- by_type (const by_type& other);
+ by_type (const by_type& that);
/// The symbol type as needed by the constructor.
typedef token_type kind_type;
/// The (internal) type number (corresponding to \a type).
/// \a empty when empty.
- symbol_number_type type_get () const;
-
- /// The token.
- token_type token () const;
+ symbol_number_type type_get () const YY_NOEXCEPT;
/// The symbol type.
/// \a empty_symbol when empty.
};
/// "External" symbols: returned by the scanner.
- typedef basic_symbol<by_type> symbol_type;
-
- // Symbol constructors declarations.
- static inline
- symbol_type
- make_END (const location_type& l);
-
- static inline
- symbol_type
- make_COMMA (const location_type& l);
-
- static inline
- symbol_type
- make_COLON (const location_type& l);
-
- static inline
- symbol_type
- make_LSQUARE_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_RSQUARE_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_LCURLY_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_RCURLY_BRACKET (const location_type& l);
-
- static inline
- symbol_type
- make_NULL_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP6 (const location_type& l);
-
- static inline
- symbol_type
- make_DATA_DIRECTORY (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_DATABASES (const location_type& l);
-
- static inline
- symbol_type
- make_CONFIG_FETCH_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACES_CONFIG (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACES (const location_type& l);
-
- static inline
- symbol_type
- make_RE_DETECT (const location_type& l);
-
- static inline
- symbol_type
- make_LEASE_DATABASE (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTS_DATABASE (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTS_DATABASES (const location_type& l);
-
- static inline
- symbol_type
- make_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_MEMFILE (const location_type& l);
-
- static inline
- symbol_type
- make_MYSQL (const location_type& l);
-
- static inline
- symbol_type
- make_POSTGRESQL (const location_type& l);
-
- static inline
- symbol_type
- make_CQL (const location_type& l);
-
- static inline
- symbol_type
- make_USER (const location_type& l);
-
- static inline
- symbol_type
- make_PASSWORD (const location_type& l);
-
- static inline
- symbol_type
- make_HOST (const location_type& l);
-
- static inline
- symbol_type
- make_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_PERSIST (const location_type& l);
-
- static inline
- symbol_type
- make_LFC_INTERVAL (const location_type& l);
-
- static inline
- symbol_type
- make_READONLY (const location_type& l);
-
- static inline
- symbol_type
- make_CONNECT_TIMEOUT (const location_type& l);
-
- static inline
- symbol_type
- make_CONTACT_POINTS (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECONNECT_TRIES (const location_type& l);
-
- static inline
- symbol_type
- make_RECONNECT_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_KEYSPACE (const location_type& l);
-
- static inline
- symbol_type
- make_CONSISTENCY (const location_type& l);
-
- static inline
- symbol_type
- make_SERIAL_CONSISTENCY (const location_type& l);
-
- static inline
- symbol_type
- make_REQUEST_TIMEOUT (const location_type& l);
-
- static inline
- symbol_type
- make_TCP_KEEPALIVE (const location_type& l);
-
- static inline
- symbol_type
- make_TCP_NODELAY (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_ROW_ERRORS (const location_type& l);
-
- static inline
- symbol_type
- make_PREFERRED_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_MIN_PREFERRED_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_PREFERRED_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_VALID_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_MIN_VALID_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_VALID_LIFETIME (const location_type& l);
-
- static inline
- symbol_type
- make_RENEW_TIMER (const location_type& l);
-
- static inline
- symbol_type
- make_REBIND_TIMER (const location_type& l);
-
- static inline
- symbol_type
- make_CALCULATE_TEE_TIMES (const location_type& l);
-
- static inline
- symbol_type
- make_T1_PERCENT (const location_type& l);
-
- static inline
- symbol_type
- make_T2_PERCENT (const location_type& l);
-
- static inline
- symbol_type
- make_DECLINE_PROBATION_PERIOD (const location_type& l);
+ struct symbol_type : basic_symbol<by_type>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_type> super_type;
- static inline
- symbol_type
- make_SERVER_TAG (const location_type& l);
+ /// Empty symbol.
+ symbol_type () {}
- static inline
- symbol_type
- make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l);
+ /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, location_type l)
+ : super_type(token_type (tok), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#else
+ symbol_type (int tok, const location_type& l)
+ : super_type(token_type (tok), l)
+ {
+ YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, bool v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#else
+ symbol_type (int tok, const bool& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, double v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_FLOAT);
+ }
+#else
+ symbol_type (int tok, const double& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_FLOAT);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, int64_t v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_INTEGER);
+ }
+#else
+ symbol_type (int tok, const int64_t& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_INTEGER);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ symbol_type (int tok, std::string v, location_type l)
+ : super_type(token_type (tok), std::move (v), std::move (l))
+ {
+ YY_ASSERT (tok == token::TOKEN_STRING);
+ }
+#else
+ symbol_type (int tok, const std::string& v, const location_type& l)
+ : super_type(token_type (tok), v, l)
+ {
+ YY_ASSERT (tok == token::TOKEN_STRING);
+ }
+#endif
+ };
- static inline
- symbol_type
- make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l);
+ /// Build a parser object.
+ Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
+ virtual ~Dhcp6Parser ();
- static inline
- symbol_type
- make_DDNS_SEND_UPDATES (const location_type& l);
+ /// Parse. An alias for parse ().
+ /// \returns 0 iff parsing succeeded.
+ int operator() ();
- static inline
- symbol_type
- make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l);
+ /// Parse.
+ /// \returns 0 iff parsing succeeded.
+ virtual int parse ();
- static inline
- symbol_type
- make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l);
+#if PARSER6_DEBUG
+ /// The current debugging stream.
+ std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging stream.
+ void set_debug_stream (std::ostream &);
- static inline
- symbol_type
- make_DDNS_REPLACE_CLIENT_NAME (const location_type& l);
+ /// Type for debugging levels.
+ typedef int debug_level_type;
+ /// The current debugging level.
+ debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging level.
+ void set_debug_level (debug_level_type l);
+#endif
- static inline
- symbol_type
- make_DDNS_GENERATED_PREFIX (const location_type& l);
+ /// Report a syntax error.
+ /// \param loc where the syntax error is found.
+ /// \param msg a description of the syntax error.
+ virtual void error (const location_type& loc, const std::string& msg);
- static inline
- symbol_type
- make_DDNS_QUALIFYING_SUFFIX (const location_type& l);
+ /// Report a syntax error.
+ void error (const syntax_error& err);
- static inline
- symbol_type
- make_STORE_EXTENDED_INFO (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET6 (const location_type& l);
-
- static inline
- symbol_type
- make_OPTION_DEF (const location_type& l);
-
- static inline
- symbol_type
- make_OPTION_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_CODE (const location_type& l);
-
- static inline
- symbol_type
- make_SPACE (const location_type& l);
-
- static inline
- symbol_type
- make_CSV_FORMAT (const location_type& l);
-
- static inline
- symbol_type
- make_ALWAYS_SEND (const location_type& l);
-
- static inline
- symbol_type
- make_RECORD_TYPES (const location_type& l);
-
- static inline
- symbol_type
- make_ENCAPSULATE (const location_type& l);
-
- static inline
- symbol_type
- make_ARRAY (const location_type& l);
-
- static inline
- symbol_type
- make_POOLS (const location_type& l);
-
- static inline
- symbol_type
- make_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_PD_POOLS (const location_type& l);
-
- static inline
- symbol_type
- make_PREFIX (const location_type& l);
-
- static inline
- symbol_type
- make_PREFIX_LEN (const location_type& l);
-
- static inline
- symbol_type
- make_EXCLUDED_PREFIX (const location_type& l);
-
- static inline
- symbol_type
- make_EXCLUDED_PREFIX_LEN (const location_type& l);
-
- static inline
- symbol_type
- make_DELEGATED_LEN (const location_type& l);
-
- static inline
- symbol_type
- make_USER_CONTEXT (const location_type& l);
-
- static inline
- symbol_type
- make_COMMENT (const location_type& l);
-
- static inline
- symbol_type
- make_SUBNET (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACE (const location_type& l);
-
- static inline
- symbol_type
- make_INTERFACE_ID (const location_type& l);
-
- static inline
- symbol_type
- make_ID (const location_type& l);
-
- static inline
- symbol_type
- make_RAPID_COMMIT (const location_type& l);
-
- static inline
- symbol_type
- make_RESERVATION_MODE (const location_type& l);
-
- static inline
- symbol_type
- make_DISABLED (const location_type& l);
-
- static inline
- symbol_type
- make_OUT_OF_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_GLOBAL (const location_type& l);
-
- static inline
- symbol_type
- make_ALL (const location_type& l);
-
- static inline
- symbol_type
- make_SHARED_NETWORKS (const location_type& l);
-
- static inline
- symbol_type
- make_MAC_SOURCES (const location_type& l);
-
- static inline
- symbol_type
- make_RELAY_SUPPLIED_OPTIONS (const location_type& l);
-
- static inline
- symbol_type
- make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
-
- static inline
- symbol_type
- make_SANITY_CHECKS (const location_type& l);
-
- static inline
- symbol_type
- make_LEASE_CHECKS (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_CLASSES (const location_type& l);
-
- static inline
- symbol_type
- make_REQUIRE_CLIENT_CLASSES (const location_type& l);
-
- static inline
- symbol_type
- make_TEST (const location_type& l);
-
- static inline
- symbol_type
- make_ONLY_IF_REQUIRED (const location_type& l);
-
- static inline
- symbol_type
- make_CLIENT_CLASS (const location_type& l);
-
- static inline
- symbol_type
- make_RESERVATIONS (const location_type& l);
-
- static inline
- symbol_type
- make_IP_ADDRESSES (const location_type& l);
-
- static inline
- symbol_type
- make_PREFIXES (const location_type& l);
-
- static inline
- symbol_type
- make_DUID (const location_type& l);
-
- static inline
- symbol_type
- make_HW_ADDRESS (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME (const location_type& l);
-
- static inline
- symbol_type
- make_FLEX_ID (const location_type& l);
-
- static inline
- symbol_type
- make_RELAY (const location_type& l);
-
- static inline
- symbol_type
- make_IP_ADDRESS (const location_type& l);
-
- static inline
- symbol_type
- make_HOOKS_LIBRARIES (const location_type& l);
-
- static inline
- symbol_type
- make_LIBRARY (const location_type& l);
-
- static inline
- symbol_type
- make_PARAMETERS (const location_type& l);
-
- static inline
- symbol_type
- make_EXPIRED_LEASES_PROCESSING (const location_type& l);
-
- static inline
- symbol_type
- make_RECLAIM_TIMER_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_HOLD_RECLAIMED_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECLAIM_LEASES (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_RECLAIM_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_UNWARNED_RECLAIM_CYCLES (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_ID (const location_type& l);
-
- static inline
- symbol_type
- make_LLT (const location_type& l);
-
- static inline
- symbol_type
- make_EN (const location_type& l);
-
- static inline
- symbol_type
- make_LL (const location_type& l);
-
- static inline
- symbol_type
- make_IDENTIFIER (const location_type& l);
-
- static inline
- symbol_type
- make_HTYPE (const location_type& l);
-
- static inline
- symbol_type
- make_TIME (const location_type& l);
-
- static inline
- symbol_type
- make_ENTERPRISE_ID (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP4O6_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_MULTI_THREADING (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_MULTI_THREADING (const location_type& l);
-
- static inline
- symbol_type
- make_THREAD_POOL_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_PACKET_QUEUE_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_CONTROL_SOCKET (const location_type& l);
-
- static inline
- symbol_type
- make_SOCKET_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_SOCKET_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_QUEUE_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_QUEUE (const location_type& l);
-
- static inline
- symbol_type
- make_QUEUE_TYPE (const location_type& l);
-
- static inline
- symbol_type
- make_CAPACITY (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP_DDNS (const location_type& l);
-
- static inline
- symbol_type
- make_ENABLE_UPDATES (const location_type& l);
-
- static inline
- symbol_type
- make_QUALIFYING_SUFFIX (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_IP (const location_type& l);
-
- static inline
- symbol_type
- make_SERVER_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_SENDER_IP (const location_type& l);
-
- static inline
- symbol_type
- make_SENDER_PORT (const location_type& l);
-
- static inline
- symbol_type
- make_MAX_QUEUE_SIZE (const location_type& l);
-
- static inline
- symbol_type
- make_NCR_PROTOCOL (const location_type& l);
-
- static inline
- symbol_type
- make_NCR_FORMAT (const location_type& l);
-
- static inline
- symbol_type
- make_OVERRIDE_NO_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_OVERRIDE_CLIENT_UPDATE (const location_type& l);
-
- static inline
- symbol_type
- make_REPLACE_CLIENT_NAME (const location_type& l);
-
- static inline
- symbol_type
- make_GENERATED_PREFIX (const location_type& l);
-
- static inline
- symbol_type
- make_UDP (const location_type& l);
-
- static inline
- symbol_type
- make_TCP (const location_type& l);
-
- static inline
- symbol_type
- make_JSON (const location_type& l);
-
- static inline
- symbol_type
- make_WHEN_PRESENT (const location_type& l);
-
- static inline
- symbol_type
- make_NEVER (const location_type& l);
-
- static inline
- symbol_type
- make_ALWAYS (const location_type& l);
-
- static inline
- symbol_type
- make_WHEN_NOT_PRESENT (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME_CHAR_SET (const location_type& l);
-
- static inline
- symbol_type
- make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l);
-
- static inline
- symbol_type
- make_LOGGING (const location_type& l);
-
- static inline
- symbol_type
- make_LOGGERS (const location_type& l);
-
- static inline
- symbol_type
- make_OUTPUT_OPTIONS (const location_type& l);
-
- static inline
- symbol_type
- make_OUTPUT (const location_type& l);
-
- static inline
- symbol_type
- make_DEBUGLEVEL (const location_type& l);
-
- static inline
- symbol_type
- make_SEVERITY (const location_type& l);
-
- static inline
- symbol_type
- make_FLUSH (const location_type& l);
-
- static inline
- symbol_type
- make_MAXSIZE (const location_type& l);
-
- static inline
- symbol_type
- make_MAXVER (const location_type& l);
-
- static inline
- symbol_type
- make_PATTERN (const location_type& l);
-
- static inline
- symbol_type
- make_DHCP4 (const location_type& l);
-
- static inline
- symbol_type
- make_DHCPDDNS (const location_type& l);
-
- static inline
- symbol_type
- make_CONTROL_AGENT (const location_type& l);
-
- static inline
- symbol_type
- make_TOPLEVEL_JSON (const location_type& l);
-
- static inline
- symbol_type
- make_TOPLEVEL_DHCP6 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_DHCP6 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_INTERFACES6 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_SUBNET6 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_POOL6 (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_PD_POOL (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_RESERVATION (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DEFS (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DEF (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_OPTION_DATA (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_HOOKS_LIBRARY (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_DHCP_DDNS (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_LOGGING (const location_type& l);
-
- static inline
- symbol_type
- make_SUB_CONFIG_CONTROL (const location_type& l);
-
- static inline
- symbol_type
- make_STRING (const std::string& v, const location_type& l);
-
- static inline
- symbol_type
- make_INTEGER (const int64_t& v, const location_type& l);
-
- static inline
- symbol_type
- make_FLOAT (const double& v, const location_type& l);
-
- static inline
- symbol_type
- make_BOOLEAN (const bool& v, const location_type& l);
-
-
- /// Build a parser object.
- Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg);
- virtual ~Dhcp6Parser ();
-
- /// Parse.
- /// \returns 0 iff parsing succeeded.
- virtual int parse ();
-
-#if PARSER6_DEBUG
- /// The current debugging stream.
- std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging stream.
- void set_debug_stream (std::ostream &);
-
- /// Type for debugging levels.
- typedef int debug_level_type;
- /// The current debugging level.
- debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging level.
- void set_debug_level (debug_level_type l);
+ // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_END (location_type l)
+ {
+ return symbol_type (token::TOKEN_END, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_END (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_END, l);
+ }
#endif
-
- /// Report a syntax error.
- /// \param loc where the syntax error is found.
- /// \param msg a description of the syntax error.
- virtual void error (const location_type& loc, const std::string& msg);
-
- /// Report a syntax error.
- void error (const syntax_error& err);
-
- private:
- /// This class is not copyable.
- Dhcp6Parser (const Dhcp6Parser&);
- Dhcp6Parser& operator= (const Dhcp6Parser&);
-
- /// State numbers.
- typedef int state_type;
-
- /// Generate an error message.
- /// \param yystate the state where the error occurred.
- /// \param yyla the lookahead token.
- virtual std::string yysyntax_error_ (state_type yystate,
- const symbol_type& yyla) const;
-
- /// Compute post-reduction state.
- /// \param yystate the current state
- /// \param yysym the nonterminal to push on the stack
- state_type yy_lr_goto_state_ (state_type yystate, int yysym);
-
- /// Whether the given \c yypact_ value indicates a defaulted state.
- /// \param yyvalue the value to check
- static bool yy_pact_value_is_default_ (int yyvalue);
-
- /// Whether the given \c yytable_ value indicates a syntax error.
- /// \param yyvalue the value to check
- static bool yy_table_value_is_error_ (int yyvalue);
-
- static const short int yypact_ninf_;
- static const signed char yytable_ninf_;
-
- /// Convert a scanner token number \a t to a symbol number.
- static token_number_type yytranslate_ (token_type t);
-
- // Tables.
- // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- // STATE-NUM.
- static const short int yypact_[];
-
- // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
- // Performed when YYTABLE does not specify something else to do. Zero
- // means the default is an error.
- static const unsigned short int yydefact_[];
-
- // YYPGOTO[NTERM-NUM].
- static const short int yypgoto_[];
-
- // YYDEFGOTO[NTERM-NUM].
- static const short int yydefgoto_[];
-
- // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
- // positive, shift that token. If negative, reduce the rule whose
- // number is the opposite. If YYTABLE_NINF, syntax error.
- static const unsigned short int yytable_[];
-
- static const short int yycheck_[];
-
- // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- // symbol of state STATE-NUM.
- static const unsigned short int yystos_[];
-
- // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
- static const unsigned short int yyr1_[];
-
- // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
- static const unsigned char yyr2_[];
-
-
- /// Convert the symbol name \a n to a form suitable for a diagnostic.
- static std::string yytnamerr_ (const char *n);
-
-
- /// For a symbol, its name in clear.
- static const char* const yytname_[];
-#if PARSER6_DEBUG
- // YYRLINE[YYN] -- Source line where rule number YYN was defined.
- static const unsigned short int yyrline_[];
- /// Report on the debug stream that the rule \a r is going to be reduced.
- virtual void yy_reduce_print_ (int r);
- /// Print the state stack on the debug stream.
- virtual void yystack_print_ ();
-
- // Debugging.
- int yydebug_;
- std::ostream* yycdebug_;
-
- /// \brief Display a symbol type, value and location.
- /// \param yyo The output stream.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMA (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COLON (location_type l)
+ {
+ return symbol_type (token::TOKEN_COLON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COLON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COLON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RSQUARE_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RCURLY_BRACKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RCURLY_BRACKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NULL_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NULL_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DATA_DIRECTORY (location_type l)
+ {
+ return symbol_type (token::TOKEN_DATA_DIRECTORY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DATA_DIRECTORY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DATA_DIRECTORY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES_CONFIG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACES (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RE_DETECT (location_type l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RE_DETECT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RE_DETECT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASE (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTS_DATABASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTS_DATABASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MEMFILE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MEMFILE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MEMFILE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MYSQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MYSQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MYSQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POSTGRESQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POSTGRESQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POSTGRESQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CQL (location_type l)
+ {
+ return symbol_type (token::TOKEN_CQL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CQL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CQL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PASSWORD (location_type l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PASSWORD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PASSWORD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PERSIST (location_type l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PERSIST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PERSIST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LFC_INTERVAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LFC_INTERVAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LFC_INTERVAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_READONLY (location_type l)
+ {
+ return symbol_type (token::TOKEN_READONLY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_READONLY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_READONLY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONNECT_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTACT_POINTS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTACT_POINTS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTACT_POINTS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECONNECT_TRIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECONNECT_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_KEYSPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_KEYSPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_KEYSPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERIAL_CONSISTENCY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUEST_TIMEOUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_KEEPALIVE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP_NODELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP_NODELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP_NODELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_ROW_ERRORS (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_ROW_ERRORS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_ROW_ERRORS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFERRED_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFERRED_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFERRED_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MIN_PREFERRED_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MIN_PREFERRED_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_PREFERRED_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_PREFERRED_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MIN_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_VALID_LIFETIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RENEW_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RENEW_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RENEW_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REBIND_TIMER (location_type l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REBIND_TIMER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REBIND_TIMER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CALCULATE_TEE_TIMES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T1_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T1_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T1_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_T2_PERCENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_T2_PERCENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_T2_PERCENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (location_type l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DECLINE_PROBATION_PERIOD (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_TAG (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_TAG (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_TAG, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_COUNT (location_type l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_AGE (location_type l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_SEND_UPDATES (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_SEND_UPDATES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_NO_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_CLIENT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_REPLACE_CLIENT_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_GENERATED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_GENERATED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DDNS_QUALIFYING_SUFFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STORE_EXTENDED_INFO (location_type l)
+ {
+ return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STORE_EXTENDED_INFO (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_CODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SPACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SPACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SPACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SPACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CSV_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CSV_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CSV_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS_SEND (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS_SEND (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS_SEND, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECORD_TYPES (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECORD_TYPES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECORD_TYPES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENCAPSULATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENCAPSULATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENCAPSULATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ARRAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ARRAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ARRAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOLS (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOLS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOLS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOLS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PD_POOLS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PD_POOLS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PD_POOLS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PD_POOLS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFIX_LEN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFIX_LEN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFIX_LEN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFIX_LEN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX_LEN (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXCLUDED_PREFIX_LEN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DELEGATED_LEN (location_type l)
+ {
+ return symbol_type (token::TOKEN_DELEGATED_LEN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DELEGATED_LEN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DELEGATED_LEN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_USER_CONTEXT (location_type l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_USER_CONTEXT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_COMMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_COMMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUBNET (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUBNET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUBNET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACE (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTERFACE_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTERFACE_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTERFACE_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RAPID_COMMIT (location_type l)
+ {
+ return symbol_type (token::TOKEN_RAPID_COMMIT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RAPID_COMMIT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RAPID_COMMIT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATION_MODE (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATION_MODE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATION_MODE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DISABLED (location_type l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DISABLED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DISABLED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUT_OF_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUT_OF_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUT_OF_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GLOBAL (location_type l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GLOBAL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GLOBAL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALL (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SHARED_NETWORKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SHARED_NETWORKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAC_SOURCES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAC_SOURCES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAC_SOURCES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAC_SOURCES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RELAY_SUPPLIED_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RELAY_SUPPLIED_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SANITY_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SANITY_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SANITY_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LEASE_CHECKS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LEASE_CHECKS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LEASE_CHECKS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REQUIRE_CLIENT_CLASSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TEST (location_type l)
+ {
+ return symbol_type (token::TOKEN_TEST, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TEST (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TEST, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (location_type l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ONLY_IF_REQUIRED (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CLIENT_CLASS (location_type l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CLIENT_CLASS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CLIENT_CLASS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RESERVATIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RESERVATIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RESERVATIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESSES (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PREFIXES (location_type l)
+ {
+ return symbol_type (token::TOKEN_PREFIXES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PREFIXES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PREFIXES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DUID (location_type l)
+ {
+ return symbol_type (token::TOKEN_DUID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DUID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DUID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HW_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HW_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HW_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLEX_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLEX_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLEX_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RELAY (location_type l)
+ {
+ return symbol_type (token::TOKEN_RELAY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RELAY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RELAY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IP_ADDRESS (location_type l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IP_ADDRESS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOOKS_LIBRARIES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PARAMETERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PARAMETERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PARAMETERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (location_type l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EXPIRED_LEASES_PROCESSING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOLD_RECLAIMED_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_LEASES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_RECLAIM_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (location_type l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LLT (location_type l)
+ {
+ return symbol_type (token::TOKEN_LLT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LLT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LLT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_EN (location_type l)
+ {
+ return symbol_type (token::TOKEN_EN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_EN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_EN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LL (location_type l)
+ {
+ return symbol_type (token::TOKEN_LL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_IDENTIFIER (location_type l)
+ {
+ return symbol_type (token::TOKEN_IDENTIFIER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_IDENTIFIER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IDENTIFIER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HTYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_HTYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HTYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HTYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TIME (location_type l)
+ {
+ return symbol_type (token::TOKEN_TIME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TIME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TIME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENTERPRISE_ID (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENTERPRISE_ID, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENTERPRISE_ID (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENTERPRISE_ID, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4O6_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4O6_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_MULTI_THREADING (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_MULTI_THREADING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_MULTI_THREADING (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_MULTI_THREADING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_THREAD_POOL_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_THREAD_POOL_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_THREAD_POOL_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PACKET_QUEUE_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PACKET_QUEUE_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_SOCKET (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_SOCKET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SOCKET_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SOCKET_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_QUEUE_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_QUEUE (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_QUEUE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_QUEUE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_QUEUE_TYPE (location_type l)
+ {
+ return symbol_type (token::TOKEN_QUEUE_TYPE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_QUEUE_TYPE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_QUEUE_TYPE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CAPACITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_CAPACITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CAPACITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CAPACITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ENABLE_UPDATES (location_type l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ENABLE_UPDATES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_QUALIFYING_SUFFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SERVER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SERVER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SERVER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_IP (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_IP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_IP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SENDER_PORT (location_type l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SENDER_PORT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SENDER_PORT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAX_QUEUE_SIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_PROTOCOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_PROTOCOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NCR_FORMAT (location_type l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NCR_FORMAT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NCR_FORMAT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_NO_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (location_type l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (location_type l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_REPLACE_CLIENT_NAME (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_GENERATED_PREFIX (location_type l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_GENERATED_PREFIX (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_UDP (location_type l)
+ {
+ return symbol_type (token::TOKEN_UDP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_UDP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_UDP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TCP (location_type l)
+ {
+ return symbol_type (token::TOKEN_TCP, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TCP (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TCP, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_NEVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_NEVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_NEVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_NEVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_ALWAYS (location_type l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_ALWAYS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_ALWAYS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_WHEN_NOT_PRESENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_SET (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_LOGGERS (location_type l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_LOGGERS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_LOGGERS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT_OPTIONS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_OUTPUT (location_type l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_OUTPUT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_OUTPUT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DEBUGLEVEL (location_type l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DEBUGLEVEL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SEVERITY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SEVERITY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SEVERITY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLUSH (location_type l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLUSH (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLUSH, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXSIZE (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXSIZE (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXSIZE, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_MAXVER (location_type l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_MAXVER (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_MAXVER, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_PATTERN (location_type l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_PATTERN (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_PATTERN, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCP4 (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCP4 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCP4, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_DHCPDDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_DHCPDDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_DHCPDDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_CONTROL_AGENT (location_type l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_CONTROL_AGENT (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_CONTROL_AGENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_JSON (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_TOPLEVEL_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_INTERFACES6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_INTERFACES6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_SUBNET6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_SUBNET6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_SUBNET6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_POOL6 (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL6, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_POOL6 (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_POOL6, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_PD_POOL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_PD_POOL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_PD_POOL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_PD_POOL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_RESERVATION (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_RESERVATION (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_RESERVATION, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEFS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DEF (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_OPTION_DATA (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_HOOKS_LIBRARY (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_DHCP_DDNS (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_LOGGING (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_LOGGING (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_LOGGING, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (location_type l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_SUB_CONFIG_CONTROL (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_STRING (std::string v, location_type l)
+ {
+ return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_INTEGER (int64_t v, location_type l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_FLOAT (double v, location_type l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+ static
+ symbol_type
+ make_BOOLEAN (bool v, location_type l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
+ }
+#else
+ static
+ symbol_type
+ make_BOOLEAN (const bool& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ }
#endif
- /// \brief Reclaim the memory associated to a symbol.
- /// \param yymsg Why this token is reclaimed.
- /// If null, print nothing.
- /// \param yysym The symbol.
- template <typename Base>
- void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
-
- private:
- /// Type access provider for state based symbols.
- struct by_state
- {
- /// Default constructor.
- by_state ();
-
- /// The symbol type as needed by the constructor.
- typedef state_type kind_type;
-
- /// Constructor.
- by_state (kind_type s);
-
- /// Copy constructor.
- by_state (const by_state& other);
-
- /// Record that this symbol is empty.
- void clear ();
-
- /// Steal the symbol type from \a that.
- void move (by_state& that);
-
- /// The (internal) type number (corresponding to \a state).
- /// \a empty_symbol when empty.
- symbol_number_type type_get () const;
-
- /// The state number used to denote an empty symbol.
- enum { empty_state = -1 };
-
- /// The state.
- /// \a empty when empty.
- state_type state;
- };
-
- /// "Internal" symbol: element of the stack.
- struct stack_symbol_type : basic_symbol<by_state>
- {
- /// Superclass.
- typedef basic_symbol<by_state> super_type;
- /// Construct an empty symbol.
- stack_symbol_type ();
- /// Steal the contents from \a sym to build this.
- stack_symbol_type (state_type s, symbol_type& sym);
- /// Assignment, needed by push_back.
- stack_symbol_type& operator= (const stack_symbol_type& that);
- };
-
- /// Stack type.
- typedef stack<stack_symbol_type> stack_type;
-
- /// The stack.
- stack_type yystack_;
-
- /// Push a new state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the symbol
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, stack_symbol_type& s);
-
- /// Push a new look ahead token on the state on the stack.
- /// \param m a debug message to display
- /// if null, no trace is output.
- /// \param s the state
- /// \param sym the symbol (for its value and location).
- /// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, state_type s, symbol_type& sym);
-
- /// Pop \a n symbols the three stacks.
- void yypop_ (unsigned int n = 1);
-
- /// Constants.
- enum
- {
- yyeof_ = 0,
- yylast_ = 1254, ///< Last index in yytable_.
- yynnts_ = 437, ///< Number of nonterminal symbols.
- yyfinal_ = 32, ///< Termination state number.
- yyterror_ = 1,
- yyerrcode_ = 256,
- yyntokens_ = 203 ///< Number of tokens.
- };
-
-
- // User arguments.
- isc::dhcp::Parser6Context& ctx;
- };
-
- // Symbol number corresponding to token number t.
- inline
- Dhcp6Parser::token_number_type
- Dhcp6Parser::yytranslate_ (token_type t)
- {
- static
- const token_number_type
- translate_table[] =
- {
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202
- };
- const unsigned int user_token_number_max_ = 457;
- const token_number_type undef_token_ = 2;
-
- if (static_cast<int>(t) <= yyeof_)
- return yyeof_;
- else if (static_cast<unsigned int> (t) <= user_token_number_max_)
- return translate_table[t];
- else
- return undef_token_;
- }
-
- inline
- Dhcp6Parser::syntax_error::syntax_error (const location_type& l, const std::string& m)
- : std::runtime_error (m)
- , location (l)
- {}
-
- // basic_symbol.
- template <typename Base>
- inline
- Dhcp6Parser::basic_symbol<Base>::basic_symbol ()
- : value ()
- {}
-
- template <typename Base>
- inline
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
- : Base (other)
- , value ()
- , location (other.location)
- {
- switch (other.type_get ())
- {
- case 220: // value
- case 224: // map_value
- case 265: // ddns_replace_client_name_value
- case 302: // db_type
- case 403: // hr_mode
- case 539: // duid_type
- case 582: // ncr_protocol_value
- value.copy< ElementPtr > (other.value);
- break;
-
- case 202: // "boolean"
- value.copy< bool > (other.value);
- break;
-
- case 201: // "floating point"
- value.copy< double > (other.value);
- break;
-
- case 200: // "integer"
- value.copy< int64_t > (other.value);
- break;
-
- case 199: // "constant string"
- value.copy< std::string > (other.value);
- break;
-
- default:
- break;
- }
-
- }
-
-
- template <typename Base>
- inline
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
- : Base (t)
- , value ()
- , location (l)
- {
- (void) v;
- switch (this->type_get ())
- {
- case 220: // value
- case 224: // map_value
- case 265: // ddns_replace_client_name_value
- case 302: // db_type
- case 403: // hr_mode
- case 539: // duid_type
- case 582: // ncr_protocol_value
- value.copy< ElementPtr > (v);
- break;
-
- case 202: // "boolean"
- value.copy< bool > (v);
- break;
-
- case 201: // "floating point"
- value.copy< double > (v);
- break;
-
- case 200: // "integer"
- value.copy< int64_t > (v);
- break;
-
- case 199: // "constant string"
- value.copy< std::string > (v);
- break;
-
- default:
- break;
- }
-}
-
-
- // Implementation of basic_symbol constructor for each type.
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
- : Base (t)
- , value ()
- , location (l)
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
- template <typename Base>
- Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l)
- : Base (t)
- , value (v)
- , location (l)
- {}
-
-
- template <typename Base>
- inline
- Dhcp6Parser::basic_symbol<Base>::~basic_symbol ()
- {
- clear ();
- }
-
- template <typename Base>
- inline
- void
- Dhcp6Parser::basic_symbol<Base>::clear ()
- {
- // User destructor.
- symbol_number_type yytype = this->type_get ();
- basic_symbol<Base>& yysym = *this;
- (void) yysym;
- switch (yytype)
- {
- default:
- break;
- }
-
- // Type destructor.
- switch (yytype)
- {
- case 220: // value
- case 224: // map_value
- case 265: // ddns_replace_client_name_value
- case 302: // db_type
- case 403: // hr_mode
- case 539: // duid_type
- case 582: // ncr_protocol_value
- value.template destroy< ElementPtr > ();
- break;
-
- case 202: // "boolean"
- value.template destroy< bool > ();
- break;
-
- case 201: // "floating point"
- value.template destroy< double > ();
- break;
-
- case 200: // "integer"
- value.template destroy< int64_t > ();
- break;
-
- case 199: // "constant string"
- value.template destroy< std::string > ();
- break;
-
- default:
- break;
- }
-
- Base::clear ();
- }
-
- template <typename Base>
- inline
- bool
- Dhcp6Parser::basic_symbol<Base>::empty () const
- {
- return Base::type_get () == empty_symbol;
- }
-
- template <typename Base>
- inline
- void
- Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
- {
- super_type::move(s);
- switch (this->type_get ())
- {
- case 220: // value
- case 224: // map_value
- case 265: // ddns_replace_client_name_value
- case 302: // db_type
- case 403: // hr_mode
- case 539: // duid_type
- case 582: // ncr_protocol_value
- value.move< ElementPtr > (s.value);
- break;
-
- case 202: // "boolean"
- value.move< bool > (s.value);
- break;
-
- case 201: // "floating point"
- value.move< double > (s.value);
- break;
-
- case 200: // "integer"
- value.move< int64_t > (s.value);
- break;
-
- case 199: // "constant string"
- value.move< std::string > (s.value);
- break;
-
- default:
- break;
- }
-
- location = s.location;
- }
-
- // by_type.
- inline
- Dhcp6Parser::by_type::by_type ()
- : type (empty_symbol)
- {}
-
- inline
- Dhcp6Parser::by_type::by_type (const by_type& other)
- : type (other.type)
- {}
-
- inline
- Dhcp6Parser::by_type::by_type (token_type t)
- : type (yytranslate_ (t))
- {}
-
- inline
- void
- Dhcp6Parser::by_type::clear ()
- {
- type = empty_symbol;
- }
-
- inline
- void
- Dhcp6Parser::by_type::move (by_type& that)
- {
- type = that.type;
- that.clear ();
- }
-
- inline
- int
- Dhcp6Parser::by_type::type_get () const
- {
- return type;
- }
-
- inline
- Dhcp6Parser::token_type
- Dhcp6Parser::by_type::token () const
- {
- // YYTOKNUM[NUM] -- (External) token number corresponding to the
- // (internal) symbol number NUM (which must be that of a token). */
- static
- const unsigned short int
- yytoken_number_[] =
- {
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457
- };
- return static_cast<token_type> (yytoken_number_[type]);
- }
- // Implementation of make_symbol for each symbol type.
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_END (const location_type& l)
- {
- return symbol_type (token::TOKEN_END, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_COMMA (const location_type& l)
- {
- return symbol_type (token::TOKEN_COMMA, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_COLON (const location_type& l)
- {
- return symbol_type (token::TOKEN_COLON, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LSQUARE_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RSQUARE_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LCURLY_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RCURLY_BRACKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NULL_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_NULL_TYPE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP6, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DATA_DIRECTORY (const location_type& l)
- {
- return symbol_type (token::TOKEN_DATA_DIRECTORY, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONFIG_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONFIG_DATABASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACES_CONFIG (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACES (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RE_DETECT (const location_type& l)
- {
- return symbol_type (token::TOKEN_RE_DETECT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LEASE_DATABASE (const location_type& l)
- {
- return symbol_type (token::TOKEN_LEASE_DATABASE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTS_DATABASE (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTS_DATABASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_TYPE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MEMFILE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MEMFILE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MYSQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_MYSQL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_POSTGRESQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_POSTGRESQL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CQL (const location_type& l)
- {
- return symbol_type (token::TOKEN_CQL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_USER (const location_type& l)
- {
- return symbol_type (token::TOKEN_USER, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PASSWORD (const location_type& l)
- {
- return symbol_type (token::TOKEN_PASSWORD, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOST (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOST, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_PORT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PERSIST (const location_type& l)
- {
- return symbol_type (token::TOKEN_PERSIST, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LFC_INTERVAL (const location_type& l)
- {
- return symbol_type (token::TOKEN_LFC_INTERVAL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_READONLY (const location_type& l)
- {
- return symbol_type (token::TOKEN_READONLY, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONNECT_TIMEOUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONTACT_POINTS (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTACT_POINTS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_RECONNECT_TRIES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_KEYSPACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_KEYSPACE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONSISTENCY (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONSISTENCY, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERIAL_CONSISTENCY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REQUEST_TIMEOUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TCP_KEEPALIVE (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TCP_NODELAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP_NODELAY, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_ROW_ERRORS (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_ROW_ERRORS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFERRED_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MIN_PREFERRED_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_PREFERRED_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_VALID_LIFETIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MIN_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_VALID_LIFETIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RENEW_TIMER (const location_type& l)
- {
- return symbol_type (token::TOKEN_RENEW_TIMER, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REBIND_TIMER (const location_type& l)
- {
- return symbol_type (token::TOKEN_REBIND_TIMER, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CALCULATE_TEE_TIMES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_T1_PERCENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_T1_PERCENT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_T2_PERCENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_T2_PERCENT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
- {
- return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_TAG (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_TAG, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT (const location_type& l)
- {
- return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_STATISTIC_DEFAULT_SAMPLE_AGE (const location_type& l)
- {
- return symbol_type (token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DDNS_SEND_UPDATES (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_SEND_UPDATES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DDNS_OVERRIDE_NO_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_OVERRIDE_NO_UPDATE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DDNS_OVERRIDE_CLIENT_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DDNS_REPLACE_CLIENT_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_REPLACE_CLIENT_NAME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DDNS_GENERATED_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_GENERATED_PREFIX, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DDNS_QUALIFYING_SUFFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_STORE_EXTENDED_INFO (const location_type& l)
- {
- return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUBNET6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET6, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OPTION_DEF (const location_type& l)
- {
- return symbol_type (token::TOKEN_OPTION_DEF, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OPTION_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_OPTION_DATA, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_NAME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_DATA, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CODE (const location_type& l)
- {
- return symbol_type (token::TOKEN_CODE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SPACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SPACE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CSV_FORMAT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CSV_FORMAT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ALWAYS_SEND (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALWAYS_SEND, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RECORD_TYPES (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECORD_TYPES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENCAPSULATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENCAPSULATE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ARRAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_ARRAY, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_POOLS (const location_type& l)
- {
- return symbol_type (token::TOKEN_POOLS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_POOL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PD_POOLS (const location_type& l)
- {
- return symbol_type (token::TOKEN_PD_POOLS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_PREFIX, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFIX_LEN (const location_type& l)
- {
- return symbol_type (token::TOKEN_PREFIX_LEN, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EXCLUDED_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (const location_type& l)
- {
- return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DELEGATED_LEN (const location_type& l)
- {
- return symbol_type (token::TOKEN_DELEGATED_LEN, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_USER_CONTEXT (const location_type& l)
- {
- return symbol_type (token::TOKEN_USER_CONTEXT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_COMMENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_COMMENT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUBNET (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUBNET, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACE (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTERFACE_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_INTERFACE_ID, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_ID, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RAPID_COMMIT (const location_type& l)
- {
- return symbol_type (token::TOKEN_RAPID_COMMIT, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RESERVATION_MODE (const location_type& l)
- {
- return symbol_type (token::TOKEN_RESERVATION_MODE, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DISABLED (const location_type& l)
- {
- return symbol_type (token::TOKEN_DISABLED, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OUT_OF_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUT_OF_POOL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_GLOBAL (const location_type& l)
- {
- return symbol_type (token::TOKEN_GLOBAL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ALL (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALL, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SHARED_NETWORKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAC_SOURCES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAC_SOURCES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RELAY_SUPPLIED_OPTIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SANITY_CHECKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SANITY_CHECKS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LEASE_CHECKS (const location_type& l)
- {
- return symbol_type (token::TOKEN_LEASE_CHECKS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CLIENT_CLASSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TEST (const location_type& l)
- {
- return symbol_type (token::TOKEN_TEST, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ONLY_IF_REQUIRED (const location_type& l)
- {
- return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CLIENT_CLASS (const location_type& l)
- {
- return symbol_type (token::TOKEN_CLIENT_CLASS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RESERVATIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_RESERVATIONS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_IP_ADDRESSES (const location_type& l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESSES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PREFIXES (const location_type& l)
- {
- return symbol_type (token::TOKEN_PREFIXES, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DUID (const location_type& l)
- {
- return symbol_type (token::TOKEN_DUID, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HW_ADDRESS (const location_type& l)
- {
- return symbol_type (token::TOKEN_HW_ADDRESS, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTNAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTNAME, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLEX_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLEX_ID, l);
- }
-
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RELAY (const location_type& l)
- {
- return symbol_type (token::TOKEN_RELAY, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_IP_ADDRESS (const location_type& l)
- {
- return symbol_type (token::TOKEN_IP_ADDRESS, l);
- }
+ private:
+ /// This class is not copyable.
+ Dhcp6Parser (const Dhcp6Parser&);
+ Dhcp6Parser& operator= (const Dhcp6Parser&);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOOKS_LIBRARIES (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
- }
+ /// Stored state numbers (used for stacks).
+ typedef short state_type;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LIBRARY (const location_type& l)
- {
- return symbol_type (token::TOKEN_LIBRARY, l);
- }
+ /// Generate an error message.
+ /// \param yystate the state where the error occurred.
+ /// \param yyla the lookahead token.
+ virtual std::string yysyntax_error_ (state_type yystate,
+ const symbol_type& yyla) const;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PARAMETERS (const location_type& l)
- {
- return symbol_type (token::TOKEN_PARAMETERS, l);
- }
+ /// Compute post-reduction state.
+ /// \param yystate the current state
+ /// \param yysym the nonterminal to push on the stack
+ static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l)
- {
- return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
- }
+ /// Whether the given \c yypact_ value indicates a defaulted state.
+ /// \param yyvalue the value to check
+ static bool yy_pact_value_is_default_ (int yyvalue);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
- }
+ /// Whether the given \c yytable_ value indicates a syntax error.
+ /// \param yyvalue the value to check
+ static bool yy_table_value_is_error_ (int yyvalue);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
- }
+ static const short yypact_ninf_;
+ static const signed char yytable_ninf_;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOLD_RECLAIMED_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
- }
+ /// Convert a scanner token number \a t to a symbol number.
+ /// In theory \a t should be a token_type, but character literals
+ /// are valid, yet not members of the token_type enum.
+ static token_number_type yytranslate_ (int t);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_RECLAIM_LEASES (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
- }
+ // Tables.
+ // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ // STATE-NUM.
+ static const short yypact_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_RECLAIM_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
- }
+ // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ // Performed when YYTABLE does not specify something else to do. Zero
+ // means the default is an error.
+ static const short yydefact_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
- {
- return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
- }
+ // YYPGOTO[NTERM-NUM].
+ static const short yypgoto_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_ID, l);
- }
+ // YYDEFGOTO[NTERM-NUM].
+ static const short yydefgoto_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LLT (const location_type& l)
- {
- return symbol_type (token::TOKEN_LLT, l);
- }
+ // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ // positive, shift that token. If negative, reduce the rule whose
+ // number is the opposite. If YYTABLE_NINF, syntax error.
+ static const short yytable_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_EN (const location_type& l)
- {
- return symbol_type (token::TOKEN_EN, l);
- }
+ static const short yycheck_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LL (const location_type& l)
- {
- return symbol_type (token::TOKEN_LL, l);
- }
+ // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ // symbol of state STATE-NUM.
+ static const short yystos_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_IDENTIFIER (const location_type& l)
- {
- return symbol_type (token::TOKEN_IDENTIFIER, l);
- }
+ // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+ static const short yyr1_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HTYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_HTYPE, l);
- }
+ // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+ static const signed char yyr2_[];
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TIME (const location_type& l)
- {
- return symbol_type (token::TOKEN_TIME, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENTERPRISE_ID (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENTERPRISE_ID, l);
- }
+ /// Convert the symbol name \a n to a form suitable for a diagnostic.
+ static std::string yytnamerr_ (const char *n);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP4O6_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP_MULTI_THREADING (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_MULTI_THREADING, l);
- }
+ /// For a symbol, its name in clear.
+ static const char* const yytname_[];
+#if PARSER6_DEBUG
+ // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+ static const short yyrline_[];
+ /// Report on the debug stream that the rule \a r is going to be reduced.
+ virtual void yy_reduce_print_ (int r);
+ /// Print the state stack on the debug stream.
+ virtual void yystack_print_ ();
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENABLE_MULTI_THREADING (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_MULTI_THREADING, l);
- }
+ /// Debugging level.
+ int yydebug_;
+ /// Debug stream.
+ std::ostream* yycdebug_;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_THREAD_POOL_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_THREAD_POOL_SIZE, l);
- }
+ /// \brief Display a symbol type, value and location.
+ /// \param yyo The output stream.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#endif
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PACKET_QUEUE_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_PACKET_QUEUE_SIZE, l);
- }
+ /// \brief Reclaim the memory associated to a symbol.
+ /// \param yymsg Why this token is reclaimed.
+ /// If null, print nothing.
+ /// \param yysym The symbol.
+ template <typename Base>
+ void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONTROL_SOCKET (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
- }
+ private:
+ /// Type access provider for state based symbols.
+ struct by_state
+ {
+ /// Default constructor.
+ by_state () YY_NOEXCEPT;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SOCKET_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_SOCKET_TYPE, l);
- }
+ /// The symbol type as needed by the constructor.
+ typedef state_type kind_type;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SOCKET_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_SOCKET_NAME, l);
- }
+ /// Constructor.
+ by_state (kind_type s) YY_NOEXCEPT;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
- }
+ /// Copy constructor.
+ by_state (const by_state& that) YY_NOEXCEPT;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENABLE_QUEUE (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_QUEUE, l);
- }
+ /// Record that this symbol is empty.
+ void clear () YY_NOEXCEPT;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_QUEUE_TYPE (const location_type& l)
- {
- return symbol_type (token::TOKEN_QUEUE_TYPE, l);
- }
+ /// Steal the symbol type from \a that.
+ void move (by_state& that);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CAPACITY (const location_type& l)
- {
- return symbol_type (token::TOKEN_CAPACITY, l);
- }
+ /// The (internal) type number (corresponding to \a state).
+ /// \a empty_symbol when empty.
+ symbol_number_type type_get () const YY_NOEXCEPT;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP_DDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP_DDNS, l);
- }
+ /// The state number used to denote an empty symbol.
+ /// We use the initial state, as it does not have a value.
+ enum { empty_state = 0 };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ENABLE_UPDATES (const location_type& l)
- {
- return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
- }
+ /// The state.
+ /// \a empty when empty.
+ state_type state;
+ };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_QUALIFYING_SUFFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
- }
+ /// "Internal" symbol: element of the stack.
+ struct stack_symbol_type : basic_symbol<by_state>
+ {
+ /// Superclass.
+ typedef basic_symbol<by_state> super_type;
+ /// Construct an empty symbol.
+ stack_symbol_type ();
+ /// Move or copy construction.
+ stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+ /// Steal the contents from \a sym to build this.
+ stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if YY_CPLUSPLUS < 201103L
+ /// Assignment, needed by push_back by some old implementations.
+ /// Moves the contents of that.
+ stack_symbol_type& operator= (stack_symbol_type& that);
+
+ /// Assignment, needed by push_back by other implementations.
+ /// Needed by some other old implementations.
+ stack_symbol_type& operator= (const stack_symbol_type& that);
+#endif
+ };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_IP (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_IP, l);
- }
+ /// A stack with random access from its top.
+ template <typename T, typename S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+ typedef typename S::size_type size_type;
+ typedef typename std::ptrdiff_t index_type;
+
+ stack (size_type n = 200)
+ : seq_ (n)
+ {}
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ const T&
+ operator[] (index_type i) const
+ {
+ return seq_[size_type (size () - 1 - i)];
+ }
+
+ /// Random access.
+ ///
+ /// Index 0 returns the topmost element.
+ T&
+ operator[] (index_type i)
+ {
+ return seq_[size_type (size () - 1 - i)];
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ void
+ push (YY_MOVE_REF (T) t)
+ {
+ seq_.push_back (T ());
+ operator[] (0).move (t);
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SERVER_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_SERVER_PORT, l);
- }
+ /// Pop elements from the stack.
+ void
+ pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
+ {
+ for (; 0 < n; --n)
+ seq_.pop_back ();
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SENDER_IP (const location_type& l)
- {
- return symbol_type (token::TOKEN_SENDER_IP, l);
- }
+ /// Pop all elements from the stack.
+ void
+ clear () YY_NOEXCEPT
+ {
+ seq_.clear ();
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SENDER_PORT (const location_type& l)
- {
- return symbol_type (token::TOKEN_SENDER_PORT, l);
- }
+ /// Number of elements on the stack.
+ index_type
+ size () const YY_NOEXCEPT
+ {
+ return index_type (seq_.size ());
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAX_QUEUE_SIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
- }
+ std::ptrdiff_t
+ ssize () const YY_NOEXCEPT
+ {
+ return std::ptrdiff_t (size ());
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NCR_PROTOCOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
- }
+ /// Iterator on top of the stack (going downwards).
+ const_iterator
+ begin () const YY_NOEXCEPT
+ {
+ return seq_.rbegin ();
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NCR_FORMAT (const location_type& l)
- {
- return symbol_type (token::TOKEN_NCR_FORMAT, l);
- }
+ /// Bottom of the stack.
+ const_iterator
+ end () const YY_NOEXCEPT
+ {
+ return seq_.rend ();
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
- }
+ /// Present a slice of the top of a stack.
+ class slice
+ {
+ public:
+ slice (const stack& stack, index_type range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ const T&
+ operator[] (index_type i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const stack& stack_;
+ index_type range_;
+ };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
- {
- return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
- }
+ private:
+ stack (const stack&);
+ stack& operator= (const stack&);
+ /// The wrapped container.
+ S seq_;
+ };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
- {
- return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_GENERATED_PREFIX (const location_type& l)
- {
- return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
- }
+ /// Stack type.
+ typedef stack<stack_symbol_type> stack_type;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_UDP (const location_type& l)
- {
- return symbol_type (token::TOKEN_UDP, l);
- }
+ /// The stack.
+ stack_type yystack_;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TCP (const location_type& l)
- {
- return symbol_type (token::TOKEN_TCP, l);
- }
+ /// Push a new state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param sym the symbol
+ /// \warning the contents of \a s.value is stolen.
+ void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_JSON (const location_type& l)
- {
- return symbol_type (token::TOKEN_JSON, l);
- }
+ /// Push a new look ahead token on the state on the stack.
+ /// \param m a debug message to display
+ /// if null, no trace is output.
+ /// \param s the state
+ /// \param sym the symbol (for its value and location).
+ /// \warning the contents of \a sym.value is stolen.
+ void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_WHEN_PRESENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_WHEN_PRESENT, l);
- }
+ /// Pop \a n symbols from the stack.
+ void yypop_ (int n = 1);
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_NEVER (const location_type& l)
- {
- return symbol_type (token::TOKEN_NEVER, l);
- }
+ /// Some specific tokens.
+ static const token_number_type yy_error_token_ = 1;
+ static const token_number_type yy_undef_token_ = 2;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_ALWAYS (const location_type& l)
- {
- return symbol_type (token::TOKEN_ALWAYS, l);
- }
+ /// Constants.
+ enum
+ {
+ yyeof_ = 0,
+ yylast_ = 1254, ///< Last index in yytable_.
+ yynnts_ = 437, ///< Number of nonterminal symbols.
+ yyfinal_ = 32, ///< Termination state number.
+ yyntokens_ = 203 ///< Number of tokens.
+ };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_WHEN_NOT_PRESENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
- {
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
- }
+ // User arguments.
+ isc::dhcp::Parser6Context& ctx;
+ };
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
+ inline
+ Dhcp6Parser::token_number_type
+ Dhcp6Parser::yytranslate_ (int t)
{
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
- }
+ // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+ // TOKEN-NUM as returned by yylex.
+ static
+ const token_number_type
+ translate_table[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202
+ };
+ const int user_token_number_max_ = 457;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LOGGING (const location_type& l)
- {
- return symbol_type (token::TOKEN_LOGGING, l);
+ if (t <= 0)
+ return yyeof_;
+ else if (t <= user_token_number_max_)
+ return translate_table[t];
+ else
+ return yy_undef_token_;
}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_LOGGERS (const location_type& l)
+ // basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
+ template <typename Base>
+ Dhcp6Parser::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+ : Base (std::move (that))
+ , value ()
+ , location (std::move (that.location))
{
- return symbol_type (token::TOKEN_LOGGERS, l);
- }
+ switch (this->type_get ())
+ {
+ case 220: // value
+ case 224: // map_value
+ case 265: // ddns_replace_client_name_value
+ case 302: // db_type
+ case 403: // hr_mode
+ case 539: // duid_type
+ case 582: // ncr_protocol_value
+ value.move< ElementPtr > (std::move (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OUTPUT_OPTIONS (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
- }
+ case 202: // "boolean"
+ value.move< bool > (std::move (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_OUTPUT (const location_type& l)
- {
- return symbol_type (token::TOKEN_OUTPUT, l);
- }
+ case 201: // "floating point"
+ value.move< double > (std::move (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DEBUGLEVEL (const location_type& l)
- {
- return symbol_type (token::TOKEN_DEBUGLEVEL, l);
- }
+ case 200: // "integer"
+ value.move< int64_t > (std::move (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SEVERITY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SEVERITY, l);
- }
+ case 199: // "constant string"
+ value.move< std::string > (std::move (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLUSH (const location_type& l)
- {
- return symbol_type (token::TOKEN_FLUSH, l);
- }
+ default:
+ break;
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAXSIZE (const location_type& l)
- {
- return symbol_type (token::TOKEN_MAXSIZE, l);
}
+#endif
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_MAXVER (const location_type& l)
+ template <typename Base>
+ Dhcp6Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+ : Base (that)
+ , value ()
+ , location (that.location)
{
- return symbol_type (token::TOKEN_MAXVER, l);
- }
+ switch (this->type_get ())
+ {
+ case 220: // value
+ case 224: // map_value
+ case 265: // ddns_replace_client_name_value
+ case 302: // db_type
+ case 403: // hr_mode
+ case 539: // duid_type
+ case 582: // ncr_protocol_value
+ value.copy< ElementPtr > (YY_MOVE (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_PATTERN (const location_type& l)
- {
- return symbol_type (token::TOKEN_PATTERN, l);
- }
+ case 202: // "boolean"
+ value.copy< bool > (YY_MOVE (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCP4 (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCP4, l);
- }
+ case 201: // "floating point"
+ value.copy< double > (YY_MOVE (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_DHCPDDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_DHCPDDNS, l);
- }
+ case 200: // "integer"
+ value.copy< int64_t > (YY_MOVE (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_CONTROL_AGENT (const location_type& l)
- {
- return symbol_type (token::TOKEN_CONTROL_AGENT, l);
- }
+ case 199: // "constant string"
+ value.copy< std::string > (YY_MOVE (that.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TOPLEVEL_JSON (const location_type& l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
- }
+ default:
+ break;
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_TOPLEVEL_DHCP6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l);
}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_DHCP6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_DHCP6, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_INTERFACES6 (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_INTERFACES6, l);
- }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_SUBNET6 (const location_type& l)
+ template <typename Base>
+ bool
+ Dhcp6Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_SUB_SUBNET6, l);
+ return Base::type_get () == empty_symbol;
}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_POOL6 (const location_type& l)
+ template <typename Base>
+ void
+ Dhcp6Parser::basic_symbol<Base>::move (basic_symbol& s)
{
- return symbol_type (token::TOKEN_SUB_POOL6, l);
- }
+ super_type::move (s);
+ switch (this->type_get ())
+ {
+ case 220: // value
+ case 224: // map_value
+ case 265: // ddns_replace_client_name_value
+ case 302: // db_type
+ case 403: // hr_mode
+ case 539: // duid_type
+ case 582: // ncr_protocol_value
+ value.move< ElementPtr > (YY_MOVE (s.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_PD_POOL (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_PD_POOL, l);
- }
+ case 202: // "boolean"
+ value.move< bool > (YY_MOVE (s.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_RESERVATION (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_RESERVATION, l);
- }
+ case 201: // "floating point"
+ value.move< double > (YY_MOVE (s.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_OPTION_DEFS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
- }
+ case 200: // "integer"
+ value.move< int64_t > (YY_MOVE (s.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_OPTION_DEF (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
- }
+ case 199: // "constant string"
+ value.move< std::string > (YY_MOVE (s.value));
+ break;
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_OPTION_DATA (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
- }
+ default:
+ break;
+ }
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
+ location = YY_MOVE (s.location);
}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_DHCP_DDNS (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
- }
+ // by_type.
+ inline
+ Dhcp6Parser::by_type::by_type ()
+ : type (empty_symbol)
+ {}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_LOGGING (const location_type& l)
+#if 201103L <= YY_CPLUSPLUS
+ inline
+ Dhcp6Parser::by_type::by_type (by_type&& that)
+ : type (that.type)
{
- return symbol_type (token::TOKEN_SUB_LOGGING, l);
+ that.clear ();
}
+#endif
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
- {
- return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
- }
+ inline
+ Dhcp6Parser::by_type::by_type (const by_type& that)
+ : type (that.type)
+ {}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_STRING (const std::string& v, const location_type& l)
- {
- return symbol_type (token::TOKEN_STRING, v, l);
- }
+ inline
+ Dhcp6Parser::by_type::by_type (token_type t)
+ : type (yytranslate_ (t))
+ {}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_INTEGER (const int64_t& v, const location_type& l)
+ inline
+ void
+ Dhcp6Parser::by_type::clear ()
{
- return symbol_type (token::TOKEN_INTEGER, v, l);
+ type = empty_symbol;
}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_FLOAT (const double& v, const location_type& l)
+ inline
+ void
+ Dhcp6Parser::by_type::move (by_type& that)
{
- return symbol_type (token::TOKEN_FLOAT, v, l);
+ type = that.type;
+ that.clear ();
}
- Dhcp6Parser::symbol_type
- Dhcp6Parser::make_BOOLEAN (const bool& v, const location_type& l)
+ inline
+ int
+ Dhcp6Parser::by_type::type_get () const YY_NOEXCEPT
{
- return symbol_type (token::TOKEN_BOOLEAN, v, l);
+ return type;
}
-
-#line 14 "dhcp6_parser.yy" // lalr1.cc:377
+#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 3285 "dhcp6_parser.h" // lalr1.cc:377
+#line 4596 "dhcp6_parser.h"
+
-// A Bison parser, made by GNU Bison 3.0.4.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#ifndef YY_PARSER6_LOCATION_HH_INCLUDED
# define YY_PARSER6_LOCATION_HH_INCLUDED
-# include "position.hh"
+# include <iostream>
+# include <string>
-#line 14 "dhcp6_parser.yy" // location.cc:296
+# ifndef YY_NULLPTR
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# else
+# define YY_NULLPTR ((void*)0)
+# endif
+# endif
+
+#line 14 "dhcp6_parser.yy"
namespace isc { namespace dhcp {
-#line 46 "location.hh" // location.cc:296
- /// Abstract a location.
+#line 59 "location.hh"
+
+ /// A point in a source file.
+ class position
+ {
+ public:
+ /// Type for line and column numbers.
+ typedef int counter_type;
+
+ /// Construct a position.
+ explicit position (std::string* f = YY_NULLPTR,
+ counter_type l = 1,
+ counter_type c = 1)
+ : filename (f)
+ , line (l)
+ , column (c)
+ {}
+
+
+ /// Initialization.
+ void initialize (std::string* fn = YY_NULLPTR,
+ counter_type l = 1,
+ counter_type c = 1)
+ {
+ filename = fn;
+ line = l;
+ column = c;
+ }
+
+ /** \name Line and Column related manipulators
+ ** \{ */
+ /// (line related) Advance to the COUNT next lines.
+ void lines (counter_type count = 1)
+ {
+ if (count)
+ {
+ column = 1;
+ line = add_ (line, count, 1);
+ }
+ }
+
+ /// (column related) Advance to the COUNT next columns.
+ void columns (counter_type count = 1)
+ {
+ column = add_ (column, count, 1);
+ }
+ /** \} */
+
+ /// File name to which this position refers.
+ std::string* filename;
+ /// Current line number.
+ counter_type line;
+ /// Current column number.
+ counter_type column;
+
+ private:
+ /// Compute max (min, lhs+rhs).
+ static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min)
+ {
+ return lhs + rhs < min ? min : lhs + rhs;
+ }
+ };
+
+ /// Add \a width columns, in place.
+ inline position&
+ operator+= (position& res, position::counter_type width)
+ {
+ res.columns (width);
+ return res;
+ }
+
+ /// Add \a width columns.
+ inline position
+ operator+ (position res, position::counter_type width)
+ {
+ return res += width;
+ }
+
+ /// Subtract \a width columns, in place.
+ inline position&
+ operator-= (position& res, position::counter_type width)
+ {
+ return res += -width;
+ }
+
+ /// Subtract \a width columns.
+ inline position
+ operator- (position res, position::counter_type width)
+ {
+ return res -= width;
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator== (const position& pos1, const position& pos2)
+ {
+ return (pos1.line == pos2.line
+ && pos1.column == pos2.column
+ && (pos1.filename == pos2.filename
+ || (pos1.filename && pos2.filename
+ && *pos1.filename == *pos2.filename)));
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator!= (const position& pos1, const position& pos2)
+ {
+ return !(pos1 == pos2);
+ }
+
+ /** \brief Intercept output stream redirection.
+ ** \param ostr the destination output stream
+ ** \param pos a reference to the position to redirect
+ */
+ template <typename YYChar>
+ std::basic_ostream<YYChar>&
+ operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
+ {
+ if (pos.filename)
+ ostr << *pos.filename << ':';
+ return ostr << pos.line << '.' << pos.column;
+ }
+
+ /// Two points in a source file.
class location
{
public:
+ /// Type for line and column numbers.
+ typedef position::counter_type counter_type;
/// Construct a location from \a b to \a e.
location (const position& b, const position& e)
: begin (b)
, end (e)
- {
- }
+ {}
/// Construct a 0-width location in \a p.
explicit location (const position& p = position ())
: begin (p)
, end (p)
- {
- }
+ {}
/// Construct a 0-width location in \a f, \a l, \a c.
explicit location (std::string* f,
- unsigned int l = 1u,
- unsigned int c = 1u)
+ counter_type l = 1,
+ counter_type c = 1)
: begin (f, l, c)
, end (f, l, c)
- {
- }
+ {}
/// Initialization.
void initialize (std::string* f = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
+ counter_type l = 1,
+ counter_type c = 1)
{
begin.initialize (f, l, c);
end = begin;
}
/// Extend the current location to the COUNT next columns.
- void columns (int count = 1)
+ void columns (counter_type count = 1)
{
end += count;
}
/// Extend the current location to the COUNT next lines.
- void lines (int count = 1)
+ void lines (counter_type count = 1)
{
end.lines (count);
}
};
/// Join two locations, in place.
- inline location& operator+= (location& res, const location& end)
+ inline location&
+ operator+= (location& res, const location& end)
{
res.end = end.end;
return res;
}
/// Join two locations.
- inline location operator+ (location res, const location& end)
+ inline location
+ operator+ (location res, const location& end)
{
return res += end;
}
/// Add \a width columns to the end position, in place.
- inline location& operator+= (location& res, int width)
+ inline location&
+ operator+= (location& res, location::counter_type width)
{
res.columns (width);
return res;
}
/// Add \a width columns to the end position.
- inline location operator+ (location res, int width)
+ inline location
+ operator+ (location res, location::counter_type width)
{
return res += width;
}
/// Subtract \a width columns to the end position, in place.
- inline location& operator-= (location& res, int width)
+ inline location&
+ operator-= (location& res, location::counter_type width)
{
return res += -width;
}
/// Subtract \a width columns to the end position.
- inline location operator- (location res, int width)
+ inline location
+ operator- (location res, location::counter_type width)
{
return res -= width;
}
** Avoid duplicate information.
*/
template <typename YYChar>
- inline std::basic_ostream<YYChar>&
+ std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
{
- unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+ location::counter_type end_col
+ = 0 < loc.end.column ? loc.end.column - 1 : 0;
ostr << loc.begin;
if (loc.end.filename
&& (!loc.begin.filename
return ostr;
}
-#line 14 "dhcp6_parser.yy" // location.cc:296
+#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 192 "location.hh" // location.cc:296
+#line 333 "location.hh"
+
#endif // !YY_PARSER6_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.0.4.
-
-// Positions for Bison parsers in C++
-
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file position.hh
- ** Define the isc::dhcp::position class.
- */
-
-#ifndef YY_PARSER6_POSITION_HH_INCLUDED
-# define YY_PARSER6_POSITION_HH_INCLUDED
-
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
-
-#line 14 "dhcp6_parser.yy" // location.cc:296
-namespace isc { namespace dhcp {
-#line 56 "position.hh" // location.cc:296
- /// Abstract a position.
- class position
- {
- public:
- /// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
- : filename (f)
- , line (l)
- , column (c)
- {
- }
-
-
- /// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
- unsigned int l = 1u,
- unsigned int c = 1u)
- {
- filename = fn;
- line = l;
- column = c;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- /// (line related) Advance to the COUNT next lines.
- void lines (int count = 1)
- {
- if (count)
- {
- column = 1u;
- line = add_ (line, count, 1);
- }
- }
-
- /// (column related) Advance to the COUNT next columns.
- void columns (int count = 1)
- {
- column = add_ (column, count, 1);
- }
- /** \} */
-
- /// File name to which this position refers.
- std::string* filename;
- /// Current line number.
- unsigned int line;
- /// Current column number.
- unsigned int column;
-
- private:
- /// Compute max(min, lhs+rhs) (provided min <= lhs).
- static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
- {
- return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
- ? rhs + lhs
- : min);
- }
- };
-
- /// Add \a width columns, in place.
- inline position&
- operator+= (position& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add \a width columns.
- inline position
- operator+ (position res, int width)
- {
- return res += width;
- }
-
- /// Subtract \a width columns, in place.
- inline position&
- operator-= (position& res, int width)
- {
- return res += -width;
- }
-
- /// Subtract \a width columns.
- inline position
- operator- (position res, int width)
- {
- return res -= width;
- }
-
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param pos a reference to the position to redirect
- */
- template <typename YYChar>
- inline std::basic_ostream<YYChar>&
- operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
- {
- if (pos.filename)
- ostr << *pos.filename << ':';
- return ostr << pos.line << '.' << pos.column;
- }
-
-#line 14 "dhcp6_parser.yy" // location.cc:296
-} } // isc::dhcp
-#line 180 "position.hh" // location.cc:296
-#endif // !YY_PARSER6_POSITION_HH_INCLUDED
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
+
+// Starting with Bison 3.2, this file is useless: the structure it
+// used to define is now defined in "location.hh".
+//
+// To get rid of this file:
+// 1. add '%require "3.2"' (or newer) to your grammar file
+// 2. remove references to this file from your build system
+// 3. if you used to include it, include "location.hh" instead.
+
+#include "location.hh"
-// A Bison parser, made by GNU Bison 3.0.4.
-
-// Stack handling for Bison parsers in C++
-
-// Copyright (C) 2002-2015 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file stack.hh
- ** Define the isc::dhcp::stack class.
- */
-
-#ifndef YY_PARSER6_STACK_HH_INCLUDED
-# define YY_PARSER6_STACK_HH_INCLUDED
-
-# include <vector>
-
-#line 14 "dhcp6_parser.yy" // stack.hh:132
-namespace isc { namespace dhcp {
-#line 46 "stack.hh" // stack.hh:132
- template <class T, class S = std::vector<T> >
- class stack
- {
- public:
- // Hide our reversed order.
- typedef typename S::reverse_iterator iterator;
- typedef typename S::const_reverse_iterator const_iterator;
-
- stack ()
- : seq_ ()
- {
- seq_.reserve (200);
- }
-
- stack (unsigned int n)
- : seq_ (n)
- {}
-
- inline
- T&
- operator[] (unsigned int i)
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- inline
- const T&
- operator[] (unsigned int i) const
- {
- return seq_[seq_.size () - 1 - i];
- }
-
- /// Steal the contents of \a t.
- ///
- /// Close to move-semantics.
- inline
- void
- push (T& t)
- {
- seq_.push_back (T());
- operator[](0).move (t);
- }
-
- inline
- void
- pop (unsigned int n = 1)
- {
- for (; n; --n)
- seq_.pop_back ();
- }
-
- void
- clear ()
- {
- seq_.clear ();
- }
-
- inline
- typename S::size_type
- size () const
- {
- return seq_.size ();
- }
-
- inline
- const_iterator
- begin () const
- {
- return seq_.rbegin ();
- }
-
- inline
- const_iterator
- end () const
- {
- return seq_.rend ();
- }
-
- private:
- stack (const stack&);
- stack& operator= (const stack&);
- /// The wrapped container.
- S seq_;
- };
-
- /// Present a slice of the top of a stack.
- template <class T, class S = stack<T> >
- class slice
- {
- public:
- slice (const S& stack, unsigned int range)
- : stack_ (stack)
- , range_ (range)
- {}
-
- inline
- const T&
- operator [] (unsigned int i) const
- {
- return stack_[range_ - i];
- }
-
- private:
- const S& stack_;
- unsigned int range_;
- };
-
-#line 14 "dhcp6_parser.yy" // stack.hh:132
-} } // isc::dhcp
-#line 156 "stack.hh" // stack.hh:132
-
-#endif // !YY_PARSER6_STACK_HH_INCLUDED
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
+
+// Starting with Bison 3.2, this file is useless: the structure it
+// used to define is now defined with the parser itself.
+//
+// To get rid of this file:
+// 1. add '%require "3.2"' (or newer) to your grammar file
+// 2. remove references to this file from your build system.
-// Generated 202003301428
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Locations for Bison parsers in C++
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Generated 202003301428
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202003301428
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241256
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// Generated 202003301424
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241255
+// A Bison parser, made by GNU Bison 3.5.4.
// Locations for Bison parsers in C++
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// A Bison parser, made by GNU Bison 3.5.3.
+// A Bison parser, made by GNU Bison 3.5.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Generated 202003301424
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241255
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202003301424
-// A Bison parser, made by GNU Bison 3.5.3.
+// Generated 202004241255
+// A Bison parser, made by GNU Bison 3.5.4.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.