45 #ifndef YY_AGENT_AGENT_PARSER_H_INCLUDED
46 # define YY_AGENT_AGENT_PARSER_H_INCLUDED
48 #line 17 "agent_parser.yy"
52 #include <boost/lexical_cast.hpp>
59 #line 60 "agent_parser.h"
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
102 # define YY_CONSTEXPR
104 # include "location.hh"
106 #ifndef AGENT__ASSERT
108 # define AGENT__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))
135 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
137 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
138 _Pragma ("GCC diagnostic push") \
139 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
140 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
141 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
142 _Pragma ("GCC diagnostic pop")
144 # define YY_INITIAL_VALUE(Value) Value
146 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
147 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
148 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
150 #ifndef YY_INITIAL_VALUE
151 # define YY_INITIAL_VALUE(Value)
154 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
155 # define YY_IGNORE_USELESS_CAST_BEGIN \
156 _Pragma ("GCC diagnostic push") \
157 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
158 # define YY_IGNORE_USELESS_CAST_END \
159 _Pragma ("GCC diagnostic pop")
161 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
162 # define YY_IGNORE_USELESS_CAST_BEGIN
163 # define YY_IGNORE_USELESS_CAST_END
168 # define YY_CAST(Type, Val) static_cast<Type> (Val)
169 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
171 # define YY_CAST(Type, Val) ((Type) (Val))
172 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
176 # if defined __cplusplus
177 # if 201103L <= __cplusplus
178 # define YY_NULLPTR nullptr
180 # define YY_NULLPTR 0
183 # define YY_NULLPTR ((void*)0)
191 # define AGENT_DEBUG 1
193 # define AGENT_DEBUG 0
196 # define AGENT_DEBUG 1
200 #line 14 "agent_parser.yy"
201 namespace isc {
namespace agent {
202 #line 203 "agent_parser.h"
226 , yytypeid_ (YY_NULLPTR)
230 template <
typename T>
232 : yytypeid_ (&typeid (T))
235 new (yyas_<T> ()) T (
YY_MOVE (t));
238 #if 201103L <= YY_CPLUSPLUS
242 self_type& operator= (
const self_type&) =
delete;
251 # if 201103L <= YY_CPLUSPLUS
252 template <
typename T,
typename... U>
259 yytypeid_ = &
typeid (T);
260 return *
new (yyas_<T> ()) T (std::forward <U>(u)...);
263 template <
typename T>
270 yytypeid_ = &
typeid (T);
271 return *
new (yyas_<T> ()) T ();
275 template <
typename T>
281 yytypeid_ = &
typeid (T);
282 return *
new (yyas_<T> ()) T (t);
288 template <
typename T>
292 return emplace<T> ();
297 template <
typename T>
301 return emplace<T> (t);
305 template <
typename T>
316 template <
typename T>
334 template <
typename T>
340 std::swap (as<T> (), that.as<T> ());
346 template <
typename T>
350 # if 201103L <= YY_CPLUSPLUS
351 emplace<T> (std::move (that.
as<T> ()));
359 # if 201103L <= YY_CPLUSPLUS
360 template <
typename T>
363 move (self_type&& that)
365 emplace<T> (std::move (that.as<T> ()));
371 template <
typename T>
375 emplace<T> (that.
as<T> ());
379 template <
typename T>
384 yytypeid_ = YY_NULLPTR;
388 #if YY_CPLUSPLUS < 201103L
392 self_type& operator= (
const self_type&);
396 template <
typename T>
400 void *yyp = yybuffer_.yyraw;
401 return static_cast<T*
> (yyp);
405 template <
typename T>
409 const void *yyp = yybuffer_.yyraw;
410 return static_cast<const T*
> (yyp);
423 char dummy2[
sizeof (bool)];
426 char dummy3[
sizeof (double)];
429 char dummy4[
sizeof (int64_t)];
432 char dummy5[
sizeof (std::string)];
436 enum { size =
sizeof (union_type) };
448 const std::type_info *yytypeid_;
452 typedef AGENT_STYPE semantic_type;
454 typedef location location_type;
461 :
std::runtime_error (m)
466 :
std::runtime_error (s.what ())
467 , location (s.location)
472 location_type location;
480 TOKEN_AGENT_EMPTY = -2,
482 TOKEN_AGENT_error = 256,
483 TOKEN_AGENT_UNDEF = 257,
486 TOKEN_LSQUARE_BRACKET = 260,
487 TOKEN_RSQUARE_BRACKET = 261,
488 TOKEN_LCURLY_BRACKET = 262,
489 TOKEN_RCURLY_BRACKET = 263,
490 TOKEN_NULL_TYPE = 264,
491 TOKEN_CONTROL_AGENT = 265,
492 TOKEN_HTTP_HOST = 266,
493 TOKEN_HTTP_PORT = 267,
494 TOKEN_USER_CONTEXT = 268,
496 TOKEN_AUTHENTICATION = 270,
502 TOKEN_PASSWORD = 276,
503 TOKEN_TRUST_ANCHOR = 277,
504 TOKEN_CERT_FILE = 278,
505 TOKEN_KEY_FILE = 279,
506 TOKEN_CERT_REQUIRED = 280,
507 TOKEN_CONTROL_SOCKETS = 281,
508 TOKEN_DHCP4_SERVER = 282,
509 TOKEN_DHCP6_SERVER = 283,
510 TOKEN_D2_SERVER = 284,
511 TOKEN_SOCKET_NAME = 285,
512 TOKEN_SOCKET_TYPE = 286,
514 TOKEN_HOOKS_LIBRARIES = 288,
516 TOKEN_PARAMETERS = 290,
519 TOKEN_OUTPUT_OPTIONS = 293,
521 TOKEN_DEBUGLEVEL = 295,
522 TOKEN_SEVERITY = 296,
527 TOKEN_START_JSON = 301,
528 TOKEN_START_AGENT = 302,
529 TOKEN_START_SUB_AGENT = 303,
557 S_LSQUARE_BRACKET = 5,
558 S_RSQUARE_BRACKET = 6,
559 S_LCURLY_BRACKET = 7,
560 S_RCURLY_BRACKET = 8,
562 S_CONTROL_AGENT = 10,
567 S_AUTHENTICATION = 15,
577 S_CERT_REQUIRED = 25,
578 S_CONTROL_SOCKETS = 26,
585 S_HOOKS_LIBRARIES = 33,
590 S_OUTPUT_OPTIONS = 38,
600 S_START_SUB_AGENT = 48,
618 S_not_empty_map = 66,
622 S_not_empty_list = 70,
623 S_unknown_map_entry = 71,
624 S_agent_syntax_map = 72,
626 S_global_object = 74,
628 S_global_params = 76,
639 S_cert_required = 87,
644 S_hooks_libraries = 92,
646 S_hooks_libraries_list = 94,
647 S_not_empty_hooks_libraries_list = 95,
648 S_hooks_library = 96,
656 S_control_sockets = 104,
658 S_control_sockets_params = 106,
659 S_control_socket = 107,
660 S_dhcp4_server_socket = 108,
662 S_dhcp6_server_socket = 110,
664 S_d2_server_socket = 112,
666 S_control_socket_params = 114,
667 S_control_socket_param = 115,
672 S_socket_type_value = 120,
673 S_authentication = 121,
679 S_auth_type_value = 127,
684 S_clients_list = 132,
685 S_not_empty_clients_list = 133,
688 S_clients_params = 136,
689 S_clients_param = 137,
696 S_loggers_entries = 144,
697 S_logger_entry = 145,
699 S_logger_params = 147,
700 S_logger_param = 148,
706 S_output_options_list = 154,
708 S_output_options_list_content = 156,
709 S_output_entry = 157,
711 S_output_params_list = 159,
712 S_output_params = 160,
727 static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS;
735 template <
typename Base>
747 #if 201103L <= YY_CPLUSPLUS
750 : Base (
std::move (that))
752 , location (
std::move (that.location))
754 switch (this->kind ())
756 case symbol_kind::S_value:
757 case symbol_kind::S_map_value:
758 case symbol_kind::S_socket_type_value:
759 case symbol_kind::S_auth_type_value:
760 value.move<
ElementPtr > (std::move (that.value));
763 case symbol_kind::S_BOOLEAN:
764 value.move<
bool > (std::move (that.value));
767 case symbol_kind::S_FLOAT:
768 value.move<
double > (std::move (that.value));
771 case symbol_kind::S_INTEGER:
772 value.move< int64_t > (std::move (that.value));
775 case symbol_kind::S_STRING:
776 value.move< std::string > (std::move (that.value));
787 basic_symbol (
const basic_symbol& that);
790 #if 201103L <= YY_CPLUSPLUS
791 basic_symbol (
typename Base::kind_type t, location_type&& l)
793 , location (
std::move (l))
802 #if 201103L <= YY_CPLUSPLUS
805 , value (
std::move (v))
806 , location (
std::move (l))
816 #if 201103L <= YY_CPLUSPLUS
817 basic_symbol (
typename Base::kind_type t,
bool&& v, location_type&& l)
819 , value (
std::move (v))
820 , location (
std::move (l))
823 basic_symbol (
typename Base::kind_type t,
const bool& v,
const location_type& l)
830 #if 201103L <= YY_CPLUSPLUS
831 basic_symbol (
typename Base::kind_type t,
double&& v, location_type&& l)
833 , value (
std::move (v))
834 , location (
std::move (l))
837 basic_symbol (
typename Base::kind_type t,
const double& v,
const location_type& l)
844 #if 201103L <= YY_CPLUSPLUS
845 basic_symbol (
typename Base::kind_type t, int64_t&& v, location_type&& l)
847 , value (
std::move (v))
848 , location (
std::move (l))
851 basic_symbol (
typename Base::kind_type t,
const int64_t& v,
const location_type& l)
858 #if 201103L <= YY_CPLUSPLUS
859 basic_symbol (
typename Base::kind_type t, std::string&& v, location_type&& l)
861 , value (
std::move (v))
862 , location (
std::move (l))
865 basic_symbol (
typename Base::kind_type t,
const std::string& v,
const location_type& l)
882 symbol_kind_type yykind = this->kind ();
894 case symbol_kind::S_value:
895 case symbol_kind::S_map_value:
896 case symbol_kind::S_socket_type_value:
897 case symbol_kind::S_auth_type_value:
898 value.template destroy< ElementPtr > ();
901 case symbol_kind::S_BOOLEAN:
902 value.template destroy< bool > ();
905 case symbol_kind::S_FLOAT:
906 value.template destroy< double > ();
909 case symbol_kind::S_INTEGER:
910 value.template destroy< int64_t > ();
913 case symbol_kind::S_STRING:
914 value.template destroy< std::string > ();
943 location_type location;
946 #if YY_CPLUSPLUS < 201103L
958 #if 201103L <= YY_CPLUSPLUS
983 symbol_kind_type type_get () const YY_NOEXCEPT;
987 symbol_kind_type kind_;
1003 #if 201103L <= YY_CPLUSPLUS
1005 : super_type(token_type (tok),
std::move (l))
1008 : super_type(token_type (tok), l)
1012 || (token::TOKEN_AGENT_error <= tok && tok <= token::TOKEN_START_SUB_AGENT));
1014 #if 201103L <= YY_CPLUSPLUS
1016 : super_type(token_type (tok),
std::move (v),
std::move (l))
1019 : super_type(token_type (tok), v, l)
1024 #if 201103L <= YY_CPLUSPLUS
1026 : super_type(token_type (tok),
std::move (v),
std::move (l))
1029 : super_type(token_type (tok), v, l)
1034 #if 201103L <= YY_CPLUSPLUS
1036 : super_type(token_type (tok),
std::move (v),
std::move (l))
1039 : super_type(token_type (tok), v, l)
1044 #if 201103L <= YY_CPLUSPLUS
1045 symbol_type (
int tok, std::string v, location_type l)
1046 : super_type(token_type (tok),
std::move (v),
std::move (l))
1049 : super_type(token_type (tok), v, l)
1060 #if 201103L <= YY_CPLUSPLUS
1073 virtual int parse ();
1079 void set_debug_stream (
std::ostream &);
1086 void set_debug_level (debug_level_type l);
1092 virtual void error (
const location_type& loc,
const std::string& msg);
1099 static std::string symbol_name (symbol_kind_type yysymbol);
1102 #if 201103L <= YY_CPLUSPLUS
1105 make_END (location_type l)
1107 return symbol_type (token::TOKEN_END, std::move (l));
1117 #if 201103L <= YY_CPLUSPLUS
1120 make_AGENT_error (location_type l)
1122 return symbol_type (token::TOKEN_AGENT_error, std::move (l));
1132 #if 201103L <= YY_CPLUSPLUS
1135 make_AGENT_UNDEF (location_type l)
1137 return symbol_type (token::TOKEN_AGENT_UNDEF, std::move (l));
1147 #if 201103L <= YY_CPLUSPLUS
1150 make_COMMA (location_type l)
1152 return symbol_type (token::TOKEN_COMMA, std::move (l));
1162 #if 201103L <= YY_CPLUSPLUS
1165 make_COLON (location_type l)
1167 return symbol_type (token::TOKEN_COLON, std::move (l));
1177 #if 201103L <= YY_CPLUSPLUS
1180 make_LSQUARE_BRACKET (location_type l)
1182 return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
1189 return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
1192 #if 201103L <= YY_CPLUSPLUS
1195 make_RSQUARE_BRACKET (location_type l)
1197 return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
1204 return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
1207 #if 201103L <= YY_CPLUSPLUS
1210 make_LCURLY_BRACKET (location_type l)
1212 return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
1219 return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
1222 #if 201103L <= YY_CPLUSPLUS
1225 make_RCURLY_BRACKET (location_type l)
1227 return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
1234 return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
1237 #if 201103L <= YY_CPLUSPLUS
1240 make_NULL_TYPE (location_type l)
1242 return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
1252 #if 201103L <= YY_CPLUSPLUS
1255 make_CONTROL_AGENT (location_type l)
1257 return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
1264 return symbol_type (token::TOKEN_CONTROL_AGENT, l);
1267 #if 201103L <= YY_CPLUSPLUS
1270 make_HTTP_HOST (location_type l)
1272 return symbol_type (token::TOKEN_HTTP_HOST, std::move (l));
1282 #if 201103L <= YY_CPLUSPLUS
1285 make_HTTP_PORT (location_type l)
1287 return symbol_type (token::TOKEN_HTTP_PORT, std::move (l));
1297 #if 201103L <= YY_CPLUSPLUS
1300 make_USER_CONTEXT (location_type l)
1302 return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
1309 return symbol_type (token::TOKEN_USER_CONTEXT, l);
1312 #if 201103L <= YY_CPLUSPLUS
1315 make_COMMENT (location_type l)
1317 return symbol_type (token::TOKEN_COMMENT, std::move (l));
1327 #if 201103L <= YY_CPLUSPLUS
1330 make_AUTHENTICATION (location_type l)
1332 return symbol_type (token::TOKEN_AUTHENTICATION, std::move (l));
1339 return symbol_type (token::TOKEN_AUTHENTICATION, l);
1342 #if 201103L <= YY_CPLUSPLUS
1345 make_TYPE (location_type l)
1347 return symbol_type (token::TOKEN_TYPE, std::move (l));
1357 #if 201103L <= YY_CPLUSPLUS
1360 make_BASIC (location_type l)
1362 return symbol_type (token::TOKEN_BASIC, std::move (l));
1372 #if 201103L <= YY_CPLUSPLUS
1375 make_REALM (location_type l)
1377 return symbol_type (token::TOKEN_REALM, std::move (l));
1387 #if 201103L <= YY_CPLUSPLUS
1390 make_CLIENTS (location_type l)
1392 return symbol_type (token::TOKEN_CLIENTS, std::move (l));
1402 #if 201103L <= YY_CPLUSPLUS
1405 make_USER (location_type l)
1407 return symbol_type (token::TOKEN_USER, std::move (l));
1417 #if 201103L <= YY_CPLUSPLUS
1420 make_PASSWORD (location_type l)
1422 return symbol_type (token::TOKEN_PASSWORD, std::move (l));
1432 #if 201103L <= YY_CPLUSPLUS
1435 make_TRUST_ANCHOR (location_type l)
1437 return symbol_type (token::TOKEN_TRUST_ANCHOR, std::move (l));
1444 return symbol_type (token::TOKEN_TRUST_ANCHOR, l);
1447 #if 201103L <= YY_CPLUSPLUS
1450 make_CERT_FILE (location_type l)
1452 return symbol_type (token::TOKEN_CERT_FILE, std::move (l));
1462 #if 201103L <= YY_CPLUSPLUS
1465 make_KEY_FILE (location_type l)
1467 return symbol_type (token::TOKEN_KEY_FILE, std::move (l));
1477 #if 201103L <= YY_CPLUSPLUS
1480 make_CERT_REQUIRED (location_type l)
1482 return symbol_type (token::TOKEN_CERT_REQUIRED, std::move (l));
1489 return symbol_type (token::TOKEN_CERT_REQUIRED, l);
1492 #if 201103L <= YY_CPLUSPLUS
1495 make_CONTROL_SOCKETS (location_type l)
1497 return symbol_type (token::TOKEN_CONTROL_SOCKETS, std::move (l));
1504 return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
1507 #if 201103L <= YY_CPLUSPLUS
1510 make_DHCP4_SERVER (location_type l)
1512 return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l));
1519 return symbol_type (token::TOKEN_DHCP4_SERVER, l);
1522 #if 201103L <= YY_CPLUSPLUS
1525 make_DHCP6_SERVER (location_type l)
1527 return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l));
1534 return symbol_type (token::TOKEN_DHCP6_SERVER, l);
1537 #if 201103L <= YY_CPLUSPLUS
1540 make_D2_SERVER (location_type l)
1542 return symbol_type (token::TOKEN_D2_SERVER, std::move (l));
1552 #if 201103L <= YY_CPLUSPLUS
1555 make_SOCKET_NAME (location_type l)
1557 return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
1567 #if 201103L <= YY_CPLUSPLUS
1570 make_SOCKET_TYPE (location_type l)
1572 return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
1582 #if 201103L <= YY_CPLUSPLUS
1585 make_UNIX (location_type l)
1587 return symbol_type (token::TOKEN_UNIX, std::move (l));
1597 #if 201103L <= YY_CPLUSPLUS
1600 make_HOOKS_LIBRARIES (location_type l)
1602 return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
1609 return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
1612 #if 201103L <= YY_CPLUSPLUS
1615 make_LIBRARY (location_type l)
1617 return symbol_type (token::TOKEN_LIBRARY, std::move (l));
1627 #if 201103L <= YY_CPLUSPLUS
1630 make_PARAMETERS (location_type l)
1632 return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
1642 #if 201103L <= YY_CPLUSPLUS
1645 make_LOGGERS (location_type l)
1647 return symbol_type (token::TOKEN_LOGGERS, std::move (l));
1657 #if 201103L <= YY_CPLUSPLUS
1660 make_NAME (location_type l)
1662 return symbol_type (token::TOKEN_NAME, std::move (l));
1672 #if 201103L <= YY_CPLUSPLUS
1675 make_OUTPUT_OPTIONS (location_type l)
1677 return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
1684 return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
1687 #if 201103L <= YY_CPLUSPLUS
1690 make_OUTPUT (location_type l)
1692 return symbol_type (token::TOKEN_OUTPUT, std::move (l));
1702 #if 201103L <= YY_CPLUSPLUS
1705 make_DEBUGLEVEL (location_type l)
1707 return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
1717 #if 201103L <= YY_CPLUSPLUS
1720 make_SEVERITY (location_type l)
1722 return symbol_type (token::TOKEN_SEVERITY, std::move (l));
1732 #if 201103L <= YY_CPLUSPLUS
1735 make_FLUSH (location_type l)
1737 return symbol_type (token::TOKEN_FLUSH, std::move (l));
1747 #if 201103L <= YY_CPLUSPLUS
1750 make_MAXSIZE (location_type l)
1752 return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
1762 #if 201103L <= YY_CPLUSPLUS
1765 make_MAXVER (location_type l)
1767 return symbol_type (token::TOKEN_MAXVER, std::move (l));
1777 #if 201103L <= YY_CPLUSPLUS
1780 make_PATTERN (location_type l)
1782 return symbol_type (token::TOKEN_PATTERN, std::move (l));
1792 #if 201103L <= YY_CPLUSPLUS
1795 make_START_JSON (location_type l)
1797 return symbol_type (token::TOKEN_START_JSON, std::move (l));
1807 #if 201103L <= YY_CPLUSPLUS
1810 make_START_AGENT (location_type l)
1812 return symbol_type (token::TOKEN_START_AGENT, std::move (l));
1822 #if 201103L <= YY_CPLUSPLUS
1825 make_START_SUB_AGENT (location_type l)
1827 return symbol_type (token::TOKEN_START_SUB_AGENT, std::move (l));
1834 return symbol_type (token::TOKEN_START_SUB_AGENT, l);
1837 #if 201103L <= YY_CPLUSPLUS
1840 make_STRING (std::string v, location_type l)
1842 return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
1852 #if 201103L <= YY_CPLUSPLUS
1855 make_INTEGER (int64_t v, location_type l)
1857 return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
1867 #if 201103L <= YY_CPLUSPLUS
1870 make_FLOAT (
double v, location_type l)
1872 return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
1882 #if 201103L <= YY_CPLUSPLUS
1885 make_BOOLEAN (
bool v, location_type l)
1887 return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
1910 int expected_tokens (symbol_kind_type yyarg[],
int yyargn)
const;
1918 #if YY_CPLUSPLUS < 201103L
1927 typedef short state_type;
1930 int yy_syntax_error_arguments_ (
const context& yyctx,
1931 symbol_kind_type yyarg[],
int yyargn)
const;
1935 virtual std::string yysyntax_error_ (
const context& yyctx)
const;
1939 static state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
1943 static bool yy_pact_value_is_default_ (
int yyvalue);
1947 static bool yy_table_value_is_error_ (
int yyvalue);
1949 static const short yypact_ninf_;
1950 static const signed char yytable_ninf_;
1955 static symbol_kind_type yytranslate_ (
int t);
1958 static std::string yytnamerr_ (
const char *yystr);
1961 static const char*
const yytname_[];
1967 static const short yypact_[];
1972 static const unsigned char yydefact_[];
1975 static const short yypgoto_[];
1978 static const short yydefgoto_[];
1983 static const short yytable_[];
1985 static const short yycheck_[];
1989 static const unsigned char yystos_[];
1992 static const unsigned char yyr1_[];
1995 static const signed char yyr2_[];
2000 static const short yyrline_[];
2002 virtual void yy_reduce_print_ (
int r)
const;
2004 virtual void yy_stack_print_ ()
const;
2009 std::ostream* yycdebug_;
2014 template <
typename Base>
2015 void yy_print_ (std::ostream& yyo,
const basic_symbol<Base>& yysym)
const;
2022 template <
typename Base>
2023 void yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const;
2033 typedef state_type kind_type;
2039 by_state (const by_state& that) YY_NOEXCEPT;
2042 void clear () YY_NOEXCEPT;
2045 void move (by_state& that);
2049 symbol_kind_type kind () const YY_NOEXCEPT;
2053 enum { empty_state = 0 };
2061 struct stack_symbol_type : basic_symbol<by_state>
2064 typedef basic_symbol<by_state> super_type;
2066 stack_symbol_type ();
2068 stack_symbol_type (
YY_RVREF (stack_symbol_type) that);
2070 stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) sym);
2071 #if YY_CPLUSPLUS < 201103L
2072 stack_symbol_type& operator= (stack_symbol_type& that);
2078 stack_symbol_type& operator= (
const stack_symbol_type& that);
2083 template <
typename T,
typename S = std::vector<T> >
2088 typedef typename S::iterator iterator;
2089 typedef typename S::const_iterator const_iterator;
2090 typedef typename S::size_type size_type;
2091 typedef typename std::ptrdiff_t index_type;
2093 stack (size_type n = 200)
2097 #if 201103L <= YY_CPLUSPLUS
2098 stack (
const stack&) =
delete;
2101 stack& operator= (
const stack&) =
delete;
2108 operator[] (index_type i)
const
2110 return seq_[size_type (size () - 1 - i)];
2117 operator[] (index_type i)
2119 return seq_[size_type (size () - 1 - i)];
2128 seq_.push_back (T ());
2129 operator[] (0).move (t);
2151 return index_type (seq_.size ());
2158 return seq_.begin ();
2172 slice (
const stack& stack, index_type range)
2178 operator[] (index_type i)
const
2180 return stack_[range_ - i];
2184 const stack& stack_;
2189 #if YY_CPLUSPLUS < 201103L
2190 stack (
const stack&);
2193 stack& operator= (
const stack&);
2201 typedef stack<stack_symbol_type> stack_type;
2204 stack_type yystack_;
2211 void yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym);
2219 void yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym);
2222 void yypop_ (
int n = 1);
2240 AgentParser::yytranslate_ (
int t)
2248 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2249 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2250 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2251 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2252 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2253 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2254 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2255 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2256 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2257 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2258 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2260 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2263 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2264 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2265 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2267 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2268 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2269 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2270 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2271 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2272 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2273 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2274 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2275 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2276 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2277 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2278 45, 46, 47, 48, 49, 50, 51, 52
2281 const int code_max = 307;
2284 return symbol_kind::S_YYEOF;
2285 else if (t <= code_max)
2286 return YY_CAST (symbol_kind_type, translate_table[t]);
2288 return symbol_kind::S_YYUNDEF;
2292 template <
typename Base>
2296 , location (that.location)
2298 switch (this->kind ())
2331 template <
typename Base>
2335 return this->kind ();
2338 template <
typename Base>
2345 template <
typename Base>
2349 super_type::move (s);
2350 switch (this->kind ())
2388 #if 201103L <= YY_CPLUSPLUS
2391 : kind_ (that.kind_)
2399 : kind_ (that.kind_)
2404 : kind_ (yytranslate_ (t))
2433 return this->kind ();
2436 #line 14 "agent_parser.yy"
2438 #line 2439 "agent_parser.h"
2443 #endif // !YY_AGENT_AGENT_PARSER_H_INCLUDED
static symbol_type make_AUTHENTICATION(const location_type &l)
static symbol_type make_BOOLEAN(const bool &v, const location_type &l)
T & emplace()
Instantiate an empty T in here.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
static symbol_type make_MAXSIZE(const location_type &l)
static symbol_type make_STRING(const std::string &v, const location_type &l)
~basic_symbol()
Destroy the symbol.
static symbol_type make_INTEGER(const int64_t &v, const location_type &l)
symbol_type()
Empty symbol.
#define YY_CAST(Type, Val)
static symbol_type make_LCURLY_BRACKET(const location_type &l)
static symbol_type make_START_AGENT(const location_type &l)
static symbol_type make_CONTROL_SOCKETS(const location_type &l)
static symbol_type make_LIBRARY(const location_type &l)
static symbol_type make_RSQUARE_BRACKET(const location_type &l)
static symbol_type make_START_JSON(const location_type &l)
syntax_error(const syntax_error &s)
T & build()
Instantiate an empty T in here.
void copy(const self_type &that)
Copy the content of that to this.
static symbol_type make_BASIC(const location_type &l)
#define YY_MOVE_REF(Type)
syntax_error(const location_type &l, const std::string &m)
void destroy()
Destroy the stored T.
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
boost::shared_ptr< Element > ElementPtr
Syntax errors thrown from user actions.
void swap(self_type &that) YY_NOEXCEPT
Swap the content with that, of same type.
basic_symbol(typename Base::kind_type t, const ElementPtr &v, const location_type &l)
static symbol_type make_USER_CONTEXT(const location_type &l)
slice(const stack &stack, index_type range)
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
void move(self_type &that)
Move the content of that to this.
static symbol_type make_NAME(const location_type &l)
basic_symbol(typename Base::kind_type t, const bool &v, const location_type &l)
const location_type & location() const YY_NOEXCEPT
static symbol_type make_USER(const location_type &l)
Forward declaration of the ParserContext class.
static symbol_type make_PATTERN(const location_type &l)
static symbol_type make_TYPE(const location_type &l)
static symbol_type make_CONTROL_AGENT(const location_type &l)
~semantic_type() YY_NOEXCEPT
Destruction, allowed only if empty.
std::string name() const YY_NOEXCEPT
The user-facing name of this symbol.
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
A buffer to store and retrieve objects.
static symbol_type make_END(const location_type &l)
location_type location
The location.
static symbol_type make_DHCP4_SERVER(const location_type &l)
static symbol_type make_AGENT_UNDEF(const location_type &l)
Present a slice of the top of a stack.
symbol_kind_type kind() const YY_NOEXCEPT
The (internal) type number (corresponding to type).
token::yytokentype token_kind_type
Token kind, as returned by yylex.
static symbol_type make_LSQUARE_BRACKET(const location_type &l)
static symbol_type make_RCURLY_BRACKET(const location_type &l)
static symbol_type make_HOOKS_LIBRARIES(const location_type &l)
T & emplace(const T &t)
Instantiate a T in here from t.
static symbol_type make_START_SUB_AGENT(const location_type &l)
symbol_kind_type kind_
The symbol kind.
static symbol_type make_FLOAT(const double &v, const location_type &l)
static symbol_type make_COLON(const location_type &l)
Type access provider for token (enum) based symbols.
basic_symbol()
Default constructor.
Defines the logger used by the top-level component of kea-dhcp-ddns.
static symbol_type make_HTTP_HOST(const location_type &l)
static symbol_type make_REALM(const location_type &l)
static symbol_type make_SEVERITY(const location_type &l)
void clear() YY_NOEXCEPT
Record that this symbol is empty.
static std::string symbol_name(symbol_kind_type yysymbol)
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
const symbol_type & lookahead() const YY_NOEXCEPT
static symbol_type make_CLIENTS(const location_type &l)
semantic_type self_type
Type of *this.
token_kind_type kind_type
The symbol kind as needed by the constructor.
static symbol_type make_PARAMETERS(const location_type &l)
static symbol_type make_DHCP6_SERVER(const location_type &l)
static symbol_type make_AGENT_error(const location_type &l)
static symbol_type make_SOCKET_NAME(const location_type &l)
static symbol_type make_COMMA(const location_type &l)
static symbol_type make_HTTP_PORT(const location_type &l)
void clear() YY_NOEXCEPT
Destroy contents, and record that is empty.
long double yyalign_me
Strongest alignment constraints.
basic_symbol(typename Base::kind_type t, const std::string &v, const location_type &l)
static symbol_type make_DEBUGLEVEL(const location_type &l)
int debug_level_type
Type for debugging levels.
token_kind_type yytokentype
Backward compatibility alias (Bison 3.6).
static symbol_type make_PASSWORD(const location_type &l)
T & as() YY_NOEXCEPT
Accessor to a built T.
basic_symbol(typename Base::kind_type t, const int64_t &v, const location_type &l)
void move(by_kind &that)
Steal the symbol kind from that.
basic_symbol(typename Base::kind_type t, const location_type &l)
Constructors for typed symbols.
token_kind_type token_type
Backward compatibility alias (Bison 3.6).
static symbol_type make_KEY_FILE(const location_type &l)
basic_symbol(typename Base::kind_type t, const double &v, const location_type &l)
#define YY_ATTRIBUTE_PURE
static symbol_type make_OUTPUT(const location_type &l)
"External" symbols: returned by the scanner.
by_kind()
Default constructor.
static symbol_type make_NULL_TYPE(const location_type &l)
T & build(const T &t)
Instantiate a T in here from t.
bool empty() const YY_NOEXCEPT
Whether empty.
basic_symbol< by_kind > super_type
Superclass.
const T & as() const YY_NOEXCEPT
Const accessor to a built T (for printer).
semantic_type() YY_NOEXCEPT
Empty construction.
static symbol_type make_OUTPUT_OPTIONS(const location_type &l)
static symbol_type make_TRUST_ANCHOR(const location_type &l)
static symbol_type make_COMMENT(const location_type &l)
static symbol_type make_CERT_FILE(const location_type &l)
static symbol_type make_FLUSH(const location_type &l)
static symbol_type make_D2_SERVER(const location_type &l)
Parser context is a wrapper around flex/bison instances dedicated to Control-agent config file parser...
static symbol_type make_LOGGERS(const location_type &l)
static symbol_type make_UNIX(const location_type &l)
symbol_kind_type token() const YY_NOEXCEPT
semantic_type value
The semantic value.
Base super_type
Alias to Base.
static symbol_type make_SOCKET_TYPE(const location_type &l)
semantic_type(YY_RVREF(T) t)
Construct and fill.
static symbol_type make_CERT_REQUIRED(const location_type &l)
static symbol_type make_MAXVER(const location_type &l)