44 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
45 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
47 #line 17 "dhcp6_parser.yy" // lalr1.cc:404
52 #include <boost/lexical_cast.hpp>
59 #line 60 "dhcp6_parser.h" // lalr1.cc:404
68 #if defined __cplusplus
69 # define YY_CPLUSPLUS __cplusplus
71 # define YY_CPLUSPLUS 199711L
75 #if 201103L <= YY_CPLUSPLUS
76 # define YY_MOVE std::move
77 # define YY_MOVE_OR_COPY move
78 # define YY_MOVE_REF(Type) Type&&
79 # define YY_RVREF(Type) Type&&
80 # define YY_COPY(Type) Type
83 # define YY_MOVE_OR_COPY copy
84 # define YY_MOVE_REF(Type) Type&
85 # define YY_RVREF(Type) const Type&
86 # define YY_COPY(Type) const Type&
88 # include "location.hh"
92 # define YYASSERT assert
97 # if (defined __GNUC__ \
98 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
99 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
100 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
102 # define YY_ATTRIBUTE(Spec)
106 #ifndef YY_ATTRIBUTE_PURE
107 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
110 #ifndef YY_ATTRIBUTE_UNUSED
111 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
115 #if ! defined lint || defined __GNUC__
116 # define YYUSE(E) ((void) (E))
121 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
123 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
124 _Pragma ("GCC diagnostic push") \
125 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
126 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
127 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
128 _Pragma ("GCC diagnostic pop")
130 # define YY_INITIAL_VALUE(Value) Value
132 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
133 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
134 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
136 #ifndef YY_INITIAL_VALUE
137 # define YY_INITIAL_VALUE(Value)
141 # if defined __cplusplus
142 # if 201103L <= __cplusplus
143 # define YY_NULLPTR nullptr
145 # define YY_NULLPTR 0
148 # define YY_NULLPTR ((void*)0)
153 #ifndef PARSER6_DEBUG
156 # define PARSER6_DEBUG 1
158 # define PARSER6_DEBUG 0
161 # define PARSER6_DEBUG 1
165 #line 14 "dhcp6_parser.yy" // lalr1.cc:404
166 namespace isc {
namespace dhcp {
167 #line 168 "dhcp6_parser.h" // lalr1.cc:404
170 template <
typename T,
typename S = std::vector<T> >
189 return seq_[size () - 1 - i];
207 return seq_[size () - 1 - i];
214 operator[] (
int i)
const
225 seq_.push_back (T ());
226 operator[](0).move (t);
251 return seq_.rbegin ();
268 template <
typename T,
typename S = stack<T> >
278 operator[] (
int i)
const
280 return stack_[range_ - i];
304 , yytypeid_ (YY_NULLPTR)
308 template <
typename T>
310 : yytypeid_ (&typeid (T))
313 new (yyas_<T> ()) T (
YY_MOVE (t));
323 template <
typename T>
329 yytypeid_ = &
typeid (T);
330 return *
new (yyas_<T> ()) T ();
333 # if 201103L <= YY_CPLUSPLUS
334 template <
typename T,
typename U>
341 yytypeid_ = &
typeid (T);
342 return *
new (yyas_<T> ()) T (std::forward <U>(u));
345 template <
typename T>
352 yytypeid_ = &
typeid (T);
353 return *
new (yyas_<T> ()) T (t);
359 template <
typename T>
363 return emplace<T> ();
368 template <
typename T>
372 return emplace<T> (t);
376 template <
typename T>
381 YYASSERT (*yytypeid_ ==
typeid (T));
387 template <
typename T>
392 YYASSERT (*yytypeid_ ==
typeid (T));
405 template <
typename T>
410 YYASSERT (*yytypeid_ == *other.yytypeid_);
411 std::swap (as<T> (), other.
as<T> ());
417 template <
typename T>
421 # if 201103L <= YY_CPLUSPLUS
422 emplace<T> (std::move (other.
as<T> ()));
430 # if 201103L <= YY_CPLUSPLUS
431 template <
typename T>
434 move (self_type&& other)
436 emplace<T> (std::move (other.as<T> ()));
442 template <
typename T>
446 emplace<T> (other.
as<T> ());
450 template <
typename T>
455 yytypeid_ = YY_NULLPTR;
460 self_type& operator= (
const self_type&);
464 template <
typename T>
468 void *yyp = yybuffer_.yyraw;
469 return static_cast<T*
> (yyp);
473 template <
typename T>
477 const void *yyp = yybuffer_.yyraw;
478 return static_cast<const T*
> (yyp);
484 long double yyalign_me;
490 const std::type_info *yytypeid_;
498 #ifndef PARSER6_STYPE
512 char dummy2[
sizeof (bool)];
515 char dummy3[
sizeof (double)];
518 char dummy4[
sizeof (int64_t)];
521 char dummy5[
sizeof (std::string)];
547 TOKEN_LSQUARE_BRACKET = 260,
548 TOKEN_RSQUARE_BRACKET = 261,
549 TOKEN_LCURLY_BRACKET = 262,
550 TOKEN_RCURLY_BRACKET = 263,
551 TOKEN_NULL_TYPE = 264,
553 TOKEN_CONFIG_CONTROL = 266,
554 TOKEN_CONFIG_DATABASES = 267,
555 TOKEN_INTERFACES_CONFIG = 268,
556 TOKEN_INTERFACES = 269,
557 TOKEN_RE_DETECT = 270,
558 TOKEN_LEASE_DATABASE = 271,
559 TOKEN_HOSTS_DATABASE = 272,
560 TOKEN_HOSTS_DATABASES = 273,
564 TOKEN_POSTGRESQL = 277,
567 TOKEN_PASSWORD = 280,
571 TOKEN_LFC_INTERVAL = 284,
572 TOKEN_READONLY = 285,
573 TOKEN_CONNECT_TIMEOUT = 286,
574 TOKEN_CONTACT_POINTS = 287,
575 TOKEN_MAX_RECONNECT_TRIES = 288,
576 TOKEN_RECONNECT_WAIT_TIME = 289,
577 TOKEN_KEYSPACE = 290,
578 TOKEN_REQUEST_TIMEOUT = 291,
579 TOKEN_TCP_KEEPALIVE = 292,
580 TOKEN_TCP_NODELAY = 293,
581 TOKEN_PREFERRED_LIFETIME = 294,
582 TOKEN_VALID_LIFETIME = 295,
583 TOKEN_RENEW_TIMER = 296,
584 TOKEN_REBIND_TIMER = 297,
585 TOKEN_DECLINE_PROBATION_PERIOD = 298,
586 TOKEN_SERVER_TAG = 299,
588 TOKEN_OPTION_DEF = 301,
589 TOKEN_OPTION_DATA = 302,
594 TOKEN_CSV_FORMAT = 307,
595 TOKEN_ALWAYS_SEND = 308,
596 TOKEN_RECORD_TYPES = 309,
597 TOKEN_ENCAPSULATE = 310,
601 TOKEN_PD_POOLS = 314,
603 TOKEN_PREFIX_LEN = 316,
604 TOKEN_EXCLUDED_PREFIX = 317,
605 TOKEN_EXCLUDED_PREFIX_LEN = 318,
606 TOKEN_DELEGATED_LEN = 319,
607 TOKEN_USER_CONTEXT = 320,
610 TOKEN_INTERFACE = 323,
611 TOKEN_INTERFACE_ID = 324,
613 TOKEN_RAPID_COMMIT = 326,
614 TOKEN_RESERVATION_MODE = 327,
615 TOKEN_DISABLED = 328,
616 TOKEN_OUT_OF_POOL = 329,
619 TOKEN_SHARED_NETWORKS = 332,
620 TOKEN_MAC_SOURCES = 333,
621 TOKEN_RELAY_SUPPLIED_OPTIONS = 334,
622 TOKEN_HOST_RESERVATION_IDENTIFIERS = 335,
623 TOKEN_SANITY_CHECKS = 336,
624 TOKEN_LEASE_CHECKS = 337,
625 TOKEN_CLIENT_CLASSES = 338,
626 TOKEN_REQUIRE_CLIENT_CLASSES = 339,
628 TOKEN_ONLY_IF_REQUIRED = 341,
629 TOKEN_CLIENT_CLASS = 342,
630 TOKEN_RESERVATIONS = 343,
631 TOKEN_IP_ADDRESSES = 344,
632 TOKEN_PREFIXES = 345,
634 TOKEN_HW_ADDRESS = 347,
635 TOKEN_HOSTNAME = 348,
638 TOKEN_IP_ADDRESS = 351,
639 TOKEN_HOOKS_LIBRARIES = 352,
641 TOKEN_PARAMETERS = 354,
642 TOKEN_EXPIRED_LEASES_PROCESSING = 355,
643 TOKEN_RECLAIM_TIMER_WAIT_TIME = 356,
644 TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 357,
645 TOKEN_HOLD_RECLAIMED_TIME = 358,
646 TOKEN_MAX_RECLAIM_LEASES = 359,
647 TOKEN_MAX_RECLAIM_TIME = 360,
648 TOKEN_UNWARNED_RECLAIM_CYCLES = 361,
649 TOKEN_SERVER_ID = 362,
653 TOKEN_IDENTIFIER = 366,
656 TOKEN_ENTERPRISE_ID = 369,
657 TOKEN_DHCP4O6_PORT = 370,
658 TOKEN_CONTROL_SOCKET = 371,
659 TOKEN_SOCKET_TYPE = 372,
660 TOKEN_SOCKET_NAME = 373,
661 TOKEN_DHCP_QUEUE_CONTROL = 374,
662 TOKEN_DHCP_DDNS = 375,
663 TOKEN_ENABLE_UPDATES = 376,
664 TOKEN_QUALIFYING_SUFFIX = 377,
665 TOKEN_SERVER_IP = 378,
666 TOKEN_SERVER_PORT = 379,
667 TOKEN_SENDER_IP = 380,
668 TOKEN_SENDER_PORT = 381,
669 TOKEN_MAX_QUEUE_SIZE = 382,
670 TOKEN_NCR_PROTOCOL = 383,
671 TOKEN_NCR_FORMAT = 384,
672 TOKEN_OVERRIDE_NO_UPDATE = 385,
673 TOKEN_OVERRIDE_CLIENT_UPDATE = 386,
674 TOKEN_REPLACE_CLIENT_NAME = 387,
675 TOKEN_GENERATED_PREFIX = 388,
679 TOKEN_WHEN_PRESENT = 392,
682 TOKEN_WHEN_NOT_PRESENT = 395,
683 TOKEN_HOSTNAME_CHAR_SET = 396,
684 TOKEN_HOSTNAME_CHAR_REPLACEMENT = 397,
687 TOKEN_OUTPUT_OPTIONS = 400,
689 TOKEN_DEBUGLEVEL = 402,
690 TOKEN_SEVERITY = 403,
695 TOKEN_DHCPDDNS = 408,
696 TOKEN_CONTROL_AGENT = 409,
697 TOKEN_TOPLEVEL_JSON = 410,
698 TOKEN_TOPLEVEL_DHCP6 = 411,
699 TOKEN_SUB_DHCP6 = 412,
700 TOKEN_SUB_INTERFACES6 = 413,
701 TOKEN_SUB_SUBNET6 = 414,
702 TOKEN_SUB_POOL6 = 415,
703 TOKEN_SUB_PD_POOL = 416,
704 TOKEN_SUB_RESERVATION = 417,
705 TOKEN_SUB_OPTION_DEFS = 418,
706 TOKEN_SUB_OPTION_DEF = 419,
707 TOKEN_SUB_OPTION_DATA = 420,
708 TOKEN_SUB_HOOKS_LIBRARY = 421,
709 TOKEN_SUB_DHCP_DDNS = 422,
710 TOKEN_SUB_LOGGING = 423,
711 TOKEN_SUB_CONFIG_CONTROL = 424,
726 enum { empty_symbol = -2 };
737 template <
typename Base>
751 # if 201103L <= YY_CPLUSPLUS
756 # if 201103L <= YY_CPLUSPLUS
761 # if 201103L <= YY_CPLUSPLUS
766 # if 201103L <= YY_CPLUSPLUS
771 # if 201103L <= YY_CPLUSPLUS
776 # if 201103L <= YY_CPLUSPLUS
802 #if YY_CPLUSPLUS < 201103L
855 virtual int parse ();
861 void set_debug_stream (std::ostream &);
874 virtual void error (
const location_type& loc,
const std::string& msg);
1576 typedef int state_type;
1581 virtual std::string yysyntax_error_ (state_type yystate,
1587 state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
1591 static bool yy_pact_value_is_default_ (
int yyvalue);
1595 static bool yy_table_value_is_error_ (
int yyvalue);
1597 static const short yypact_ninf_;
1598 static const signed char yytable_ninf_;
1606 static const short yypact_[];
1611 static const unsigned short yydefact_[];
1614 static const short yypgoto_[];
1617 static const short yydefgoto_[];
1622 static const unsigned short yytable_[];
1624 static const short yycheck_[];
1628 static const unsigned short yystos_[];
1631 static const unsigned short yyr1_[];
1634 static const unsigned char yyr2_[];
1638 static std::string yytnamerr_ (
const char *n);
1642 static const char*
const yytname_[];
1645 static const unsigned short yyrline_[];
1647 virtual void yy_reduce_print_ (
int r);
1649 virtual void yystack_print_ ();
1654 std::ostream* yycdebug_;
1659 template <
typename Base>
1667 template <
typename Base>
1678 typedef state_type kind_type;
1681 by_state (kind_type s);
1684 by_state (
const by_state& other);
1690 void move (by_state& that);
1697 enum { empty_state = -1 };
1705 struct stack_symbol_type : basic_symbol<by_state>
1708 typedef basic_symbol<by_state> super_type;
1710 stack_symbol_type ();
1712 stack_symbol_type (
YY_RVREF (stack_symbol_type) that);
1714 stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) sym);
1715 #if YY_CPLUSPLUS < 201103L
1716 stack_symbol_type& operator= (stack_symbol_type& that);
1726 stack_type yystack_;
1733 void yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym);
1741 void yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym);
1744 void yypop_ (
int n = 1);
1766 Dhcp6Parser::yytranslate_ (token_type t)
1769 const token_number_type
1772 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1797 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1798 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1799 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1800 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1801 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1802 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1803 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1804 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1805 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1806 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1807 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1808 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1809 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1810 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1811 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1812 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1813 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1814 165, 166, 167, 168, 169, 170, 171, 172, 173
1816 const unsigned user_token_number_max_ = 428;
1817 const token_number_type undef_token_ = 2;
1819 if (
static_cast<int> (t) <= yyeof_)
1821 else if (
static_cast<unsigned> (t) <= user_token_number_max_)
1822 return translate_table[t];
1824 return undef_token_;
1829 : std::runtime_error (m)
1834 template <
typename Base>
1840 template <
typename Base>
1844 , location (
YY_MOVE (other.location))
1846 switch (other.type_get ())
1882 # if 201103L <= YY_CPLUSPLUS
1883 template <
typename Base>
1886 , location (std::move (l))
1889 template <
typename Base>
1895 # if 201103L <= YY_CPLUSPLUS
1896 template <
typename Base>
1899 , value (std::move (v))
1900 , location (std::move (l))
1903 template <
typename Base>
1910 # if 201103L <= YY_CPLUSPLUS
1911 template <
typename Base>
1914 , value (std::move (v))
1915 , location (std::move (l))
1918 template <
typename Base>
1925 # if 201103L <= YY_CPLUSPLUS
1926 template <
typename Base>
1929 , value (std::move (v))
1930 , location (std::move (l))
1933 template <
typename Base>
1940 # if 201103L <= YY_CPLUSPLUS
1941 template <
typename Base>
1944 , value (std::move (v))
1945 , location (std::move (l))
1948 template <
typename Base>
1955 # if 201103L <= YY_CPLUSPLUS
1956 template <
typename Base>
1959 , value (std::move (v))
1960 , location (std::move (l))
1963 template <
typename Base>
1972 template <
typename Base>
1978 template <
typename Base>
2002 value.template destroy< ElementPtr > ();
2006 value.template destroy< bool > ();
2010 value.template destroy< double > ();
2014 value.template destroy< int64_t > ();
2018 value.template destroy< std::string > ();
2028 template <
typename Base>
2035 template <
typename Base>
2039 super_type::move (s);
2040 switch (this->type_get ())
2088 : type (yytranslate_ (t))
2120 const unsigned short
2123 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2124 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
2125 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2126 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2127 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
2128 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2129 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
2130 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2131 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2132 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
2133 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
2134 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2135 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
2136 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
2137 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2138 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
2139 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
2142 return static_cast<token_type> (yytoken_number_[type]);
3351 #line 14 "dhcp6_parser.yy" // lalr1.cc:404
3353 #line 3354 "dhcp6_parser.h" // lalr1.cc:404
3358 #endif // !YY_PARSER6_DHCP6_PARSER_H_INCLUDED