45#ifndef YY_D2_PARSER_D2_PARSER_H_INCLUDED
46# define YY_D2_PARSER_D2_PARSER_H_INCLUDED
48#line 17 "d2_parser.yy"
54#include <boost/lexical_cast.hpp>
70#if defined __cplusplus
71# define YY_CPLUSPLUS __cplusplus
73# define YY_CPLUSPLUS 199711L
77#if 201103L <= YY_CPLUSPLUS
78# define YY_MOVE std::move
79# define YY_MOVE_OR_COPY move
80# define YY_MOVE_REF(Type) Type&&
81# define YY_RVREF(Type) Type&&
82# define YY_COPY(Type) Type
85# define YY_MOVE_OR_COPY copy
86# define YY_MOVE_REF(Type) Type&
87# define YY_RVREF(Type) const Type&
88# define YY_COPY(Type) const Type&
92#if 201103L <= YY_CPLUSPLUS
93# define YY_NOEXCEPT noexcept
97# define YY_NOTHROW throw ()
101#if 201703 <= YY_CPLUSPLUS
102# define YY_CONSTEXPR constexpr
106# include "location.hh"
108#ifndef D2_PARSER__ASSERT
110# define D2_PARSER__ASSERT assert
114#ifndef YY_ATTRIBUTE_PURE
115# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
116# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
118# define YY_ATTRIBUTE_PURE
122#ifndef YY_ATTRIBUTE_UNUSED
123# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
124# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
126# define YY_ATTRIBUTE_UNUSED
131#if ! defined lint || defined __GNUC__
132# define YY_USE(E) ((void) (E))
138#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
139# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
140# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
141 _Pragma ("GCC diagnostic push") \
142 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
144# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
145 _Pragma ("GCC diagnostic push") \
146 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
147 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
149# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
150 _Pragma ("GCC diagnostic pop")
152# define YY_INITIAL_VALUE(Value) Value
154#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
155# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
156# define YY_IGNORE_MAYBE_UNINITIALIZED_END
158#ifndef YY_INITIAL_VALUE
159# define YY_INITIAL_VALUE(Value)
162#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
163# define YY_IGNORE_USELESS_CAST_BEGIN \
164 _Pragma ("GCC diagnostic push") \
165 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
166# define YY_IGNORE_USELESS_CAST_END \
167 _Pragma ("GCC diagnostic pop")
169#ifndef YY_IGNORE_USELESS_CAST_BEGIN
170# define YY_IGNORE_USELESS_CAST_BEGIN
171# define YY_IGNORE_USELESS_CAST_END
176# define YY_CAST(Type, Val) static_cast<Type> (Val)
177# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
179# define YY_CAST(Type, Val) ((Type) (Val))
180# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
184# if defined __cplusplus
185# if 201103L <= __cplusplus
186# define YY_NULLPTR nullptr
191# define YY_NULLPTR ((void*)0)
196#ifndef D2_PARSER_DEBUG
199# define D2_PARSER_DEBUG 1
201# define D2_PARSER_DEBUG 0
204# define D2_PARSER_DEBUG 1
208#line 14 "d2_parser.yy"
209namespace isc {
namespace d2 {
210#line 211 "d2_parser.h"
219#ifdef D2_PARSER_STYPE
221# pragma GCC message "bison: do not #define D2_PARSER_STYPE in C++, use %define api.value.type"
239 , yytypeid_ (YY_NULLPTR)
243 template <
typename T>
245 : yytypeid_ (&typeid (T))
248 new (yyas_<T> ()) T (
YY_MOVE (t));
251#if 201103L <= YY_CPLUSPLUS
264# if 201103L <= YY_CPLUSPLUS
266 template <
typename T,
typename... U>
272 yytypeid_ = &
typeid (T);
273 return *
new (yyas_<T> ()) T (std::forward <U>(u)...);
277 template <
typename T>
283 yytypeid_ = &
typeid (T);
284 return *
new (yyas_<T> ()) T ();
288 template <
typename T>
294 yytypeid_ = &
typeid (T);
295 return *
new (yyas_<T> ()) T (t);
301 template <
typename T>
310 template <
typename T>
318 template <
typename T>
329 template <
typename T>
347 template <
typename T>
353 std::swap (
as<T> (), that.as<T> ());
359 template <
typename T>
363# if 201103L <= YY_CPLUSPLUS
372# if 201103L <= YY_CPLUSPLUS
374 template <
typename T>
384 template <
typename T>
392 template <
typename T>
397 yytypeid_ = YY_NULLPTR;
401#if YY_CPLUSPLUS < 201103L
409 template <
typename T>
414 return static_cast<T*
> (yyp);
418 template <
typename T>
423 return static_cast<const T*
> (yyp);
437 char dummy2[
sizeof (bool)];
440 char dummy3[
sizeof (double)];
443 char dummy4[
sizeof (int64_t)];
446 char dummy5[
sizeof (std::string)];
450 enum { size =
sizeof (union_type) };
462 const std::type_info *yytypeid_;
476 : std::runtime_error (m)
481 : std::runtime_error (s.what ())
887 template <
typename Base>
899#if 201103L <= YY_CPLUSPLUS
902 : Base (std::move (that))
904 , location (std::move (that.location))
906 switch (this->kind ())
913 value.move<
ElementPtr > (std::move (that.value));
917 value.move<
bool > (std::move (that.value));
921 value.move<
double > (std::move (that.value));
925 value.move< int64_t > (std::move (that.value));
929 value.move< std::string > (std::move (that.value));
943#if 201103L <= YY_CPLUSPLUS
955#if 201103L <= YY_CPLUSPLUS
958 , value (std::move (v))
959 , location (std::move (l))
969#if 201103L <= YY_CPLUSPLUS
972 , value (std::move (v))
973 , location (std::move (l))
983#if 201103L <= YY_CPLUSPLUS
986 , value (std::move (v))
987 , location (std::move (l))
997#if 201103L <= YY_CPLUSPLUS
1000 , value (std::move (v))
1001 , location (std::move (l))
1011#if 201103L <= YY_CPLUSPLUS
1014 , value (std::move (v))
1015 , location (std::move (l))
1054 value.template destroy< ElementPtr > ();
1058 value.template destroy< bool > ();
1062 value.template destroy< double > ();
1066 value.template destroy< int64_t > ();
1070 value.template destroy< std::string > ();
1102#if YY_CPLUSPLUS < 201103L
1117#if 201103L <= YY_CPLUSPLUS
1161#if 201103L <= YY_CPLUSPLUS
1169#if !defined _MSC_VER || defined __clang__
1174#if 201103L <= YY_CPLUSPLUS
1182#if !defined _MSC_VER || defined __clang__
1186#if 201103L <= YY_CPLUSPLUS
1194#if !defined _MSC_VER || defined __clang__
1198#if 201103L <= YY_CPLUSPLUS
1206#if !defined _MSC_VER || defined __clang__
1210#if 201103L <= YY_CPLUSPLUS
1218#if !defined _MSC_VER || defined __clang__
1228#if 201103L <= YY_CPLUSPLUS
1241 virtual int parse ();
1247 void set_debug_stream (std::ostream &);
1250 typedef
int debug_level_type;
1254 void set_debug_level (debug_level_type l);
1260 virtual void error (
const location_type& loc,
const std::string& msg);
1263 void error (
const syntax_error& err);
1267 static std::string symbol_name (symbol_kind_type yysymbol);
1270#if 201103L <= YY_CPLUSPLUS
1273 make_END (location_type l)
1275 return symbol_type (token::TOKEN_END, std::move (l));
1285#if 201103L <= YY_CPLUSPLUS
1288 make_D2_PARSER_error (location_type l)
1290 return symbol_type (token::TOKEN_D2_PARSER_error, std::move (l));
1300#if 201103L <= YY_CPLUSPLUS
1303 make_D2_PARSER_UNDEF (location_type l)
1305 return symbol_type (token::TOKEN_D2_PARSER_UNDEF, std::move (l));
1315#if 201103L <= YY_CPLUSPLUS
1318 make_COMMA (location_type l)
1320 return symbol_type (token::TOKEN_COMMA, std::move (l));
1330#if 201103L <= YY_CPLUSPLUS
1333 make_COLON (location_type l)
1335 return symbol_type (token::TOKEN_COLON, std::move (l));
1345#if 201103L <= YY_CPLUSPLUS
1348 make_LSQUARE_BRACKET (location_type l)
1350 return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
1360#if 201103L <= YY_CPLUSPLUS
1363 make_RSQUARE_BRACKET (location_type l)
1365 return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
1375#if 201103L <= YY_CPLUSPLUS
1378 make_LCURLY_BRACKET (location_type l)
1380 return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
1390#if 201103L <= YY_CPLUSPLUS
1393 make_RCURLY_BRACKET (location_type l)
1395 return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
1405#if 201103L <= YY_CPLUSPLUS
1408 make_NULL_TYPE (location_type l)
1410 return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
1420#if 201103L <= YY_CPLUSPLUS
1423 make_DHCPDDNS (location_type l)
1425 return symbol_type (token::TOKEN_DHCPDDNS, std::move (l));
1435#if 201103L <= YY_CPLUSPLUS
1438 make_IP_ADDRESS (location_type l)
1440 return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l));
1450#if 201103L <= YY_CPLUSPLUS
1453 make_PORT (location_type l)
1455 return symbol_type (token::TOKEN_PORT, std::move (l));
1465#if 201103L <= YY_CPLUSPLUS
1468 make_DNS_SERVER_TIMEOUT (location_type l)
1470 return symbol_type (token::TOKEN_DNS_SERVER_TIMEOUT, std::move (l));
1480#if 201103L <= YY_CPLUSPLUS
1483 make_NCR_PROTOCOL (location_type l)
1485 return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l));
1495#if 201103L <= YY_CPLUSPLUS
1498 make_UDP (location_type l)
1500 return symbol_type (token::TOKEN_UDP, std::move (l));
1510#if 201103L <= YY_CPLUSPLUS
1513 make_TCP (location_type l)
1515 return symbol_type (token::TOKEN_TCP, std::move (l));
1525#if 201103L <= YY_CPLUSPLUS
1528 make_NCR_FORMAT (location_type l)
1530 return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l));
1540#if 201103L <= YY_CPLUSPLUS
1543 make_JSON (location_type l)
1545 return symbol_type (token::TOKEN_JSON, std::move (l));
1555#if 201103L <= YY_CPLUSPLUS
1558 make_USER_CONTEXT (location_type l)
1560 return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
1570#if 201103L <= YY_CPLUSPLUS
1573 make_COMMENT (location_type l)
1575 return symbol_type (token::TOKEN_COMMENT, std::move (l));
1585#if 201103L <= YY_CPLUSPLUS
1588 make_FORWARD_DDNS (location_type l)
1590 return symbol_type (token::TOKEN_FORWARD_DDNS, std::move (l));
1600#if 201103L <= YY_CPLUSPLUS
1603 make_REVERSE_DDNS (location_type l)
1605 return symbol_type (token::TOKEN_REVERSE_DDNS, std::move (l));
1615#if 201103L <= YY_CPLUSPLUS
1618 make_DDNS_DOMAINS (location_type l)
1620 return symbol_type (token::TOKEN_DDNS_DOMAINS, std::move (l));
1630#if 201103L <= YY_CPLUSPLUS
1633 make_KEY_NAME (location_type l)
1635 return symbol_type (token::TOKEN_KEY_NAME, std::move (l));
1645#if 201103L <= YY_CPLUSPLUS
1648 make_DNS_SERVERS (location_type l)
1650 return symbol_type (token::TOKEN_DNS_SERVERS, std::move (l));
1660#if 201103L <= YY_CPLUSPLUS
1663 make_HOSTNAME (location_type l)
1665 return symbol_type (token::TOKEN_HOSTNAME, std::move (l));
1675#if 201103L <= YY_CPLUSPLUS
1678 make_TSIG_KEYS (location_type l)
1680 return symbol_type (token::TOKEN_TSIG_KEYS, std::move (l));
1690#if 201103L <= YY_CPLUSPLUS
1693 make_ALGORITHM (location_type l)
1695 return symbol_type (token::TOKEN_ALGORITHM, std::move (l));
1705#if 201103L <= YY_CPLUSPLUS
1708 make_DIGEST_BITS (location_type l)
1710 return symbol_type (token::TOKEN_DIGEST_BITS, std::move (l));
1720#if 201103L <= YY_CPLUSPLUS
1723 make_SECRET (location_type l)
1725 return symbol_type (token::TOKEN_SECRET, std::move (l));
1735#if 201103L <= YY_CPLUSPLUS
1738 make_SECRET_FILE (location_type l)
1740 return symbol_type (token::TOKEN_SECRET_FILE, std::move (l));
1750#if 201103L <= YY_CPLUSPLUS
1753 make_CONTROL_SOCKETS (location_type l)
1755 return symbol_type (token::TOKEN_CONTROL_SOCKETS, std::move (l));
1765#if 201103L <= YY_CPLUSPLUS
1768 make_SOCKET_TYPE (location_type l)
1770 return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
1780#if 201103L <= YY_CPLUSPLUS
1783 make_UNIX (location_type l)
1785 return symbol_type (token::TOKEN_UNIX, std::move (l));
1795#if 201103L <= YY_CPLUSPLUS
1798 make_HTTP (location_type l)
1800 return symbol_type (token::TOKEN_HTTP, std::move (l));
1810#if 201103L <= YY_CPLUSPLUS
1813 make_HTTPS (location_type l)
1815 return symbol_type (token::TOKEN_HTTPS, std::move (l));
1825#if 201103L <= YY_CPLUSPLUS
1828 make_SOCKET_NAME (location_type l)
1830 return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
1840#if 201103L <= YY_CPLUSPLUS
1843 make_SOCKET_ADDRESS (location_type l)
1845 return symbol_type (token::TOKEN_SOCKET_ADDRESS, std::move (l));
1855#if 201103L <= YY_CPLUSPLUS
1858 make_SOCKET_PORT (location_type l)
1860 return symbol_type (token::TOKEN_SOCKET_PORT, std::move (l));
1870#if 201103L <= YY_CPLUSPLUS
1873 make_AUTHENTICATION (location_type l)
1875 return symbol_type (token::TOKEN_AUTHENTICATION, std::move (l));
1885#if 201103L <= YY_CPLUSPLUS
1888 make_TYPE (location_type l)
1890 return symbol_type (token::TOKEN_TYPE, std::move (l));
1900#if 201103L <= YY_CPLUSPLUS
1903 make_BASIC (location_type l)
1905 return symbol_type (token::TOKEN_BASIC, std::move (l));
1915#if 201103L <= YY_CPLUSPLUS
1918 make_REALM (location_type l)
1920 return symbol_type (token::TOKEN_REALM, std::move (l));
1930#if 201103L <= YY_CPLUSPLUS
1933 make_DIRECTORY (location_type l)
1935 return symbol_type (token::TOKEN_DIRECTORY, std::move (l));
1945#if 201103L <= YY_CPLUSPLUS
1948 make_CLIENTS (location_type l)
1950 return symbol_type (token::TOKEN_CLIENTS, std::move (l));
1960#if 201103L <= YY_CPLUSPLUS
1963 make_USER (location_type l)
1965 return symbol_type (token::TOKEN_USER, std::move (l));
1975#if 201103L <= YY_CPLUSPLUS
1978 make_USER_FILE (location_type l)
1980 return symbol_type (token::TOKEN_USER_FILE, std::move (l));
1990#if 201103L <= YY_CPLUSPLUS
1993 make_PASSWORD (location_type l)
1995 return symbol_type (token::TOKEN_PASSWORD, std::move (l));
2005#if 201103L <= YY_CPLUSPLUS
2008 make_PASSWORD_FILE (location_type l)
2010 return symbol_type (token::TOKEN_PASSWORD_FILE, std::move (l));
2020#if 201103L <= YY_CPLUSPLUS
2023 make_TRUST_ANCHOR (location_type l)
2025 return symbol_type (token::TOKEN_TRUST_ANCHOR, std::move (l));
2035#if 201103L <= YY_CPLUSPLUS
2038 make_CERT_FILE (location_type l)
2040 return symbol_type (token::TOKEN_CERT_FILE, std::move (l));
2050#if 201103L <= YY_CPLUSPLUS
2053 make_KEY_FILE (location_type l)
2055 return symbol_type (token::TOKEN_KEY_FILE, std::move (l));
2065#if 201103L <= YY_CPLUSPLUS
2068 make_CERT_REQUIRED (location_type l)
2070 return symbol_type (token::TOKEN_CERT_REQUIRED, std::move (l));
2080#if 201103L <= YY_CPLUSPLUS
2083 make_HOOKS_LIBRARIES (location_type l)
2085 return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
2095#if 201103L <= YY_CPLUSPLUS
2098 make_LIBRARY (location_type l)
2100 return symbol_type (token::TOKEN_LIBRARY, std::move (l));
2110#if 201103L <= YY_CPLUSPLUS
2113 make_PARAMETERS (location_type l)
2115 return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
2125#if 201103L <= YY_CPLUSPLUS
2128 make_LOGGERS (location_type l)
2130 return symbol_type (token::TOKEN_LOGGERS, std::move (l));
2140#if 201103L <= YY_CPLUSPLUS
2143 make_NAME (location_type l)
2145 return symbol_type (token::TOKEN_NAME, std::move (l));
2155#if 201103L <= YY_CPLUSPLUS
2158 make_OUTPUT_OPTIONS (location_type l)
2160 return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
2170#if 201103L <= YY_CPLUSPLUS
2173 make_OUTPUT (location_type l)
2175 return symbol_type (token::TOKEN_OUTPUT, std::move (l));
2185#if 201103L <= YY_CPLUSPLUS
2188 make_DEBUGLEVEL (location_type l)
2190 return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
2200#if 201103L <= YY_CPLUSPLUS
2203 make_SEVERITY (location_type l)
2205 return symbol_type (token::TOKEN_SEVERITY, std::move (l));
2215#if 201103L <= YY_CPLUSPLUS
2218 make_FLUSH (location_type l)
2220 return symbol_type (token::TOKEN_FLUSH, std::move (l));
2230#if 201103L <= YY_CPLUSPLUS
2233 make_MAXSIZE (location_type l)
2235 return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
2245#if 201103L <= YY_CPLUSPLUS
2248 make_MAXVER (location_type l)
2250 return symbol_type (token::TOKEN_MAXVER, std::move (l));
2260#if 201103L <= YY_CPLUSPLUS
2263 make_PATTERN (location_type l)
2265 return symbol_type (token::TOKEN_PATTERN, std::move (l));
2275#if 201103L <= YY_CPLUSPLUS
2278 make_TOPLEVEL_JSON (location_type l)
2280 return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l));
2290#if 201103L <= YY_CPLUSPLUS
2293 make_TOPLEVEL_DHCPDDNS (location_type l)
2295 return symbol_type (token::TOKEN_TOPLEVEL_DHCPDDNS, std::move (l));
2305#if 201103L <= YY_CPLUSPLUS
2308 make_SUB_DHCPDDNS (location_type l)
2310 return symbol_type (token::TOKEN_SUB_DHCPDDNS, std::move (l));
2320#if 201103L <= YY_CPLUSPLUS
2323 make_SUB_TSIG_KEY (location_type l)
2325 return symbol_type (token::TOKEN_SUB_TSIG_KEY, std::move (l));
2335#if 201103L <= YY_CPLUSPLUS
2338 make_SUB_TSIG_KEYS (location_type l)
2340 return symbol_type (token::TOKEN_SUB_TSIG_KEYS, std::move (l));
2350#if 201103L <= YY_CPLUSPLUS
2353 make_SUB_DDNS_DOMAIN (location_type l)
2355 return symbol_type (token::TOKEN_SUB_DDNS_DOMAIN, std::move (l));
2365#if 201103L <= YY_CPLUSPLUS
2368 make_SUB_DDNS_DOMAINS (location_type l)
2370 return symbol_type (token::TOKEN_SUB_DDNS_DOMAINS, std::move (l));
2380#if 201103L <= YY_CPLUSPLUS
2383 make_SUB_DNS_SERVER (location_type l)
2385 return symbol_type (token::TOKEN_SUB_DNS_SERVER, std::move (l));
2395#if 201103L <= YY_CPLUSPLUS
2398 make_SUB_DNS_SERVERS (location_type l)
2400 return symbol_type (token::TOKEN_SUB_DNS_SERVERS, std::move (l));
2410#if 201103L <= YY_CPLUSPLUS
2413 make_SUB_HOOKS_LIBRARY (location_type l)
2415 return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l));
2425#if 201103L <= YY_CPLUSPLUS
2428 make_STRING (std::string v, location_type l)
2430 return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
2440#if 201103L <= YY_CPLUSPLUS
2443 make_INTEGER (int64_t v, location_type l)
2445 return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
2455#if 201103L <= YY_CPLUSPLUS
2458 make_FLOAT (
double v, location_type l)
2460 return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
2470#if 201103L <= YY_CPLUSPLUS
2473 make_BOOLEAN (
bool v, location_type l)
2475 return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
2506#if YY_CPLUSPLUS < 201103L
2515 typedef short state_type;
2518 int yy_syntax_error_arguments_ (
const context& yyctx,
2519 symbol_kind_type yyarg[],
int yyargn)
const;
2523 virtual std::string yysyntax_error_ (
const context& yyctx)
const;
2527 static state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
2531 static bool yy_pact_value_is_default_ (
int yyvalue)
YY_NOEXCEPT;
2535 static bool yy_table_value_is_error_ (
int yyvalue)
YY_NOEXCEPT;
2537 static const short yypact_ninf_;
2538 static const signed char yytable_ninf_;
2543 static symbol_kind_type yytranslate_ (
int t)
YY_NOEXCEPT;
2546 static std::string yytnamerr_ (
const char *yystr);
2549 static const char*
const yytname_[];
2555 static const short yypact_[];
2560 static const short yydefact_[];
2563 static const short yypgoto_[];
2566 static const short yydefgoto_[];
2571 static const short yytable_[];
2573 static const short yycheck_[];
2577 static const short yystos_[];
2580 static const short yyr1_[];
2583 static const signed char yyr2_[];
2588 static const short yyrline_[];
2590 virtual void yy_reduce_print_ (
int r)
const;
2592 virtual void yy_stack_print_ ()
const;
2597 std::ostream* yycdebug_;
2602 template <
typename Base>
2603 void yy_print_ (std::ostream& yyo,
const basic_symbol<Base>& yysym)
const;
2610 template <
typename Base>
2611 void yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const;
2621 typedef state_type kind_type;
2633 void move (by_state& that);
2641 enum { empty_state = 0 };
2649 struct stack_symbol_type : basic_symbol<by_state>
2652 typedef basic_symbol<by_state> super_type;
2654 stack_symbol_type ();
2656 stack_symbol_type (
YY_RVREF (stack_symbol_type) that);
2658 stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) sym);
2659#if YY_CPLUSPLUS < 201103L
2662 stack_symbol_type& operator= (stack_symbol_type& that);
2666 stack_symbol_type& operator= (
const stack_symbol_type& that);
2671 template <
typename T,
typename S = std::vector<T> >
2676 typedef typename S::iterator iterator;
2677 typedef typename S::const_iterator const_iterator;
2678 typedef typename S::size_type size_type;
2679 typedef typename std::ptrdiff_t index_type;
2685#if 201103L <= YY_CPLUSPLUS
2687 stack (
const stack&) =
delete;
2689 stack& operator= (
const stack&) =
delete;
2696 operator[] (index_type i)
const
2698 return seq_[size_type (size () - 1 - i)];
2705 operator[] (index_type i)
2707 return seq_[size_type (size () - 1 - i)];
2716 seq_.push_back (T ());
2717 operator[] (0).move (t);
2739 return index_type (seq_.size ());
2746 return seq_.begin ();
2766 operator[] (index_type i)
const
2768 return stack_[range_ - i];
2772 const stack& stack_;
2777#if YY_CPLUSPLUS < 201103L
2779 stack (
const stack&);
2781 stack& operator= (
const stack&);
2789 typedef stack<stack_symbol_type> stack_type;
2792 stack_type yystack_;
2799 void yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym);
2807 void yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym);
2836 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2837 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2838 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2839 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2840 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2841 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2842 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2843 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2844 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2845 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2846 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2847 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2848 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2849 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2850 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2851 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2852 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2853 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2854 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2855 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2856 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2857 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2858 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2859 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2860 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2861 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2862 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2863 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2864 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2865 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2866 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2867 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2868 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
2869 75, 76, 77, 78, 79, 80
2872 const int code_max = 335;
2876 else if (t <= code_max)
2883 template <
typename Base>
2889 switch (this->kind ())
2924 template <
typename Base>
2928 return this->kind ();
2932 template <
typename Base>
2939 template <
typename Base>
2943 super_type::move (s);
2944 switch (this->kind ())
2983#if 201103L <= YY_CPLUSPLUS
2986 : kind_ (that.kind_)
2994 :
kind_ (that.kind_)
2999 :
kind_ (yytranslate_ (t))
3031 return this->
kind ();
3035#line 14 "d2_parser.yy"
3037#line 3038 "d2_parser.h"
Evaluation context, an interface to the expression evaluation.
context(const D2Parser &yyparser, const symbol_type &yyla)
const symbol_type & lookahead() const YY_NOEXCEPT
symbol_kind_type token() const YY_NOEXCEPT
const location_type & location() const YY_NOEXCEPT
slice(const stack &stack, index_type range) YY_NOEXCEPT
A buffer to store and retrieve objects.
value_type self_type
Type of *this.
T & emplace(const T &t)
Instantiate a T in here from t.
T & emplace()
Instantiate an empty T in here.
T & build()
Instantiate an empty T in here.
void copy(const self_type &that)
Copy the content of that to this.
long double yyalign_me_
Strongest alignment constraints.
T & as() YY_NOEXCEPT
Accessor to a built T.
value_type(YY_RVREF(T) t)
Construct and fill.
const T & as() const YY_NOEXCEPT
Const accessor to a built T (for printer).
~value_type() YY_NOEXCEPT
Destruction, allowed only if empty.
T & build(const T &t)
Instantiate a T in here from t.
void destroy()
Destroy the stored T.
char yyraw_[size]
A buffer large enough to store any of the semantic values.
void swap(self_type &that) YY_NOEXCEPT
Swap the content with that, of same type.
void move(self_type &that)
Move the content of that to this.
value_type() YY_NOEXCEPT
Empty construction.
static symbol_type make_COMMENT(const location_type &l)
static symbol_type make_AUTHENTICATION(const location_type &l)
static symbol_type make_STRING(const std::string &v, const location_type &l)
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
static symbol_type make_SUB_DDNS_DOMAIN(const location_type &l)
static symbol_type make_SUB_HOOKS_LIBRARY(const location_type &l)
static symbol_type make_LOGGERS(const location_type &l)
static symbol_type make_KEY_NAME(const location_type &l)
static symbol_type make_PARAMETERS(const location_type &l)
static symbol_type make_SUB_TSIG_KEYS(const location_type &l)
static symbol_type make_FORWARD_DDNS(const location_type &l)
static symbol_type make_SUB_DNS_SERVERS(const location_type &l)
static symbol_type make_TOPLEVEL_DHCPDDNS(const location_type &l)
static symbol_type make_SOCKET_TYPE(const location_type &l)
D2Parser(isc::d2::D2ParserContext &ctx_yyarg)
Build a parser object.
static symbol_type make_SUB_DDNS_DOMAINS(const location_type &l)
static symbol_type make_TCP(const location_type &l)
static symbol_type make_NAME(const location_type &l)
location location_type
Symbol locations.
static symbol_type make_MAXSIZE(const location_type &l)
static symbol_type make_PASSWORD_FILE(const location_type &l)
static symbol_type make_D2_PARSER_UNDEF(const location_type &l)
static symbol_type make_HTTPS(const location_type &l)
static symbol_type make_OUTPUT_OPTIONS(const location_type &l)
static symbol_type make_LSQUARE_BRACKET(const location_type &l)
static symbol_type make_PASSWORD(const location_type &l)
static symbol_type make_DEBUGLEVEL(const location_type &l)
static symbol_type make_LCURLY_BRACKET(const location_type &l)
static symbol_type make_DIGEST_BITS(const location_type &l)
static symbol_type make_SOCKET_ADDRESS(const location_type &l)
static symbol_type make_CERT_FILE(const location_type &l)
static symbol_type make_TOPLEVEL_JSON(const location_type &l)
static symbol_type make_SOCKET_NAME(const location_type &l)
static symbol_type make_DNS_SERVER_TIMEOUT(const location_type &l)
static symbol_type make_NULL_TYPE(const location_type &l)
static symbol_type make_LIBRARY(const location_type &l)
static symbol_type make_UDP(const location_type &l)
static symbol_type make_HOOKS_LIBRARIES(const location_type &l)
static symbol_type make_COLON(const location_type &l)
static symbol_type make_COMMA(const location_type &l)
static symbol_type make_SECRET(const location_type &l)
static symbol_type make_SUB_TSIG_KEY(const location_type &l)
static symbol_type make_RCURLY_BRACKET(const location_type &l)
static symbol_type make_UNIX(const location_type &l)
static symbol_type make_OUTPUT(const location_type &l)
value_type semantic_type
Backward compatibility (Bison 3.8).
static symbol_type make_SUB_DHCPDDNS(const location_type &l)
static const symbol_kind_type YYNTOKENS
The number of tokens.
static symbol_type make_INTEGER(const int64_t &v, const location_type &l)
static symbol_type make_DHCPDDNS(const location_type &l)
by_kind by_type
Backward compatibility for a private implementation detail (Bison 3.6).
static symbol_type make_D2_PARSER_error(const location_type &l)
static symbol_type make_CONTROL_SOCKETS(const location_type &l)
static symbol_type make_SUB_DNS_SERVER(const location_type &l)
static symbol_type make_MAXVER(const location_type &l)
static symbol_type make_SECRET_FILE(const location_type &l)
static symbol_type make_DDNS_DOMAINS(const location_type &l)
static symbol_type make_SEVERITY(const location_type &l)
static symbol_type make_REALM(const location_type &l)
static symbol_type make_RSQUARE_BRACKET(const location_type &l)
static symbol_type make_HTTP(const location_type &l)
static symbol_type make_HOSTNAME(const location_type &l)
static symbol_type make_USER_CONTEXT(const location_type &l)
static symbol_type make_USER(const location_type &l)
static symbol_type make_SOCKET_PORT(const location_type &l)
static symbol_type make_BASIC(const location_type &l)
static symbol_type make_FLUSH(const location_type &l)
static symbol_type make_REVERSE_DDNS(const location_type &l)
static symbol_type make_PATTERN(const location_type &l)
static symbol_type make_KEY_FILE(const location_type &l)
static symbol_type make_ALGORITHM(const location_type &l)
token::token_kind_type token_kind_type
Token kind, as returned by yylex.
static symbol_type make_IP_ADDRESS(const location_type &l)
static symbol_type make_PORT(const location_type &l)
static symbol_type make_CLIENTS(const location_type &l)
static symbol_type make_CERT_REQUIRED(const location_type &l)
static std::string symbol_name(symbol_kind_type yysymbol)
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
static symbol_type make_TYPE(const location_type &l)
static symbol_type make_TRUST_ANCHOR(const location_type &l)
static symbol_type make_FLOAT(const double &v, const location_type &l)
static symbol_type make_BOOLEAN(const bool &v, const location_type &l)
static symbol_type make_DIRECTORY(const location_type &l)
static symbol_type make_JSON(const location_type &l)
token_kind_type token_type
Backward compatibility alias (Bison 3.6).
static symbol_type make_END(const location_type &l)
static symbol_type make_NCR_PROTOCOL(const location_type &l)
static symbol_type make_DNS_SERVERS(const location_type &l)
static symbol_type make_USER_FILE(const location_type &l)
static symbol_type make_TSIG_KEYS(const location_type &l)
static symbol_type make_NCR_FORMAT(const location_type &l)
Forward declaration of the ParserContext class.
A collection of classes for housing and parsing the application configuration necessary for the DHCP-...
#define D2_PARSER__ASSERT
#define YY_MOVE_REF(Type)
#define YY_ATTRIBUTE_PURE
boost::shared_ptr< Element > ElementPtr
Defines the logger used by the top-level component of kea-lfc.
std::string name() const YY_NOEXCEPT
The user-facing name of this symbol.
basic_symbol() YY_NOEXCEPT
Default constructor.
basic_symbol(typename Base::kind_type t, const double &v, const location_type &l)
bool empty() const YY_NOEXCEPT
Base super_type
Alias to Base.
basic_symbol(typename Base::kind_type t, const std::string &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const location_type &l)
Constructors for typed symbols.
basic_symbol(typename Base::kind_type t, const int64_t &v, const location_type &l)
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
~basic_symbol()
Destroy the symbol.
basic_symbol(typename Base::kind_type t, const bool &v, const location_type &l)
void move(basic_symbol &s)
basic_symbol(const basic_symbol &that)
Copy constructor.
basic_symbol(typename Base::kind_type t, const ElementPtr &v, const location_type &l)
Type access provider for token (enum) based symbols.
void clear() YY_NOEXCEPT
Record that this symbol is empty.
by_kind() YY_NOEXCEPT
Default constructor.
token_kind_type kind_type
The symbol kind as needed by the constructor.
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
symbol_kind_type kind() const YY_NOEXCEPT
The (internal) type number (corresponding to type).
void move(by_kind &that)
Steal the symbol kind from that.
symbol_kind_type kind_
The symbol kind.
@ S_not_empty_tsig_keys_list
@ S_dns_server_ip_address
@ S_control_socket_address
@ S_control_socket_type_value
@ S_not_empty_ddns_mgr_params
@ S_not_empty_hooks_libraries_list
@ YYNTOKENS
Number of tokens.
@ S_not_empty_clients_list
@ S_control_socket_params
@ S_output_options_list_content
@ S_not_empty_control_socket_list
@ S_not_empty_ddns_domain_list
"External" symbols: returned by the scanner.
basic_symbol< by_kind > super_type
Superclass.
symbol_type() YY_NOEXCEPT
Empty symbol.
syntax_error(const location_type &l, const std::string &m)
~syntax_error() YY_NOEXCEPT YY_NOTHROW
syntax_error(const syntax_error &s)
token_kind_type yytokentype
Backward compatibility alias (Bison 3.6).
@ TOKEN_SUB_HOOKS_LIBRARY
@ TOKEN_TOPLEVEL_DHCPDDNS
@ TOKEN_DNS_SERVER_TIMEOUT