44 #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
45 # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
47 #line 17 "dhcp4_parser.yy" // lalr1.cc:404
52 #include <boost/lexical_cast.hpp>
59 #line 60 "dhcp4_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 PARSER4_DEBUG
156 # define PARSER4_DEBUG 1
158 # define PARSER4_DEBUG 0
161 # define PARSER4_DEBUG 1
165 #line 14 "dhcp4_parser.yy" // lalr1.cc:404
166 namespace isc {
namespace dhcp {
167 #line 168 "dhcp4_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);
490 const std::type_info *yytypeid_;
498 #ifndef PARSER4_STYPE
513 char dummy2[
sizeof (bool)];
516 char dummy3[
sizeof (double)];
519 char dummy4[
sizeof (int64_t)];
522 char dummy5[
sizeof (std::string)];
548 TOKEN_LSQUARE_BRACKET = 260,
549 TOKEN_RSQUARE_BRACKET = 261,
550 TOKEN_LCURLY_BRACKET = 262,
551 TOKEN_RCURLY_BRACKET = 263,
552 TOKEN_NULL_TYPE = 264,
554 TOKEN_CONFIG_CONTROL = 266,
555 TOKEN_CONFIG_DATABASES = 267,
556 TOKEN_INTERFACES_CONFIG = 268,
557 TOKEN_INTERFACES = 269,
558 TOKEN_DHCP_SOCKET_TYPE = 270,
561 TOKEN_OUTBOUND_INTERFACE = 273,
562 TOKEN_SAME_AS_INBOUND = 274,
563 TOKEN_USE_ROUTING = 275,
564 TOKEN_RE_DETECT = 276,
565 TOKEN_SANITY_CHECKS = 277,
566 TOKEN_LEASE_CHECKS = 278,
567 TOKEN_ECHO_CLIENT_ID = 279,
568 TOKEN_MATCH_CLIENT_ID = 280,
569 TOKEN_AUTHORITATIVE = 281,
570 TOKEN_NEXT_SERVER = 282,
571 TOKEN_SERVER_HOSTNAME = 283,
572 TOKEN_BOOT_FILE_NAME = 284,
573 TOKEN_LEASE_DATABASE = 285,
574 TOKEN_HOSTS_DATABASE = 286,
575 TOKEN_HOSTS_DATABASES = 287,
579 TOKEN_POSTGRESQL = 291,
582 TOKEN_PASSWORD = 294,
586 TOKEN_LFC_INTERVAL = 298,
587 TOKEN_READONLY = 299,
588 TOKEN_CONNECT_TIMEOUT = 300,
589 TOKEN_CONTACT_POINTS = 301,
590 TOKEN_KEYSPACE = 302,
591 TOKEN_MAX_RECONNECT_TRIES = 303,
592 TOKEN_RECONNECT_WAIT_TIME = 304,
593 TOKEN_REQUEST_TIMEOUT = 305,
594 TOKEN_TCP_KEEPALIVE = 306,
595 TOKEN_TCP_NODELAY = 307,
596 TOKEN_VALID_LIFETIME = 308,
597 TOKEN_RENEW_TIMER = 309,
598 TOKEN_REBIND_TIMER = 310,
599 TOKEN_DECLINE_PROBATION_PERIOD = 311,
600 TOKEN_SERVER_TAG = 312,
602 TOKEN_SUBNET_4O6_INTERFACE = 314,
603 TOKEN_SUBNET_4O6_INTERFACE_ID = 315,
604 TOKEN_SUBNET_4O6_SUBNET = 316,
605 TOKEN_OPTION_DEF = 317,
606 TOKEN_OPTION_DATA = 318,
611 TOKEN_CSV_FORMAT = 323,
612 TOKEN_ALWAYS_SEND = 324,
613 TOKEN_RECORD_TYPES = 325,
614 TOKEN_ENCAPSULATE = 326,
616 TOKEN_SHARED_NETWORKS = 328,
619 TOKEN_USER_CONTEXT = 331,
622 TOKEN_INTERFACE = 334,
624 TOKEN_RESERVATION_MODE = 336,
625 TOKEN_DISABLED = 337,
626 TOKEN_OUT_OF_POOL = 338,
629 TOKEN_HOST_RESERVATION_IDENTIFIERS = 341,
630 TOKEN_CLIENT_CLASSES = 342,
631 TOKEN_REQUIRE_CLIENT_CLASSES = 343,
633 TOKEN_ONLY_IF_REQUIRED = 345,
634 TOKEN_CLIENT_CLASS = 346,
635 TOKEN_RESERVATIONS = 347,
637 TOKEN_HW_ADDRESS = 349,
638 TOKEN_CIRCUIT_ID = 350,
639 TOKEN_CLIENT_ID = 351,
640 TOKEN_HOSTNAME = 352,
643 TOKEN_IP_ADDRESS = 355,
644 TOKEN_IP_ADDRESSES = 356,
645 TOKEN_HOOKS_LIBRARIES = 357,
647 TOKEN_PARAMETERS = 359,
648 TOKEN_EXPIRED_LEASES_PROCESSING = 360,
649 TOKEN_RECLAIM_TIMER_WAIT_TIME = 361,
650 TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 362,
651 TOKEN_HOLD_RECLAIMED_TIME = 363,
652 TOKEN_MAX_RECLAIM_LEASES = 364,
653 TOKEN_MAX_RECLAIM_TIME = 365,
654 TOKEN_UNWARNED_RECLAIM_CYCLES = 366,
655 TOKEN_DHCP4O6_PORT = 367,
656 TOKEN_CONTROL_SOCKET = 368,
657 TOKEN_SOCKET_TYPE = 369,
658 TOKEN_SOCKET_NAME = 370,
659 TOKEN_DHCP_QUEUE_CONTROL = 371,
660 TOKEN_DHCP_DDNS = 372,
661 TOKEN_ENABLE_UPDATES = 373,
662 TOKEN_QUALIFYING_SUFFIX = 374,
663 TOKEN_SERVER_IP = 375,
664 TOKEN_SERVER_PORT = 376,
665 TOKEN_SENDER_IP = 377,
666 TOKEN_SENDER_PORT = 378,
667 TOKEN_MAX_QUEUE_SIZE = 379,
668 TOKEN_NCR_PROTOCOL = 380,
669 TOKEN_NCR_FORMAT = 381,
670 TOKEN_OVERRIDE_NO_UPDATE = 382,
671 TOKEN_OVERRIDE_CLIENT_UPDATE = 383,
672 TOKEN_REPLACE_CLIENT_NAME = 384,
673 TOKEN_GENERATED_PREFIX = 385,
676 TOKEN_WHEN_PRESENT = 388,
679 TOKEN_WHEN_NOT_PRESENT = 391,
680 TOKEN_HOSTNAME_CHAR_SET = 392,
681 TOKEN_HOSTNAME_CHAR_REPLACEMENT = 393,
684 TOKEN_OUTPUT_OPTIONS = 396,
686 TOKEN_DEBUGLEVEL = 398,
687 TOKEN_SEVERITY = 399,
692 TOKEN_DHCPDDNS = 404,
693 TOKEN_CONTROL_AGENT = 405,
694 TOKEN_TOPLEVEL_JSON = 406,
695 TOKEN_TOPLEVEL_DHCP4 = 407,
696 TOKEN_SUB_DHCP4 = 408,
697 TOKEN_SUB_INTERFACES4 = 409,
698 TOKEN_SUB_SUBNET4 = 410,
699 TOKEN_SUB_POOL4 = 411,
700 TOKEN_SUB_RESERVATION = 412,
701 TOKEN_SUB_OPTION_DEFS = 413,
702 TOKEN_SUB_OPTION_DEF = 414,
703 TOKEN_SUB_OPTION_DATA = 415,
704 TOKEN_SUB_HOOKS_LIBRARY = 416,
705 TOKEN_SUB_DHCP_DDNS = 417,
706 TOKEN_SUB_LOGGING = 418,
707 TOKEN_SUB_CONFIG_CONTROL = 419,
722 enum { empty_symbol = -2 };
733 template <
typename Base>
747 # if 201103L <= YY_CPLUSPLUS
752 # if 201103L <= YY_CPLUSPLUS
757 # if 201103L <= YY_CPLUSPLUS
762 # if 201103L <= YY_CPLUSPLUS
767 # if 201103L <= YY_CPLUSPLUS
772 # if 201103L <= YY_CPLUSPLUS
798 #if YY_CPLUSPLUS < 201103L
851 virtual int parse ();
857 void set_debug_stream (std::ostream &);
870 virtual void error (
const location_type& loc,
const std::string& msg);
1552 typedef int state_type;
1557 virtual std::string yysyntax_error_ (state_type yystate,
1563 state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
1567 static bool yy_pact_value_is_default_ (
int yyvalue);
1571 static bool yy_table_value_is_error_ (
int yyvalue);
1573 static const short yypact_ninf_;
1574 static const signed char yytable_ninf_;
1582 static const short yypact_[];
1587 static const unsigned short yydefact_[];
1590 static const short yypgoto_[];
1593 static const short yydefgoto_[];
1598 static const unsigned short yytable_[];
1600 static const short yycheck_[];
1604 static const unsigned short yystos_[];
1607 static const unsigned short yyr1_[];
1610 static const unsigned char yyr2_[];
1614 static std::string yytnamerr_ (
const char *n);
1618 static const char*
const yytname_[];
1621 static const unsigned short yyrline_[];
1623 virtual void yy_reduce_print_ (
int r);
1625 virtual void yystack_print_ ();
1630 std::ostream* yycdebug_;
1635 template <
typename Base>
1643 template <
typename Base>
1654 typedef state_type kind_type;
1657 by_state (kind_type s);
1660 by_state (
const by_state& other);
1666 void move (by_state& that);
1673 enum { empty_state = -1 };
1681 struct stack_symbol_type : basic_symbol<by_state>
1684 typedef basic_symbol<by_state> super_type;
1686 stack_symbol_type ();
1688 stack_symbol_type (
YY_RVREF (stack_symbol_type) that);
1690 stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) sym);
1691 #if YY_CPLUSPLUS < 201103L
1692 stack_symbol_type& operator= (stack_symbol_type& that);
1702 stack_type yystack_;
1709 void yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym);
1717 void yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym);
1720 void yypop_ (
int n = 1);
1742 Dhcp4Parser::yytranslate_ (token_type t)
1745 const token_number_type
1748 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1749 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1750 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1751 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1752 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1753 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1754 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1755 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1756 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1757 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1761 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1762 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1765 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1766 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1767 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1769 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1770 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1771 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1772 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1774 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1775 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1776 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1777 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1778 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1779 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1780 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1781 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1782 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1783 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1784 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1785 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1786 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1787 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1788 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1789 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1792 const unsigned user_token_number_max_ = 423;
1793 const token_number_type undef_token_ = 2;
1795 if (
static_cast<int> (t) <= yyeof_)
1797 else if (
static_cast<unsigned> (t) <= user_token_number_max_)
1798 return translate_table[t];
1800 return undef_token_;
1805 : std::runtime_error (m)
1810 template <
typename Base>
1816 template <
typename Base>
1820 , location (
YY_MOVE (other.location))
1822 switch (other.type_get ())
1859 # if 201103L <= YY_CPLUSPLUS
1860 template <
typename Base>
1863 , location (std::move (l))
1866 template <
typename Base>
1872 # if 201103L <= YY_CPLUSPLUS
1873 template <
typename Base>
1876 , value (std::move (v))
1877 , location (std::move (l))
1880 template <
typename Base>
1887 # if 201103L <= YY_CPLUSPLUS
1888 template <
typename Base>
1891 , value (std::move (v))
1892 , location (std::move (l))
1895 template <
typename Base>
1902 # if 201103L <= YY_CPLUSPLUS
1903 template <
typename Base>
1906 , value (std::move (v))
1907 , location (std::move (l))
1910 template <
typename Base>
1917 # if 201103L <= YY_CPLUSPLUS
1918 template <
typename Base>
1921 , value (std::move (v))
1922 , location (std::move (l))
1925 template <
typename Base>
1932 # if 201103L <= YY_CPLUSPLUS
1933 template <
typename Base>
1936 , value (std::move (v))
1937 , location (std::move (l))
1940 template <
typename Base>
1949 template <
typename Base>
1955 template <
typename Base>
1980 value.template destroy< ElementPtr > ();
1984 value.template destroy< bool > ();
1988 value.template destroy< double > ();
1992 value.template destroy< int64_t > ();
1996 value.template destroy< std::string > ();
2006 template <
typename Base>
2013 template <
typename Base>
2017 super_type::move (s);
2018 switch (this->type_get ())
2067 : type (yytranslate_ (t))
2099 const unsigned short
2102 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2103 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
2104 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2105 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2106 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
2107 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2108 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
2109 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2110 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2111 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
2112 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
2113 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2114 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
2115 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
2116 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2117 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
2118 415, 416, 417, 418, 419, 420, 421, 422, 423
2120 return static_cast<token_type> (yytoken_number_[type]);
3294 #line 14 "dhcp4_parser.yy" // lalr1.cc:404
3296 #line 3297 "dhcp4_parser.h" // lalr1.cc:404
3301 #endif // !YY_PARSER4_DHCP4_PARSER_H_INCLUDED