From: Thomas Markwalder Date: Thu, 8 Aug 2019 19:10:52 +0000 (-0400) Subject: [#665,!460] Implemented support in netconf agent X-Git-Tag: Kea-1.6.0~41^2~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=293a173751dfdf2ece765f4f90da35d4cc8cd458;p=thirdparty%2Fkea.git [#665,!460] Implemented support in netconf agent doc/examples/netconf/simple-dhcp4.json doc/examples/netconf/simple-dhcp6.json src/bin/netconf/netconf_lexer.ll src/bin/netconf/netconf_parser.yy src/bin/netconf/location.hh src/bin/netconf/netconf_lexer.cc src/bin/netconf/netconf_parser.cc src/bin/netconf/netconf_parser.h src/bin/netconf/position.hh src/bin/netconf/stack.hh --- diff --git a/doc/examples/netconf/simple-dhcp4.json b/doc/examples/netconf/simple-dhcp4.json index b8f85e054f..e46b5731a1 100644 --- a/doc/examples/netconf/simple-dhcp4.json +++ b/doc/examples/netconf/simple-dhcp4.json @@ -102,7 +102,9 @@ // kept. "flush": true, "maxsize": 204800, - "maxver": 4 + "maxver": 4, + // We use pattern to specify custom log message layout + "pattern": "%d{%y.%m.%d %H:%M:%S.%q} %-5p [%c/%i] %m\n" } ], // You can change the severity to DEBUG, INFO, WARN, ERROR or diff --git a/doc/examples/netconf/simple-dhcp6.json b/doc/examples/netconf/simple-dhcp6.json index 5dbb22218e..871e74dcaf 100644 --- a/doc/examples/netconf/simple-dhcp6.json +++ b/doc/examples/netconf/simple-dhcp6.json @@ -103,7 +103,10 @@ // kept. "flush": true, "maxsize": 204800, - "maxver": 4 + "maxver": 4, + // We use pattern to specify custom log message layout + "pattern": "%d{%y.%m.%d %H:%M:%S.%q} %-5p [%c/%i] %m\n" + } ], // You can change the severity to DEBUG, INFO, WARN, ERROR or diff --git a/src/bin/netconf/location.hh b/src/bin/netconf/location.hh index 7ae1e73816..69c2cf2caf 100644 --- a/src/bin/netconf/location.hh +++ b/src/bin/netconf/location.hh @@ -1,9 +1,8 @@ -// Generated 201906181715 -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -55,10 +54,9 @@ # endif # endif -#line 14 "netconf_parser.yy" +#line 14 "netconf_parser.yy" // location.cc:339 namespace isc { namespace netconf { -#line 60 "location.hh" - +#line 60 "location.hh" // location.cc:339 /// A point in a source file. class position { @@ -318,8 +316,7 @@ namespace isc { namespace netconf { return ostr; } -#line 14 "netconf_parser.yy" +#line 14 "netconf_parser.yy" // location.cc:339 } } // isc::netconf -#line 323 "location.hh" - +#line 322 "location.hh" // location.cc:339 #endif // !YY_NETCONF_LOCATION_HH_INCLUDED diff --git a/src/bin/netconf/netconf_lexer.cc b/src/bin/netconf/netconf_lexer.cc index 365415f3c8..0492a387e7 100644 --- a/src/bin/netconf/netconf_lexer.cc +++ b/src/bin/netconf/netconf_lexer.cc @@ -1,6 +1,6 @@ -#line 1 "netconf_lexer.cc" +#line 2 "netconf_lexer.cc" -#line 3 "netconf_lexer.cc" +#line 4 "netconf_lexer.cc" #define YY_INT_ALIGNED short int @@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 62 -#define YY_END_OF_BUFFER 63 +#define YY_NUM_RULES 63 +#define YY_END_OF_BUFFER 64 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,48 +700,49 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[367] = +static const flex_int16_t yy_accept[373] = { 0, - 55, 55, 0, 0, 0, 0, 0, 0, 0, 0, - 63, 61, 10, 11, 61, 1, 55, 52, 55, 55, - 61, 54, 53, 61, 61, 61, 61, 61, 48, 49, - 61, 61, 61, 50, 51, 5, 5, 5, 61, 61, - 61, 10, 11, 0, 0, 44, 0, 0, 0, 0, + 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 62, 10, 11, 62, 1, 56, 53, 56, 56, + 62, 55, 54, 62, 62, 62, 62, 62, 49, 50, + 62, 62, 62, 51, 52, 5, 5, 5, 62, 62, + 62, 10, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 55, 55, 0, 54, 55, 3, 2, - 6, 0, 55, 0, 0, 0, 0, 0, 0, 4, - 0, 0, 9, 0, 45, 0, 0, 0, 0, 47, + 0, 0, 1, 56, 56, 0, 55, 56, 3, 2, + 6, 0, 56, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 9, 0, 46, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 46, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 47, 0, 0, 22, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 60, 58, 0, 57, 56, + 0, 0, 0, 0, 0, 0, 61, 59, 0, 58, + 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, - 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 20, 39, 0, 0, 0, 0, 0, 0, 23, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 38, 0, 0, 0, 0, 27, 0, 0, 0, 34, - 12, 0, 14, 0, 0, 0, 32, 35, 0, 40, + 0, 60, 57, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 20, 39, 0, 0, 0, 0, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 41, 38, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 34, 12, 0, 14, 0, 0, + 0, 32, 35, 0, 40, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, - 0, 0, 33, 0, 0, 30, 0, 0, 0, 15, - 0, 0, 0, 0, 29, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 24, 0, 0, 37, 0, 0, 31, 18, - 0, 0, 0, 17, 16, 0 + 0, 0, 0, 0, 43, 0, 0, 0, 33, 0, + 0, 30, 0, 0, 0, 15, 0, 0, 0, 0, + 29, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 0, 37, 0, 0, 31, 18, 0, 0, 0, 17, + 16, 0 } ; static const YY_CHAR yy_ec[256] = @@ -786,97 +787,99 @@ static const YY_CHAR yy_meta[61] = 5, 3, 5, 5, 3, 3, 3, 3, 3, 3 } ; -static const flex_int16_t yy_base[380] = +static const flex_int16_t yy_base[386] = { 0, 0, 0, 59, 62, 65, 0, 63, 67, 47, 64, - 291, 2481, 84, 286, 125, 0, 105, 2481, 120, 125, - 85, 169, 2481, 262, 139, 65, 69, 82, 2481, 2481, - 80, 84, 118, 2481, 2481, 2481, 92, 269, 230, 0, - 256, 110, 270, 97, 186, 2481, 193, 199, 197, 210, + 291, 2525, 84, 286, 125, 0, 105, 2525, 120, 125, + 85, 169, 2525, 262, 139, 65, 69, 82, 2525, 2525, + 80, 84, 118, 2525, 2525, 2525, 92, 269, 230, 0, + 256, 110, 270, 97, 186, 2525, 193, 199, 197, 210, 219, 234, 255, 263, 269, 278, 284, 291, 297, 303, - 320, 338, 0, 345, 363, 375, 381, 385, 2481, 0, - 2481, 332, 349, 121, 144, 128, 152, 171, 160, 2481, - 222, 248, 2481, 198, 2481, 169, 405, 411, 209, 417, + 320, 338, 0, 345, 363, 375, 381, 385, 2525, 0, + 2525, 332, 349, 121, 144, 128, 152, 171, 160, 2525, + 222, 248, 2525, 198, 2525, 169, 405, 411, 209, 417, 451, 428, 439, 450, 478, 493, 499, 506, 512, 518, - 532, 540, 546, 552, 574, 586, 594, 602, 608, 614, - 622, 628, 648, 661, 0, 177, 181, 184, 189, 207, - 204, 130, 2481, 0, 667, 673, 155, 2481, 698, 695, - 2481, 683, 723, 2481, 739, 748, 756, 762, 768, 776, - 782, 810, 819, 827, 833, 839, 847, 853, 862, 875, - 895, 903, 909, 917, 222, 2481, 2481, 223, 2481, 2481, - 103, 0, 924, 931, 967, 937, 992, 1008, 943, 1014, - 1020, 1032, 1042, 1049, 1055, 1065, 1071, 1077, 1088, 1099, - 1110, 1121, 1127, 1134, 1143, 1149, 1155, 1169, 1183, 2481, - 2481, 104, 0, 1190, 1197, 1232, 1204, 1211, 1218, 1230, - - 1259, 1276, 1282, 1288, 2481, 1294, 1300, 1310, 1316, 1322, - 1328, 2481, 1334, 1351, 1357, 1363, 1369, 1375, 2481, 1391, - 1397, 64, 0, 1403, 1409, 1437, 1445, 1451, 1459, 2481, - 2481, 2481, 1470, 1479, 1487, 1499, 1507, 1516, 2481, 1522, - 1528, 1540, 1557, 1550, 1563, 1569, 1576, 2481, 1583, 1597, - 1609, 1618, 1625, 1631, 1637, 1643, 1651, 1660, 1666, 2481, - 2481, 1672, 1686, 1694, 1700, 2481, 1706, 1712, 1722, 2481, - 2481, 1728, 2481, 1734, 1767, 1773, 2481, 2481, 1779, 2481, - 1786, 1792, 1802, 1812, 1820, 1827, 1836, 1848, 1855, 1861, - 1869, 1883, 1889, 1897, 1903, 1909, 2481, 1918, 1925, 1943, - - 1951, 1965, 1971, 1977, 1985, 1991, 2000, 2010, 2019, 2025, - 2036, 2044, 2053, 2064, 2072, 2079, 2086, 2092, 2481, 2098, - 2105, 2112, 2481, 2133, 2140, 2481, 2149, 2156, 2162, 2481, - 2168, 2174, 2182, 2210, 2481, 2481, 2218, 2224, 2230, 2236, - 2243, 2258, 2264, 2271, 2481, 2278, 2284, 2292, 2299, 2312, - 2320, 2327, 2481, 2333, 2340, 2481, 2346, 2355, 2481, 2481, - 2362, 2368, 2375, 2481, 2481, 2481, 2414, 2421, 2428, 2435, - 2442, 2449, 2456, 2460, 2465, 2467, 2469, 2471, 2473 + 532, 540, 546, 552, 574, 586, 594, 602, 608, 622, + 630, 647, 663, 669, 0, 177, 181, 184, 189, 207, + 204, 130, 2525, 0, 675, 681, 155, 2525, 706, 703, + 2525, 691, 731, 2525, 747, 756, 764, 770, 776, 784, + 790, 818, 827, 835, 841, 847, 855, 861, 870, 883, + 898, 905, 916, 923, 931, 222, 2525, 2525, 223, 2525, + 2525, 103, 0, 938, 952, 988, 959, 975, 985, 1029, + 1036, 1042, 1048, 1054, 1062, 1071, 1077, 1087, 1100, 1106, + 1112, 1120, 1126, 1135, 1145, 1154, 1160, 1178, 1189, 1196, + 1202, 2525, 2525, 104, 0, 1217, 1224, 1259, 1231, 1245, + + 1237, 1257, 1286, 1303, 1309, 1315, 2525, 1321, 1327, 1337, + 1343, 1349, 1355, 2525, 1361, 1378, 1384, 1390, 1396, 1403, + 1418, 2525, 1424, 1437, 64, 0, 1444, 1452, 1458, 1465, + 1473, 1481, 2525, 2525, 2525, 1493, 1499, 1509, 1521, 1532, + 1542, 2525, 1549, 1556, 1565, 1575, 1584, 1590, 1598, 1604, + 1613, 2525, 1619, 1632, 1638, 1648, 1656, 1667, 1673, 1681, + 1690, 1696, 1702, 2525, 2525, 1709, 1724, 1718, 1730, 1737, + 2525, 1743, 1753, 1759, 2525, 2525, 1771, 2525, 1765, 1794, + 1807, 2525, 2525, 1813, 2525, 1819, 1827, 2525, 1835, 1847, + 1853, 1860, 1869, 1886, 1893, 1911, 1919, 1926, 1932, 1940, + + 1948, 1954, 2525, 1960, 1976, 1983, 1989, 2002, 2011, 2017, + 2030, 2037, 2045, 2052, 2058, 2071, 2081, 2087, 2093, 2104, + 2110, 2116, 2122, 2128, 2525, 2138, 2144, 2151, 2525, 2161, + 2173, 2525, 2179, 2185, 2195, 2525, 2201, 2207, 2213, 2223, + 2525, 2525, 2241, 2256, 2262, 2278, 2284, 2290, 2296, 2302, + 2525, 2312, 2319, 2331, 2337, 2354, 2360, 2366, 2525, 2372, + 2378, 2525, 2389, 2395, 2525, 2525, 2406, 2412, 2418, 2525, + 2525, 2525, 2458, 2465, 2472, 2479, 2486, 2493, 2500, 2504, + 2509, 2511, 2513, 2515, 2517 } ; -static const flex_int16_t yy_def[380] = +static const flex_int16_t yy_def[386] = { 0, - 366, 1, 367, 367, 1, 5, 5, 5, 5, 5, - 366, 366, 366, 366, 368, 369, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 370, - 366, 366, 366, 371, 368, 366, 368, 368, 372, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 369, 366, 366, 366, 366, 366, 366, 373, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 370, 366, 371, 366, 374, 368, 368, 375, 368, - 372, 368, 368, 368, 368, 368, 368, 368, 368, 368, - - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 373, 366, 366, 366, 366, 366, - 366, 366, 366, 376, 368, 368, 375, 366, 372, 368, - 366, 368, 368, 366, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 366, 366, 366, 366, 366, 366, - 366, 377, 368, 368, 372, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 366, - 366, 366, 378, 368, 368, 372, 368, 368, 368, 368, - - 368, 368, 368, 368, 366, 368, 368, 368, 368, 368, - 368, 366, 368, 368, 368, 368, 368, 368, 366, 368, - 368, 366, 379, 368, 368, 368, 368, 368, 368, 366, - 366, 366, 368, 368, 368, 368, 368, 368, 366, 368, - 368, 368, 368, 368, 368, 368, 368, 366, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 366, - 366, 368, 368, 368, 368, 366, 368, 368, 368, 366, - 366, 368, 366, 368, 368, 368, 366, 366, 368, 366, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 366, 368, 368, 368, - - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 366, 368, - 368, 368, 366, 368, 368, 366, 368, 368, 368, 366, - 368, 368, 368, 368, 366, 366, 368, 368, 368, 368, - 368, 368, 368, 368, 366, 368, 368, 368, 368, 368, - 368, 368, 366, 368, 368, 366, 368, 368, 366, 366, - 368, 368, 368, 366, 366, 0, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366 + 372, 1, 373, 373, 1, 5, 5, 5, 5, 5, + 372, 372, 372, 372, 374, 375, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 376, + 372, 372, 372, 377, 374, 372, 374, 374, 378, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 375, 372, 372, 372, 372, 372, 372, 379, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 376, 372, 377, 372, 380, 374, 374, 381, 374, + 378, 374, 374, 374, 374, 374, 374, 374, 374, 374, + + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 379, 372, 372, 372, 372, 372, + 372, 372, 372, 382, 374, 374, 381, 372, 378, 374, + 372, 374, 374, 372, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 374, 372, 372, 372, 372, 372, + 372, 372, 383, 374, 374, 378, 374, 374, 374, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 372, 372, 372, 384, 374, 374, 378, 374, 374, + + 374, 374, 374, 374, 374, 374, 372, 374, 374, 374, + 374, 374, 374, 372, 374, 374, 374, 374, 374, 374, + 374, 372, 374, 374, 372, 385, 374, 374, 374, 374, + 374, 374, 372, 372, 372, 374, 374, 374, 374, 374, + 374, 372, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 372, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 372, 372, 374, 374, 374, 374, 374, + 372, 374, 374, 374, 372, 372, 374, 372, 374, 374, + 374, 372, 372, 374, 372, 374, 374, 372, 374, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + + 374, 374, 372, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 374, 372, 374, 374, 374, 372, 374, + 374, 372, 374, 374, 374, 372, 374, 374, 374, 374, + 372, 372, 374, 374, 374, 374, 374, 374, 374, 374, + 372, 374, 374, 374, 374, 374, 374, 374, 372, 374, + 374, 372, 374, 374, 372, 372, 374, 374, 374, 372, + 372, 0, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372 } ; -static const flex_int16_t yy_nxt[2542] = +static const flex_int16_t yy_nxt[2586] = { 0, 12, 13, 14, 13, 12, 15, 16, 12, 17, 18, 19, 20, 21, 22, 22, 22, 22, 23, 24, 12, @@ -889,278 +892,282 @@ static const flex_int16_t yy_nxt[2542] = 12, 12, 12, 12, 41, 42, 74, 42, 12, 12, 12, 12, 69, 42, 12, 42, 12, 70, 12, 75, - 74, 74, 85, 248, 12, 12, 12, 12, 39, 76, + 74, 74, 85, 252, 12, 12, 12, 12, 39, 76, 12, 42, 12, 42, 75, 77, 64, 12, 65, 65, 65, 65, 75, 12, 12, 44, 44, 44, 66, 86, 46, 64, 76, 67, 67, 67, 67, 78, 68, 68, - 68, 68, 222, 66, 66, 76, 116, 72, 66, 72, - 47, 48, 73, 73, 73, 73, 192, 49, 118, 66, + 68, 68, 225, 66, 66, 76, 116, 72, 66, 72, + 47, 48, 73, 73, 73, 73, 194, 49, 118, 66, 128, 50, 51, 52, 66, 53, 116, 54, 79, 117, - 55, 56, 57, 58, 59, 161, 60, 116, 61, 62, + 55, 56, 57, 58, 59, 162, 60, 116, 61, 62, 64, 118, 67, 67, 67, 67, 44, 44, 44, 117, 118, 46, 66, 44, 44, 44, 117, 119, 46, 44, - 44, 44, 90, 85, 46, 155, 156, 157, 66, 45, - 44, 44, 44, 121, 128, 46, 120, 155, 49, 44, - 44, 44, 124, 157, 46, 49, 156, 157, 155, 45, - 86, 49, 156, 45, 44, 44, 44, 45, 88, 46, - 158, 87, 49, 160, 45, 190, 190, 45, 95, 45, - 91, 49, 159, 123, 93, 44, 44, 44, 92, 122, - 46, 190, 191, 44, 44, 44, 49, 94, 46, 44, + 44, 44, 90, 85, 46, 156, 157, 158, 66, 45, + 44, 44, 44, 121, 128, 46, 120, 156, 49, 44, + 44, 44, 124, 158, 46, 49, 157, 158, 156, 45, + 86, 49, 157, 45, 44, 44, 44, 45, 88, 46, + 159, 87, 49, 161, 45, 192, 192, 45, 95, 45, + 91, 49, 160, 123, 93, 44, 44, 44, 92, 122, + 46, 192, 193, 44, 44, 44, 49, 94, 46, 44, 44, 44, 43, 96, 46, 83, 97, 81, 44, 44, 44, 80, 71, 46, 44, 44, 44, 49, 43, 46, - 366, 44, 44, 44, 366, 49, 46, 44, 44, 44, - - 98, 49, 46, 44, 44, 44, 366, 366, 46, 366, - 49, 99, 101, 103, 366, 100, 49, 102, 366, 105, - 44, 44, 44, 49, 366, 46, 104, 366, 366, 49, - 366, 366, 107, 366, 366, 49, 366, 366, 44, 44, - 44, 366, 108, 46, 106, 73, 73, 73, 73, 366, - 366, 109, 49, 366, 366, 110, 111, 366, 68, 68, - 68, 68, 73, 73, 73, 73, 366, 112, 66, 366, - 49, 113, 366, 114, 64, 366, 65, 65, 65, 65, - 366, 366, 366, 72, 66, 72, 66, 366, 73, 73, - 73, 73, 64, 366, 67, 67, 67, 67, 68, 68, - - 68, 68, 66, 366, 66, 44, 44, 44, 66, 366, - 46, 44, 44, 44, 366, 366, 46, 44, 44, 44, - 66, 366, 46, 366, 66, 366, 366, 366, 44, 44, - 44, 366, 366, 46, 366, 366, 366, 49, 366, 44, - 44, 44, 366, 49, 131, 366, 125, 366, 366, 49, - 44, 44, 44, 366, 366, 46, 366, 366, 366, 366, - 49, 366, 366, 126, 129, 129, 129, 129, 366, 366, - 366, 49, 129, 129, 129, 129, 130, 366, 44, 44, - 44, 366, 49, 134, 366, 366, 129, 129, 129, 129, - 129, 129, 366, 44, 44, 44, 132, 133, 46, 44, - - 44, 44, 366, 366, 46, 366, 44, 44, 44, 366, - 49, 46, 44, 44, 44, 366, 366, 46, 44, 44, - 44, 366, 366, 46, 366, 49, 366, 366, 366, 135, - 366, 49, 44, 44, 44, 366, 136, 46, 49, 366, - 44, 44, 44, 366, 49, 46, 44, 44, 44, 366, - 49, 46, 44, 44, 44, 366, 366, 46, 366, 137, - 138, 366, 366, 366, 49, 366, 366, 366, 140, 366, - 139, 366, 49, 366, 44, 44, 44, 366, 49, 46, - 366, 141, 366, 366, 49, 366, 44, 44, 44, 366, - 144, 46, 366, 142, 44, 44, 44, 366, 366, 46, - - 366, 143, 44, 44, 44, 366, 49, 46, 44, 44, - 44, 366, 366, 46, 44, 44, 44, 366, 49, 46, - 145, 366, 44, 44, 44, 366, 49, 46, 44, 44, - 44, 366, 366, 46, 49, 366, 366, 366, 146, 366, - 49, 366, 366, 366, 147, 149, 49, 366, 44, 44, - 44, 366, 150, 46, 49, 366, 148, 366, 151, 366, - 49, 44, 44, 44, 366, 366, 46, 44, 44, 44, - 366, 152, 46, 44, 44, 44, 366, 366, 46, 366, - 49, 366, 366, 44, 44, 44, 366, 153, 46, 366, - 366, 366, 366, 49, 366, 44, 44, 44, 366, 49, - - 46, 366, 366, 366, 366, 49, 154, 366, 163, 366, - 164, 165, 165, 165, 165, 49, 366, 366, 366, 165, - 165, 165, 165, 44, 44, 44, 366, 49, 46, 167, - 366, 366, 366, 165, 165, 165, 165, 165, 165, 44, - 44, 44, 366, 366, 46, 366, 366, 166, 44, 44, - 44, 366, 366, 46, 366, 49, 44, 44, 44, 366, - 366, 46, 44, 44, 44, 366, 366, 46, 44, 44, - 44, 49, 366, 46, 366, 168, 44, 44, 44, 366, - 49, 46, 44, 44, 44, 366, 366, 46, 49, 366, - 366, 366, 169, 366, 49, 366, 366, 170, 366, 366, - - 49, 366, 366, 366, 366, 366, 172, 171, 49, 366, - 44, 44, 44, 366, 49, 46, 366, 173, 366, 44, - 44, 44, 366, 175, 46, 366, 174, 44, 44, 44, - 366, 366, 46, 44, 44, 44, 366, 366, 46, 44, - 44, 44, 49, 366, 46, 176, 366, 44, 44, 44, - 366, 49, 46, 44, 44, 44, 366, 366, 46, 49, - 366, 366, 44, 44, 44, 49, 179, 46, 366, 366, - 177, 49, 180, 178, 366, 44, 44, 44, 366, 49, - 46, 366, 182, 366, 366, 49, 366, 366, 181, 366, - 366, 366, 183, 366, 49, 44, 44, 44, 366, 366, - - 46, 366, 366, 44, 44, 44, 184, 49, 46, 44, - 44, 44, 366, 366, 46, 366, 366, 44, 44, 44, - 366, 366, 46, 185, 44, 44, 44, 49, 366, 46, - 366, 44, 44, 44, 366, 49, 46, 44, 44, 44, - 366, 49, 46, 44, 44, 44, 186, 197, 46, 49, - 366, 366, 366, 366, 366, 366, 49, 366, 187, 188, - 189, 366, 366, 49, 366, 366, 366, 194, 366, 49, - 366, 366, 366, 366, 366, 49, 366, 366, 366, 195, - 196, 196, 196, 196, 200, 366, 366, 366, 196, 196, - 196, 196, 44, 44, 44, 366, 366, 46, 366, 366, - - 366, 366, 196, 196, 196, 196, 196, 196, 44, 44, - 44, 366, 366, 46, 44, 44, 44, 366, 366, 46, - 44, 44, 44, 366, 49, 46, 366, 366, 366, 201, - 202, 198, 44, 44, 44, 366, 366, 46, 366, 366, - 49, 366, 44, 44, 44, 366, 49, 205, 366, 44, - 44, 44, 49, 366, 46, 44, 44, 44, 199, 366, - 46, 366, 203, 366, 49, 44, 44, 44, 366, 366, - 46, 44, 44, 44, 49, 366, 46, 44, 44, 44, - 366, 49, 46, 204, 206, 366, 366, 49, 44, 44, - 44, 366, 366, 46, 207, 366, 366, 49, 366, 44, - - 44, 44, 366, 49, 212, 366, 208, 366, 366, 49, - 44, 44, 44, 366, 209, 46, 210, 366, 366, 366, - 49, 44, 44, 44, 366, 366, 46, 44, 44, 44, - 366, 49, 46, 211, 44, 44, 44, 366, 366, 46, - 366, 366, 49, 44, 44, 44, 366, 366, 46, 44, - 44, 44, 366, 49, 46, 44, 44, 44, 366, 49, - 219, 366, 366, 213, 366, 366, 49, 214, 366, 44, - 44, 44, 366, 216, 46, 49, 366, 215, 366, 220, - 366, 49, 366, 44, 44, 44, 218, 49, 46, 366, - 44, 44, 44, 366, 366, 46, 217, 44, 44, 44, - - 366, 49, 46, 366, 44, 44, 44, 366, 366, 46, - 366, 44, 44, 44, 366, 49, 46, 366, 44, 44, - 44, 221, 49, 46, 366, 366, 366, 366, 366, 49, - 44, 44, 44, 366, 366, 46, 49, 224, 366, 366, - 366, 366, 366, 49, 225, 45, 45, 45, 45, 366, - 49, 366, 366, 45, 45, 45, 45, 226, 227, 44, - 44, 44, 49, 366, 230, 366, 228, 45, 45, 45, - 45, 45, 45, 366, 366, 229, 44, 44, 44, 366, - 366, 231, 44, 44, 44, 366, 366, 232, 44, 44, - 44, 49, 366, 46, 44, 44, 44, 366, 233, 46, - - 44, 44, 44, 366, 366, 46, 366, 366, 49, 366, - 44, 44, 44, 366, 49, 46, 44, 44, 44, 366, - 49, 46, 44, 44, 44, 366, 49, 46, 44, 44, - 44, 366, 49, 239, 44, 44, 44, 366, 366, 46, - 366, 366, 49, 366, 234, 366, 366, 366, 49, 236, - 235, 44, 44, 44, 49, 366, 46, 44, 44, 44, - 49, 366, 46, 44, 44, 44, 49, 366, 46, 44, - 44, 44, 238, 237, 46, 44, 44, 44, 366, 366, - 46, 366, 366, 49, 366, 366, 240, 366, 366, 49, - 241, 44, 44, 44, 366, 49, 46, 44, 44, 44, - - 242, 49, 46, 44, 44, 44, 366, 49, 46, 44, - 44, 44, 366, 366, 46, 243, 366, 366, 366, 366, - 366, 244, 366, 49, 366, 245, 366, 366, 246, 49, - 366, 366, 247, 366, 366, 49, 366, 44, 44, 44, - 366, 49, 46, 366, 249, 44, 44, 44, 366, 250, - 46, 44, 44, 44, 366, 366, 46, 366, 366, 44, - 44, 44, 366, 366, 46, 366, 366, 366, 366, 49, - 44, 44, 44, 366, 366, 46, 366, 49, 366, 44, - 44, 44, 366, 49, 46, 366, 251, 44, 44, 44, - 366, 49, 46, 366, 366, 366, 253, 252, 254, 44, - - 44, 44, 49, 366, 46, 366, 366, 44, 44, 44, - 366, 49, 46, 366, 366, 255, 44, 44, 44, 49, - 366, 260, 44, 44, 44, 366, 366, 261, 44, 44, - 44, 49, 366, 46, 366, 256, 366, 258, 257, 49, - 44, 44, 44, 366, 366, 46, 259, 366, 49, 366, - 44, 44, 44, 366, 49, 266, 262, 44, 44, 44, - 49, 366, 46, 44, 44, 44, 366, 265, 46, 44, - 44, 44, 49, 366, 46, 366, 44, 44, 44, 366, - 263, 46, 49, 44, 44, 44, 366, 366, 270, 49, - 366, 366, 264, 366, 366, 49, 366, 44, 44, 44, - - 366, 49, 271, 366, 366, 366, 267, 366, 49, 44, - 44, 44, 366, 366, 46, 49, 366, 268, 44, 44, - 44, 366, 366, 273, 366, 44, 44, 44, 269, 49, - 46, 44, 44, 44, 366, 274, 46, 44, 44, 44, - 366, 49, 46, 44, 44, 44, 366, 272, 277, 366, - 49, 44, 44, 44, 366, 366, 278, 49, 366, 366, - 44, 44, 44, 49, 366, 46, 44, 44, 44, 49, - 279, 280, 44, 44, 44, 49, 366, 46, 366, 366, - 276, 366, 366, 49, 366, 275, 44, 44, 44, 366, - 366, 46, 49, 366, 44, 44, 44, 366, 49, 46, - - 44, 44, 44, 366, 49, 46, 44, 44, 44, 366, - 366, 46, 44, 44, 44, 366, 366, 46, 49, 366, - 281, 366, 44, 44, 44, 282, 49, 46, 44, 44, - 44, 366, 49, 46, 44, 44, 44, 366, 49, 46, - 366, 366, 287, 366, 49, 366, 366, 284, 366, 366, - 283, 366, 285, 286, 49, 366, 366, 366, 366, 288, - 49, 289, 366, 290, 366, 366, 49, 44, 44, 44, - 366, 366, 46, 44, 44, 44, 366, 366, 46, 44, - 44, 44, 366, 366, 46, 291, 44, 44, 44, 366, - 366, 46, 44, 44, 44, 366, 366, 46, 366, 49, - - 366, 366, 44, 44, 44, 49, 292, 297, 366, 293, - 366, 49, 44, 44, 44, 366, 366, 46, 49, 366, - 44, 44, 44, 366, 49, 46, 366, 44, 44, 44, - 294, 366, 46, 366, 49, 295, 44, 44, 44, 366, - 366, 46, 296, 366, 49, 366, 366, 298, 44, 44, - 44, 366, 49, 46, 366, 44, 44, 44, 366, 49, - 46, 44, 44, 44, 366, 303, 46, 366, 49, 44, - 44, 44, 366, 366, 46, 301, 299, 300, 366, 366, - 49, 366, 366, 44, 44, 44, 366, 49, 46, 44, - 44, 44, 366, 49, 46, 366, 366, 44, 44, 44, - - 302, 49, 46, 44, 44, 44, 366, 366, 46, 44, - 44, 44, 366, 304, 46, 49, 366, 305, 44, 44, - 44, 49, 366, 46, 366, 44, 44, 44, 306, 49, - 46, 366, 366, 366, 366, 49, 308, 366, 366, 307, - 366, 49, 366, 44, 44, 44, 366, 366, 46, 366, - 49, 44, 44, 44, 366, 309, 46, 49, 366, 366, - 310, 314, 366, 366, 311, 44, 44, 44, 366, 366, - 46, 44, 44, 44, 312, 49, 46, 44, 44, 44, - 366, 366, 46, 49, 366, 44, 44, 44, 313, 366, - 46, 44, 44, 44, 366, 366, 319, 49, 366, 366, - - 44, 44, 44, 49, 315, 46, 366, 366, 316, 49, - 44, 44, 44, 366, 366, 46, 317, 49, 366, 44, - 44, 44, 318, 49, 46, 44, 44, 44, 366, 366, - 323, 366, 49, 366, 366, 320, 44, 44, 44, 366, - 366, 46, 49, 366, 44, 44, 44, 366, 366, 46, - 366, 49, 366, 44, 44, 44, 366, 49, 326, 366, - 321, 366, 322, 366, 44, 44, 44, 366, 49, 46, - 366, 366, 44, 44, 44, 324, 49, 46, 366, 44, - 44, 44, 366, 325, 46, 49, 44, 44, 44, 366, - 366, 330, 44, 44, 44, 366, 49, 46, 44, 44, - - 44, 327, 366, 46, 49, 44, 44, 44, 366, 366, - 46, 49, 44, 44, 44, 366, 366, 46, 49, 366, - 366, 329, 366, 366, 49, 366, 366, 328, 366, 366, - 49, 366, 366, 44, 44, 44, 331, 49, 335, 366, - 44, 44, 44, 366, 49, 336, 366, 366, 332, 44, - 44, 44, 366, 366, 46, 366, 44, 44, 44, 333, - 334, 46, 44, 44, 44, 49, 366, 46, 44, 44, - 44, 366, 49, 46, 44, 44, 44, 366, 366, 46, - 366, 49, 44, 44, 44, 366, 366, 46, 49, 366, - 366, 337, 366, 366, 49, 366, 366, 339, 366, 366, - - 49, 366, 366, 366, 366, 366, 49, 340, 338, 366, - 44, 44, 44, 366, 49, 46, 366, 341, 44, 44, - 44, 342, 366, 46, 44, 44, 44, 366, 366, 345, - 44, 44, 44, 366, 366, 46, 44, 44, 44, 366, - 366, 46, 49, 44, 44, 44, 366, 366, 46, 366, - 49, 366, 366, 344, 366, 366, 49, 343, 44, 44, - 44, 366, 49, 46, 44, 44, 44, 366, 49, 46, - 366, 44, 44, 44, 366, 49, 46, 346, 44, 44, - 44, 366, 348, 46, 44, 44, 44, 366, 347, 353, - 49, 366, 44, 44, 44, 366, 49, 46, 366, 44, - - 44, 44, 366, 49, 46, 366, 366, 366, 349, 366, - 49, 366, 44, 44, 44, 350, 49, 356, 351, 352, - 44, 44, 44, 366, 49, 46, 366, 44, 44, 44, - 366, 49, 46, 44, 44, 44, 366, 366, 359, 366, - 44, 44, 44, 354, 49, 360, 44, 44, 44, 366, - 355, 46, 49, 366, 366, 44, 44, 44, 366, 49, - 46, 357, 44, 44, 44, 49, 358, 46, 44, 44, - 44, 366, 49, 364, 366, 44, 44, 44, 49, 366, - 365, 366, 366, 366, 366, 361, 366, 49, 366, 366, - 366, 366, 366, 366, 49, 366, 366, 366, 366, 366, - - 49, 366, 366, 366, 366, 366, 362, 49, 366, 366, - 366, 366, 366, 363, 36, 36, 36, 36, 36, 36, - 36, 45, 45, 45, 45, 45, 45, 45, 63, 366, - 63, 63, 63, 63, 63, 82, 366, 82, 366, 82, - 82, 82, 84, 84, 84, 84, 84, 84, 84, 89, - 89, 89, 89, 89, 89, 89, 115, 366, 115, 115, - 115, 115, 115, 84, 84, 366, 84, 127, 127, 127, - 127, 127, 162, 162, 193, 193, 223, 223, 84, 84, - 11, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366 + 372, 44, 44, 44, 372, 49, 46, 44, 44, 44, + + 98, 49, 46, 44, 44, 44, 372, 372, 46, 372, + 49, 99, 101, 103, 372, 100, 49, 102, 372, 105, + 44, 44, 44, 49, 372, 46, 104, 372, 372, 49, + 372, 372, 107, 372, 372, 49, 372, 372, 44, 44, + 44, 372, 108, 46, 106, 73, 73, 73, 73, 372, + 372, 109, 49, 372, 372, 110, 111, 372, 68, 68, + 68, 68, 73, 73, 73, 73, 372, 112, 66, 372, + 49, 113, 372, 114, 64, 372, 65, 65, 65, 65, + 372, 372, 372, 72, 66, 72, 66, 372, 73, 73, + 73, 73, 64, 372, 67, 67, 67, 67, 68, 68, + + 68, 68, 66, 372, 66, 44, 44, 44, 66, 372, + 46, 44, 44, 44, 372, 372, 46, 44, 44, 44, + 66, 372, 46, 372, 66, 372, 372, 372, 44, 44, + 44, 372, 372, 46, 372, 372, 372, 49, 372, 44, + 44, 44, 372, 49, 131, 372, 125, 372, 372, 49, + 44, 44, 44, 372, 372, 46, 372, 372, 372, 372, + 49, 372, 372, 126, 129, 129, 129, 129, 372, 372, + 372, 49, 129, 129, 129, 129, 130, 372, 44, 44, + 44, 372, 49, 134, 372, 372, 129, 129, 129, 129, + 129, 129, 372, 44, 44, 44, 132, 133, 46, 44, + + 44, 44, 372, 372, 46, 372, 44, 44, 44, 372, + 49, 46, 44, 44, 44, 372, 372, 46, 44, 44, + 44, 372, 372, 46, 372, 49, 372, 372, 372, 135, + 372, 49, 44, 44, 44, 372, 136, 46, 49, 372, + 44, 44, 44, 372, 49, 46, 44, 44, 44, 372, + 49, 46, 44, 44, 44, 372, 372, 46, 372, 137, + 138, 372, 372, 372, 49, 372, 372, 372, 140, 372, + 139, 372, 49, 372, 44, 44, 44, 372, 49, 46, + 372, 141, 372, 372, 49, 372, 44, 44, 44, 372, + 144, 46, 372, 142, 44, 44, 44, 372, 372, 46, + + 372, 143, 44, 44, 44, 372, 49, 46, 44, 44, + 44, 372, 372, 46, 372, 372, 372, 372, 49, 372, + 145, 372, 44, 44, 44, 372, 49, 46, 372, 372, + 44, 44, 44, 372, 49, 46, 372, 372, 146, 372, + 49, 372, 372, 372, 147, 150, 148, 44, 44, 44, + 372, 372, 46, 372, 49, 372, 149, 372, 372, 372, + 151, 372, 49, 44, 44, 44, 152, 372, 46, 44, + 44, 44, 372, 372, 46, 44, 44, 44, 372, 49, + 46, 44, 44, 44, 372, 372, 46, 372, 372, 372, + 153, 44, 44, 44, 372, 49, 46, 372, 372, 372, + + 372, 49, 154, 44, 44, 44, 372, 49, 46, 372, + 372, 372, 372, 49, 155, 372, 164, 372, 165, 166, + 166, 166, 166, 49, 372, 372, 372, 166, 166, 166, + 166, 44, 44, 44, 372, 49, 46, 168, 372, 372, + 372, 166, 166, 166, 166, 166, 166, 44, 44, 44, + 372, 372, 46, 372, 372, 167, 44, 44, 44, 372, + 372, 46, 372, 49, 44, 44, 44, 372, 372, 46, + 44, 44, 44, 372, 372, 46, 44, 44, 44, 49, + 372, 46, 372, 169, 44, 44, 44, 372, 49, 46, + 44, 44, 44, 372, 372, 46, 49, 372, 372, 372, + + 170, 372, 49, 372, 372, 171, 372, 372, 49, 372, + 372, 372, 372, 372, 173, 172, 49, 372, 44, 44, + 44, 372, 49, 46, 372, 174, 372, 44, 44, 44, + 372, 176, 46, 372, 175, 44, 44, 44, 372, 372, + 46, 44, 44, 44, 372, 372, 46, 44, 44, 44, + 49, 372, 46, 177, 372, 44, 44, 44, 372, 49, + 46, 44, 44, 44, 372, 372, 46, 49, 372, 372, + 44, 44, 44, 49, 180, 46, 372, 372, 178, 49, + 181, 179, 372, 44, 44, 44, 372, 49, 46, 372, + 183, 372, 372, 49, 372, 372, 182, 372, 44, 44, + + 44, 372, 49, 46, 372, 44, 44, 44, 372, 185, + 46, 372, 372, 184, 372, 49, 44, 44, 44, 372, + 372, 46, 372, 44, 44, 44, 372, 186, 46, 372, + 49, 44, 44, 44, 372, 372, 46, 49, 44, 44, + 44, 372, 372, 46, 372, 372, 187, 372, 49, 372, + 372, 372, 44, 44, 44, 49, 188, 46, 372, 44, + 44, 44, 372, 49, 46, 372, 372, 372, 372, 199, + 49, 189, 372, 190, 191, 44, 44, 44, 372, 372, + 46, 196, 372, 372, 49, 44, 44, 44, 372, 372, + 46, 49, 372, 372, 372, 372, 372, 372, 372, 372, + + 197, 198, 198, 198, 198, 372, 372, 49, 372, 198, + 198, 198, 198, 372, 200, 372, 372, 49, 372, 372, + 372, 372, 372, 198, 198, 198, 198, 198, 198, 44, + 44, 44, 372, 372, 46, 201, 44, 44, 44, 372, + 372, 46, 44, 44, 44, 372, 372, 46, 44, 44, + 44, 203, 204, 46, 44, 44, 44, 372, 372, 207, + 372, 49, 44, 44, 44, 372, 372, 46, 49, 372, + 202, 44, 44, 44, 49, 372, 46, 44, 44, 44, + 49, 372, 46, 372, 205, 372, 49, 44, 44, 44, + 372, 372, 46, 372, 49, 372, 372, 208, 372, 206, + + 44, 44, 44, 49, 372, 46, 44, 44, 44, 49, + 209, 46, 44, 44, 44, 372, 372, 214, 210, 49, + 44, 44, 44, 372, 372, 46, 44, 44, 44, 372, + 211, 46, 49, 372, 372, 44, 44, 44, 49, 212, + 46, 372, 372, 372, 49, 44, 44, 44, 372, 372, + 46, 213, 49, 372, 44, 44, 44, 372, 49, 46, + 44, 44, 44, 372, 372, 46, 372, 49, 372, 372, + 372, 372, 216, 215, 217, 372, 372, 49, 44, 44, + 44, 372, 372, 46, 372, 372, 49, 372, 372, 44, + 44, 44, 49, 219, 222, 218, 44, 44, 44, 372, + + 372, 46, 44, 44, 44, 372, 223, 46, 372, 372, + 49, 372, 372, 220, 372, 221, 372, 44, 44, 44, + 372, 49, 46, 372, 44, 44, 44, 372, 49, 46, + 372, 44, 44, 44, 49, 372, 46, 44, 44, 44, + 224, 372, 46, 372, 372, 44, 44, 44, 372, 49, + 46, 372, 372, 372, 372, 372, 49, 44, 44, 44, + 372, 372, 46, 49, 227, 372, 372, 372, 372, 49, + 372, 228, 45, 45, 45, 45, 372, 49, 372, 372, + 45, 45, 45, 45, 229, 231, 44, 44, 44, 49, + 372, 233, 230, 372, 45, 45, 45, 45, 45, 45, + + 372, 372, 232, 44, 44, 44, 372, 372, 234, 44, + 44, 44, 372, 372, 235, 44, 44, 44, 49, 372, + 46, 44, 44, 44, 372, 236, 46, 44, 44, 44, + 372, 372, 46, 372, 372, 49, 372, 44, 44, 44, + 372, 49, 46, 44, 44, 44, 372, 49, 46, 44, + 44, 44, 372, 49, 46, 44, 44, 44, 372, 49, + 242, 44, 44, 44, 372, 372, 46, 372, 372, 49, + 372, 237, 372, 372, 372, 49, 239, 238, 44, 44, + 44, 49, 372, 46, 44, 44, 44, 49, 372, 46, + 44, 44, 44, 49, 372, 46, 44, 44, 44, 241, + + 240, 46, 372, 44, 44, 44, 372, 372, 46, 372, + 49, 372, 372, 243, 372, 372, 49, 244, 44, 44, + 44, 372, 49, 46, 44, 44, 44, 372, 49, 46, + 372, 372, 372, 246, 245, 49, 372, 44, 44, 44, + 372, 372, 46, 372, 44, 44, 44, 372, 247, 46, + 49, 372, 44, 44, 44, 248, 49, 46, 44, 44, + 44, 250, 372, 46, 372, 44, 44, 44, 249, 49, + 46, 372, 251, 44, 44, 44, 49, 372, 46, 372, + 372, 44, 44, 44, 49, 253, 46, 372, 372, 372, + 49, 372, 254, 44, 44, 44, 372, 49, 46, 44, + + 44, 44, 372, 372, 46, 49, 372, 255, 372, 44, + 44, 44, 372, 49, 46, 372, 372, 256, 257, 372, + 258, 44, 44, 44, 372, 49, 46, 372, 372, 372, + 372, 49, 44, 44, 44, 372, 372, 46, 259, 372, + 372, 49, 44, 44, 44, 372, 372, 264, 372, 44, + 44, 44, 372, 49, 265, 260, 44, 44, 44, 262, + 261, 46, 372, 372, 49, 44, 44, 44, 372, 372, + 46, 263, 372, 372, 49, 44, 44, 44, 372, 372, + 46, 49, 372, 266, 44, 44, 44, 372, 49, 46, + 44, 44, 44, 372, 270, 271, 372, 49, 44, 44, + + 44, 372, 372, 46, 44, 44, 44, 49, 267, 46, + 372, 372, 268, 44, 44, 44, 49, 372, 46, 44, + 44, 44, 49, 372, 275, 372, 372, 269, 372, 372, + 49, 372, 44, 44, 44, 372, 49, 276, 44, 44, + 44, 272, 372, 46, 372, 49, 372, 372, 44, 44, + 44, 49, 273, 278, 372, 372, 44, 44, 44, 372, + 372, 46, 372, 372, 49, 274, 279, 44, 44, 44, + 49, 372, 46, 44, 44, 44, 277, 372, 46, 372, + 49, 44, 44, 44, 372, 372, 282, 372, 49, 372, + 44, 44, 44, 372, 372, 283, 44, 44, 44, 49, + + 372, 46, 44, 44, 44, 49, 284, 285, 372, 44, + 44, 44, 372, 49, 46, 372, 281, 372, 44, 44, + 44, 280, 49, 288, 44, 44, 44, 372, 49, 46, + 44, 44, 44, 372, 49, 46, 372, 44, 44, 44, + 372, 49, 46, 44, 44, 44, 372, 372, 46, 372, + 49, 372, 372, 44, 44, 44, 49, 286, 46, 44, + 44, 44, 49, 287, 46, 44, 44, 44, 372, 49, + 46, 44, 44, 44, 372, 49, 46, 372, 372, 293, + 372, 372, 372, 372, 290, 49, 289, 372, 372, 291, + 292, 49, 372, 372, 44, 44, 44, 49, 295, 46, + + 294, 372, 372, 49, 372, 372, 296, 44, 44, 44, + 372, 372, 46, 44, 44, 44, 297, 372, 46, 44, + 44, 44, 372, 372, 46, 372, 49, 44, 44, 44, + 372, 372, 46, 298, 372, 44, 44, 44, 372, 49, + 303, 372, 372, 299, 372, 49, 372, 44, 44, 44, + 372, 49, 46, 44, 44, 44, 372, 372, 46, 49, + 44, 44, 44, 372, 300, 46, 372, 49, 301, 44, + 44, 44, 372, 372, 46, 372, 372, 302, 372, 49, + 372, 372, 304, 372, 372, 49, 44, 44, 44, 372, + 372, 46, 49, 44, 44, 44, 372, 372, 46, 372, + + 372, 49, 372, 309, 372, 372, 372, 372, 307, 305, + 306, 44, 44, 44, 372, 372, 46, 372, 49, 44, + 44, 44, 372, 372, 46, 49, 44, 44, 44, 372, + 372, 46, 44, 44, 44, 372, 372, 46, 308, 372, + 44, 44, 44, 49, 372, 46, 372, 372, 44, 44, + 44, 49, 372, 46, 44, 44, 44, 372, 49, 46, + 44, 44, 44, 310, 49, 46, 372, 311, 372, 372, + 372, 312, 49, 372, 372, 372, 44, 44, 44, 314, + 49, 46, 313, 44, 44, 44, 49, 372, 46, 44, + 44, 44, 49, 372, 46, 372, 372, 372, 372, 320, + + 315, 372, 44, 44, 44, 316, 317, 46, 49, 372, + 372, 44, 44, 44, 372, 49, 46, 44, 44, 44, + 372, 49, 46, 372, 372, 318, 372, 372, 319, 372, + 44, 44, 44, 372, 49, 46, 372, 44, 44, 44, + 372, 321, 325, 49, 372, 44, 44, 44, 322, 49, + 46, 372, 44, 44, 44, 372, 323, 46, 44, 44, + 44, 372, 49, 46, 372, 372, 372, 324, 372, 49, + 372, 44, 44, 44, 372, 372, 329, 49, 372, 372, + 326, 44, 44, 44, 49, 372, 46, 44, 44, 44, + 49, 372, 46, 44, 44, 44, 372, 372, 332, 372, + + 372, 328, 327, 49, 44, 44, 44, 372, 372, 46, + 44, 44, 44, 49, 372, 46, 44, 44, 44, 49, + 330, 46, 44, 44, 44, 49, 331, 336, 44, 44, + 44, 372, 372, 46, 372, 372, 49, 372, 44, 44, + 44, 333, 49, 46, 44, 44, 44, 372, 49, 46, + 372, 44, 44, 44, 49, 372, 46, 372, 335, 372, + 49, 44, 44, 44, 372, 334, 341, 372, 372, 372, + 49, 372, 337, 44, 44, 44, 49, 372, 342, 44, + 44, 44, 372, 49, 46, 44, 44, 44, 338, 372, + 46, 372, 372, 49, 372, 44, 44, 44, 339, 340, + + 46, 44, 44, 44, 372, 49, 46, 44, 44, 44, + 372, 49, 46, 44, 44, 44, 372, 49, 46, 372, + 372, 343, 372, 44, 44, 44, 372, 49, 46, 372, + 345, 372, 372, 49, 372, 372, 372, 344, 372, 49, + 346, 44, 44, 44, 372, 49, 46, 372, 372, 372, + 347, 372, 348, 372, 372, 49, 44, 44, 44, 372, + 372, 351, 44, 44, 44, 372, 372, 46, 372, 372, + 349, 372, 372, 49, 372, 372, 350, 372, 44, 44, + 44, 372, 372, 46, 44, 44, 44, 372, 49, 46, + 44, 44, 44, 372, 49, 46, 44, 44, 44, 372, + + 372, 46, 44, 44, 44, 372, 372, 46, 372, 352, + 49, 372, 44, 44, 44, 372, 49, 46, 372, 44, + 44, 44, 49, 354, 359, 372, 372, 372, 49, 372, + 353, 44, 44, 44, 49, 372, 46, 44, 44, 44, + 355, 372, 46, 372, 49, 372, 372, 356, 372, 357, + 372, 49, 372, 358, 44, 44, 44, 372, 372, 362, + 44, 44, 44, 49, 372, 46, 44, 44, 44, 49, + 372, 46, 44, 44, 44, 372, 372, 365, 44, 44, + 44, 372, 360, 366, 372, 372, 49, 372, 361, 44, + 44, 44, 49, 372, 46, 44, 44, 44, 49, 372, + + 46, 363, 372, 372, 49, 364, 44, 44, 44, 372, + 49, 46, 44, 44, 44, 372, 372, 370, 44, 44, + 44, 49, 372, 371, 372, 372, 372, 49, 367, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 49, 372, + 372, 372, 372, 372, 49, 372, 368, 372, 372, 372, + 49, 372, 372, 372, 372, 372, 372, 369, 36, 36, + 36, 36, 36, 36, 36, 45, 45, 45, 45, 45, + 45, 45, 63, 372, 63, 63, 63, 63, 63, 82, + 372, 82, 372, 82, 82, 82, 84, 84, 84, 84, + 84, 84, 84, 89, 89, 89, 89, 89, 89, 89, + + 115, 372, 115, 115, 115, 115, 115, 84, 84, 372, + 84, 127, 127, 127, 127, 127, 163, 163, 195, 195, + 226, 226, 84, 84, 11, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372 } ; -static const flex_int16_t yy_chk[2542] = +static const flex_int16_t yy_chk[2586] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1173,12 +1180,12 @@ static const flex_int16_t yy_chk[2542] = 5, 5, 5, 5, 10, 13, 26, 13, 5, 5, 9, 5, 21, 37, 5, 37, 5, 21, 5, 27, - 26, 31, 44, 222, 5, 5, 7, 10, 5, 28, + 26, 31, 44, 225, 5, 5, 7, 10, 5, 28, 8, 42, 5, 42, 32, 31, 17, 5, 17, 17, 17, 17, 27, 5, 5, 15, 15, 15, 17, 44, 15, 19, 28, 19, 19, 19, 19, 32, 20, 20, - 20, 20, 192, 19, 17, 33, 74, 25, 20, 25, - 15, 15, 25, 25, 25, 25, 161, 15, 76, 19, + 20, 20, 194, 19, 17, 33, 74, 25, 20, 25, + 15, 15, 25, 25, 25, 25, 162, 15, 76, 19, 127, 15, 15, 15, 20, 15, 74, 15, 33, 75, 15, 15, 15, 15, 15, 122, 15, 77, 15, 15, 22, 76, 22, 22, 22, 22, 45, 45, 45, 75, @@ -1188,9 +1195,9 @@ static const flex_int16_t yy_chk[2542] = 50, 50, 50, 79, 89, 50, 78, 119, 45, 51, 51, 51, 86, 118, 51, 47, 117, 121, 116, 49, 84, 48, 120, 49, 52, 52, 52, 49, 48, 52, - 119, 47, 50, 121, 49, 155, 158, 49, 52, 49, + 119, 47, 50, 121, 49, 156, 159, 49, 52, 49, 49, 51, 120, 82, 51, 53, 53, 53, 50, 81, - 53, 155, 158, 54, 54, 54, 52, 51, 54, 55, + 53, 156, 159, 54, 54, 54, 52, 51, 54, 55, 55, 55, 43, 52, 55, 41, 52, 39, 56, 56, 56, 38, 24, 56, 57, 57, 57, 53, 14, 57, 11, 58, 58, 58, 0, 54, 58, 59, 59, 59, @@ -1229,219 +1236,223 @@ static const flex_int16_t yy_chk[2542] = 104, 106, 0, 103, 107, 107, 107, 0, 0, 107, 0, 103, 108, 108, 108, 0, 105, 108, 109, 109, - 109, 0, 0, 109, 110, 110, 110, 0, 106, 110, - 105, 0, 111, 111, 111, 0, 107, 111, 112, 112, - 112, 0, 0, 112, 108, 0, 0, 0, 106, 0, - 109, 0, 0, 0, 107, 109, 110, 0, 113, 113, - 113, 0, 110, 113, 111, 0, 108, 0, 111, 0, - 112, 114, 114, 114, 0, 0, 114, 125, 125, 125, - 0, 112, 125, 126, 126, 126, 0, 0, 126, 0, - 113, 0, 0, 132, 132, 132, 0, 113, 132, 0, - 0, 0, 0, 114, 0, 130, 130, 130, 0, 125, - - 130, 0, 0, 0, 0, 126, 114, 0, 125, 0, - 126, 129, 129, 129, 129, 132, 0, 0, 0, 129, - 129, 129, 129, 133, 133, 133, 0, 130, 133, 132, - 0, 0, 0, 129, 129, 129, 129, 129, 129, 135, - 135, 135, 0, 0, 135, 0, 0, 130, 136, 136, - 136, 0, 0, 136, 0, 133, 137, 137, 137, 0, - 0, 137, 138, 138, 138, 0, 0, 138, 139, 139, - 139, 135, 0, 139, 0, 133, 140, 140, 140, 0, - 136, 140, 141, 141, 141, 0, 0, 141, 137, 0, - 0, 0, 135, 0, 138, 0, 0, 136, 0, 0, - - 139, 0, 0, 0, 0, 0, 138, 137, 140, 0, - 142, 142, 142, 0, 141, 142, 0, 139, 0, 143, - 143, 143, 0, 141, 143, 0, 140, 144, 144, 144, - 0, 0, 144, 145, 145, 145, 0, 0, 145, 146, - 146, 146, 142, 0, 146, 142, 0, 147, 147, 147, - 0, 143, 147, 148, 148, 148, 0, 0, 148, 144, - 0, 0, 149, 149, 149, 145, 144, 149, 0, 0, - 143, 146, 145, 143, 0, 150, 150, 150, 0, 147, - 150, 0, 147, 0, 0, 148, 0, 0, 146, 0, - 0, 0, 148, 0, 149, 151, 151, 151, 0, 0, - - 151, 0, 0, 152, 152, 152, 149, 150, 152, 153, - 153, 153, 0, 0, 153, 0, 0, 154, 154, 154, - 0, 0, 154, 150, 163, 163, 163, 151, 0, 163, - 0, 164, 164, 164, 0, 152, 164, 166, 166, 166, - 0, 153, 166, 169, 169, 169, 151, 166, 169, 154, - 0, 0, 0, 0, 0, 0, 163, 0, 152, 153, - 154, 0, 0, 164, 0, 0, 0, 163, 0, 166, - 0, 0, 0, 0, 0, 169, 0, 0, 0, 164, - 165, 165, 165, 165, 169, 0, 0, 0, 165, 165, - 165, 165, 167, 167, 167, 0, 0, 167, 0, 0, - - 0, 0, 165, 165, 165, 165, 165, 165, 168, 168, - 168, 0, 0, 168, 170, 170, 170, 0, 0, 170, - 171, 171, 171, 0, 167, 171, 0, 0, 0, 170, - 170, 167, 172, 172, 172, 0, 0, 172, 0, 0, - 168, 0, 173, 173, 173, 0, 170, 173, 0, 174, - 174, 174, 171, 0, 174, 175, 175, 175, 168, 0, - 175, 0, 171, 0, 172, 176, 176, 176, 0, 0, - 176, 177, 177, 177, 173, 0, 177, 178, 178, 178, - 0, 174, 178, 172, 174, 0, 0, 175, 179, 179, - 179, 0, 0, 179, 175, 0, 0, 176, 0, 180, - - 180, 180, 0, 177, 180, 0, 176, 0, 0, 178, - 181, 181, 181, 0, 177, 181, 178, 0, 0, 0, - 179, 182, 182, 182, 0, 0, 182, 183, 183, 183, - 0, 180, 183, 179, 184, 184, 184, 0, 0, 184, - 0, 0, 181, 185, 185, 185, 0, 0, 185, 186, - 186, 186, 0, 182, 186, 187, 187, 187, 0, 183, - 187, 0, 0, 181, 0, 0, 184, 182, 0, 188, - 188, 188, 0, 184, 188, 185, 0, 183, 0, 188, - 0, 186, 0, 189, 189, 189, 186, 187, 189, 0, - 194, 194, 194, 0, 0, 194, 185, 195, 195, 195, - - 0, 188, 195, 0, 197, 197, 197, 0, 0, 197, - 0, 198, 198, 198, 0, 189, 198, 0, 199, 199, - 199, 189, 194, 199, 0, 0, 0, 0, 0, 195, - 200, 200, 200, 0, 0, 200, 197, 194, 0, 0, - 0, 0, 0, 198, 195, 196, 196, 196, 196, 0, - 199, 0, 0, 196, 196, 196, 196, 197, 198, 201, - 201, 201, 200, 0, 201, 0, 199, 196, 196, 196, - 196, 196, 196, 0, 0, 200, 202, 202, 202, 0, - 0, 202, 203, 203, 203, 0, 0, 203, 204, 204, - 204, 201, 0, 204, 206, 206, 206, 0, 204, 206, - - 207, 207, 207, 0, 0, 207, 0, 0, 202, 0, - 208, 208, 208, 0, 203, 208, 209, 209, 209, 0, - 204, 209, 210, 210, 210, 0, 206, 210, 211, 211, - 211, 0, 207, 211, 213, 213, 213, 0, 0, 213, - 0, 0, 208, 0, 206, 0, 0, 0, 209, 208, - 207, 214, 214, 214, 210, 0, 214, 215, 215, 215, - 211, 0, 215, 216, 216, 216, 213, 0, 216, 217, - 217, 217, 210, 209, 217, 218, 218, 218, 0, 0, - 218, 0, 0, 214, 0, 0, 213, 0, 0, 215, - 214, 220, 220, 220, 0, 216, 220, 221, 221, 221, - - 215, 217, 221, 224, 224, 224, 0, 218, 224, 225, - 225, 225, 0, 0, 225, 216, 0, 0, 0, 0, - 0, 217, 0, 220, 0, 218, 0, 0, 220, 221, - 0, 0, 221, 0, 0, 224, 0, 226, 226, 226, - 0, 225, 226, 0, 224, 227, 227, 227, 0, 225, - 227, 228, 228, 228, 0, 0, 228, 0, 0, 229, - 229, 229, 0, 0, 229, 0, 0, 0, 0, 226, - 233, 233, 233, 0, 0, 233, 0, 227, 0, 234, - 234, 234, 0, 228, 234, 0, 226, 235, 235, 235, - 0, 229, 235, 0, 0, 0, 228, 227, 229, 236, - - 236, 236, 233, 0, 236, 0, 0, 237, 237, 237, - 0, 234, 237, 0, 0, 233, 238, 238, 238, 235, - 0, 238, 240, 240, 240, 0, 0, 240, 241, 241, - 241, 236, 0, 241, 0, 234, 0, 236, 235, 237, - 242, 242, 242, 0, 0, 242, 237, 0, 238, 0, - 244, 244, 244, 0, 240, 244, 240, 243, 243, 243, - 241, 0, 243, 245, 245, 245, 0, 243, 245, 246, - 246, 246, 242, 0, 246, 0, 247, 247, 247, 0, - 241, 247, 244, 249, 249, 249, 0, 0, 249, 243, - 0, 0, 242, 0, 0, 245, 0, 250, 250, 250, - - 0, 246, 250, 0, 0, 0, 245, 0, 247, 251, - 251, 251, 0, 0, 251, 249, 0, 246, 252, 252, - 252, 0, 0, 252, 0, 253, 253, 253, 247, 250, - 253, 254, 254, 254, 0, 253, 254, 255, 255, 255, - 0, 251, 255, 256, 256, 256, 0, 251, 256, 0, - 252, 257, 257, 257, 0, 0, 257, 253, 0, 0, - 258, 258, 258, 254, 0, 258, 259, 259, 259, 255, - 258, 259, 262, 262, 262, 256, 0, 262, 0, 0, - 255, 0, 0, 257, 0, 254, 263, 263, 263, 0, - 0, 263, 258, 0, 264, 264, 264, 0, 259, 264, - - 265, 265, 265, 0, 262, 265, 267, 267, 267, 0, - 0, 267, 268, 268, 268, 0, 0, 268, 263, 0, - 262, 0, 269, 269, 269, 263, 264, 269, 272, 272, - 272, 0, 265, 272, 274, 274, 274, 0, 267, 274, - 0, 0, 267, 0, 268, 0, 0, 265, 0, 0, - 264, 0, 265, 265, 269, 0, 0, 0, 0, 268, - 272, 269, 0, 272, 0, 0, 274, 275, 275, 275, - 0, 0, 275, 276, 276, 276, 0, 0, 276, 279, - 279, 279, 0, 0, 279, 274, 281, 281, 281, 0, - 0, 281, 282, 282, 282, 0, 0, 282, 0, 275, - - 0, 0, 283, 283, 283, 276, 275, 283, 0, 276, - 0, 279, 284, 284, 284, 0, 0, 284, 281, 0, - 285, 285, 285, 0, 282, 285, 0, 286, 286, 286, - 279, 0, 286, 0, 283, 281, 287, 287, 287, 0, - 0, 287, 282, 0, 284, 0, 0, 284, 288, 288, - 288, 0, 285, 288, 0, 289, 289, 289, 0, 286, - 289, 290, 290, 290, 0, 289, 290, 0, 287, 291, - 291, 291, 0, 0, 291, 287, 285, 286, 0, 0, - 288, 0, 0, 292, 292, 292, 0, 289, 292, 293, - 293, 293, 0, 290, 293, 0, 0, 294, 294, 294, - - 288, 291, 294, 295, 295, 295, 0, 0, 295, 296, - 296, 296, 0, 290, 296, 292, 0, 291, 298, 298, - 298, 293, 0, 298, 0, 299, 299, 299, 292, 294, - 299, 0, 0, 0, 0, 295, 294, 0, 0, 293, - 0, 296, 0, 300, 300, 300, 0, 0, 300, 0, - 298, 301, 301, 301, 0, 295, 301, 299, 0, 0, - 296, 301, 0, 0, 298, 302, 302, 302, 0, 0, - 302, 303, 303, 303, 299, 300, 303, 304, 304, 304, - 0, 0, 304, 301, 0, 305, 305, 305, 300, 0, - 305, 306, 306, 306, 0, 0, 306, 302, 0, 0, - - 307, 307, 307, 303, 302, 307, 0, 0, 303, 304, - 308, 308, 308, 0, 0, 308, 304, 305, 0, 309, - 309, 309, 305, 306, 309, 310, 310, 310, 0, 0, - 310, 0, 307, 0, 0, 307, 311, 311, 311, 0, - 0, 311, 308, 0, 312, 312, 312, 0, 0, 312, - 0, 309, 0, 313, 313, 313, 0, 310, 313, 0, - 308, 0, 309, 0, 314, 314, 314, 0, 311, 314, - 0, 0, 315, 315, 315, 311, 312, 315, 0, 316, - 316, 316, 0, 312, 316, 313, 317, 317, 317, 0, - 0, 317, 318, 318, 318, 0, 314, 318, 320, 320, - - 320, 314, 0, 320, 315, 321, 321, 321, 0, 0, - 321, 316, 322, 322, 322, 0, 0, 322, 317, 0, - 0, 316, 0, 0, 318, 0, 0, 315, 0, 0, - 320, 0, 0, 324, 324, 324, 318, 321, 324, 0, - 325, 325, 325, 0, 322, 325, 0, 0, 320, 327, - 327, 327, 0, 0, 327, 0, 328, 328, 328, 321, - 322, 328, 329, 329, 329, 324, 0, 329, 331, 331, - 331, 0, 325, 331, 332, 332, 332, 0, 0, 332, - 0, 327, 333, 333, 333, 0, 0, 333, 328, 0, - 0, 327, 0, 0, 329, 0, 0, 329, 0, 0, - - 331, 0, 0, 0, 0, 0, 332, 331, 328, 0, - 334, 334, 334, 0, 333, 334, 0, 332, 337, 337, - 337, 333, 0, 337, 338, 338, 338, 0, 0, 338, - 339, 339, 339, 0, 0, 339, 340, 340, 340, 0, - 0, 340, 334, 341, 341, 341, 0, 0, 341, 0, - 337, 0, 0, 337, 0, 0, 338, 334, 342, 342, - 342, 0, 339, 342, 343, 343, 343, 0, 340, 343, - 0, 344, 344, 344, 0, 341, 344, 339, 346, 346, - 346, 0, 341, 346, 347, 347, 347, 0, 340, 347, - 342, 0, 348, 348, 348, 0, 343, 348, 0, 349, - - 349, 349, 0, 344, 349, 0, 0, 0, 342, 0, - 346, 0, 350, 350, 350, 343, 347, 350, 344, 346, - 351, 351, 351, 0, 348, 351, 0, 352, 352, 352, - 0, 349, 352, 354, 354, 354, 0, 0, 354, 0, - 355, 355, 355, 348, 350, 355, 357, 357, 357, 0, - 349, 357, 351, 0, 0, 358, 358, 358, 0, 352, - 358, 351, 361, 361, 361, 354, 352, 361, 362, 362, - 362, 0, 355, 362, 0, 363, 363, 363, 357, 0, - 363, 0, 0, 0, 0, 357, 0, 358, 0, 0, - 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, - - 362, 0, 0, 0, 0, 0, 358, 363, 0, 0, - 0, 0, 0, 361, 367, 367, 367, 367, 367, 367, - 367, 368, 368, 368, 368, 368, 368, 368, 369, 0, - 369, 369, 369, 369, 369, 370, 0, 370, 0, 370, - 370, 370, 371, 371, 371, 371, 371, 371, 371, 372, - 372, 372, 372, 372, 372, 372, 373, 0, 373, 373, - 373, 373, 373, 374, 374, 0, 374, 375, 375, 375, - 375, 375, 376, 376, 377, 377, 378, 378, 379, 379, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366 + 109, 0, 0, 109, 0, 0, 0, 0, 106, 0, + 105, 0, 110, 110, 110, 0, 107, 110, 0, 0, + 111, 111, 111, 0, 108, 111, 0, 0, 106, 0, + 109, 0, 0, 0, 107, 109, 107, 112, 112, 112, + 0, 0, 112, 0, 110, 0, 108, 0, 0, 0, + 110, 0, 111, 113, 113, 113, 111, 0, 113, 114, + 114, 114, 0, 0, 114, 125, 125, 125, 0, 112, + 125, 126, 126, 126, 0, 0, 126, 0, 0, 0, + 112, 132, 132, 132, 0, 113, 132, 0, 0, 0, + + 0, 114, 113, 130, 130, 130, 0, 125, 130, 0, + 0, 0, 0, 126, 114, 0, 125, 0, 126, 129, + 129, 129, 129, 132, 0, 0, 0, 129, 129, 129, + 129, 133, 133, 133, 0, 130, 133, 132, 0, 0, + 0, 129, 129, 129, 129, 129, 129, 135, 135, 135, + 0, 0, 135, 0, 0, 130, 136, 136, 136, 0, + 0, 136, 0, 133, 137, 137, 137, 0, 0, 137, + 138, 138, 138, 0, 0, 138, 139, 139, 139, 135, + 0, 139, 0, 133, 140, 140, 140, 0, 136, 140, + 141, 141, 141, 0, 0, 141, 137, 0, 0, 0, + + 135, 0, 138, 0, 0, 136, 0, 0, 139, 0, + 0, 0, 0, 0, 138, 137, 140, 0, 142, 142, + 142, 0, 141, 142, 0, 139, 0, 143, 143, 143, + 0, 141, 143, 0, 140, 144, 144, 144, 0, 0, + 144, 145, 145, 145, 0, 0, 145, 146, 146, 146, + 142, 0, 146, 142, 0, 147, 147, 147, 0, 143, + 147, 148, 148, 148, 0, 0, 148, 144, 0, 0, + 149, 149, 149, 145, 144, 149, 0, 0, 143, 146, + 145, 143, 0, 150, 150, 150, 0, 147, 150, 0, + 147, 0, 0, 148, 0, 0, 146, 0, 151, 151, + + 151, 0, 149, 151, 0, 152, 152, 152, 0, 149, + 152, 0, 0, 148, 0, 150, 153, 153, 153, 0, + 0, 153, 0, 154, 154, 154, 0, 150, 154, 0, + 151, 155, 155, 155, 0, 0, 155, 152, 164, 164, + 164, 0, 0, 164, 0, 0, 151, 0, 153, 0, + 0, 0, 165, 165, 165, 154, 152, 165, 0, 167, + 167, 167, 0, 155, 167, 0, 0, 0, 0, 167, + 164, 153, 0, 154, 155, 168, 168, 168, 0, 0, + 168, 164, 0, 0, 165, 169, 169, 169, 0, 0, + 169, 167, 0, 0, 0, 0, 0, 0, 0, 0, + + 165, 166, 166, 166, 166, 0, 0, 168, 0, 166, + 166, 166, 166, 0, 168, 0, 0, 169, 0, 0, + 0, 0, 0, 166, 166, 166, 166, 166, 166, 170, + 170, 170, 0, 0, 170, 169, 171, 171, 171, 0, + 0, 171, 172, 172, 172, 0, 0, 172, 173, 173, + 173, 171, 171, 173, 174, 174, 174, 0, 0, 174, + 0, 170, 175, 175, 175, 0, 0, 175, 171, 0, + 170, 176, 176, 176, 172, 0, 176, 177, 177, 177, + 173, 0, 177, 0, 172, 0, 174, 178, 178, 178, + 0, 0, 178, 0, 175, 0, 0, 175, 0, 173, + + 179, 179, 179, 176, 0, 179, 180, 180, 180, 177, + 176, 180, 181, 181, 181, 0, 0, 181, 177, 178, + 182, 182, 182, 0, 0, 182, 183, 183, 183, 0, + 178, 183, 179, 0, 0, 184, 184, 184, 180, 179, + 184, 0, 0, 0, 181, 185, 185, 185, 0, 0, + 185, 180, 182, 0, 186, 186, 186, 0, 183, 186, + 187, 187, 187, 0, 0, 187, 0, 184, 0, 0, + 0, 0, 183, 182, 184, 0, 0, 185, 188, 188, + 188, 0, 0, 188, 0, 0, 186, 0, 0, 189, + 189, 189, 187, 186, 189, 185, 190, 190, 190, 0, + + 0, 190, 191, 191, 191, 0, 190, 191, 0, 0, + 188, 0, 0, 187, 0, 188, 0, 196, 196, 196, + 0, 189, 196, 0, 197, 197, 197, 0, 190, 197, + 0, 199, 199, 199, 191, 0, 199, 201, 201, 201, + 191, 0, 201, 0, 0, 200, 200, 200, 0, 196, + 200, 0, 0, 0, 0, 0, 197, 202, 202, 202, + 0, 0, 202, 199, 196, 0, 0, 0, 0, 201, + 0, 197, 198, 198, 198, 198, 0, 200, 0, 0, + 198, 198, 198, 198, 199, 201, 203, 203, 203, 202, + 0, 203, 200, 0, 198, 198, 198, 198, 198, 198, + + 0, 0, 202, 204, 204, 204, 0, 0, 204, 205, + 205, 205, 0, 0, 205, 206, 206, 206, 203, 0, + 206, 208, 208, 208, 0, 206, 208, 209, 209, 209, + 0, 0, 209, 0, 0, 204, 0, 210, 210, 210, + 0, 205, 210, 211, 211, 211, 0, 206, 211, 212, + 212, 212, 0, 208, 212, 213, 213, 213, 0, 209, + 213, 215, 215, 215, 0, 0, 215, 0, 0, 210, + 0, 208, 0, 0, 0, 211, 210, 209, 216, 216, + 216, 212, 0, 216, 217, 217, 217, 213, 0, 217, + 218, 218, 218, 215, 0, 218, 219, 219, 219, 212, + + 211, 219, 0, 220, 220, 220, 0, 0, 220, 0, + 216, 0, 0, 215, 0, 0, 217, 216, 221, 221, + 221, 0, 218, 221, 223, 223, 223, 0, 219, 223, + 0, 0, 0, 218, 217, 220, 0, 224, 224, 224, + 0, 0, 224, 0, 227, 227, 227, 0, 219, 227, + 221, 0, 228, 228, 228, 220, 223, 228, 229, 229, + 229, 223, 0, 229, 0, 230, 230, 230, 221, 224, + 230, 0, 224, 231, 231, 231, 227, 0, 231, 0, + 0, 232, 232, 232, 228, 227, 232, 0, 0, 0, + 229, 0, 228, 236, 236, 236, 0, 230, 236, 237, + + 237, 237, 0, 0, 237, 231, 0, 229, 0, 238, + 238, 238, 0, 232, 238, 0, 0, 230, 231, 0, + 232, 239, 239, 239, 0, 236, 239, 0, 0, 0, + 0, 237, 240, 240, 240, 0, 0, 240, 236, 0, + 0, 238, 241, 241, 241, 0, 0, 241, 0, 243, + 243, 243, 0, 239, 243, 237, 244, 244, 244, 239, + 238, 244, 0, 0, 240, 245, 245, 245, 0, 0, + 245, 240, 0, 0, 241, 246, 246, 246, 0, 0, + 246, 243, 0, 243, 247, 247, 247, 0, 244, 247, + 248, 248, 248, 0, 247, 248, 0, 245, 249, 249, + + 249, 0, 0, 249, 250, 250, 250, 246, 244, 250, + 0, 0, 245, 251, 251, 251, 247, 0, 251, 253, + 253, 253, 248, 0, 253, 0, 0, 246, 0, 0, + 249, 0, 254, 254, 254, 0, 250, 254, 255, 255, + 255, 249, 0, 255, 0, 251, 0, 0, 256, 256, + 256, 253, 250, 256, 0, 0, 257, 257, 257, 0, + 0, 257, 0, 0, 254, 251, 257, 258, 258, 258, + 255, 0, 258, 259, 259, 259, 255, 0, 259, 0, + 256, 260, 260, 260, 0, 0, 260, 0, 257, 0, + 261, 261, 261, 0, 0, 261, 262, 262, 262, 258, + + 0, 262, 263, 263, 263, 259, 262, 263, 0, 266, + 266, 266, 0, 260, 266, 0, 259, 0, 268, 268, + 268, 258, 261, 268, 267, 267, 267, 0, 262, 267, + 269, 269, 269, 0, 263, 269, 0, 270, 270, 270, + 0, 266, 270, 272, 272, 272, 0, 0, 272, 0, + 268, 0, 0, 273, 273, 273, 267, 266, 273, 274, + 274, 274, 269, 267, 274, 279, 279, 279, 0, 270, + 279, 277, 277, 277, 0, 272, 277, 0, 0, 272, + 0, 0, 0, 0, 270, 273, 269, 0, 0, 270, + 270, 274, 0, 0, 280, 280, 280, 279, 274, 280, + + 273, 0, 0, 277, 0, 0, 277, 281, 281, 281, + 0, 0, 281, 284, 284, 284, 279, 0, 284, 286, + 286, 286, 0, 0, 286, 0, 280, 287, 287, 287, + 0, 0, 287, 280, 0, 289, 289, 289, 0, 281, + 289, 0, 0, 281, 0, 284, 0, 290, 290, 290, + 0, 286, 290, 291, 291, 291, 0, 0, 291, 287, + 292, 292, 292, 0, 284, 292, 0, 289, 286, 293, + 293, 293, 0, 0, 293, 0, 0, 287, 0, 290, + 0, 0, 290, 0, 0, 291, 294, 294, 294, 0, + 0, 294, 292, 295, 295, 295, 0, 0, 295, 0, + + 0, 293, 0, 295, 0, 0, 0, 0, 293, 291, + 292, 296, 296, 296, 0, 0, 296, 0, 294, 297, + 297, 297, 0, 0, 297, 295, 298, 298, 298, 0, + 0, 298, 299, 299, 299, 0, 0, 299, 294, 0, + 300, 300, 300, 296, 0, 300, 0, 0, 301, 301, + 301, 297, 0, 301, 302, 302, 302, 0, 298, 302, + 304, 304, 304, 296, 299, 304, 0, 297, 0, 0, + 0, 298, 300, 0, 0, 0, 305, 305, 305, 300, + 301, 305, 299, 306, 306, 306, 302, 0, 306, 307, + 307, 307, 304, 0, 307, 0, 0, 0, 0, 307, + + 301, 0, 308, 308, 308, 302, 304, 308, 305, 0, + 0, 309, 309, 309, 0, 306, 309, 310, 310, 310, + 0, 307, 310, 0, 0, 305, 0, 0, 306, 0, + 311, 311, 311, 0, 308, 311, 0, 312, 312, 312, + 0, 308, 312, 309, 0, 313, 313, 313, 309, 310, + 313, 0, 314, 314, 314, 0, 310, 314, 315, 315, + 315, 0, 311, 315, 0, 0, 0, 311, 0, 312, + 0, 316, 316, 316, 0, 0, 316, 313, 0, 0, + 313, 317, 317, 317, 314, 0, 317, 318, 318, 318, + 315, 0, 318, 319, 319, 319, 0, 0, 319, 0, + + 0, 315, 314, 316, 320, 320, 320, 0, 0, 320, + 321, 321, 321, 317, 0, 321, 322, 322, 322, 318, + 317, 322, 323, 323, 323, 319, 318, 323, 324, 324, + 324, 0, 0, 324, 0, 0, 320, 0, 326, 326, + 326, 320, 321, 326, 327, 327, 327, 0, 322, 327, + 0, 328, 328, 328, 323, 0, 328, 0, 322, 0, + 324, 330, 330, 330, 0, 321, 330, 0, 0, 0, + 326, 0, 324, 331, 331, 331, 327, 0, 331, 333, + 333, 333, 0, 328, 333, 334, 334, 334, 326, 0, + 334, 0, 0, 330, 0, 335, 335, 335, 327, 328, + + 335, 337, 337, 337, 0, 331, 337, 338, 338, 338, + 0, 333, 338, 339, 339, 339, 0, 334, 339, 0, + 0, 333, 0, 340, 340, 340, 0, 335, 340, 0, + 335, 0, 0, 337, 0, 0, 0, 334, 0, 338, + 337, 343, 343, 343, 0, 339, 343, 0, 0, 0, + 338, 0, 339, 0, 0, 340, 344, 344, 344, 0, + 0, 344, 345, 345, 345, 0, 0, 345, 0, 0, + 340, 0, 0, 343, 0, 0, 343, 0, 346, 346, + 346, 0, 0, 346, 347, 347, 347, 0, 344, 347, + 348, 348, 348, 0, 345, 348, 349, 349, 349, 0, + + 0, 349, 350, 350, 350, 0, 0, 350, 0, 345, + 346, 0, 352, 352, 352, 0, 347, 352, 0, 353, + 353, 353, 348, 347, 353, 0, 0, 0, 349, 0, + 346, 354, 354, 354, 350, 0, 354, 355, 355, 355, + 348, 0, 355, 0, 352, 0, 0, 349, 0, 350, + 0, 353, 0, 352, 356, 356, 356, 0, 0, 356, + 357, 357, 357, 354, 0, 357, 358, 358, 358, 355, + 0, 358, 360, 360, 360, 0, 0, 360, 361, 361, + 361, 0, 354, 361, 0, 0, 356, 0, 355, 363, + 363, 363, 357, 0, 363, 364, 364, 364, 358, 0, + + 364, 357, 0, 0, 360, 358, 367, 367, 367, 0, + 361, 367, 368, 368, 368, 0, 0, 368, 369, 369, + 369, 363, 0, 369, 0, 0, 0, 364, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, + 0, 0, 0, 0, 368, 0, 364, 0, 0, 0, + 369, 0, 0, 0, 0, 0, 0, 367, 373, 373, + 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, + 374, 374, 375, 0, 375, 375, 375, 375, 375, 376, + 0, 376, 0, 376, 376, 376, 377, 377, 377, 377, + 377, 377, 377, 378, 378, 378, 378, 378, 378, 378, + + 379, 0, 379, 379, 379, 379, 379, 380, 380, 0, + 380, 381, 381, 381, 381, 381, 382, 382, 383, 383, + 384, 384, 385, 385, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372 } ; static yy_state_type yy_last_accepting_state; @@ -1450,15 +1461,15 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[62] = +static const flex_int16_t yy_rule_linenum[63] = { 0, 133, 135, 137, 142, 143, 148, 149, 150, 162, 165, 170, 177, 186, 198, 210, 220, 230, 240, 249, 258, 267, 276, 285, 294, 303, 312, 321, 330, 339, 348, 357, 366, 375, 384, 393, 403, 412, 421, 430, 439, - 448, 457, 466, 475, 574, 579, 584, 589, 590, 591, - 592, 593, 594, 596, 614, 627, 632, 636, 638, 640, - 642 + 448, 457, 466, 475, 484, 583, 588, 593, 598, 599, + 600, 601, 602, 603, 605, 623, 636, 641, 645, 647, + 649, 651 } ; /* The intent behind this definition is that it'll catch @@ -1513,7 +1524,7 @@ using isc::netconf::NetconfParser; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::netconf::ParserContext::fatal(msg) -#line 1516 "netconf_lexer.cc" +#line 1528 "netconf_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 @@ -1539,8 +1550,8 @@ using isc::netconf::NetconfParser; 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 1542 "netconf_lexer.cc" -#line 1543 "netconf_lexer.cc" +#line 1554 "netconf_lexer.cc" +#line 1555 "netconf_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -1854,7 +1865,7 @@ YY_DECL } -#line 1857 "netconf_lexer.cc" +#line 1869 "netconf_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1883,13 +1894,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 367 ) + if ( yy_current_state >= 373 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 366 ); + while ( yy_current_state != 372 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -1908,13 +1919,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 62 ) + else if ( yy_act < 63 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 62 ) + else if ( yy_act == 63 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 63 ) + else if ( yy_act == 64 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2391,6 +2402,18 @@ YY_RULE_SETUP case 42: YY_RULE_SETUP #line 457 "netconf_lexer.ll" +{ + switch(driver.ctx_) { + case ParserContext::OUTPUT_OPTIONS: + return NetconfParser::make_PATTERN(driver.loc_); + default: + return NetconfParser::make_STRING("pattern", driver.loc_); + } +} + YY_BREAK +case 43: +YY_RULE_SETUP +#line 466 "netconf_lexer.ll" { switch(driver.ctx_) { case ParserContext::LOGGERS: @@ -2400,9 +2423,9 @@ YY_RULE_SETUP } } YY_BREAK -case 43: +case 44: YY_RULE_SETUP -#line 466 "netconf_lexer.ll" +#line 475 "netconf_lexer.ll" { switch(driver.ctx_) { case ParserContext::LOGGERS: @@ -2412,9 +2435,9 @@ YY_RULE_SETUP } } YY_BREAK -case 44: +case 45: YY_RULE_SETUP -#line 475 "netconf_lexer.ll" +#line 484 "netconf_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. @@ -2514,65 +2537,65 @@ YY_RULE_SETUP return NetconfParser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 45: -/* rule 45 can match eol */ +case 46: +/* rule 46 can match eol */ YY_RULE_SETUP -#line 574 "netconf_lexer.ll" +#line 583 "netconf_lexer.ll" { /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); } YY_BREAK -case 46: -/* rule 46 can match eol */ +case 47: +/* rule 47 can match eol */ YY_RULE_SETUP -#line 579 "netconf_lexer.ll" +#line 588 "netconf_lexer.ll" { /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 584 "netconf_lexer.ll" +#line 593 "netconf_lexer.ll" { /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 589 "netconf_lexer.ll" +#line 598 "netconf_lexer.ll" { return NetconfParser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 590 "netconf_lexer.ll" +#line 599 "netconf_lexer.ll" { return NetconfParser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 591 "netconf_lexer.ll" +#line 600 "netconf_lexer.ll" { return NetconfParser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 592 "netconf_lexer.ll" +#line 601 "netconf_lexer.ll" { return NetconfParser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 593 "netconf_lexer.ll" +#line 602 "netconf_lexer.ll" { return NetconfParser::make_COMMA(driver.loc_); } YY_BREAK -case 53: +case 54: YY_RULE_SETUP -#line 594 "netconf_lexer.ll" +#line 603 "netconf_lexer.ll" { return NetconfParser::make_COLON(driver.loc_); } YY_BREAK -case 54: +case 55: YY_RULE_SETUP -#line 596 "netconf_lexer.ll" +#line 605 "netconf_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -2591,9 +2614,9 @@ YY_RULE_SETUP return NetconfParser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 55: +case 56: YY_RULE_SETUP -#line 614 "netconf_lexer.ll" +#line 623 "netconf_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -2607,43 +2630,43 @@ YY_RULE_SETUP return NetconfParser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 56: +case 57: YY_RULE_SETUP -#line 627 "netconf_lexer.ll" +#line 636 "netconf_lexer.ll" { string tmp(yytext); return NetconfParser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 632 "netconf_lexer.ll" +#line 641 "netconf_lexer.ll" { return NetconfParser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 58: +case 59: YY_RULE_SETUP -#line 636 "netconf_lexer.ll" +#line 645 "netconf_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 59: +case 60: YY_RULE_SETUP -#line 638 "netconf_lexer.ll" +#line 647 "netconf_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 640 "netconf_lexer.ll" +#line 649 "netconf_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 642 "netconf_lexer.ll" +#line 651 "netconf_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 644 "netconf_lexer.ll" +#line 653 "netconf_lexer.ll" { if (driver.states_.empty()) { return NetconfParser::make_END(driver.loc_); @@ -2667,12 +2690,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 62: +case 63: YY_RULE_SETUP -#line 667 "netconf_lexer.ll" +#line 676 "netconf_lexer.ll" ECHO; YY_BREAK -#line 2675 "netconf_lexer.cc" +#line 2699 "netconf_lexer.cc" case YY_END_OF_BUFFER: { @@ -2991,7 +3014,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 367 ) + if ( yy_current_state >= 373 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3024,11 +3047,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 367 ) + if ( yy_current_state >= 373 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 366); + yy_is_jam = (yy_current_state == 372); return yy_is_jam ? 0 : yy_current_state; } @@ -3777,7 +3800,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 667 "netconf_lexer.ll" +#line 676 "netconf_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/netconf/netconf_lexer.ll b/src/bin/netconf/netconf_lexer.ll index 26b3e5117b..c0227c9b8f 100644 --- a/src/bin/netconf/netconf_lexer.ll +++ b/src/bin/netconf/netconf_lexer.ll @@ -453,6 +453,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"pattern\" { + switch(driver.ctx_) { + case ParserContext::OUTPUT_OPTIONS: + return NetconfParser::make_PATTERN(driver.loc_); + default: + return NetconfParser::make_STRING("pattern", driver.loc_); + } +} + \"debuglevel\" { switch(driver.ctx_) { case ParserContext::LOGGERS: diff --git a/src/bin/netconf/netconf_parser.cc b/src/bin/netconf/netconf_parser.cc index b8f8bcb934..792d1e917f 100644 --- a/src/bin/netconf/netconf_parser.cc +++ b/src/bin/netconf/netconf_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -43,11 +43,11 @@ // Unqualified %code blocks. -#line 33 "netconf_parser.yy" +#line 33 "netconf_parser.yy" // lalr1.cc:438 #include -#line 51 "netconf_parser.cc" +#line 51 "netconf_parser.cc" // lalr1.cc:438 #ifndef YY_ @@ -88,7 +88,7 @@ { \ (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ } \ - while (false) + while (/*CONSTCOND*/ false) # endif @@ -140,10 +140,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "netconf_parser.yy" +#line 14 "netconf_parser.yy" // lalr1.cc:513 namespace isc { namespace netconf { -#line 146 "netconf_parser.cc" - +#line 146 "netconf_parser.cc" // lalr1.cc:513 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -155,7 +154,7 @@ namespace isc { namespace netconf { { if (*yystr == '"') { - std::string yyr; + std::string yyr = ""; char const *yyp = yystr; for (;;) @@ -168,10 +167,7 @@ namespace isc { namespace netconf { case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + // Fall through. default: yyr += *yyp; break; @@ -199,8 +195,6 @@ namespace isc { namespace netconf { NetconfParser::~NetconfParser () {} - NetconfParser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW - {} /*---------------. | Symbol types. | @@ -209,16 +203,16 @@ namespace isc { namespace netconf { // by_state. - NetconfParser::by_state::by_state () YY_NOEXCEPT + NetconfParser::by_state::by_state () : state (empty_state) {} - NetconfParser::by_state::by_state (const by_state& that) YY_NOEXCEPT - : state (that.state) + NetconfParser::by_state::by_state (const by_state& other) + : state (other.state) {} void - NetconfParser::by_state::clear () YY_NOEXCEPT + NetconfParser::by_state::clear () { state = empty_state; } @@ -230,12 +224,12 @@ namespace isc { namespace netconf { that.clear (); } - NetconfParser::by_state::by_state (state_type s) YY_NOEXCEPT + NetconfParser::by_state::by_state (state_type s) : state (s) {} NetconfParser::symbol_number_type - NetconfParser::by_state::type_get () const YY_NOEXCEPT + NetconfParser::by_state::type_get () const { if (state == empty_state) return empty_symbol; @@ -251,25 +245,25 @@ namespace isc { namespace netconf { { switch (that.type_get ()) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value + case 58: // value + case 61: // map_value + case 120: // socket_type_value value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value)); break; - case 48: // "boolean" + case 49: // "boolean" value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value)); break; - case 47: // "floating point" + case 48: // "floating point" value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value)); break; - case 46: // "integer" + case 47: // "integer" value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value)); break; - case 45: // "constant string" + case 46: // "constant string" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -277,7 +271,7 @@ namespace isc { namespace netconf { break; } -#if 201103L <= YY_CPLUSPLUS +#if defined __cplusplus && 201103L <= __cplusplus // that is emptied. that.state = empty_state; #endif @@ -288,25 +282,25 @@ namespace isc { namespace netconf { { switch (that.type_get ()) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value + case 58: // value + case 61: // map_value + case 120: // socket_type_value value.move< ElementPtr > (YY_MOVE (that.value)); break; - case 48: // "boolean" + case 49: // "boolean" value.move< bool > (YY_MOVE (that.value)); break; - case 47: // "floating point" + case 48: // "floating point" value.move< double > (YY_MOVE (that.value)); break; - case 46: // "integer" + case 47: // "integer" value.move< int64_t > (YY_MOVE (that.value)); break; - case 45: // "constant string" + case 46: // "constant string" value.move< std::string > (YY_MOVE (that.value)); break; @@ -318,32 +312,32 @@ namespace isc { namespace netconf { that.type = empty_symbol; } -#if YY_CPLUSPLUS < 201103L +#if !defined __cplusplus || __cplusplus < 201103L NetconfParser::stack_symbol_type& NetconfParser::stack_symbol_type::operator= (stack_symbol_type& that) { state = that.state; switch (that.type_get ()) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value + case 58: // value + case 61: // map_value + case 120: // socket_type_value value.move< ElementPtr > (that.value); break; - case 48: // "boolean" + case 49: // "boolean" value.move< bool > (that.value); break; - case 47: // "floating point" + case 48: // "floating point" value.move< double > (that.value); break; - case 46: // "integer" + case 47: // "integer" value.move< int64_t > (that.value); break; - case 45: // "constant string" + case 46: // "constant string" value.move< std::string > (that.value); break; @@ -375,59 +369,65 @@ namespace isc { namespace netconf { 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 45: // "constant string" -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < std::string > (); } -#line 393 "netconf_parser.cc" + case 46: // "constant string" + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< std::string > (); } +#line 386 "netconf_parser.cc" // lalr1.cc:672 break; - case 46: // "integer" -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < int64_t > (); } -#line 399 "netconf_parser.cc" + case 47: // "integer" + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< int64_t > (); } +#line 393 "netconf_parser.cc" // lalr1.cc:672 break; - case 47: // "floating point" -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < double > (); } -#line 405 "netconf_parser.cc" + case 48: // "floating point" + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< double > (); } +#line 400 "netconf_parser.cc" // lalr1.cc:672 break; - case 48: // "boolean" -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < bool > (); } -#line 411 "netconf_parser.cc" + case 49: // "boolean" + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< bool > (); } +#line 407 "netconf_parser.cc" // lalr1.cc:672 break; - case 57: // value -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 417 "netconf_parser.cc" + case 58: // value + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 414 "netconf_parser.cc" // lalr1.cc:672 break; - case 60: // map_value -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 423 "netconf_parser.cc" + case 61: // map_value + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 421 "netconf_parser.cc" // lalr1.cc:672 break; - case 119: // socket_type_value -#line 107 "netconf_parser.yy" - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 429 "netconf_parser.cc" + case 120: // socket_type_value + +#line 108 "netconf_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 428 "netconf_parser.cc" // lalr1.cc:672 break; + default: break; } @@ -446,7 +446,7 @@ namespace isc { namespace netconf { void NetconfParser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym) { -#if 201103L <= YY_CPLUSPLUS +#if defined __cplusplus && 201103L <= __cplusplus yypush_ (m, stack_symbol_type (s, std::move (sym))); #else stack_symbol_type ss (s, sym); @@ -550,22 +550,17 @@ namespace isc { namespace netconf { yystack_.clear (); yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla)); - /*-----------------------------------------------. - | yynewstate -- push a new symbol on the stack. | - `-----------------------------------------------*/ + // A new symbol was pushed on the stack. yynewstate: YYCDEBUG << "Entering state " << yystack_[0].state << '\n'; // Accept? if (yystack_[0].state == yyfinal_) - YYACCEPT; + goto yyacceptlab; goto yybackup; - - /*-----------. - | yybackup. | - `-----------*/ + // Backup. yybackup: // Try to take a decision without lookahead. yyn = yypact_[yystack_[0].state]; @@ -586,7 +581,6 @@ namespace isc { namespace netconf { #if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); goto yyerrlab1; } @@ -618,7 +612,6 @@ namespace isc { namespace netconf { yypush_ ("Shifting", yyn, YY_MOVE (yyla)); goto yynewstate; - /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ @@ -628,9 +621,8 @@ namespace isc { namespace netconf { goto yyerrlab; goto yyreduce; - /*-----------------------------. - | yyreduce -- do a reduction. | + | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: yylen = yyr2_[yyn]; @@ -642,25 +634,25 @@ namespace isc { namespace netconf { when using variants. */ switch (yyr1_[yyn]) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value + case 58: // value + case 61: // map_value + case 120: // socket_type_value yylhs.value.emplace< ElementPtr > (); break; - case 48: // "boolean" + case 49: // "boolean" yylhs.value.emplace< bool > (); break; - case 47: // "floating point" + case 48: // "floating point" yylhs.value.emplace< double > (); break; - case 46: // "integer" + case 47: // "integer" yylhs.value.emplace< int64_t > (); break; - case 45: // "constant string" + case 46: // "constant string" yylhs.value.emplace< std::string > (); break; @@ -671,8 +663,8 @@ namespace isc { namespace netconf { // Default location. { - stack_type::slice range (yystack_, yylen); - YYLLOC_DEFAULT (yylhs.location, range, yylen); + slice slice (yystack_, yylen); + YYLLOC_DEFAULT (yylhs.location, slice, yylen); yyerror_range[1].location = yylhs.location; } @@ -685,206 +677,206 @@ namespace isc { namespace netconf { switch (yyn) { case 2: -#line 118 "netconf_parser.yy" +#line 119 "netconf_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.NO_KEYWORDS; } -#line 691 "netconf_parser.cc" +#line 683 "netconf_parser.cc" // lalr1.cc:907 break; case 4: -#line 119 "netconf_parser.yy" +#line 120 "netconf_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.CONFIG; } -#line 697 "netconf_parser.cc" +#line 689 "netconf_parser.cc" // lalr1.cc:907 break; case 6: -#line 120 "netconf_parser.yy" +#line 121 "netconf_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.NETCONF; } -#line 703 "netconf_parser.cc" +#line 695 "netconf_parser.cc" // lalr1.cc:907 break; case 8: -#line 128 "netconf_parser.yy" +#line 129 "netconf_parser.yy" // lalr1.cc:907 { // Parse the Netconf map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 713 "netconf_parser.cc" +#line 705 "netconf_parser.cc" // lalr1.cc:907 break; case 9: -#line 132 "netconf_parser.yy" +#line 133 "netconf_parser.yy" // lalr1.cc:907 { // parsing completed } -#line 721 "netconf_parser.cc" +#line 713 "netconf_parser.cc" // lalr1.cc:907 break; case 10: -#line 139 "netconf_parser.yy" +#line 140 "netconf_parser.yy" // lalr1.cc:907 { // 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 730 "netconf_parser.cc" +#line 722 "netconf_parser.cc" // lalr1.cc:907 break; case 11: -#line 145 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 736 "netconf_parser.cc" +#line 146 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } +#line 728 "netconf_parser.cc" // lalr1.cc:907 break; case 12: -#line 146 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 742 "netconf_parser.cc" +#line 147 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } +#line 734 "netconf_parser.cc" // lalr1.cc:907 break; case 13: -#line 147 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 748 "netconf_parser.cc" +#line 148 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } +#line 740 "netconf_parser.cc" // lalr1.cc:907 break; case 14: -#line 148 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 754 "netconf_parser.cc" +#line 149 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } +#line 746 "netconf_parser.cc" // lalr1.cc:907 break; case 15: -#line 149 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 760 "netconf_parser.cc" +#line 150 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } +#line 752 "netconf_parser.cc" // lalr1.cc:907 break; case 16: -#line 150 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 766 "netconf_parser.cc" +#line 151 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 758 "netconf_parser.cc" // lalr1.cc:907 break; case 17: -#line 151 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 772 "netconf_parser.cc" +#line 152 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 764 "netconf_parser.cc" // lalr1.cc:907 break; case 18: -#line 155 "netconf_parser.yy" +#line 156 "netconf_parser.yy" // lalr1.cc:907 { // 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 783 "netconf_parser.cc" +#line 775 "netconf_parser.cc" // lalr1.cc:907 break; case 19: -#line 160 "netconf_parser.yy" +#line 161 "netconf_parser.yy" // lalr1.cc:907 { // 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 793 "netconf_parser.cc" +#line 785 "netconf_parser.cc" // lalr1.cc:907 break; case 20: -#line 166 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 799 "netconf_parser.cc" +#line 167 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 791 "netconf_parser.cc" // lalr1.cc:907 break; case 23: -#line 180 "netconf_parser.yy" +#line 181 "netconf_parser.yy" // lalr1.cc:907 { // 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 808 "netconf_parser.cc" +#line 800 "netconf_parser.cc" // lalr1.cc:907 break; case 24: -#line 184 "netconf_parser.yy" +#line 185 "netconf_parser.yy" // lalr1.cc:907 { // 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 818 "netconf_parser.cc" +#line 810 "netconf_parser.cc" // lalr1.cc:907 break; case 25: -#line 191 "netconf_parser.yy" +#line 192 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 827 "netconf_parser.cc" +#line 819 "netconf_parser.cc" // lalr1.cc:907 break; case 26: -#line 194 "netconf_parser.yy" +#line 195 "netconf_parser.yy" // lalr1.cc:907 { } -#line 834 "netconf_parser.cc" +#line 826 "netconf_parser.cc" // lalr1.cc:907 break; case 29: -#line 201 "netconf_parser.yy" +#line 202 "netconf_parser.yy" // lalr1.cc:907 { // 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 843 "netconf_parser.cc" +#line 835 "netconf_parser.cc" // lalr1.cc:907 break; case 30: -#line 205 "netconf_parser.yy" +#line 206 "netconf_parser.yy" // lalr1.cc:907 { // 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 852 "netconf_parser.cc" +#line 844 "netconf_parser.cc" // lalr1.cc:907 break; case 31: -#line 218 "netconf_parser.yy" +#line 219 "netconf_parser.yy" // lalr1.cc:907 { 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 863 "netconf_parser.cc" +#line 855 "netconf_parser.cc" // lalr1.cc:907 break; case 32: -#line 226 "netconf_parser.yy" +#line 227 "netconf_parser.yy" // lalr1.cc:907 { // 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 874 "netconf_parser.cc" +#line 866 "netconf_parser.cc" // lalr1.cc:907 break; case 33: -#line 231 "netconf_parser.yy" +#line 232 "netconf_parser.yy" // lalr1.cc:907 { // 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 884 "netconf_parser.cc" +#line 876 "netconf_parser.cc" // lalr1.cc:907 break; case 38: -#line 248 "netconf_parser.yy" +#line 249 "netconf_parser.yy" // lalr1.cc:907 { // Let's create a MapElement that will represent it, add it to the @@ -896,60 +888,60 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.NETCONF); } -#line 900 "netconf_parser.cc" +#line 892 "netconf_parser.cc" // lalr1.cc:907 break; case 39: -#line 258 "netconf_parser.yy" +#line 259 "netconf_parser.yy" // lalr1.cc:907 { // Ok, we're done with parsing Netconf. Let's take the map // off the stack. ctx.stack_.pop_back(); ctx.leave(); } -#line 911 "netconf_parser.cc" +#line 903 "netconf_parser.cc" // lalr1.cc:907 break; case 53: -#line 286 "netconf_parser.yy" +#line 287 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flag(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-update", flag); } -#line 920 "netconf_parser.cc" +#line 912 "netconf_parser.cc" // lalr1.cc:907 break; case 54: -#line 291 "netconf_parser.yy" +#line 292 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flag(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subscribe-changes", flag); } -#line 929 "netconf_parser.cc" +#line 921 "netconf_parser.cc" // lalr1.cc:907 break; case 55: -#line 296 "netconf_parser.yy" +#line 297 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flag(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("validate-changes", flag); } -#line 938 "netconf_parser.cc" +#line 930 "netconf_parser.cc" // lalr1.cc:907 break; case 56: -#line 301 "netconf_parser.yy" +#line 302 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 946 "netconf_parser.cc" +#line 938 "netconf_parser.cc" // lalr1.cc:907 break; case 57: -#line 303 "netconf_parser.yy" +#line 304 "netconf_parser.yy" // lalr1.cc:907 { 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 @@ -969,23 +961,23 @@ namespace isc { namespace netconf { parent->set("user-context", user_context); ctx.leave(); } -#line 973 "netconf_parser.cc" +#line 965 "netconf_parser.cc" // lalr1.cc:907 break; case 58: -#line 326 "netconf_parser.yy" +#line 327 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 981 "netconf_parser.cc" +#line 973 "netconf_parser.cc" // lalr1.cc:907 break; case 59: -#line 328 "netconf_parser.yy" +#line 329 "netconf_parser.yy" // lalr1.cc:907 { 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 @@ -1006,480 +998,497 @@ namespace isc { namespace netconf { parent->set("user-context", user_context); ctx.leave(); } -#line 1010 "netconf_parser.cc" +#line 1002 "netconf_parser.cc" // lalr1.cc:907 break; case 60: -#line 354 "netconf_parser.yy" +#line 355 "netconf_parser.yy" // lalr1.cc:907 { 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 1021 "netconf_parser.cc" +#line 1013 "netconf_parser.cc" // lalr1.cc:907 break; case 61: -#line 359 "netconf_parser.yy" +#line 360 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1030 "netconf_parser.cc" +#line 1022 "netconf_parser.cc" // lalr1.cc:907 break; case 66: -#line 372 "netconf_parser.yy" +#line 373 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1040 "netconf_parser.cc" +#line 1032 "netconf_parser.cc" // lalr1.cc:907 break; case 67: -#line 376 "netconf_parser.yy" +#line 377 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); } -#line 1048 "netconf_parser.cc" +#line 1040 "netconf_parser.cc" // lalr1.cc:907 break; case 73: -#line 389 "netconf_parser.yy" +#line 390 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1056 "netconf_parser.cc" +#line 1048 "netconf_parser.cc" // lalr1.cc:907 break; case 74: -#line 391 "netconf_parser.yy" +#line 392 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1066 "netconf_parser.cc" +#line 1058 "netconf_parser.cc" // lalr1.cc:907 break; case 75: -#line 397 "netconf_parser.yy" +#line 398 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1074 "netconf_parser.cc" +#line 1066 "netconf_parser.cc" // lalr1.cc:907 break; case 76: -#line 399 "netconf_parser.yy" +#line 400 "netconf_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1083 "netconf_parser.cc" +#line 1075 "netconf_parser.cc" // lalr1.cc:907 break; case 77: -#line 407 "netconf_parser.yy" +#line 408 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location))); ctx.stack_.back()->set("managed-servers", m); ctx.stack_.push_back(m); ctx.enter(ctx.MANAGED_SERVERS); } -#line 1094 "netconf_parser.cc" +#line 1086 "netconf_parser.cc" // lalr1.cc:907 break; case 78: -#line 412 "netconf_parser.yy" +#line 413 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1103 "netconf_parser.cc" +#line 1095 "netconf_parser.cc" // lalr1.cc:907 break; case 88: -#line 436 "netconf_parser.yy" +#line 437 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4", m); ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1114 "netconf_parser.cc" +#line 1106 "netconf_parser.cc" // lalr1.cc:907 break; case 89: -#line 441 "netconf_parser.yy" +#line 442 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1123 "netconf_parser.cc" +#line 1115 "netconf_parser.cc" // lalr1.cc:907 break; case 90: -#line 447 "netconf_parser.yy" +#line 448 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp6", m); ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1134 "netconf_parser.cc" +#line 1126 "netconf_parser.cc" // lalr1.cc:907 break; case 91: -#line 452 "netconf_parser.yy" +#line 453 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1143 "netconf_parser.cc" +#line 1135 "netconf_parser.cc" // lalr1.cc:907 break; case 92: -#line 458 "netconf_parser.yy" +#line 459 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("d2", m); ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1154 "netconf_parser.cc" +#line 1146 "netconf_parser.cc" // lalr1.cc:907 break; case 93: -#line 463 "netconf_parser.yy" +#line 464 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1163 "netconf_parser.cc" +#line 1155 "netconf_parser.cc" // lalr1.cc:907 break; case 94: -#line 469 "netconf_parser.yy" +#line 470 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ca", m); ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1174 "netconf_parser.cc" +#line 1166 "netconf_parser.cc" // lalr1.cc:907 break; case 95: -#line 474 "netconf_parser.yy" +#line 475 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1183 "netconf_parser.cc" +#line 1175 "netconf_parser.cc" // lalr1.cc:907 break; case 106: -#line 496 "netconf_parser.yy" +#line 497 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1191 "netconf_parser.cc" +#line 1183 "netconf_parser.cc" // lalr1.cc:907 break; case 107: -#line 498 "netconf_parser.yy" +#line 499 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr model(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr model(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("model", model); ctx.leave(); } -#line 1201 "netconf_parser.cc" +#line 1193 "netconf_parser.cc" // lalr1.cc:907 break; case 108: -#line 505 "netconf_parser.yy" +#line 506 "netconf_parser.yy" // lalr1.cc:907 { 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 1212 "netconf_parser.cc" +#line 1204 "netconf_parser.cc" // lalr1.cc:907 break; case 109: -#line 510 "netconf_parser.yy" +#line 511 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1221 "netconf_parser.cc" +#line 1213 "netconf_parser.cc" // lalr1.cc:907 break; case 118: -#line 528 "netconf_parser.yy" +#line 529 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.SOCKET_TYPE); } -#line 1229 "netconf_parser.cc" +#line 1221 "netconf_parser.cc" // lalr1.cc:907 break; case 119: -#line 530 "netconf_parser.yy" +#line 531 "netconf_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1238 "netconf_parser.cc" +#line 1230 "netconf_parser.cc" // lalr1.cc:907 break; case 120: -#line 536 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } -#line 1244 "netconf_parser.cc" +#line 537 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } +#line 1236 "netconf_parser.cc" // lalr1.cc:907 break; case 121: -#line 537 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); } -#line 1250 "netconf_parser.cc" +#line 538 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); } +#line 1242 "netconf_parser.cc" // lalr1.cc:907 break; case 122: -#line 538 "netconf_parser.yy" - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); } -#line 1256 "netconf_parser.cc" +#line 539 "netconf_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); } +#line 1248 "netconf_parser.cc" // lalr1.cc:907 break; case 123: -#line 541 "netconf_parser.yy" +#line 542 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1264 "netconf_parser.cc" +#line 1256 "netconf_parser.cc" // lalr1.cc:907 break; case 124: -#line 543 "netconf_parser.yy" +#line 544 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 1274 "netconf_parser.cc" +#line 1266 "netconf_parser.cc" // lalr1.cc:907 break; case 125: -#line 550 "netconf_parser.yy" +#line 551 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1282 "netconf_parser.cc" +#line 1274 "netconf_parser.cc" // lalr1.cc:907 break; case 126: -#line 552 "netconf_parser.yy" +#line 553 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr url(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr url(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-url", url); ctx.leave(); } -#line 1292 "netconf_parser.cc" +#line 1284 "netconf_parser.cc" // lalr1.cc:907 break; case 127: -#line 565 "netconf_parser.yy" +#line 566 "netconf_parser.yy" // lalr1.cc:907 { 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 1303 "netconf_parser.cc" +#line 1295 "netconf_parser.cc" // lalr1.cc:907 break; case 128: -#line 570 "netconf_parser.yy" +#line 571 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1312 "netconf_parser.cc" +#line 1304 "netconf_parser.cc" // lalr1.cc:907 break; case 132: -#line 587 "netconf_parser.yy" +#line 588 "netconf_parser.yy" // lalr1.cc:907 { 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 1323 "netconf_parser.cc" +#line 1315 "netconf_parser.cc" // lalr1.cc:907 break; case 133: -#line 592 "netconf_parser.yy" +#line 593 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1332 "netconf_parser.cc" +#line 1324 "netconf_parser.cc" // lalr1.cc:907 break; case 136: -#line 604 "netconf_parser.yy" +#line 605 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 1342 "netconf_parser.cc" +#line 1334 "netconf_parser.cc" // lalr1.cc:907 break; case 137: -#line 608 "netconf_parser.yy" +#line 609 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); } -#line 1350 "netconf_parser.cc" +#line 1342 "netconf_parser.cc" // lalr1.cc:907 break; case 147: -#line 625 "netconf_parser.yy" +#line 626 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1358 "netconf_parser.cc" +#line 1350 "netconf_parser.cc" // lalr1.cc:907 break; case 148: -#line 627 "netconf_parser.yy" +#line 628 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1368 "netconf_parser.cc" +#line 1360 "netconf_parser.cc" // lalr1.cc:907 break; case 149: -#line 633 "netconf_parser.yy" +#line 634 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 1377 "netconf_parser.cc" +#line 1369 "netconf_parser.cc" // lalr1.cc:907 break; case 150: -#line 638 "netconf_parser.yy" +#line 639 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1385 "netconf_parser.cc" +#line 1377 "netconf_parser.cc" // lalr1.cc:907 break; case 151: -#line 640 "netconf_parser.yy" +#line 641 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 1395 "netconf_parser.cc" +#line 1387 "netconf_parser.cc" // lalr1.cc:907 break; case 152: -#line 646 "netconf_parser.yy" +#line 647 "netconf_parser.yy" // lalr1.cc:907 { 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 1406 "netconf_parser.cc" +#line 1398 "netconf_parser.cc" // lalr1.cc:907 break; case 153: -#line 651 "netconf_parser.yy" +#line 652 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1415 "netconf_parser.cc" +#line 1407 "netconf_parser.cc" // lalr1.cc:907 break; case 156: -#line 660 "netconf_parser.yy" +#line 661 "netconf_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1425 "netconf_parser.cc" +#line 1417 "netconf_parser.cc" // lalr1.cc:907 break; case 157: -#line 664 "netconf_parser.yy" +#line 665 "netconf_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); } -#line 1433 "netconf_parser.cc" +#line 1425 "netconf_parser.cc" // lalr1.cc:907 break; - case 164: -#line 678 "netconf_parser.yy" + case 165: +#line 680 "netconf_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORDS); } -#line 1441 "netconf_parser.cc" +#line 1433 "netconf_parser.cc" // lalr1.cc:907 break; - case 165: -#line 680 "netconf_parser.yy" + case 166: +#line 682 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 1451 "netconf_parser.cc" +#line 1443 "netconf_parser.cc" // lalr1.cc:907 break; - case 166: -#line 686 "netconf_parser.yy" + case 167: +#line 688 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 1460 "netconf_parser.cc" +#line 1452 "netconf_parser.cc" // lalr1.cc:907 break; - case 167: -#line 691 "netconf_parser.yy" + case 168: +#line 693 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 1469 "netconf_parser.cc" +#line 1461 "netconf_parser.cc" // lalr1.cc:907 break; - case 168: -#line 696 "netconf_parser.yy" + case 169: +#line 698 "netconf_parser.yy" // lalr1.cc:907 { - ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 1478 "netconf_parser.cc" +#line 1470 "netconf_parser.cc" // lalr1.cc:907 + break; + + case 170: +#line 703 "netconf_parser.yy" // lalr1.cc:907 + { + ctx.enter(ctx.NO_KEYWORDS); +} +#line 1478 "netconf_parser.cc" // lalr1.cc:907 break; + case 171: +#line 705 "netconf_parser.yy" // lalr1.cc:907 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("pattern", sev); + ctx.leave(); +} +#line 1488 "netconf_parser.cc" // lalr1.cc:907 + break; -#line 1482 "netconf_parser.cc" +#line 1492 "netconf_parser.cc" // lalr1.cc:907 default: break; } @@ -1487,7 +1496,6 @@ namespace isc { namespace netconf { #if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); YYERROR; } @@ -1502,7 +1510,6 @@ namespace isc { namespace netconf { } goto yynewstate; - /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ @@ -1539,18 +1546,18 @@ namespace isc { namespace netconf { | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and - the label yyerrorlab therefore never appears in user code. */ - if (false) - YYERROR; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (false) + goto yyerrorlab; /* 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. | `-------------------------------------------------------------*/ @@ -1591,26 +1598,16 @@ namespace isc { namespace netconf { } goto yynewstate; - - /*-------------------------------------. - | yyacceptlab -- YYACCEPT comes here. | - `-------------------------------------*/ + // Accept. yyacceptlab: yyresult = 0; goto yyreturn; - - /*-----------------------------------. - | yyabortlab -- YYABORT comes here. | - `-----------------------------------*/ + // Abort. yyabortlab: yyresult = 1; goto yyreturn; - - /*-----------------------------------------------------. - | yyreturn -- parsing is finished, return the result. | - `-----------------------------------------------------*/ yyreturn: if (!yyla.empty ()) yy_destroy_ ("Cleanup: discarding lookahead", yyla); @@ -1749,42 +1746,42 @@ namespace isc { namespace netconf { } - const signed char NetconfParser::yypact_ninf_ = -83; + const signed char NetconfParser::yypact_ninf_ = -92; const signed char NetconfParser::yytable_ninf_ = -1; const short NetconfParser::yypact_[] = { - 76, -83, -83, -83, 6, 12, 0, 11, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, 12, 4, -5, -1, -83, 14, - 48, 73, 82, 104, -83, -83, 44, -83, -83, -83, - -83, -83, 108, 109, 123, 124, -83, -83, 125, -83, - 122, 128, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, 12, 12, -83, 87, 129, 130, -5, -83, - 131, 132, 89, 90, 91, 133, 137, 138, -83, -83, - -1, -83, -83, 139, 140, 141, -83, 142, 99, -83, - -83, -83, -83, 145, 146, -83, 12, -1, 112, -83, - -83, -83, 5, 147, 148, -83, 144, 77, -83, -83, - -83, -83, -83, -83, -83, 152, 143, -83, -83, -83, - -83, -83, -83, 150, 158, -83, -83, 62, -83, -83, - 112, -83, 149, 159, 160, 161, -83, 5, 51, -83, - 147, 29, 148, -83, -83, 155, 162, 163, 164, -83, - -83, -83, -83, 83, -83, -83, -83, -83, -83, -83, - 168, -83, -83, -83, -83, 84, -83, -83, -83, -83, - -83, -83, 24, 24, 24, 24, 169, 170, 3, -83, - 171, 172, 120, 173, 29, -83, -83, -83, -83, -83, - -83, -83, -83, -83, 85, -83, -83, -83, 86, 94, - 95, 134, 12, -83, 135, 176, -83, 151, -83, 174, - 179, 24, -83, -83, -83, -83, -83, -83, -83, 177, - -83, 153, 178, -83, -83, 102, -83, -83, 72, -10, - 177, -83, -83, -83, -83, -83, -83, -83, 98, -83, - -83, -83, -83, -83, 182, 183, 184, 101, -83, -83, - -83, -83, -83, -83, 185, 186, 187, 72, -83, 188, - 119, 154, 165, -10, -83, 97, 167, 175, -83, 180, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83 + -8, -92, -92, -92, 27, 11, 44, 99, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, -92, -92, 11, 35, 9, -1, -92, 106, + 104, 109, 110, 116, -92, -92, 26, -92, -92, -92, + -92, -92, 122, 123, 124, 125, -92, -92, 126, -92, + 127, 128, -92, -92, -92, -92, -92, -92, -92, -92, + -92, -92, 11, 11, -92, 87, 130, 132, 9, -92, + 133, 134, 83, 90, 91, 135, 137, 139, -92, -92, + -1, -92, -92, 140, 138, 141, -92, 142, 100, -92, + -92, -92, -92, 145, 146, -92, 11, -1, 114, -92, + -92, -92, 6, 147, 148, -92, 144, 30, -92, -92, + -92, -92, -92, -92, -92, 152, 150, -92, -92, -92, + -92, -92, -92, 155, 153, -92, -92, 74, -92, -92, + 114, -92, 158, 159, 160, 161, -92, 6, 0, -92, + 147, 53, 148, -92, -92, 162, 163, 164, 165, -92, + -92, -92, -92, 60, -92, -92, -92, -92, -92, -92, + 169, -92, -92, -92, -92, 66, -92, -92, -92, -92, + -92, -92, 71, 71, 71, 71, 170, 171, 36, -92, + 172, 173, 119, 174, 53, -92, -92, -92, -92, -92, + -92, -92, -92, -92, 86, -92, -92, -92, 92, 93, + 94, 121, 11, -92, 143, 175, -92, 149, -92, 177, + 179, 71, -92, -92, -92, -92, -92, -92, -92, 178, + -92, 151, 180, -92, -92, 102, -92, -92, -6, 8, + 178, -92, -92, -92, -92, -92, -92, -92, 95, -92, + -92, -92, -92, -92, 182, 184, 186, -92, 101, -92, + -92, -92, -92, -92, -92, -92, 187, 188, 189, -6, + -92, 190, 156, 157, 166, 192, 8, -92, 96, 154, + 168, -92, 176, -92, -92, -92, 181, -92, -92, -92, + -92, -92, -92, -92, -92, -92 }; const unsigned char @@ -1814,27 +1811,27 @@ namespace isc { namespace netconf { 0, 0, 89, 91, 93, 95, 74, 76, 148, 0, 151, 0, 0, 97, 156, 0, 154, 107, 0, 0, 0, 153, 118, 123, 125, 117, 115, 116, 0, 110, - 112, 113, 114, 164, 0, 0, 0, 0, 158, 160, - 161, 162, 163, 155, 0, 0, 0, 0, 109, 0, - 0, 0, 0, 0, 157, 0, 0, 0, 111, 0, - 166, 167, 168, 159, 120, 121, 122, 119, 124, 126, - 165 + 112, 113, 114, 165, 0, 0, 0, 170, 0, 158, + 160, 161, 162, 163, 164, 155, 0, 0, 0, 0, + 109, 0, 0, 0, 0, 0, 0, 157, 0, 0, + 0, 111, 0, 167, 168, 169, 0, 159, 120, 121, + 122, 119, 124, 126, 166, 171 }; const signed char NetconfParser::yypgoto_[] = { - -83, -83, -83, -83, -83, -83, -83, -83, -20, 81, - -83, -83, -83, -83, -83, -83, -83, -83, -27, -83, - -83, -83, 126, -83, -83, 96, -83, 115, -24, -19, - -18, -26, -83, -25, -83, -83, -83, -83, -83, 57, - -83, -83, 21, -83, -83, -83, -83, -83, -83, -83, - -83, 67, -83, -83, -83, -83, -83, -83, -83, -83, - -49, -6, -83, -83, -83, -83, -83, -51, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, 78, -82, - -83, -83, 65, -83, -83, 25, -83, -83, -83, -83, - -83, -83, -83, -83, -17, -83, -83, -53, -83, -83, - -83, -83, -83 + -92, -92, -92, -92, -92, -92, -92, -92, -20, 81, + -92, -92, -92, -92, -92, -92, -92, -92, -27, -92, + -92, -92, 111, -92, -92, 112, -92, 118, -24, -19, + -18, -26, -92, -25, -92, -92, -92, -92, -92, 59, + -92, -92, 28, -92, -92, -92, -92, -92, -92, -92, + -92, 47, -92, -92, -92, -92, -92, -92, -92, -92, + -50, -4, -92, -92, -92, -92, -92, -51, -92, -92, + -92, -92, -92, -92, -92, -92, -92, -92, 80, -91, + -92, -92, 69, -92, -92, 31, -92, -92, -92, -92, + -92, -92, -92, -92, -14, -92, -92, -54, -92, -92, + -92, -92, -92, -92, -92 }; const short @@ -1846,125 +1843,126 @@ namespace isc { namespace netconf { 191, 192, 70, 193, 71, 58, 76, 123, 124, 125, 138, 153, 154, 155, 176, 156, 177, 59, 102, 115, 116, 117, 118, 132, 119, 133, 120, 134, 121, 135, - 194, 195, 196, 209, 197, 210, 238, 239, 240, 254, - 277, 241, 255, 242, 256, 39, 67, 107, 108, 60, + 194, 195, 196, 209, 197, 210, 238, 239, 240, 256, + 281, 241, 257, 242, 258, 39, 67, 107, 108, 60, 77, 127, 128, 141, 165, 166, 167, 180, 168, 169, - 183, 170, 181, 225, 226, 229, 247, 248, 249, 259, - 250, 251, 252 + 183, 170, 181, 225, 226, 229, 248, 249, 250, 261, + 251, 252, 253, 254, 265 }; const unsigned short NetconfParser::yytable_[] = { - 49, 56, 57, 53, 28, 34, 8, 20, 54, 55, - 40, 41, 42, 43, 44, 45, 109, 9, 22, 10, - 61, 11, 110, 111, 112, 113, 243, 35, 46, 244, - 245, 246, 47, 150, 151, 40, 41, 42, 43, 44, - 40, 41, 81, 82, 48, 186, 187, 68, 109, 31, - 48, 62, 69, 49, 56, 57, 53, 12, 13, 14, - 15, 54, 55, 158, 159, 142, 160, 161, 143, 48, - 49, 56, 57, 53, 48, 114, 105, 63, 54, 55, - 130, 150, 151, 40, 41, 131, 178, 184, 211, 211, - 64, 179, 185, 212, 213, 232, 48, 211, 211, 233, - 234, 257, 214, 215, 263, 230, 258, 65, 231, 264, - 114, 152, 72, 73, 162, 163, 164, 48, 1, 2, - 3, 274, 275, 276, 198, 199, 200, 74, 75, 78, - 79, 80, 83, 84, 85, 87, 88, 89, 90, 91, - 92, 93, 94, 96, 101, 47, 137, 97, 98, 10, - 103, 104, 129, 145, 122, 126, 139, 162, 163, 164, - 136, 140, 172, 146, 147, 148, 206, 270, 99, 173, - 174, 175, 182, 201, 202, 204, 205, 207, 221, 216, - 218, 219, 217, 222, 224, 228, 260, 261, 262, 265, - 266, 267, 269, 106, 86, 95, 220, 157, 227, 203, - 271, 235, 236, 237, 149, 223, 268, 171, 144, 208, - 273, 272, 278, 253, 0, 0, 0, 0, 0, 0, - 279, 0, 0, 0, 0, 280, 0, 0, 0, 0, - 235, 236, 237 + 49, 56, 57, 53, 28, 40, 41, 109, 54, 55, + 40, 41, 42, 43, 44, 45, 9, 232, 10, 34, + 11, 233, 234, 110, 111, 112, 113, 8, 46, 68, + 150, 151, 47, 130, 69, 1, 2, 3, 131, 109, + 48, 35, 81, 82, 243, 48, 48, 244, 245, 246, + 247, 20, 48, 49, 56, 57, 53, 12, 13, 14, + 15, 54, 55, 178, 40, 41, 150, 151, 179, 184, + 49, 56, 57, 53, 185, 114, 105, 142, 54, 55, + 143, 31, 40, 41, 42, 43, 44, 158, 159, 211, + 160, 161, 186, 187, 212, 211, 211, 211, 259, 48, + 213, 214, 215, 260, 266, 230, 22, 62, 231, 267, + 114, 152, 61, 63, 162, 163, 164, 48, 64, 65, + 278, 279, 280, 198, 199, 200, 72, 73, 74, 75, + 78, 80, 89, 83, 84, 79, 85, 87, 88, 90, + 91, 93, 92, 94, 96, 97, 101, 47, 98, 10, + 103, 104, 129, 137, 122, 126, 140, 162, 163, 164, + 136, 139, 145, 146, 147, 148, 206, 216, 99, 172, + 173, 174, 175, 182, 201, 202, 204, 205, 207, 86, + 219, 221, 217, 222, 149, 224, 262, 228, 263, 218, + 264, 268, 269, 270, 272, 220, 276, 227, 95, 157, + 282, 235, 236, 237, 274, 273, 203, 223, 271, 106, + 144, 171, 277, 275, 283, 208, 255, 0, 0, 0, + 0, 0, 284, 0, 0, 0, 0, 285, 0, 0, + 0, 0, 235, 236, 237 }; const short NetconfParser::yycheck_[] = { - 27, 27, 27, 27, 24, 10, 0, 7, 27, 27, - 11, 12, 13, 14, 15, 16, 98, 5, 7, 7, - 6, 9, 17, 18, 19, 20, 36, 32, 29, 39, - 40, 41, 33, 30, 31, 11, 12, 13, 14, 15, - 11, 12, 62, 63, 45, 21, 22, 3, 130, 45, - 45, 3, 8, 80, 80, 80, 80, 45, 46, 47, - 48, 80, 80, 34, 35, 3, 37, 38, 6, 45, - 97, 97, 97, 97, 45, 102, 96, 4, 97, 97, - 3, 30, 31, 11, 12, 8, 3, 3, 3, 3, - 8, 8, 8, 8, 8, 23, 45, 3, 3, 27, - 28, 3, 8, 8, 3, 3, 8, 3, 6, 8, - 137, 138, 4, 4, 141, 141, 141, 45, 42, 43, - 44, 24, 25, 26, 173, 174, 175, 4, 4, 4, - 8, 3, 45, 4, 4, 4, 4, 48, 48, 48, - 7, 4, 4, 4, 45, 33, 3, 7, 7, 7, - 5, 5, 8, 4, 7, 7, 6, 184, 184, 184, - 8, 3, 7, 4, 4, 4, 46, 48, 87, 7, - 7, 7, 4, 4, 4, 4, 4, 4, 4, 45, - 45, 5, 202, 4, 7, 7, 4, 4, 4, 4, - 4, 4, 4, 97, 68, 80, 45, 140, 45, 178, - 46, 228, 228, 228, 137, 211, 257, 142, 130, 184, - 263, 46, 45, 230, -1, -1, -1, -1, -1, -1, - 45, -1, -1, -1, -1, 45, -1, -1, -1, -1, - 257, 257, 257 + 27, 27, 27, 27, 24, 11, 12, 98, 27, 27, + 11, 12, 13, 14, 15, 16, 5, 23, 7, 10, + 9, 27, 28, 17, 18, 19, 20, 0, 29, 3, + 30, 31, 33, 3, 8, 43, 44, 45, 8, 130, + 46, 32, 62, 63, 36, 46, 46, 39, 40, 41, + 42, 7, 46, 80, 80, 80, 80, 46, 47, 48, + 49, 80, 80, 3, 11, 12, 30, 31, 8, 3, + 97, 97, 97, 97, 8, 102, 96, 3, 97, 97, + 6, 46, 11, 12, 13, 14, 15, 34, 35, 3, + 37, 38, 21, 22, 8, 3, 3, 3, 3, 46, + 8, 8, 8, 8, 3, 3, 7, 3, 6, 8, + 137, 138, 6, 4, 141, 141, 141, 46, 8, 3, + 24, 25, 26, 173, 174, 175, 4, 4, 4, 4, + 4, 3, 49, 46, 4, 8, 4, 4, 4, 49, + 49, 4, 7, 4, 4, 7, 46, 33, 7, 7, + 5, 5, 8, 3, 7, 7, 3, 184, 184, 184, + 8, 6, 4, 4, 4, 4, 47, 46, 87, 7, + 7, 7, 7, 4, 4, 4, 4, 4, 4, 68, + 5, 4, 202, 4, 137, 7, 4, 7, 4, 46, + 4, 4, 4, 4, 4, 46, 4, 46, 80, 140, + 46, 228, 228, 228, 47, 49, 178, 211, 259, 97, + 130, 142, 266, 47, 46, 184, 230, -1, -1, -1, + -1, -1, 46, -1, -1, -1, -1, 46, -1, -1, + -1, -1, 259, 259, 259 }; const unsigned char NetconfParser::yystos_[] = { - 0, 42, 43, 44, 50, 51, 52, 53, 0, 5, - 7, 9, 45, 46, 47, 48, 56, 57, 58, 63, - 7, 68, 7, 54, 64, 59, 69, 55, 57, 65, - 66, 45, 61, 62, 10, 32, 70, 71, 72, 124, - 11, 12, 13, 14, 15, 16, 29, 33, 45, 67, - 74, 75, 76, 77, 78, 79, 80, 82, 84, 96, - 128, 6, 3, 4, 8, 3, 73, 125, 3, 8, - 81, 83, 4, 4, 4, 4, 85, 129, 4, 8, - 3, 57, 57, 45, 4, 4, 71, 4, 4, 48, - 48, 48, 7, 4, 4, 76, 4, 7, 7, 58, - 60, 45, 97, 5, 5, 57, 74, 126, 127, 128, - 17, 18, 19, 20, 67, 98, 99, 100, 101, 103, - 105, 107, 7, 86, 87, 88, 7, 130, 131, 8, - 3, 8, 102, 104, 106, 108, 8, 3, 89, 6, - 3, 132, 3, 6, 127, 4, 4, 4, 4, 100, - 30, 31, 67, 90, 91, 92, 94, 88, 34, 35, - 37, 38, 67, 80, 82, 133, 134, 135, 137, 138, - 140, 131, 7, 7, 7, 7, 93, 95, 3, 8, - 136, 141, 4, 139, 3, 8, 21, 22, 67, 77, - 78, 79, 80, 82, 109, 110, 111, 113, 109, 109, - 109, 4, 4, 91, 4, 4, 46, 4, 134, 112, - 114, 3, 8, 8, 8, 8, 45, 57, 45, 5, - 45, 4, 4, 110, 7, 142, 143, 45, 7, 144, - 3, 6, 23, 27, 28, 67, 80, 82, 115, 116, - 117, 120, 122, 36, 39, 40, 41, 145, 146, 147, - 149, 150, 151, 143, 118, 121, 123, 3, 8, 148, - 4, 4, 4, 3, 8, 4, 4, 4, 116, 4, - 48, 46, 46, 146, 24, 25, 26, 119, 45, 45, - 45 + 0, 43, 44, 45, 51, 52, 53, 54, 0, 5, + 7, 9, 46, 47, 48, 49, 57, 58, 59, 64, + 7, 69, 7, 55, 65, 60, 70, 56, 58, 66, + 67, 46, 62, 63, 10, 32, 71, 72, 73, 125, + 11, 12, 13, 14, 15, 16, 29, 33, 46, 68, + 75, 76, 77, 78, 79, 80, 81, 83, 85, 97, + 129, 6, 3, 4, 8, 3, 74, 126, 3, 8, + 82, 84, 4, 4, 4, 4, 86, 130, 4, 8, + 3, 58, 58, 46, 4, 4, 72, 4, 4, 49, + 49, 49, 7, 4, 4, 77, 4, 7, 7, 59, + 61, 46, 98, 5, 5, 58, 75, 127, 128, 129, + 17, 18, 19, 20, 68, 99, 100, 101, 102, 104, + 106, 108, 7, 87, 88, 89, 7, 131, 132, 8, + 3, 8, 103, 105, 107, 109, 8, 3, 90, 6, + 3, 133, 3, 6, 128, 4, 4, 4, 4, 101, + 30, 31, 68, 91, 92, 93, 95, 89, 34, 35, + 37, 38, 68, 81, 83, 134, 135, 136, 138, 139, + 141, 132, 7, 7, 7, 7, 94, 96, 3, 8, + 137, 142, 4, 140, 3, 8, 21, 22, 68, 78, + 79, 80, 81, 83, 110, 111, 112, 114, 110, 110, + 110, 4, 4, 92, 4, 4, 47, 4, 135, 113, + 115, 3, 8, 8, 8, 8, 46, 58, 46, 5, + 46, 4, 4, 111, 7, 143, 144, 46, 7, 145, + 3, 6, 23, 27, 28, 68, 81, 83, 116, 117, + 118, 121, 123, 36, 39, 40, 41, 42, 146, 147, + 148, 150, 151, 152, 153, 144, 119, 122, 124, 3, + 8, 149, 4, 4, 4, 154, 3, 8, 4, 4, + 4, 117, 4, 49, 47, 47, 4, 147, 24, 25, + 26, 120, 46, 46, 46, 46 }; const unsigned char NetconfParser::yyr1_[] = { - 0, 49, 51, 50, 52, 50, 53, 50, 55, 54, - 56, 57, 57, 57, 57, 57, 57, 57, 59, 58, - 60, 61, 61, 62, 62, 64, 63, 65, 65, 66, - 66, 67, 69, 68, 70, 70, 71, 71, 73, 72, - 74, 74, 75, 75, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 77, 78, 79, 81, 80, 83, 82, - 85, 84, 86, 86, 87, 87, 89, 88, 90, 90, - 90, 91, 91, 93, 92, 95, 94, 97, 96, 98, - 98, 99, 99, 100, 100, 100, 100, 100, 102, 101, - 104, 103, 106, 105, 108, 107, 109, 109, 110, 110, - 110, 110, 110, 110, 110, 110, 112, 111, 114, 113, - 115, 115, 116, 116, 116, 116, 116, 116, 118, 117, - 119, 119, 119, 121, 120, 123, 122, 125, 124, 126, - 126, 127, 129, 128, 130, 130, 132, 131, 133, 133, - 134, 134, 134, 134, 134, 134, 134, 136, 135, 137, - 139, 138, 141, 140, 142, 142, 144, 143, 145, 145, - 146, 146, 146, 146, 148, 147, 149, 150, 151 + 0, 50, 52, 51, 53, 51, 54, 51, 56, 55, + 57, 58, 58, 58, 58, 58, 58, 58, 60, 59, + 61, 62, 62, 63, 63, 65, 64, 66, 66, 67, + 67, 68, 70, 69, 71, 71, 72, 72, 74, 73, + 75, 75, 76, 76, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 78, 79, 80, 82, 81, 84, 83, + 86, 85, 87, 87, 88, 88, 90, 89, 91, 91, + 91, 92, 92, 94, 93, 96, 95, 98, 97, 99, + 99, 100, 100, 101, 101, 101, 101, 101, 103, 102, + 105, 104, 107, 106, 109, 108, 110, 110, 111, 111, + 111, 111, 111, 111, 111, 111, 113, 112, 115, 114, + 116, 116, 117, 117, 117, 117, 117, 117, 119, 118, + 120, 120, 120, 122, 121, 124, 123, 126, 125, 127, + 127, 128, 130, 129, 131, 131, 133, 132, 134, 134, + 135, 135, 135, 135, 135, 135, 135, 137, 136, 138, + 140, 139, 142, 141, 143, 143, 145, 144, 146, 146, + 147, 147, 147, 147, 147, 149, 148, 150, 151, 152, + 154, 153 }; const unsigned char @@ -1986,7 +1984,8 @@ namespace isc { namespace netconf { 3, 1, 0, 6, 1, 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 4, 3, 0, 4, 0, 6, 1, 3, 0, 4, 1, 3, - 1, 1, 1, 1, 0, 4, 3, 3, 3 + 1, 1, 1, 1, 1, 0, 4, 3, 3, 3, + 0, 4 }; @@ -2005,16 +2004,16 @@ namespace isc { namespace netconf { "\"socket-url\"", "\"hooks-libraries\"", "\"library\"", "\"parameters\"", "\"Logging\"", "\"loggers\"", "\"name\"", "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"", - "\"maxsize\"", "\"maxver\"", "START_JSON", "START_NETCONF", - "START_SUB_NETCONF", "\"constant string\"", "\"integer\"", - "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2", - "$@3", "sub_netconf", "$@4", "json", "value", "map", "$@5", "map_value", - "map_content", "not_empty_map", "list_generic", "$@6", "list_content", - "not_empty_list", "unknown_map_entry", "netconf_syntax_map", "$@7", - "global_objects", "global_object", "netconf_object", "$@8", - "global_params", "not_empty_global_params", "global_param", - "boot_update", "subscribe_changes", "validate_changes", "user_context", - "$@9", "comment", "$@10", "hooks_libraries", "$@11", + "\"maxsize\"", "\"maxver\"", "\"pattern\"", "START_JSON", + "START_NETCONF", "START_SUB_NETCONF", "\"constant string\"", + "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start", + "$@1", "$@2", "$@3", "sub_netconf", "$@4", "json", "value", "map", "$@5", + "map_value", "map_content", "not_empty_map", "list_generic", "$@6", + "list_content", "not_empty_list", "unknown_map_entry", + "netconf_syntax_map", "$@7", "global_objects", "global_object", + "netconf_object", "$@8", "global_params", "not_empty_global_params", + "global_param", "boot_update", "subscribe_changes", "validate_changes", + "user_context", "$@9", "comment", "$@10", "hooks_libraries", "$@11", "hooks_libraries_list", "not_empty_hooks_libraries_list", "hooks_library", "$@12", "hooks_params", "hooks_param", "library", "$@13", "parameters", "$@14", "managed_servers", "$@15", @@ -2029,30 +2028,31 @@ namespace isc { namespace netconf { "debuglevel", "severity", "$@29", "output_options_list", "$@30", "output_options_list_content", "output_entry", "$@31", "output_params_list", "output_params", "output", "$@32", "flush", - "maxsize", "maxver", YY_NULLPTR + "maxsize", "maxver", "pattern", "$@33", YY_NULLPTR }; #if NETCONF_DEBUG const unsigned short NetconfParser::yyrline_[] = { - 0, 118, 118, 118, 119, 119, 120, 120, 128, 128, - 139, 145, 146, 147, 148, 149, 150, 151, 155, 155, - 166, 171, 172, 180, 184, 191, 191, 197, 198, 201, - 205, 218, 226, 226, 238, 239, 243, 244, 248, 248, - 265, 266, 269, 270, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 286, 291, 296, 301, 301, 326, 326, - 354, 354, 364, 365, 368, 369, 372, 372, 380, 381, - 382, 385, 386, 389, 389, 397, 397, 407, 407, 417, - 418, 421, 422, 428, 429, 430, 431, 432, 436, 436, - 447, 447, 458, 458, 469, 469, 480, 481, 485, 486, - 487, 488, 489, 490, 491, 492, 496, 496, 505, 505, - 516, 517, 520, 521, 522, 523, 524, 525, 528, 528, - 536, 537, 538, 541, 541, 550, 550, 565, 565, 578, - 579, 583, 587, 587, 599, 600, 604, 604, 612, 613, - 616, 617, 618, 619, 620, 621, 622, 625, 625, 633, - 638, 638, 646, 646, 656, 657, 660, 660, 668, 669, - 672, 673, 674, 675, 678, 678, 686, 691, 696 + 0, 119, 119, 119, 120, 120, 121, 121, 129, 129, + 140, 146, 147, 148, 149, 150, 151, 152, 156, 156, + 167, 172, 173, 181, 185, 192, 192, 198, 199, 202, + 206, 219, 227, 227, 239, 240, 244, 245, 249, 249, + 266, 267, 270, 271, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 287, 292, 297, 302, 302, 327, 327, + 355, 355, 365, 366, 369, 370, 373, 373, 381, 382, + 383, 386, 387, 390, 390, 398, 398, 408, 408, 418, + 419, 422, 423, 429, 430, 431, 432, 433, 437, 437, + 448, 448, 459, 459, 470, 470, 481, 482, 486, 487, + 488, 489, 490, 491, 492, 493, 497, 497, 506, 506, + 517, 518, 521, 522, 523, 524, 525, 526, 529, 529, + 537, 538, 539, 542, 542, 551, 551, 566, 566, 579, + 580, 584, 588, 588, 600, 601, 605, 605, 613, 614, + 617, 618, 619, 620, 621, 622, 623, 626, 626, 634, + 639, 639, 647, 647, 657, 658, 661, 661, 669, 670, + 673, 674, 675, 676, 677, 680, 680, 688, 693, 698, + 703, 703 }; // Print the state stack on the debug stream. @@ -2085,11 +2085,10 @@ namespace isc { namespace netconf { #endif // NETCONF_DEBUG -#line 14 "netconf_parser.yy" +#line 14 "netconf_parser.yy" // lalr1.cc:1218 } } // isc::netconf -#line 2091 "netconf_parser.cc" - -#line 701 "netconf_parser.yy" +#line 2091 "netconf_parser.cc" // lalr1.cc:1218 +#line 711 "netconf_parser.yy" // lalr1.cc:1219 void diff --git a/src/bin/netconf/netconf_parser.h b/src/bin/netconf/netconf_parser.h index c9b03ee733..f2658b9796 100644 --- a/src/bin/netconf/netconf_parser.h +++ b/src/bin/netconf/netconf_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 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 @@ -44,7 +44,7 @@ #ifndef YY_NETCONF_NETCONF_PARSER_H_INCLUDED # define YY_NETCONF_NETCONF_PARSER_H_INCLUDED // // "%code requires" blocks. -#line 17 "netconf_parser.yy" +#line 17 "netconf_parser.yy" // lalr1.cc:404 #include #include @@ -55,7 +55,7 @@ using namespace isc::netconf; using namespace isc::data; using namespace std; -#line 59 "netconf_parser.h" +#line 59 "netconf_parser.h" // lalr1.cc:404 # include # include // std::abort @@ -64,14 +64,8 @@ using namespace std; # include # include -#if defined __cplusplus -# define YY_CPLUSPLUS __cplusplus -#else -# define YY_CPLUSPLUS 199711L -#endif - // Support move semantics when possible. -#if 201103L <= YY_CPLUSPLUS +#if defined __cplusplus && 201103L <= __cplusplus # define YY_MOVE std::move # define YY_MOVE_OR_COPY move # define YY_MOVE_REF(Type) Type&& @@ -84,22 +78,6 @@ using namespace std; # 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 #ifndef YYASSERT @@ -177,80 +155,193 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined NETCONF_DEBUG */ -#line 14 "netconf_parser.yy" +#line 14 "netconf_parser.yy" // lalr1.cc:404 namespace isc { namespace netconf { -#line 183 "netconf_parser.h" +#line 161 "netconf_parser.h" // lalr1.cc:404 + + /// A stack with random access from its top. + template > + 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; + stack (size_type n = 200) + : seq_ (n) + {} + + /// Random access. + /// + /// Index 0 returns the topmost element. + T& + operator[] (size_type i) + { + return seq_[size () - 1 - i]; + } + /// Random access. + /// + /// Index 0 returns the topmost element. + T& + operator[] (int i) + { + return operator[] (size_type (i)); + } + /// Random access. + /// + /// Index 0 returns the topmost element. + const T& + operator[] (size_type i) const + { + return seq_[size () - 1 - i]; + } - /// A Bison parser. - class NetconfParser + /// Random access. + /// + /// Index 0 returns the topmost element. + const T& + operator[] (int i) const + { + return operator[] (size_type (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); + } + + void + pop (int n = 1) + { + for (; 0 < n; --n) + seq_.pop_back (); + } + + void + clear () + { + seq_.clear (); + } + + size_type + size () const + { + return seq_.size (); + } + + const_iterator + begin () const + { + return seq_.rbegin (); + } + + 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 slice { public: -#ifndef NETCONF_STYPE - /// A buffer to store and retrieve objects. + slice (const S& stack, int range) + : stack_ (stack) + , range_ (range) + {} + + const T& + operator[] (int i) const + { + return stack_[range_ - i]; + } + + private: + const S& stack_; + int range_; + }; + + + + /// A char[S] 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 parser state. - class semantic_type + /// via the current state. + template + struct variant { - public: /// Type of *this. - typedef semantic_type self_type; + typedef variant self_type; /// Empty construction. - semantic_type () YY_NOEXCEPT + variant () : yybuffer_ () , yytypeid_ (YY_NULLPTR) {} /// Construct and fill. template - semantic_type (YY_RVREF (T) t) + variant (YY_RVREF (T) t) : yytypeid_ (&typeid (T)) { - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); new (yyas_ ()) T (YY_MOVE (t)); } /// Destruction, allowed only if empty. - ~semantic_type () YY_NOEXCEPT + ~variant () { YYASSERT (!yytypeid_); } -# if 201103L <= YY_CPLUSPLUS - /// Instantiate a \a T in here from \a t. - template - T& - emplace (U&&... u) - { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (std::forward (u)...); - } -# else /// Instantiate an empty \a T in here. template T& emplace () { YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (); } +# if defined __cplusplus && 201103L <= __cplusplus + /// Instantiate a \a T in here from \a t. + template + T& + emplace (U&& u) + { + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); + yytypeid_ = & typeid (T); + return *new (yyas_ ()) T (std::forward (u)); + } +# else /// Instantiate a \a T in here from \a t. template T& emplace (const T& t) { YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (t); } @@ -277,75 +368,75 @@ namespace isc { namespace netconf { /// Accessor to a built \a T. template T& - as () YY_NOEXCEPT + as () { YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } /// Const accessor to a built \a T (for %printer). template const T& - as () const YY_NOEXCEPT + as () const { YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } - /// Swap the content with \a that, of same type. + /// Swap the content with \a other, 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 responsibility. /// Swapping between built and (possibly) non-built is done with - /// self_type::move (). + /// variant::move (). template void - swap (self_type& that) YY_NOEXCEPT + swap (self_type& other) { YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == *that.yytypeid_); - std::swap (as (), that.as ()); + YYASSERT (*yytypeid_ == *other.yytypeid_); + std::swap (as (), other.as ()); } - /// Move the content of \a that to this. + /// Move the content of \a other to this. /// - /// Destroys \a that. + /// Destroys \a other. template void - move (self_type& that) + move (self_type& other) { -# if 201103L <= YY_CPLUSPLUS - emplace (std::move (that.as ())); +# if defined __cplusplus && 201103L <= __cplusplus + emplace (std::move (other.as ())); # else emplace (); - swap (that); + swap (other); # endif - that.destroy (); + other.destroy (); } -# if 201103L <= YY_CPLUSPLUS - /// Move the content of \a that to this. +# if defined __cplusplus && 201103L <= __cplusplus + /// Move the content of \a other to this. template void - move (self_type&& that) + move (self_type&& other) { - emplace (std::move (that.as ())); - that.destroy (); + emplace (std::move (other.as ())); + other.destroy (); } #endif - /// Copy the content of \a that to this. + /// Copy the content of \a other to this. template void - copy (const self_type& that) + copy (const self_type& other) { - emplace (that.as ()); + emplace (other.as ()); } /// Destroy the stored \a T. @@ -360,12 +451,12 @@ namespace isc { namespace netconf { private: /// Prohibit blind copies. self_type& operator= (const self_type&); - semantic_type (const self_type&); + variant (const self_type&); /// Accessor to raw memory as \a T. template T* - yyas_ () YY_NOEXCEPT + yyas_ () { void *yyp = yybuffer_.yyraw; return static_cast (yyp); @@ -374,12 +465,30 @@ namespace isc { namespace netconf { /// Const accessor to raw memory as \a T. template const T* - yyas_ () const YY_NOEXCEPT + yyas_ () const { const void *yyp = yybuffer_.yyraw; return static_cast (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 NetconfParser + { + public: +#ifndef NETCONF_STYPE /// An auxiliary type to compute the largest semantic type. union union_type { @@ -399,24 +508,10 @@ namespace isc { namespace netconf { // "constant 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 semantic_type; #else typedef NETCONF_STYPE semantic_type; #endif @@ -426,18 +521,7 @@ namespace isc { namespace netconf { /// Syntax errors thrown from user actions. struct syntax_error : std::runtime_error { - 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; - + syntax_error (const location_type& l, const std::string& m); location_type location; }; @@ -486,13 +570,14 @@ namespace isc { namespace netconf { TOKEN_FLUSH = 294, TOKEN_MAXSIZE = 295, TOKEN_MAXVER = 296, - TOKEN_START_JSON = 297, - TOKEN_START_NETCONF = 298, - TOKEN_START_SUB_NETCONF = 299, - TOKEN_STRING = 300, - TOKEN_INTEGER = 301, - TOKEN_FLOAT = 302, - TOKEN_BOOLEAN = 303 + TOKEN_PATTERN = 297, + TOKEN_START_JSON = 298, + TOKEN_START_NETCONF = 299, + TOKEN_START_SUB_NETCONF = 300, + TOKEN_STRING = 301, + TOKEN_INTEGER = 302, + TOKEN_FLOAT = 303, + TOKEN_BOOLEAN = 304 }; }; @@ -521,150 +606,29 @@ namespace isc { namespace netconf { typedef Base super_type; /// Default constructor. - basic_symbol () - : value () - , location () - {} - -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - basic_symbol (basic_symbol&& that); -#endif + basic_symbol (); + + /// Move or copy constructor. + basic_symbol (YY_RVREF (basic_symbol) other); - /// Copy constructor. - 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, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l); + /// Destroy the symbol. - ~basic_symbol () - { - clear (); - } + ~basic_symbol (); /// Destroy contents, and record that is empty. - void clear () - { - // User destructor. - symbol_number_type yytype = this->type_get (); - basic_symbol& yysym = *this; - (void) yysym; - switch (yytype) - { - default: - break; - } - - // Type destructor. -switch (yytype) - { - case 57: // value - case 60: // map_value - case 119: // socket_type_value - value.template destroy< ElementPtr > (); - break; - - case 48: // "boolean" - value.template destroy< bool > (); - break; - - case 47: // "floating point" - value.template destroy< double > (); - break; - - case 46: // "integer" - value.template destroy< int64_t > (); - break; - - case 45: // "constant string" - value.template destroy< std::string > (); - break; - - default: - break; - } - - Base::clear (); - } + void clear (); /// Whether empty. - bool empty () const YY_NOEXCEPT; + bool empty () const; /// Destructive move, \a s is emptied into this. void move (basic_symbol& s); @@ -676,9 +640,9 @@ switch (yytype) location_type location; private: -#if YY_CPLUSPLUS < 201103L +#if !defined __cplusplus || __cplusplus < 201103L /// Assignment operator. - basic_symbol& operator= (const basic_symbol& that); + basic_symbol& operator= (const basic_symbol& other); #endif }; @@ -688,13 +652,8 @@ switch (yytype) /// Default constructor. by_type (); -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - by_type (by_type&& that); -#endif - /// Copy constructor. - by_type (const by_type& that); + by_type (const by_type& other); /// The symbol type as needed by the constructor. typedef token_type kind_type; @@ -710,10 +669,10 @@ switch (yytype) /// The (internal) type number (corresponding to \a type). /// \a empty when empty. - symbol_number_type type_get () const YY_NOEXCEPT; + symbol_number_type type_get () const; /// The token. - token_type token () const YY_NOEXCEPT; + token_type token () const; /// The symbol type. /// \a empty_symbol when empty. @@ -722,81 +681,7 @@ switch (yytype) }; /// "External" symbols: returned by the scanner. - struct symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; - - /// Empty symbol. - symbol_type () {} - - /// 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)) - { - YYASSERT (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_NETCONF || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_BOOT_UPDATE || tok == token::TOKEN_SUBSCRIBE_CHANGES || tok == token::TOKEN_VALIDATE_CHANGES || tok == token::TOKEN_MANAGED_SERVERS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_CA_SERVER || tok == token::TOKEN_MODEL || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HTTP || tok == token::TOKEN_STDOUT || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_URL || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_START_JSON || tok == token::TOKEN_START_NETCONF || tok == token::TOKEN_START_SUB_NETCONF); - } -#else - symbol_type (int tok, const location_type& l) - : super_type(token_type (tok), l) - { - YYASSERT (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_NETCONF || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_BOOT_UPDATE || tok == token::TOKEN_SUBSCRIBE_CHANGES || tok == token::TOKEN_VALIDATE_CHANGES || tok == token::TOKEN_MANAGED_SERVERS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_CA_SERVER || tok == token::TOKEN_MODEL || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HTTP || tok == token::TOKEN_STDOUT || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_URL || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_START_JSON || tok == token::TOKEN_START_NETCONF || tok == token::TOKEN_START_SUB_NETCONF); - } -#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)) - { - YYASSERT (tok == token::TOKEN_BOOLEAN); - } -#else - symbol_type (int tok, const bool& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (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)) - { - YYASSERT (tok == token::TOKEN_FLOAT); - } -#else - symbol_type (int tok, const double& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (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)) - { - YYASSERT (tok == token::TOKEN_INTEGER); - } -#else - symbol_type (int tok, const int64_t& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (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)) - { - YYASSERT (tok == token::TOKEN_STRING); - } -#else - symbol_type (int tok, const std::string& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (tok == token::TOKEN_STRING); - } -#endif - }; + typedef basic_symbol symbol_type; /// Build a parser object. NetconfParser (isc::netconf::ParserContext& ctx_yyarg); @@ -832,712 +717,199 @@ switch (yytype) /// Report a syntax error. void error (const syntax_error& err); - // 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 -#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_NETCONF (location_type l) - { - return symbol_type (token::TOKEN_NETCONF, std::move (l)); - } -#else - static - symbol_type - make_NETCONF (const location_type& l) - { - return symbol_type (token::TOKEN_NETCONF, 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_BOOT_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_BOOT_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_BOOT_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_BOOT_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBSCRIBE_CHANGES (location_type l) - { - return symbol_type (token::TOKEN_SUBSCRIBE_CHANGES, std::move (l)); - } -#else - static - symbol_type - make_SUBSCRIBE_CHANGES (const location_type& l) - { - return symbol_type (token::TOKEN_SUBSCRIBE_CHANGES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_VALIDATE_CHANGES (location_type l) - { - return symbol_type (token::TOKEN_VALIDATE_CHANGES, std::move (l)); - } -#else - static - symbol_type - make_VALIDATE_CHANGES (const location_type& l) - { - return symbol_type (token::TOKEN_VALIDATE_CHANGES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MANAGED_SERVERS (location_type l) - { - return symbol_type (token::TOKEN_MANAGED_SERVERS, std::move (l)); - } -#else - static - symbol_type - make_MANAGED_SERVERS (const location_type& l) - { - return symbol_type (token::TOKEN_MANAGED_SERVERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP4_SERVER (location_type l) - { - return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l)); - } -#else - static - symbol_type - make_DHCP4_SERVER (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP4_SERVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP6_SERVER (location_type l) - { - return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l)); - } -#else - static - symbol_type - make_DHCP6_SERVER (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP6_SERVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_D2_SERVER (location_type l) - { - return symbol_type (token::TOKEN_D2_SERVER, std::move (l)); - } -#else - static - symbol_type - make_D2_SERVER (const location_type& l) - { - return symbol_type (token::TOKEN_D2_SERVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CA_SERVER (location_type l) - { - return symbol_type (token::TOKEN_CA_SERVER, std::move (l)); - } -#else - static - symbol_type - make_CA_SERVER (const location_type& l) - { - return symbol_type (token::TOKEN_CA_SERVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MODEL (location_type l) - { - return symbol_type (token::TOKEN_MODEL, std::move (l)); - } -#else - static - symbol_type - make_MODEL (const location_type& l) - { - return symbol_type (token::TOKEN_MODEL, 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_UNIX (location_type l) - { - return symbol_type (token::TOKEN_UNIX, std::move (l)); - } -#else - static - symbol_type - make_UNIX (const location_type& l) - { - return symbol_type (token::TOKEN_UNIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HTTP (location_type l) - { - return symbol_type (token::TOKEN_HTTP, std::move (l)); - } -#else - static - symbol_type - make_HTTP (const location_type& l) - { - return symbol_type (token::TOKEN_HTTP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STDOUT (location_type l) - { - return symbol_type (token::TOKEN_STDOUT, std::move (l)); - } -#else - static - symbol_type - make_STDOUT (const location_type& l) - { - return symbol_type (token::TOKEN_STDOUT, 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_SOCKET_URL (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_URL, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_URL (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_URL, 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_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_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_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_START_JSON (location_type l) - { - return symbol_type (token::TOKEN_START_JSON, std::move (l)); - } -#else - static - symbol_type - make_START_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_START_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_START_NETCONF (location_type l) - { - return symbol_type (token::TOKEN_START_NETCONF, std::move (l)); - } -#else - static - symbol_type - make_START_NETCONF (const location_type& l) - { - return symbol_type (token::TOKEN_START_NETCONF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_START_SUB_NETCONF (location_type l) - { - return symbol_type (token::TOKEN_START_SUB_NETCONF, std::move (l)); - } -#else - static - symbol_type - make_START_SUB_NETCONF (const location_type& l) - { - return symbol_type (token::TOKEN_START_SUB_NETCONF, 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 + // Symbol constructors declarations. + static + symbol_type + make_END (YY_COPY (location_type) l); + + static + symbol_type + make_COMMA (YY_COPY (location_type) l); + + static + symbol_type + make_COLON (YY_COPY (location_type) l); + + static + symbol_type + make_LSQUARE_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_RSQUARE_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_LCURLY_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_RCURLY_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_NULL_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_NETCONF (YY_COPY (location_type) l); + + static + symbol_type + make_USER_CONTEXT (YY_COPY (location_type) l); + + static + symbol_type + make_COMMENT (YY_COPY (location_type) l); + + static + symbol_type + make_BOOT_UPDATE (YY_COPY (location_type) l); + + static + symbol_type + make_SUBSCRIBE_CHANGES (YY_COPY (location_type) l); + + static + symbol_type + make_VALIDATE_CHANGES (YY_COPY (location_type) l); + + static + symbol_type + make_MANAGED_SERVERS (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP4_SERVER (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP6_SERVER (YY_COPY (location_type) l); + + static + symbol_type + make_D2_SERVER (YY_COPY (location_type) l); + + static + symbol_type + make_CA_SERVER (YY_COPY (location_type) l); + + static + symbol_type + make_MODEL (YY_COPY (location_type) l); + + static + symbol_type + make_CONTROL_SOCKET (YY_COPY (location_type) l); + + static + symbol_type + make_SOCKET_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_UNIX (YY_COPY (location_type) l); + + static + symbol_type + make_HTTP (YY_COPY (location_type) l); + + static + symbol_type + make_STDOUT (YY_COPY (location_type) l); + + static + symbol_type + make_SOCKET_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_SOCKET_URL (YY_COPY (location_type) l); + + static + symbol_type + make_HOOKS_LIBRARIES (YY_COPY (location_type) l); + + static + symbol_type + make_LIBRARY (YY_COPY (location_type) l); + + static + symbol_type + make_PARAMETERS (YY_COPY (location_type) l); + + static + symbol_type + make_LOGGING (YY_COPY (location_type) l); + + static + symbol_type + make_LOGGERS (YY_COPY (location_type) l); + + static + symbol_type + make_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_OUTPUT_OPTIONS (YY_COPY (location_type) l); + + static + symbol_type + make_OUTPUT (YY_COPY (location_type) l); + + static + symbol_type + make_DEBUGLEVEL (YY_COPY (location_type) l); + + static + symbol_type + make_SEVERITY (YY_COPY (location_type) l); + + static + symbol_type + make_FLUSH (YY_COPY (location_type) l); + + static + symbol_type + make_MAXSIZE (YY_COPY (location_type) l); + + static + symbol_type + make_MAXVER (YY_COPY (location_type) l); + + static + symbol_type + make_PATTERN (YY_COPY (location_type) l); + + static + symbol_type + make_START_JSON (YY_COPY (location_type) l); + + static + symbol_type + make_START_NETCONF (YY_COPY (location_type) l); + + static + symbol_type + make_START_SUB_NETCONF (YY_COPY (location_type) l); + + static + symbol_type + make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l); + + static + symbol_type + make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l); + + static + symbol_type + make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l); + private: @@ -1645,26 +1017,26 @@ switch (yytype) struct by_state { /// Default constructor. - by_state () YY_NOEXCEPT; + by_state (); /// The symbol type as needed by the constructor. typedef state_type kind_type; /// Constructor. - by_state (kind_type s) YY_NOEXCEPT; + by_state (kind_type s); /// Copy constructor. - by_state (const by_state& that) YY_NOEXCEPT; + by_state (const by_state& other); /// Record that this symbol is empty. - void clear () YY_NOEXCEPT; + 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 YY_NOEXCEPT; + symbol_number_type type_get () const; /// The state number used to denote an empty symbol. enum { empty_state = -1 }; @@ -1685,137 +1057,13 @@ switch (yytype) 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 +#if !defined __cplusplus || __cplusplus < 201103L /// Assignment, needed by push_back by some old implementations. /// Moves the contents of that. stack_symbol_type& operator= (stack_symbol_type& that); #endif }; - /// A stack with random access from its top. - template > - 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; - - stack (size_type n = 200) - : seq_ (n) - {} - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (size_type i) - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (int i) - { - return operator[] (size_type (i)); - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (size_type i) const - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (int i) const - { - return operator[] (size_type (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); - } - - /// Pop elements from the stack. - void - pop (int n = 1) YY_NOEXCEPT - { - for (; 0 < n; --n) - seq_.pop_back (); - } - - /// Pop all elements from the stack. - void - clear () YY_NOEXCEPT - { - seq_.clear (); - } - - /// Number of elements on the stack. - size_type - size () const YY_NOEXCEPT - { - return seq_.size (); - } - - /// Iterator on top of the stack (going downwards). - const_iterator - begin () const YY_NOEXCEPT - { - return seq_.rbegin (); - } - - /// Bottom of the stack. - const_iterator - end () const YY_NOEXCEPT - { - return seq_.rend (); - } - - /// Present a slice of the top of a stack. - class slice - { - public: - slice (const stack& stack, int range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (int i) const - { - return stack_[range_ - i]; - } - - private: - const stack& stack_; - int range_; - }; - - private: - stack (const stack&); - stack& operator= (const stack&); - /// The wrapped container. - S seq_; - }; - - /// Stack type. typedef stack stack_type; @@ -1844,12 +1092,12 @@ switch (yytype) enum { yyeof_ = 0, - yylast_ = 232, ///< Last index in yytable_. - yynnts_ = 103, ///< Number of nonterminal symbols. + yylast_ = 234, ///< Last index in yytable_. + yynnts_ = 105, ///< Number of nonterminal symbols. yyfinal_ = 8, ///< Termination state number. yyterror_ = 1, yyerrcode_ = 256, - yyntokens_ = 49 ///< Number of tokens. + yyntokens_ = 50 ///< Number of tokens. }; @@ -1857,17 +1105,16 @@ switch (yytype) isc::netconf::ParserContext& ctx; }; + // Symbol number corresponding to token number t. inline NetconfParser::token_number_type NetconfParser::yytranslate_ (token_type t) { - // 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, + 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, @@ -1897,9 +1144,9 @@ switch (yytype) 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 + 45, 46, 47, 48, 49 }; - const unsigned user_token_number_max_ = 303; + const unsigned user_token_number_max_ = 304; const token_number_type undef_token_ = 2; if (static_cast (t) <= yyeof_) @@ -1910,36 +1157,47 @@ switch (yytype) return undef_token_; } + inline + NetconfParser::syntax_error::syntax_error (const location_type& l, const std::string& m) + : std::runtime_error (m) + , location (l) + {} + // basic_symbol. -#if 201103L <= YY_CPLUSPLUS template - NetconfParser::basic_symbol::basic_symbol (basic_symbol&& that) - : Base (std::move (that)) + NetconfParser::basic_symbol::basic_symbol () + : value () + , location () + {} + + template + NetconfParser::basic_symbol::basic_symbol (YY_RVREF (basic_symbol) other) + : Base (YY_MOVE (other)) , value () - , location (std::move (that.location)) + , location (YY_MOVE (other.location)) { - switch (this->type_get ()) + switch (other.type_get ()) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value - value.move< ElementPtr > (std::move (that.value)); + case 58: // value + case 61: // map_value + case 120: // socket_type_value + value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value)); break; - case 48: // "boolean" - value.move< bool > (std::move (that.value)); + case 49: // "boolean" + value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value)); break; - case 47: // "floating point" - value.move< double > (std::move (that.value)); + case 48: // "floating point" + value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value)); break; - case 46: // "integer" - value.move< int64_t > (std::move (that.value)); + case 47: // "integer" + value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value)); break; - case 45: // "constant string" - value.move< std::string > (std::move (that.value)); + case 46: // "constant string" + value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value)); break; default: @@ -1947,49 +1205,107 @@ switch (yytype) } } -#endif + + // Implementation of basic_symbol constructor for each type. template - NetconfParser::basic_symbol::basic_symbol (const basic_symbol& that) - : Base (that) - , value () - , location (that.location) + NetconfParser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l) + : Base (t) + , location (YY_MOVE (l)) + {} + + template + NetconfParser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + NetconfParser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + NetconfParser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + NetconfParser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + NetconfParser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + + + template + NetconfParser::basic_symbol::~basic_symbol () { - switch (this->type_get ()) + clear (); + } + + template + void + NetconfParser::basic_symbol::clear () + { + // User destructor. + symbol_number_type yytype = this->type_get (); + basic_symbol& yysym = *this; + (void) yysym; + switch (yytype) + { + default: + break; + } + + // Type destructor. + switch (yytype) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value - value.copy< ElementPtr > (YY_MOVE (that.value)); + case 58: // value + case 61: // map_value + case 120: // socket_type_value + value.template destroy< ElementPtr > (); break; - case 48: // "boolean" - value.copy< bool > (YY_MOVE (that.value)); + case 49: // "boolean" + value.template destroy< bool > (); break; - case 47: // "floating point" - value.copy< double > (YY_MOVE (that.value)); + case 48: // "floating point" + value.template destroy< double > (); break; - case 46: // "integer" - value.copy< int64_t > (YY_MOVE (that.value)); + case 47: // "integer" + value.template destroy< int64_t > (); break; - case 45: // "constant string" - value.copy< std::string > (YY_MOVE (that.value)); + case 46: // "constant string" + value.template destroy< std::string > (); break; default: break; } + Base::clear (); } - - template bool - NetconfParser::basic_symbol::empty () const YY_NOEXCEPT + NetconfParser::basic_symbol::empty () const { return Base::type_get () == empty_symbol; } @@ -2001,25 +1317,25 @@ switch (yytype) super_type::move (s); switch (this->type_get ()) { - case 57: // value - case 60: // map_value - case 119: // socket_type_value + case 58: // value + case 61: // map_value + case 120: // socket_type_value value.move< ElementPtr > (YY_MOVE (s.value)); break; - case 48: // "boolean" + case 49: // "boolean" value.move< bool > (YY_MOVE (s.value)); break; - case 47: // "floating point" + case 48: // "floating point" value.move< double > (YY_MOVE (s.value)); break; - case 46: // "integer" + case 47: // "integer" value.move< int64_t > (YY_MOVE (s.value)); break; - case 45: // "constant string" + case 46: // "constant string" value.move< std::string > (YY_MOVE (s.value)); break; @@ -2036,18 +1352,9 @@ switch (yytype) : type (empty_symbol) {} -#if 201103L <= YY_CPLUSPLUS - inline - NetconfParser::by_type::by_type (by_type&& that) - : type (that.type) - { - that.clear (); - } -#endif - inline - NetconfParser::by_type::by_type (const by_type& that) - : type (that.type) + NetconfParser::by_type::by_type (const by_type& other) + : type (other.type) {} inline @@ -2072,14 +1379,14 @@ switch (yytype) inline int - NetconfParser::by_type::type_get () const YY_NOEXCEPT + NetconfParser::by_type::type_get () const { return type; } inline NetconfParser::token_type - NetconfParser::by_type::token () const YY_NOEXCEPT + NetconfParser::by_type::token () const { // YYTOKNUM[NUM] -- (External) token number corresponding to the // (internal) symbol number NUM (which must be that of a token). */ @@ -2091,15 +1398,352 @@ switch (yytype) 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 + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304 }; - return token_type (yytoken_number_[type]); + return static_cast (yytoken_number_[type]); } -#line 14 "netconf_parser.yy" -} } // isc::netconf -#line 2102 "netconf_parser.h" + // Implementation of make_symbol for each symbol type. + inline + NetconfParser::symbol_type + NetconfParser::make_END (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_END, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_COMMA (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_COMMA, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_COLON (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_COLON, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_LSQUARE_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_RSQUARE_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_LCURLY_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_RCURLY_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_NULL_TYPE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_NETCONF (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NETCONF, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_USER_CONTEXT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_COMMENT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_BOOT_UPDATE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_BOOT_UPDATE, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_SUBSCRIBE_CHANGES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUBSCRIBE_CHANGES, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_VALIDATE_CHANGES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_VALIDATE_CHANGES, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_MANAGED_SERVERS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MANAGED_SERVERS, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_DHCP4_SERVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP4_SERVER, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_DHCP6_SERVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP6_SERVER, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_D2_SERVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_D2_SERVER, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_CA_SERVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CA_SERVER, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_MODEL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MODEL, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_CONTROL_SOCKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONTROL_SOCKET, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_SOCKET_TYPE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_UNIX (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_UNIX, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_HTTP (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HTTP, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_STDOUT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_STDOUT, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_SOCKET_NAME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l)); + } + inline + NetconfParser::symbol_type + NetconfParser::make_SOCKET_URL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SOCKET_URL, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_LIBRARY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_PARAMETERS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_LOGGING (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_LOGGERS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_NAME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NAME, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_OUTPUT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_DEBUGLEVEL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_SEVERITY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_FLUSH (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_MAXSIZE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_MAXVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_PATTERN (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PATTERN, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_START_JSON (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_START_JSON, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_START_NETCONF (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_START_NETCONF, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_START_SUB_NETCONF (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_START_SUB_NETCONF, YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l)); + } + + inline + NetconfParser::symbol_type + NetconfParser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l)); + } + + +#line 14 "netconf_parser.yy" // lalr1.cc:404 +} } // isc::netconf +#line 1747 "netconf_parser.h" // lalr1.cc:404 diff --git a/src/bin/netconf/netconf_parser.yy b/src/bin/netconf/netconf_parser.yy index 56898e07b9..438e253fb3 100644 --- a/src/bin/netconf/netconf_parser.yy +++ b/src/bin/netconf/netconf_parser.yy @@ -85,6 +85,7 @@ using namespace std; FLUSH "flush" MAXSIZE "maxsize" MAXVER "maxver" + PATTERN "pattern" // Not real tokens, just a way to signal what the parser is expected to // parse. This define the starting point. It either can be full grammar @@ -673,6 +674,7 @@ output_params: output | flush | maxsize | maxver + | pattern ; output: OUTPUT { @@ -698,6 +700,14 @@ maxver: MAXVER COLON INTEGER { ctx.stack_.back()->set("maxver", maxver); }; +pattern: PATTERN { + ctx.enter(ctx.NO_KEYWORDS); +} COLON STRING { + ElementPtr sev(new StringElement($4, ctx.loc2pos(@4))); + ctx.stack_.back()->set("pattern", sev); + ctx.leave(); +}; + %% void diff --git a/src/bin/netconf/position.hh b/src/bin/netconf/position.hh index 4640297fec..22ef35f744 100644 --- a/src/bin/netconf/position.hh +++ b/src/bin/netconf/position.hh @@ -1,5 +1,4 @@ -// Generated 201906181715 -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.2.1. // Starting with Bison 3.2, this file is useless: the structure it // used to define is now defined in "location.hh". diff --git a/src/bin/netconf/stack.hh b/src/bin/netconf/stack.hh index 5bfd9a6442..81e152d836 100644 --- a/src/bin/netconf/stack.hh +++ b/src/bin/netconf/stack.hh @@ -1,5 +1,4 @@ -// Generated 201906181715 -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.2.1. // Starting with Bison 3.2, this file is useless: the structure it // used to define is now defined with the parser itself.