45#ifndef YY_EVAL_PARSER_H_INCLUDED
46# define YY_EVAL_PARSER_H_INCLUDED
54#include <boost/lexical_cast.hpp>
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&
90#if 201103L <= YY_CPLUSPLUS
91# define YY_NOEXCEPT noexcept
95# define YY_NOTHROW throw ()
99#if 201703 <= YY_CPLUSPLUS
100# define YY_CONSTEXPR constexpr
104# include "location.hh"
108# define EVAL_ASSERT assert
112#ifndef YY_ATTRIBUTE_PURE
113# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
114# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
116# define YY_ATTRIBUTE_PURE
120#ifndef YY_ATTRIBUTE_UNUSED
121# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
122# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
124# define YY_ATTRIBUTE_UNUSED
129#if ! defined lint || defined __GNUC__
130# define YY_USE(E) ((void) (E))
136#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
137# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
138# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
139 _Pragma ("GCC diagnostic push") \
140 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
142# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
143 _Pragma ("GCC diagnostic push") \
144 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
145 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
147# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
148 _Pragma ("GCC diagnostic pop")
150# define YY_INITIAL_VALUE(Value) Value
152#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
153# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
154# define YY_IGNORE_MAYBE_UNINITIALIZED_END
156#ifndef YY_INITIAL_VALUE
157# define YY_INITIAL_VALUE(Value)
160#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
161# define YY_IGNORE_USELESS_CAST_BEGIN \
162 _Pragma ("GCC diagnostic push") \
163 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
164# define YY_IGNORE_USELESS_CAST_END \
165 _Pragma ("GCC diagnostic pop")
167#ifndef YY_IGNORE_USELESS_CAST_BEGIN
168# define YY_IGNORE_USELESS_CAST_BEGIN
169# define YY_IGNORE_USELESS_CAST_END
174# define YY_CAST(Type, Val) static_cast<Type> (Val)
175# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
177# define YY_CAST(Type, Val) ((Type) (Val))
178# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
182# if defined __cplusplus
183# if 201103L <= __cplusplus
184# define YY_NULLPTR nullptr
189# define YY_NULLPTR ((void*)0)
207namespace isc {
namespace eval {
219# pragma GCC message "bison: do not #define EVALSTYPE in C++, use %define api.value.type"
237 , yytypeid_ (YY_NULLPTR)
241 template <
typename T>
243 : yytypeid_ (&typeid (T))
246 new (yyas_<T> ()) T (
YY_MOVE (t));
249#if 201103L <= YY_CPLUSPLUS
262# if 201103L <= YY_CPLUSPLUS
264 template <
typename T,
typename... U>
270 yytypeid_ = &
typeid (T);
271 return *
new (yyas_<T> ()) T (std::forward <U>(u)...);
275 template <
typename T>
281 yytypeid_ = &
typeid (T);
282 return *
new (yyas_<T> ()) T ();
286 template <
typename T>
292 yytypeid_ = &
typeid (T);
293 return *
new (yyas_<T> ()) T (t);
299 template <
typename T>
308 template <
typename T>
316 template <
typename T>
327 template <
typename T>
345 template <
typename T>
351 std::swap (
as<T> (), that.as<T> ());
357 template <
typename T>
361# if 201103L <= YY_CPLUSPLUS
370# if 201103L <= YY_CPLUSPLUS
372 template <
typename T>
382 template <
typename T>
390 template <
typename T>
395 yytypeid_ = YY_NULLPTR;
399#if YY_CPLUSPLUS < 201103L
407 template <
typename T>
412 return static_cast<T*
> (yyp);
416 template <
typename T>
421 return static_cast<const T*
> (yyp);
443 char dummy6[
sizeof (int8_t)];
446 char dummy7[
sizeof (std::pair<int8_t, std::vector<uint16_t>>)];
449 char dummy8[
sizeof (std::pair<uint32_t, std::vector<uint16_t>>)];
456 char dummy9[
sizeof (std::string)];
460 char dummy10[
sizeof (std::vector<uint16_t>)];
464 char dummy11[
sizeof (uint16_t)];
468 char dummy12[
sizeof (uint32_t)];
472 enum { size =
sizeof (union_type) };
484 const std::type_info *yytypeid_;
498 : std::runtime_error (m)
503 : std::runtime_error (s.what ())
717 template <
typename Base>
729#if 201103L <= YY_CPLUSPLUS
732 : Base (std::move (that))
734 , location (std::move (that.location))
736 switch (this->kind ())
759 value.move< int8_t > (std::move (that.value));
763 value.move< std::pair<int8_t, std::vector<uint16_t>> > (std::move (that.value));
767 value.move< std::pair<uint32_t, std::vector<uint16_t>> > (std::move (that.value));
775 value.move< std::string > (std::move (that.value));
780 value.move< std::vector<uint16_t> > (std::move (that.value));
785 value.move< uint16_t > (std::move (that.value));
790 value.move< uint32_t > (std::move (that.value));
804#if 201103L <= YY_CPLUSPLUS
816#if 201103L <= YY_CPLUSPLUS
819 , value (std::move (v))
820 , location (std::move (l))
830#if 201103L <= YY_CPLUSPLUS
833 , value (std::move (v))
834 , location (std::move (l))
844#if 201103L <= YY_CPLUSPLUS
847 , value (std::move (v))
848 , location (std::move (l))
858#if 201103L <= YY_CPLUSPLUS
861 , value (std::move (v))
862 , location (std::move (l))
872#if 201103L <= YY_CPLUSPLUS
875 , value (std::move (v))
876 , location (std::move (l))
886#if 201103L <= YY_CPLUSPLUS
889 , value (std::move (v))
890 , location (std::move (l))
900#if 201103L <= YY_CPLUSPLUS
903 , value (std::move (v))
904 , location (std::move (l))
914#if 201103L <= YY_CPLUSPLUS
917 , value (std::move (v))
918 , location (std::move (l))
928#if 201103L <= YY_CPLUSPLUS
931 , value (std::move (v))
932 , location (std::move (l))
942#if 201103L <= YY_CPLUSPLUS
945 , value (std::move (v))
946 , location (std::move (l))
956#if 201103L <= YY_CPLUSPLUS
959 , value (std::move (v))
960 , location (std::move (l))
970#if 201103L <= YY_CPLUSPLUS
973 , value (std::move (v))
974 , location (std::move (l))
1009 value.template destroy< TokenOption::RepresentationType > ();
1013 value.template destroy< TokenPkt4::FieldType > ();
1017 value.template destroy< TokenPkt6::FieldType > ();
1021 value.template destroy< TokenPkt::MetadataType > ();
1025 value.template destroy< TokenRelay6Field::FieldType > ();
1029 value.template destroy< int8_t > ();
1033 value.template destroy< std::pair<int8_t, std::vector<uint16_t>> > ();
1037 value.template destroy< std::pair<uint32_t, std::vector<uint16_t>> > ();
1045 value.template destroy< std::string > ();
1050 value.template destroy< std::vector<uint16_t> > ();
1055 value.template destroy< uint16_t > ();
1060 value.template destroy< uint32_t > ();
1092#if YY_CPLUSPLUS < 201103L
1107#if 201103L <= YY_CPLUSPLUS
1151#if 201103L <= YY_CPLUSPLUS
1159#if !defined _MSC_VER || defined __clang__
1164#if 201103L <= YY_CPLUSPLUS
1172#if !defined _MSC_VER || defined __clang__
1182#if 201103L <= YY_CPLUSPLUS
1195 virtual int parse ();
1201 void set_debug_stream (std::ostream &);
1204 typedef
int debug_level_type;
1208 void set_debug_level (debug_level_type l);
1214 virtual void error (
const location_type& loc,
const std::string& msg);
1217 void error (
const syntax_error& err);
1221 static std::string symbol_name (symbol_kind_type yysymbol);
1224#if 201103L <= YY_CPLUSPLUS
1227 make_END (location_type l)
1229 return symbol_type (token::TOKEN_END, std::move (l));
1239#if 201103L <= YY_CPLUSPLUS
1242 make_EVALerror (location_type l)
1244 return symbol_type (token::TOKEN_EVALerror, std::move (l));
1254#if 201103L <= YY_CPLUSPLUS
1257 make_EVALUNDEF (location_type l)
1259 return symbol_type (token::TOKEN_EVALUNDEF, std::move (l));
1269#if 201103L <= YY_CPLUSPLUS
1272 make_LPAREN (location_type l)
1274 return symbol_type (token::TOKEN_LPAREN, std::move (l));
1284#if 201103L <= YY_CPLUSPLUS
1287 make_RPAREN (location_type l)
1289 return symbol_type (token::TOKEN_RPAREN, std::move (l));
1299#if 201103L <= YY_CPLUSPLUS
1302 make_NOT (location_type l)
1304 return symbol_type (token::TOKEN_NOT, std::move (l));
1314#if 201103L <= YY_CPLUSPLUS
1317 make_AND (location_type l)
1319 return symbol_type (token::TOKEN_AND, std::move (l));
1329#if 201103L <= YY_CPLUSPLUS
1332 make_SAND (location_type l)
1334 return symbol_type (token::TOKEN_SAND, std::move (l));
1344#if 201103L <= YY_CPLUSPLUS
1347 make_OR (location_type l)
1349 return symbol_type (token::TOKEN_OR, std::move (l));
1359#if 201103L <= YY_CPLUSPLUS
1362 make_SOR (location_type l)
1364 return symbol_type (token::TOKEN_SOR, std::move (l));
1374#if 201103L <= YY_CPLUSPLUS
1377 make_EQUAL (location_type l)
1379 return symbol_type (token::TOKEN_EQUAL, std::move (l));
1389#if 201103L <= YY_CPLUSPLUS
1392 make_OPTION (location_type l)
1394 return symbol_type (token::TOKEN_OPTION, std::move (l));
1404#if 201103L <= YY_CPLUSPLUS
1407 make_RELAY4 (location_type l)
1409 return symbol_type (token::TOKEN_RELAY4, std::move (l));
1419#if 201103L <= YY_CPLUSPLUS
1422 make_RELAY6 (location_type l)
1424 return symbol_type (token::TOKEN_RELAY6, std::move (l));
1434#if 201103L <= YY_CPLUSPLUS
1437 make_MEMBER (location_type l)
1439 return symbol_type (token::TOKEN_MEMBER, std::move (l));
1449#if 201103L <= YY_CPLUSPLUS
1452 make_PEERADDR (location_type l)
1454 return symbol_type (token::TOKEN_PEERADDR, std::move (l));
1464#if 201103L <= YY_CPLUSPLUS
1467 make_LINKADDR (location_type l)
1469 return symbol_type (token::TOKEN_LINKADDR, std::move (l));
1479#if 201103L <= YY_CPLUSPLUS
1482 make_LBRACKET (location_type l)
1484 return symbol_type (token::TOKEN_LBRACKET, std::move (l));
1494#if 201103L <= YY_CPLUSPLUS
1497 make_RBRACKET (location_type l)
1499 return symbol_type (token::TOKEN_RBRACKET, std::move (l));
1509#if 201103L <= YY_CPLUSPLUS
1512 make_DOT (location_type l)
1514 return symbol_type (token::TOKEN_DOT, std::move (l));
1524#if 201103L <= YY_CPLUSPLUS
1527 make_TEXT (location_type l)
1529 return symbol_type (token::TOKEN_TEXT, std::move (l));
1539#if 201103L <= YY_CPLUSPLUS
1542 make_HEX (location_type l)
1544 return symbol_type (token::TOKEN_HEX, std::move (l));
1554#if 201103L <= YY_CPLUSPLUS
1557 make_EXISTS (location_type l)
1559 return symbol_type (token::TOKEN_EXISTS, std::move (l));
1569#if 201103L <= YY_CPLUSPLUS
1572 make_PKT (location_type l)
1574 return symbol_type (token::TOKEN_PKT, std::move (l));
1584#if 201103L <= YY_CPLUSPLUS
1587 make_IFACE (location_type l)
1589 return symbol_type (token::TOKEN_IFACE, std::move (l));
1599#if 201103L <= YY_CPLUSPLUS
1602 make_SRC (location_type l)
1604 return symbol_type (token::TOKEN_SRC, std::move (l));
1614#if 201103L <= YY_CPLUSPLUS
1617 make_DST (location_type l)
1619 return symbol_type (token::TOKEN_DST, std::move (l));
1629#if 201103L <= YY_CPLUSPLUS
1632 make_LEN (location_type l)
1634 return symbol_type (token::TOKEN_LEN, std::move (l));
1644#if 201103L <= YY_CPLUSPLUS
1647 make_PKT4 (location_type l)
1649 return symbol_type (token::TOKEN_PKT4, std::move (l));
1659#if 201103L <= YY_CPLUSPLUS
1662 make_CHADDR (location_type l)
1664 return symbol_type (token::TOKEN_CHADDR, std::move (l));
1674#if 201103L <= YY_CPLUSPLUS
1677 make_HLEN (location_type l)
1679 return symbol_type (token::TOKEN_HLEN, std::move (l));
1689#if 201103L <= YY_CPLUSPLUS
1692 make_HTYPE (location_type l)
1694 return symbol_type (token::TOKEN_HTYPE, std::move (l));
1704#if 201103L <= YY_CPLUSPLUS
1707 make_CIADDR (location_type l)
1709 return symbol_type (token::TOKEN_CIADDR, std::move (l));
1719#if 201103L <= YY_CPLUSPLUS
1722 make_GIADDR (location_type l)
1724 return symbol_type (token::TOKEN_GIADDR, std::move (l));
1734#if 201103L <= YY_CPLUSPLUS
1737 make_YIADDR (location_type l)
1739 return symbol_type (token::TOKEN_YIADDR, std::move (l));
1749#if 201103L <= YY_CPLUSPLUS
1752 make_SIADDR (location_type l)
1754 return symbol_type (token::TOKEN_SIADDR, std::move (l));
1764#if 201103L <= YY_CPLUSPLUS
1767 make_SUBSTRING (location_type l)
1769 return symbol_type (token::TOKEN_SUBSTRING, std::move (l));
1779#if 201103L <= YY_CPLUSPLUS
1782 make_SPLIT (location_type l)
1784 return symbol_type (token::TOKEN_SPLIT, std::move (l));
1794#if 201103L <= YY_CPLUSPLUS
1797 make_ALL (location_type l)
1799 return symbol_type (token::TOKEN_ALL, std::move (l));
1809#if 201103L <= YY_CPLUSPLUS
1812 make_COMA (location_type l)
1814 return symbol_type (token::TOKEN_COMA, std::move (l));
1824#if 201103L <= YY_CPLUSPLUS
1827 make_CONCAT (location_type l)
1829 return symbol_type (token::TOKEN_CONCAT, std::move (l));
1839#if 201103L <= YY_CPLUSPLUS
1842 make_PLUS (location_type l)
1844 return symbol_type (token::TOKEN_PLUS, std::move (l));
1854#if 201103L <= YY_CPLUSPLUS
1857 make_IFELSE (location_type l)
1859 return symbol_type (token::TOKEN_IFELSE, std::move (l));
1869#if 201103L <= YY_CPLUSPLUS
1872 make_SIFELSE (location_type l)
1874 return symbol_type (token::TOKEN_SIFELSE, std::move (l));
1884#if 201103L <= YY_CPLUSPLUS
1887 make_TOHEXSTRING (location_type l)
1889 return symbol_type (token::TOKEN_TOHEXSTRING, std::move (l));
1899#if 201103L <= YY_CPLUSPLUS
1902 make_ADDRTOTEXT (location_type l)
1904 return symbol_type (token::TOKEN_ADDRTOTEXT, std::move (l));
1914#if 201103L <= YY_CPLUSPLUS
1917 make_INT8TOTEXT (location_type l)
1919 return symbol_type (token::TOKEN_INT8TOTEXT, std::move (l));
1929#if 201103L <= YY_CPLUSPLUS
1932 make_INT16TOTEXT (location_type l)
1934 return symbol_type (token::TOKEN_INT16TOTEXT, std::move (l));
1944#if 201103L <= YY_CPLUSPLUS
1947 make_INT32TOTEXT (location_type l)
1949 return symbol_type (token::TOKEN_INT32TOTEXT, std::move (l));
1959#if 201103L <= YY_CPLUSPLUS
1962 make_UINT8TOTEXT (location_type l)
1964 return symbol_type (token::TOKEN_UINT8TOTEXT, std::move (l));
1974#if 201103L <= YY_CPLUSPLUS
1977 make_UINT16TOTEXT (location_type l)
1979 return symbol_type (token::TOKEN_UINT16TOTEXT, std::move (l));
1989#if 201103L <= YY_CPLUSPLUS
1992 make_UINT32TOTEXT (location_type l)
1994 return symbol_type (token::TOKEN_UINT32TOTEXT, std::move (l));
2004#if 201103L <= YY_CPLUSPLUS
2007 make_LCASE (location_type l)
2009 return symbol_type (token::TOKEN_LCASE, std::move (l));
2019#if 201103L <= YY_CPLUSPLUS
2022 make_UCASE (location_type l)
2024 return symbol_type (token::TOKEN_UCASE, std::move (l));
2034#if 201103L <= YY_CPLUSPLUS
2037 make_PKT6 (location_type l)
2039 return symbol_type (token::TOKEN_PKT6, std::move (l));
2049#if 201103L <= YY_CPLUSPLUS
2052 make_MSGTYPE (location_type l)
2054 return symbol_type (token::TOKEN_MSGTYPE, std::move (l));
2064#if 201103L <= YY_CPLUSPLUS
2067 make_TRANSID (location_type l)
2069 return symbol_type (token::TOKEN_TRANSID, std::move (l));
2079#if 201103L <= YY_CPLUSPLUS
2082 make_VENDOR_CLASS (location_type l)
2084 return symbol_type (token::TOKEN_VENDOR_CLASS, std::move (l));
2094#if 201103L <= YY_CPLUSPLUS
2097 make_VENDOR (location_type l)
2099 return symbol_type (token::TOKEN_VENDOR, std::move (l));
2109#if 201103L <= YY_CPLUSPLUS
2112 make_ANY (location_type l)
2114 return symbol_type (token::TOKEN_ANY, std::move (l));
2124#if 201103L <= YY_CPLUSPLUS
2127 make_DATA (location_type l)
2129 return symbol_type (token::TOKEN_DATA, std::move (l));
2139#if 201103L <= YY_CPLUSPLUS
2142 make_ENTERPRISE (location_type l)
2144 return symbol_type (token::TOKEN_ENTERPRISE, std::move (l));
2154#if 201103L <= YY_CPLUSPLUS
2157 make_MATCH (location_type l)
2159 return symbol_type (token::TOKEN_MATCH, std::move (l));
2169#if 201103L <= YY_CPLUSPLUS
2172 make_TOPLEVEL_BOOL (location_type l)
2174 return symbol_type (token::TOKEN_TOPLEVEL_BOOL, std::move (l));
2184#if 201103L <= YY_CPLUSPLUS
2187 make_TOPLEVEL_STRING (location_type l)
2189 return symbol_type (token::TOKEN_TOPLEVEL_STRING, std::move (l));
2199#if 201103L <= YY_CPLUSPLUS
2202 make_STRING (std::string v, location_type l)
2204 return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
2214#if 201103L <= YY_CPLUSPLUS
2217 make_INTEGER (std::string v, location_type l)
2219 return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
2229#if 201103L <= YY_CPLUSPLUS
2232 make_HEXSTRING (std::string v, location_type l)
2234 return symbol_type (token::TOKEN_HEXSTRING, std::move (v), std::move (l));
2244#if 201103L <= YY_CPLUSPLUS
2247 make_OPTION_NAME (std::string v, location_type l)
2249 return symbol_type (token::TOKEN_OPTION_NAME, std::move (v), std::move (l));
2259#if 201103L <= YY_CPLUSPLUS
2262 make_IP_ADDRESS (std::string v, location_type l)
2264 return symbol_type (token::TOKEN_IP_ADDRESS, std::move (v), std::move (l));
2295#if YY_CPLUSPLUS < 201103L
2304 typedef short state_type;
2307 int yy_syntax_error_arguments_ (
const context& yyctx,
2308 symbol_kind_type yyarg[],
int yyargn)
const;
2312 virtual std::string yysyntax_error_ (
const context& yyctx)
const;
2316 static state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
2320 static bool yy_pact_value_is_default_ (
int yyvalue)
YY_NOEXCEPT;
2324 static bool yy_table_value_is_error_ (
int yyvalue)
YY_NOEXCEPT;
2326 static const short yypact_ninf_;
2327 static const signed char yytable_ninf_;
2332 static symbol_kind_type yytranslate_ (
int t)
YY_NOEXCEPT;
2335 static std::string yytnamerr_ (
const char *yystr);
2338 static const char*
const yytname_[];
2344 static const short yypact_[];
2349 static const signed char yydefact_[];
2352 static const short yypgoto_[];
2355 static const unsigned char yydefgoto_[];
2360 static const short yytable_[];
2362 static const short yycheck_[];
2366 static const signed char yystos_[];
2369 static const signed char yyr1_[];
2372 static const signed char yyr2_[];
2377 static const short yyrline_[];
2379 virtual void yy_reduce_print_ (
int r)
const;
2381 virtual void yy_stack_print_ ()
const;
2386 std::ostream* yycdebug_;
2391 template <
typename Base>
2392 void yy_print_ (std::ostream& yyo,
const basic_symbol<Base>& yysym)
const;
2399 template <
typename Base>
2400 void yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const;
2410 typedef state_type kind_type;
2422 void move (by_state& that);
2430 enum { empty_state = 0 };
2438 struct stack_symbol_type : basic_symbol<by_state>
2441 typedef basic_symbol<by_state> super_type;
2443 stack_symbol_type ();
2445 stack_symbol_type (
YY_RVREF (stack_symbol_type) that);
2447 stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) sym);
2448#if YY_CPLUSPLUS < 201103L
2451 stack_symbol_type& operator= (stack_symbol_type& that);
2455 stack_symbol_type& operator= (
const stack_symbol_type& that);
2460 template <
typename T,
typename S = std::vector<T> >
2465 typedef typename S::iterator iterator;
2466 typedef typename S::const_iterator const_iterator;
2467 typedef typename S::size_type size_type;
2468 typedef typename std::ptrdiff_t index_type;
2474#if 201103L <= YY_CPLUSPLUS
2476 stack (
const stack&) =
delete;
2478 stack& operator= (
const stack&) =
delete;
2485 operator[] (index_type i)
const
2487 return seq_[size_type (size () - 1 - i)];
2494 operator[] (index_type i)
2496 return seq_[size_type (size () - 1 - i)];
2505 seq_.push_back (T ());
2506 operator[] (0).move (t);
2528 return index_type (seq_.size ());
2535 return seq_.begin ();
2555 operator[] (index_type i)
const
2557 return stack_[range_ - i];
2561 const stack& stack_;
2566#if YY_CPLUSPLUS < 201103L
2568 stack (
const stack&);
2570 stack& operator= (
const stack&);
2578 typedef stack<stack_symbol_type> stack_type;
2581 stack_type yystack_;
2588 void yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym);
2596 void yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym);
2625 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2628 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2629 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2630 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2633 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2634 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2635 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2639 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2640 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2644 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2647 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2649 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2650 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2651 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2652 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2653 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2654 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2655 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2656 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2660 const int code_max = 324;
2664 else if (t <= code_max)
2671 template <
typename Base>
2677 switch (this->kind ())
2708 value.copy< std::pair<uint32_t, std::vector<uint16_t>> > (
YY_MOVE (that.
value));
2743 template <
typename Base>
2747 return this->kind ();
2751 template <
typename Base>
2758 template <
typename Base>
2762 super_type::move (s);
2763 switch (this->kind ())
2833#if 201103L <= YY_CPLUSPLUS
2836 : kind_ (that.kind_)
2844 :
kind_ (that.kind_)
2849 :
kind_ (yytranslate_ (t))
2881 return this->
kind ();
2887#line 2888 "parser.h"
RepresentationType
Token representation type.
FieldType
enum value that determines the field.
FieldType
enum value that determines the field.
MetadataType
enum value that determines the field.
FieldType
enum value that determines the field.
Evaluation context, an interface to the expression evaluation.
const location_type & location() const YY_NOEXCEPT
const symbol_type & lookahead() const YY_NOEXCEPT
context(const EvalParser &yyparser, const symbol_type &yyla)
symbol_kind_type token() const YY_NOEXCEPT
slice(const stack &stack, index_type range) YY_NOEXCEPT
A buffer to store and retrieve objects.
T & emplace(const T &t)
Instantiate a T in here from t.
T & as() YY_NOEXCEPT
Accessor to a built T.
void move(self_type &that)
Move the content of that to this.
T & build(const T &t)
Instantiate a T in here from t.
value_type(YY_RVREF(T) t)
Construct and fill.
long double yyalign_me_
Strongest alignment constraints.
const T & as() const YY_NOEXCEPT
Const accessor to a built T (for printer).
T & build()
Instantiate an empty T in here.
void copy(const self_type &that)
Copy the content of that to this.
~value_type() YY_NOEXCEPT
Destruction, allowed only if empty.
void destroy()
Destroy the stored T.
void swap(self_type &that) YY_NOEXCEPT
Swap the content with that, of same type.
T & emplace()
Instantiate an empty T in here.
char yyraw_[size]
A buffer large enough to store any of the semantic values.
value_type() YY_NOEXCEPT
Empty construction.
value_type self_type
Type of *this.
static symbol_type make_RELAY6(const location_type &l)
static symbol_type make_INT8TOTEXT(const location_type &l)
static symbol_type make_CONCAT(const location_type &l)
static symbol_type make_TEXT(const location_type &l)
static symbol_type make_OPTION(const location_type &l)
static symbol_type make_AND(const location_type &l)
static symbol_type make_HTYPE(const location_type &l)
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
static symbol_type make_MSGTYPE(const location_type &l)
static symbol_type make_LINKADDR(const location_type &l)
static symbol_type make_TOHEXSTRING(const location_type &l)
static symbol_type make_EVALerror(const location_type &l)
static symbol_type make_PKT6(const location_type &l)
static symbol_type make_END(const location_type &l)
static symbol_type make_DST(const location_type &l)
static symbol_type make_OR(const location_type &l)
static symbol_type make_PLUS(const location_type &l)
static symbol_type make_RBRACKET(const location_type &l)
static symbol_type make_NOT(const location_type &l)
static symbol_type make_INT32TOTEXT(const location_type &l)
static symbol_type make_SIADDR(const location_type &l)
static symbol_type make_PKT4(const location_type &l)
static symbol_type make_SOR(const location_type &l)
static symbol_type make_IP_ADDRESS(const std::string &v, const location_type &l)
static symbol_type make_UINT16TOTEXT(const location_type &l)
static symbol_type make_STRING(const std::string &v, const location_type &l)
static symbol_type make_TOPLEVEL_BOOL(const location_type &l)
static symbol_type make_LPAREN(const location_type &l)
static symbol_type make_TOPLEVEL_STRING(const location_type &l)
static symbol_type make_GIADDR(const location_type &l)
static symbol_type make_MATCH(const location_type &l)
static symbol_type make_DATA(const location_type &l)
static symbol_type make_CHADDR(const location_type &l)
static symbol_type make_INT16TOTEXT(const location_type &l)
static symbol_type make_LBRACKET(const location_type &l)
static symbol_type make_LEN(const location_type &l)
static symbol_type make_IFACE(const location_type &l)
static symbol_type make_SAND(const location_type &l)
static symbol_type make_ANY(const location_type &l)
static symbol_type make_DOT(const location_type &l)
by_kind by_type
Backward compatibility for a private implementation detail (Bison 3.6).
static symbol_type make_HLEN(const location_type &l)
static symbol_type make_ALL(const location_type &l)
static symbol_type make_UCASE(const location_type &l)
static symbol_type make_COMA(const location_type &l)
static symbol_type make_IFELSE(const location_type &l)
location location_type
Symbol locations.
static symbol_type make_YIADDR(const location_type &l)
static symbol_type make_SRC(const location_type &l)
static symbol_type make_INTEGER(const std::string &v, const location_type &l)
static symbol_type make_EQUAL(const location_type &l)
token::token_kind_type token_kind_type
Token kind, as returned by yylex.
static symbol_type make_EXISTS(const location_type &l)
static symbol_type make_TRANSID(const location_type &l)
token_kind_type token_type
Backward compatibility alias (Bison 3.6).
static symbol_type make_SIFELSE(const location_type &l)
static symbol_type make_ADDRTOTEXT(const location_type &l)
static symbol_type make_LCASE(const location_type &l)
static symbol_type make_RELAY4(const location_type &l)
static symbol_type make_PKT(const location_type &l)
static symbol_type make_CIADDR(const location_type &l)
static symbol_type make_HEXSTRING(const std::string &v, const location_type &l)
static symbol_type make_EVALUNDEF(const location_type &l)
static symbol_type make_OPTION_NAME(const std::string &v, const location_type &l)
static symbol_type make_MEMBER(const location_type &l)
static symbol_type make_UINT32TOTEXT(const location_type &l)
EvalParser(EvalContext &ctx_yyarg)
Build a parser object.
static symbol_type make_SPLIT(const location_type &l)
static symbol_type make_ENTERPRISE(const location_type &l)
static symbol_type make_VENDOR(const location_type &l)
value_type semantic_type
Backward compatibility (Bison 3.8).
static symbol_type make_RPAREN(const location_type &l)
static symbol_type make_PEERADDR(const location_type &l)
static const symbol_kind_type YYNTOKENS
The number of tokens.
static symbol_type make_SUBSTRING(const location_type &l)
static symbol_type make_VENDOR_CLASS(const location_type &l)
static symbol_type make_HEX(const location_type &l)
static symbol_type make_UINT8TOTEXT(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.
#define YY_MOVE_REF(Type)
#define YY_ATTRIBUTE_PURE
Forward declaration of the EvalContext class.
Defines the logger used by the top-level component of kea-lfc.
void move(basic_symbol &s)
basic_symbol(const basic_symbol &that)
Copy constructor.
basic_symbol(typename Base::kind_type t, const std::vector< uint16_t > &v, const location_type &l)
Base super_type
Alias to Base.
basic_symbol(typename Base::kind_type t, const TokenPkt4::FieldType &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const std::pair< uint32_t, std::vector< uint16_t > > &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const uint32_t &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const std::pair< int8_t, std::vector< uint16_t > > &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const TokenPkt6::FieldType &v, const location_type &l)
~basic_symbol()
Destroy the symbol.
bool empty() const YY_NOEXCEPT
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
basic_symbol(typename Base::kind_type t, const uint16_t &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const TokenPkt::MetadataType &v, const location_type &l)
std::string name() const YY_NOEXCEPT
The user-facing name of this symbol.
basic_symbol(typename Base::kind_type t, const TokenOption::RepresentationType &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const std::string &v, const location_type &l)
basic_symbol() YY_NOEXCEPT
Default constructor.
basic_symbol(typename Base::kind_type t, const TokenRelay6Field::FieldType &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 int8_t &v, const location_type &l)
Type access provider for token (enum) based symbols.
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
token_kind_type kind_type
The symbol kind as needed by the constructor.
by_kind() YY_NOEXCEPT
Default constructor.
symbol_kind_type kind_
The symbol kind.
void clear() YY_NOEXCEPT
Record that this symbol is empty.
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.
@ YYNTOKENS
Number of tokens.
"External" symbols: returned by the scanner.
symbol_type() YY_NOEXCEPT
Empty symbol.
basic_symbol< by_kind > super_type
Superclass.
syntax_error(const location_type &l, const std::string &m)
syntax_error(const syntax_error &s)
~syntax_error() YY_NOEXCEPT YY_NOTHROW
token_kind_type yytokentype
Backward compatibility alias (Bison 3.6).