Kea 2.7.6
agent_parser.h
Go to the documentation of this file.
1// A Bison parser, made by GNU Bison 3.8.2.
2
3// Skeleton interface for Bison LALR(1) parsers in C++
4
5// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7// This program is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License
18// along with this program. If not, see <https://www.gnu.org/licenses/>.
19
20// As a special exception, you may create a larger work that contains
21// part or all of the Bison parser skeleton and distribute that work
22// under terms of your choice, so long as that work isn't itself a
23// parser generator using the skeleton or a modified version thereof
24// as a parser skeleton. Alternatively, if you modify or redistribute
25// the parser skeleton itself, you may (at your option) remove this
26// special exception, which will cause the skeleton and the resulting
27// Bison output files to be licensed under the GNU General Public
28// License without this special exception.
29
30// This special exception was added by the Free Software Foundation in
31// version 2.2 of Bison.
32
33
39// C++ LALR(1) parser skeleton written by Akim Demaille.
40
41// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
42// especially those whose name start with YY_ or yy_. They are
43// private implementation details that can be changed or removed.
44
45#ifndef YY_AGENT_AGENT_PARSER_H_INCLUDED
46# define YY_AGENT_AGENT_PARSER_H_INCLUDED
47// "%code requires" blocks.
48#line 17 "agent_parser.yy"
49
50#include <string>
51#include <cc/data.h>
52#include <boost/lexical_cast.hpp>
54
55using namespace isc::agent;
56using namespace isc::data;
57using namespace std;
58
59#line 60 "agent_parser.h"
60
61# include <cassert>
62# include <cstdlib> // std::abort
63# include <iostream>
64# include <stdexcept>
65# include <string>
66# include <vector>
67
68#if defined __cplusplus
69# define YY_CPLUSPLUS __cplusplus
70#else
71# define YY_CPLUSPLUS 199711L
72#endif
73
74// Support move semantics when possible.
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
81#else
82# define YY_MOVE
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&
87#endif
88
89// Support noexcept when possible.
90#if 201103L <= YY_CPLUSPLUS
91# define YY_NOEXCEPT noexcept
92# define YY_NOTHROW
93#else
94# define YY_NOEXCEPT
95# define YY_NOTHROW throw ()
96#endif
97
98// Support constexpr when possible.
99#if 201703 <= YY_CPLUSPLUS
100# define YY_CONSTEXPR constexpr
101#else
102# define YY_CONSTEXPR
103#endif
104# include "location.hh"
105#include <typeinfo>
106#ifndef AGENT__ASSERT
107# include <cassert>
108# define AGENT__ASSERT assert
109#endif
110
111
112#ifndef YY_ATTRIBUTE_PURE
113# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
114# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
115# else
116# define YY_ATTRIBUTE_PURE
117# endif
118#endif
119
120#ifndef YY_ATTRIBUTE_UNUSED
121# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
122# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
123# else
124# define YY_ATTRIBUTE_UNUSED
125# endif
126#endif
127
128/* Suppress unused-variable warnings by "using" E. */
129#if ! defined lint || defined __GNUC__
130# define YY_USE(E) ((void) (E))
131#else
132# define YY_USE(E) /* empty */
133#endif
134
135/* Suppress an incorrect diagnostic about yylval being uninitialized. */
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\"")
141# else
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\"")
146# endif
147# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
148 _Pragma ("GCC diagnostic pop")
149#else
150# define YY_INITIAL_VALUE(Value) Value
151#endif
152#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
153# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
154# define YY_IGNORE_MAYBE_UNINITIALIZED_END
155#endif
156#ifndef YY_INITIAL_VALUE
157# define YY_INITIAL_VALUE(Value) /* Nothing. */
158#endif
159
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")
166#endif
167#ifndef YY_IGNORE_USELESS_CAST_BEGIN
168# define YY_IGNORE_USELESS_CAST_BEGIN
169# define YY_IGNORE_USELESS_CAST_END
170#endif
171
172# ifndef YY_CAST
173# ifdef __cplusplus
174# define YY_CAST(Type, Val) static_cast<Type> (Val)
175# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
176# else
177# define YY_CAST(Type, Val) ((Type) (Val))
178# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
179# endif
180# endif
181# ifndef YY_NULLPTR
182# if defined __cplusplus
183# if 201103L <= __cplusplus
184# define YY_NULLPTR nullptr
185# else
186# define YY_NULLPTR 0
187# endif
188# else
189# define YY_NULLPTR ((void*)0)
190# endif
191# endif
192
193/* Debug traces. */
194#ifndef AGENT_DEBUG
195# if defined YYDEBUG
196#if YYDEBUG
197# define AGENT_DEBUG 1
198# else
199# define AGENT_DEBUG 0
200# endif
201# else /* ! defined YYDEBUG */
202# define AGENT_DEBUG 1
203# endif /* ! defined YYDEBUG */
204#endif /* ! defined AGENT_DEBUG */
205
206#line 14 "agent_parser.yy"
207namespace isc { namespace agent {
208#line 209 "agent_parser.h"
209
210
211
212
215 {
216 public:
217#ifdef AGENT_STYPE
218# ifdef __GNUC__
219# pragma GCC message "bison: do not #define AGENT_STYPE in C++, use %define api.value.type"
220# endif
221 typedef AGENT_STYPE value_type;
222#else
229 {
230 public:
233
236 : yyraw_ ()
237 , yytypeid_ (YY_NULLPTR)
238 {}
239
241 template <typename T>
243 : yytypeid_ (&typeid (T))
244 {
245 AGENT__ASSERT (sizeof (T) <= size);
246 new (yyas_<T> ()) T (YY_MOVE (t));
247 }
248
249#if 201103L <= YY_CPLUSPLUS
251 value_type (const self_type&) = delete;
253 self_type& operator= (const self_type&) = delete;
254#endif
255
258 {
259 AGENT__ASSERT (!yytypeid_);
260 }
261
262# if 201103L <= YY_CPLUSPLUS
264 template <typename T, typename... U>
265 T&
266 emplace (U&&... u)
267 {
268 AGENT__ASSERT (!yytypeid_);
269 AGENT__ASSERT (sizeof (T) <= size);
270 yytypeid_ = & typeid (T);
271 return *new (yyas_<T> ()) T (std::forward <U>(u)...);
272 }
273# else
275 template <typename T>
276 T&
278 {
279 AGENT__ASSERT (!yytypeid_);
280 AGENT__ASSERT (sizeof (T) <= size);
281 yytypeid_ = & typeid (T);
282 return *new (yyas_<T> ()) T ();
283 }
284
286 template <typename T>
287 T&
288 emplace (const T& t)
289 {
290 AGENT__ASSERT (!yytypeid_);
291 AGENT__ASSERT (sizeof (T) <= size);
292 yytypeid_ = & typeid (T);
293 return *new (yyas_<T> ()) T (t);
294 }
295# endif
296
299 template <typename T>
300 T&
302 {
303 return emplace<T> ();
304 }
305
308 template <typename T>
309 T&
310 build (const T& t)
311 {
312 return emplace<T> (t);
313 }
314
316 template <typename T>
317 T&
319 {
320 AGENT__ASSERT (yytypeid_);
321 AGENT__ASSERT (*yytypeid_ == typeid (T));
322 AGENT__ASSERT (sizeof (T) <= size);
323 return *yyas_<T> ();
324 }
325
327 template <typename T>
328 const T&
330 {
331 AGENT__ASSERT (yytypeid_);
332 AGENT__ASSERT (*yytypeid_ == typeid (T));
333 AGENT__ASSERT (sizeof (T) <= size);
334 return *yyas_<T> ();
335 }
336
345 template <typename T>
346 void
348 {
349 AGENT__ASSERT (yytypeid_);
350 AGENT__ASSERT (*yytypeid_ == *that.yytypeid_);
351 std::swap (as<T> (), that.as<T> ());
352 }
353
357 template <typename T>
358 void
360 {
361# if 201103L <= YY_CPLUSPLUS
362 emplace<T> (std::move (that.as<T> ()));
363# else
364 emplace<T> ();
365 swap<T> (that);
366# endif
367 that.destroy<T> ();
368 }
369
370# if 201103L <= YY_CPLUSPLUS
372 template <typename T>
373 void
374 move (self_type&& that)
375 {
376 emplace<T> (std::move (that.as<T> ()));
377 that.destroy<T> ();
378 }
379#endif
380
382 template <typename T>
383 void
384 copy (const self_type& that)
385 {
386 emplace<T> (that.as<T> ());
387 }
388
390 template <typename T>
391 void
393 {
394 as<T> ().~T ();
395 yytypeid_ = YY_NULLPTR;
396 }
397
398 private:
399#if YY_CPLUSPLUS < 201103L
401 value_type (const self_type&);
403 self_type& operator= (const self_type&);
404#endif
405
407 template <typename T>
408 T*
409 yyas_ () YY_NOEXCEPT
410 {
411 void *yyp = yyraw_;
412 return static_cast<T*> (yyp);
413 }
414
416 template <typename T>
417 const T*
418 yyas_ () const YY_NOEXCEPT
419 {
420 const void *yyp = yyraw_;
421 return static_cast<const T*> (yyp);
422 }
423
425 union union_type
426 {
427 // value
428 // map_value
429 // socket_type_value
430 // auth_type_value
431 char dummy1[sizeof (ElementPtr)];
432
433 // "boolean"
434 char dummy2[sizeof (bool)];
435
436 // "floating point"
437 char dummy3[sizeof (double)];
438
439 // "integer"
440 char dummy4[sizeof (int64_t)];
441
442 // "constant string"
443 char dummy5[sizeof (std::string)];
444 };
445
447 enum { size = sizeof (union_type) };
448
450 union
451 {
453 long double yyalign_me_;
455 char yyraw_[size];
456 };
457
459 const std::type_info *yytypeid_;
460 };
461
462#endif
465
467 typedef location location_type;
468
470 struct syntax_error : std::runtime_error
471 {
472 syntax_error (const location_type& l, const std::string& m)
473 : std::runtime_error (m)
474 , location (l)
475 {}
476
478 : std::runtime_error (s.what ())
479 , location (s.location)
480 {}
481
483
485 };
486
488 struct token
489 {
491 {
492 TOKEN_AGENT_EMPTY = -2,
493 TOKEN_END = 0, // "end of file"
494 TOKEN_AGENT_error = 256, // error
495 TOKEN_AGENT_UNDEF = 257, // "invalid token"
496 TOKEN_COMMA = 258, // ","
497 TOKEN_COLON = 259, // ":"
498 TOKEN_LSQUARE_BRACKET = 260, // "["
499 TOKEN_RSQUARE_BRACKET = 261, // "]"
500 TOKEN_LCURLY_BRACKET = 262, // "{"
501 TOKEN_RCURLY_BRACKET = 263, // "}"
502 TOKEN_NULL_TYPE = 264, // "null"
503 TOKEN_CONTROL_AGENT = 265, // "Control-agent"
504 TOKEN_HTTP_HOST = 266, // "http-host"
505 TOKEN_HTTP_PORT = 267, // "http-port"
506 TOKEN_HTTP_HEADERS = 268, // "http-headers"
507 TOKEN_USER_CONTEXT = 269, // "user-context"
508 TOKEN_COMMENT = 270, // "comment"
509 TOKEN_NAME = 271, // "name"
510 TOKEN_VALUE = 272, // "value"
511 TOKEN_AUTHENTICATION = 273, // "authentication"
512 TOKEN_TYPE = 274, // "type"
513 TOKEN_BASIC = 275, // "basic"
514 TOKEN_REALM = 276, // "realm"
515 TOKEN_DIRECTORY = 277, // "directory"
516 TOKEN_CLIENTS = 278, // "clients"
517 TOKEN_USER = 279, // "user"
518 TOKEN_USER_FILE = 280, // "user-file"
519 TOKEN_PASSWORD = 281, // "password"
520 TOKEN_PASSWORD_FILE = 282, // "password-file"
521 TOKEN_TRUST_ANCHOR = 283, // "trust-anchor"
522 TOKEN_CERT_FILE = 284, // "cert-file"
523 TOKEN_KEY_FILE = 285, // "key-file"
524 TOKEN_CERT_REQUIRED = 286, // "cert-required"
525 TOKEN_CONTROL_SOCKETS = 287, // "control-sockets"
526 TOKEN_DHCP4_SERVER = 288, // "dhcp4"
527 TOKEN_DHCP6_SERVER = 289, // "dhcp6"
528 TOKEN_D2_SERVER = 290, // "d2"
529 TOKEN_SOCKET_NAME = 291, // "socket-name"
530 TOKEN_SOCKET_TYPE = 292, // "socket-type"
531 TOKEN_UNIX = 293, // "unix"
532 TOKEN_HOOKS_LIBRARIES = 294, // "hooks-libraries"
533 TOKEN_LIBRARY = 295, // "library"
534 TOKEN_PARAMETERS = 296, // "parameters"
535 TOKEN_LOGGERS = 297, // "loggers"
536 TOKEN_OUTPUT_OPTIONS = 298, // "output-options"
537 TOKEN_OUTPUT = 299, // "output"
538 TOKEN_DEBUGLEVEL = 300, // "debuglevel"
539 TOKEN_SEVERITY = 301, // "severity"
540 TOKEN_FLUSH = 302, // "flush"
541 TOKEN_MAXSIZE = 303, // "maxsize"
542 TOKEN_MAXVER = 304, // "maxver"
543 TOKEN_PATTERN = 305, // "pattern"
544 TOKEN_START_JSON = 306, // START_JSON
545 TOKEN_START_AGENT = 307, // START_AGENT
546 TOKEN_START_SUB_AGENT = 308, // START_SUB_AGENT
547 TOKEN_STRING = 309, // "constant string"
548 TOKEN_INTEGER = 310, // "integer"
549 TOKEN_FLOAT = 311, // "floating point"
550 TOKEN_BOOLEAN = 312 // "boolean"
551 };
554 };
555
558
561
564 {
566 {
567 YYNTOKENS = 58,
568 S_YYEMPTY = -2,
569 S_YYEOF = 0, // "end of file"
570 S_YYerror = 1, // error
571 S_YYUNDEF = 2, // "invalid token"
572 S_COMMA = 3, // ","
573 S_COLON = 4, // ":"
574 S_LSQUARE_BRACKET = 5, // "["
575 S_RSQUARE_BRACKET = 6, // "]"
576 S_LCURLY_BRACKET = 7, // "{"
577 S_RCURLY_BRACKET = 8, // "}"
578 S_NULL_TYPE = 9, // "null"
579 S_CONTROL_AGENT = 10, // "Control-agent"
580 S_HTTP_HOST = 11, // "http-host"
581 S_HTTP_PORT = 12, // "http-port"
582 S_HTTP_HEADERS = 13, // "http-headers"
583 S_USER_CONTEXT = 14, // "user-context"
584 S_COMMENT = 15, // "comment"
585 S_NAME = 16, // "name"
586 S_VALUE = 17, // "value"
587 S_AUTHENTICATION = 18, // "authentication"
588 S_TYPE = 19, // "type"
589 S_BASIC = 20, // "basic"
590 S_REALM = 21, // "realm"
591 S_DIRECTORY = 22, // "directory"
592 S_CLIENTS = 23, // "clients"
593 S_USER = 24, // "user"
594 S_USER_FILE = 25, // "user-file"
595 S_PASSWORD = 26, // "password"
596 S_PASSWORD_FILE = 27, // "password-file"
597 S_TRUST_ANCHOR = 28, // "trust-anchor"
598 S_CERT_FILE = 29, // "cert-file"
599 S_KEY_FILE = 30, // "key-file"
600 S_CERT_REQUIRED = 31, // "cert-required"
601 S_CONTROL_SOCKETS = 32, // "control-sockets"
602 S_DHCP4_SERVER = 33, // "dhcp4"
603 S_DHCP6_SERVER = 34, // "dhcp6"
604 S_D2_SERVER = 35, // "d2"
605 S_SOCKET_NAME = 36, // "socket-name"
606 S_SOCKET_TYPE = 37, // "socket-type"
607 S_UNIX = 38, // "unix"
608 S_HOOKS_LIBRARIES = 39, // "hooks-libraries"
609 S_LIBRARY = 40, // "library"
610 S_PARAMETERS = 41, // "parameters"
611 S_LOGGERS = 42, // "loggers"
612 S_OUTPUT_OPTIONS = 43, // "output-options"
613 S_OUTPUT = 44, // "output"
614 S_DEBUGLEVEL = 45, // "debuglevel"
615 S_SEVERITY = 46, // "severity"
616 S_FLUSH = 47, // "flush"
617 S_MAXSIZE = 48, // "maxsize"
618 S_MAXVER = 49, // "maxver"
619 S_PATTERN = 50, // "pattern"
620 S_START_JSON = 51, // START_JSON
621 S_START_AGENT = 52, // START_AGENT
622 S_START_SUB_AGENT = 53, // START_SUB_AGENT
623 S_STRING = 54, // "constant string"
624 S_INTEGER = 55, // "integer"
625 S_FLOAT = 56, // "floating point"
626 S_BOOLEAN = 57, // "boolean"
627 S_YYACCEPT = 58, // $accept
628 S_start = 59, // start
629 S_60_1 = 60, // $@1
630 S_61_2 = 61, // $@2
631 S_62_3 = 62, // $@3
632 S_sub_agent = 63, // sub_agent
633 S_64_4 = 64, // $@4
634 S_json = 65, // json
635 S_value = 66, // value
636 S_map = 67, // map
637 S_68_5 = 68, // $@5
638 S_map_value = 69, // map_value
639 S_map_content = 70, // map_content
640 S_not_empty_map = 71, // not_empty_map
641 S_list_generic = 72, // list_generic
642 S_73_6 = 73, // $@6
643 S_list_content = 74, // list_content
644 S_not_empty_list = 75, // not_empty_list
645 S_unknown_map_entry = 76, // unknown_map_entry
646 S_agent_syntax_map = 77, // agent_syntax_map
647 S_78_7 = 78, // $@7
648 S_global_object = 79, // global_object
649 S_80_8 = 80, // $@8
650 S_global_object_comma = 81, // global_object_comma
651 S_global_params = 82, // global_params
652 S_global_param = 83, // global_param
653 S_http_host = 84, // http_host
654 S_85_9 = 85, // $@9
655 S_http_port = 86, // http_port
656 S_trust_anchor = 87, // trust_anchor
657 S_88_10 = 88, // $@10
658 S_cert_file = 89, // cert_file
659 S_90_11 = 90, // $@11
660 S_key_file = 91, // key_file
661 S_92_12 = 92, // $@12
662 S_cert_required = 93, // cert_required
663 S_user_context = 94, // user_context
664 S_95_13 = 95, // $@13
665 S_comment = 96, // comment
666 S_97_14 = 97, // $@14
667 S_http_headers = 98, // http_headers
668 S_99_15 = 99, // $@15
669 S_http_header_list = 100, // http_header_list
670 S_not_empty_http_header_list = 101, // not_empty_http_header_list
671 S_http_header = 102, // http_header
672 S_103_16 = 103, // $@16
673 S_http_header_params = 104, // http_header_params
674 S_http_header_param = 105, // http_header_param
675 S_name = 106, // name
676 S_107_17 = 107, // $@17
677 S_header_value = 108, // header_value
678 S_109_18 = 109, // $@18
679 S_hooks_libraries = 110, // hooks_libraries
680 S_111_19 = 111, // $@19
681 S_hooks_libraries_list = 112, // hooks_libraries_list
682 S_not_empty_hooks_libraries_list = 113, // not_empty_hooks_libraries_list
683 S_hooks_library = 114, // hooks_library
684 S_115_20 = 115, // $@20
685 S_hooks_params = 116, // hooks_params
686 S_hooks_param = 117, // hooks_param
687 S_library = 118, // library
688 S_119_21 = 119, // $@21
689 S_parameters = 120, // parameters
690 S_121_22 = 121, // $@22
691 S_control_sockets = 122, // control_sockets
692 S_123_23 = 123, // $@23
693 S_control_sockets_params = 124, // control_sockets_params
694 S_control_socket = 125, // control_socket
695 S_dhcp4_server_socket = 126, // dhcp4_server_socket
696 S_127_24 = 127, // $@24
697 S_dhcp6_server_socket = 128, // dhcp6_server_socket
698 S_129_25 = 129, // $@25
699 S_d2_server_socket = 130, // d2_server_socket
700 S_131_26 = 131, // $@26
701 S_control_socket_params = 132, // control_socket_params
702 S_control_socket_param = 133, // control_socket_param
703 S_socket_name = 134, // socket_name
704 S_135_27 = 135, // $@27
705 S_socket_type = 136, // socket_type
706 S_137_28 = 137, // $@28
707 S_socket_type_value = 138, // socket_type_value
708 S_authentication = 139, // authentication
709 S_140_29 = 140, // $@29
710 S_auth_params = 141, // auth_params
711 S_auth_param = 142, // auth_param
712 S_auth_type = 143, // auth_type
713 S_144_30 = 144, // $@30
714 S_auth_type_value = 145, // auth_type_value
715 S_realm = 146, // realm
716 S_147_31 = 147, // $@31
717 S_directory = 148, // directory
718 S_149_32 = 149, // $@32
719 S_clients = 150, // clients
720 S_151_33 = 151, // $@33
721 S_clients_list = 152, // clients_list
722 S_not_empty_clients_list = 153, // not_empty_clients_list
723 S_basic_auth = 154, // basic_auth
724 S_155_34 = 155, // $@34
725 S_clients_params = 156, // clients_params
726 S_clients_param = 157, // clients_param
727 S_user = 158, // user
728 S_159_35 = 159, // $@35
729 S_user_file = 160, // user_file
730 S_161_36 = 161, // $@36
731 S_password = 162, // password
732 S_163_37 = 163, // $@37
733 S_password_file = 164, // password_file
734 S_165_38 = 165, // $@38
735 S_loggers = 166, // loggers
736 S_167_39 = 167, // $@39
737 S_loggers_entries = 168, // loggers_entries
738 S_logger_entry = 169, // logger_entry
739 S_170_40 = 170, // $@40
740 S_logger_params = 171, // logger_params
741 S_logger_param = 172, // logger_param
742 S_debuglevel = 173, // debuglevel
743 S_severity = 174, // severity
744 S_175_41 = 175, // $@41
745 S_output_options_list = 176, // output_options_list
746 S_177_42 = 177, // $@42
747 S_output_options_list_content = 178, // output_options_list_content
748 S_output_entry = 179, // output_entry
749 S_180_43 = 180, // $@43
750 S_output_params_list = 181, // output_params_list
751 S_output_params = 182, // output_params
752 S_output = 183, // output
753 S_184_44 = 184, // $@44
754 S_flush = 185, // flush
755 S_maxsize = 186, // maxsize
756 S_maxver = 187, // maxver
757 S_pattern = 188, // pattern
758 S_189_45 = 189 // $@45
759 };
760 };
761
764
767
774 template <typename Base>
775 struct basic_symbol : Base
776 {
778 typedef Base super_type;
779
782 : value ()
783 , location ()
784 {}
785
786#if 201103L <= YY_CPLUSPLUS
789 : Base (std::move (that))
790 , value ()
791 , location (std::move (that.location))
792 {
793 switch (this->kind ())
794 {
795 case symbol_kind::S_value: // value
796 case symbol_kind::S_map_value: // map_value
797 case symbol_kind::S_socket_type_value: // socket_type_value
798 case symbol_kind::S_auth_type_value: // auth_type_value
799 value.move< ElementPtr > (std::move (that.value));
800 break;
801
802 case symbol_kind::S_BOOLEAN: // "boolean"
803 value.move< bool > (std::move (that.value));
804 break;
805
806 case symbol_kind::S_FLOAT: // "floating point"
807 value.move< double > (std::move (that.value));
808 break;
809
810 case symbol_kind::S_INTEGER: // "integer"
811 value.move< int64_t > (std::move (that.value));
812 break;
813
814 case symbol_kind::S_STRING: // "constant string"
815 value.move< std::string > (std::move (that.value));
816 break;
817
818 default:
819 break;
820 }
821
822 }
823#endif
824
827
829#if 201103L <= YY_CPLUSPLUS
830 basic_symbol (typename Base::kind_type t, location_type&& l)
831 : Base (t)
832 , location (std::move (l))
833 {}
834#else
835 basic_symbol (typename Base::kind_type t, const location_type& l)
836 : Base (t)
837 , location (l)
838 {}
839#endif
840
841#if 201103L <= YY_CPLUSPLUS
842 basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
843 : Base (t)
844 , value (std::move (v))
845 , location (std::move (l))
846 {}
847#else
848 basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
849 : Base (t)
850 , value (v)
851 , location (l)
852 {}
853#endif
854
855#if 201103L <= YY_CPLUSPLUS
856 basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
857 : Base (t)
858 , value (std::move (v))
859 , location (std::move (l))
860 {}
861#else
862 basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
863 : Base (t)
864 , value (v)
865 , location (l)
866 {}
867#endif
868
869#if 201103L <= YY_CPLUSPLUS
870 basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
871 : Base (t)
872 , value (std::move (v))
873 , location (std::move (l))
874 {}
875#else
876 basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
877 : Base (t)
878 , value (v)
879 , location (l)
880 {}
881#endif
882
883#if 201103L <= YY_CPLUSPLUS
884 basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
885 : Base (t)
886 , value (std::move (v))
887 , location (std::move (l))
888 {}
889#else
890 basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
891 : Base (t)
892 , value (v)
893 , location (l)
894 {}
895#endif
896
897#if 201103L <= YY_CPLUSPLUS
898 basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
899 : Base (t)
900 , value (std::move (v))
901 , location (std::move (l))
902 {}
903#else
904 basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
905 : Base (t)
906 , value (v)
907 , location (l)
908 {}
909#endif
910
913 {
914 clear ();
915 }
916
917
918
921 {
922 // User destructor.
923 symbol_kind_type yykind = this->kind ();
924 basic_symbol<Base>& yysym = *this;
925 (void) yysym;
926 switch (yykind)
927 {
928 default:
929 break;
930 }
931
932 // Value type destructor.
933switch (yykind)
934 {
935 case symbol_kind::S_value: // value
936 case symbol_kind::S_map_value: // map_value
937 case symbol_kind::S_socket_type_value: // socket_type_value
938 case symbol_kind::S_auth_type_value: // auth_type_value
939 value.template destroy< ElementPtr > ();
940 break;
941
942 case symbol_kind::S_BOOLEAN: // "boolean"
943 value.template destroy< bool > ();
944 break;
945
946 case symbol_kind::S_FLOAT: // "floating point"
947 value.template destroy< double > ();
948 break;
949
950 case symbol_kind::S_INTEGER: // "integer"
951 value.template destroy< int64_t > ();
952 break;
953
954 case symbol_kind::S_STRING: // "constant string"
955 value.template destroy< std::string > ();
956 break;
957
958 default:
959 break;
960 }
961
962 Base::clear ();
963 }
964
966 std::string name () const YY_NOEXCEPT
967 {
968 return AgentParser::symbol_name (this->kind ());
969 }
970
973
975 bool empty () const YY_NOEXCEPT;
976
978 void move (basic_symbol& s);
979
982
985
986 private:
987#if YY_CPLUSPLUS < 201103L
989 basic_symbol& operator= (const basic_symbol& that);
990#endif
991 };
992
994 struct by_kind
995 {
998
1001
1002#if 201103L <= YY_CPLUSPLUS
1004 by_kind (by_kind&& that) YY_NOEXCEPT;
1005#endif
1006
1008 by_kind (const by_kind& that) YY_NOEXCEPT;
1009
1012
1013
1014
1016 void clear () YY_NOEXCEPT;
1017
1019 void move (by_kind& that);
1020
1023 symbol_kind_type kind () const YY_NOEXCEPT;
1024
1026 symbol_kind_type type_get () const YY_NOEXCEPT;
1027
1031 };
1032
1035
1038 {
1041
1044
1046#if 201103L <= YY_CPLUSPLUS
1047 symbol_type (int tok, location_type l)
1048 : super_type (token_kind_type (tok), std::move (l))
1049#else
1050 symbol_type (int tok, const location_type& l)
1051 : super_type (token_kind_type (tok), l)
1052#endif
1053 {
1054#if !defined _MSC_VER || defined __clang__
1055 AGENT__ASSERT (tok == token::TOKEN_END
1056 || (token::TOKEN_AGENT_error <= tok && tok <= token::TOKEN_START_SUB_AGENT));
1057#endif
1058 }
1059#if 201103L <= YY_CPLUSPLUS
1060 symbol_type (int tok, bool v, location_type l)
1061 : super_type (token_kind_type (tok), std::move (v), std::move (l))
1062#else
1063 symbol_type (int tok, const bool& v, const location_type& l)
1064 : super_type (token_kind_type (tok), v, l)
1065#endif
1066 {
1067#if !defined _MSC_VER || defined __clang__
1068 AGENT__ASSERT (tok == token::TOKEN_BOOLEAN);
1069#endif
1070 }
1071#if 201103L <= YY_CPLUSPLUS
1072 symbol_type (int tok, double v, location_type l)
1073 : super_type (token_kind_type (tok), std::move (v), std::move (l))
1074#else
1075 symbol_type (int tok, const double& v, const location_type& l)
1076 : super_type (token_kind_type (tok), v, l)
1077#endif
1078 {
1079#if !defined _MSC_VER || defined __clang__
1080 AGENT__ASSERT (tok == token::TOKEN_FLOAT);
1081#endif
1082 }
1083#if 201103L <= YY_CPLUSPLUS
1084 symbol_type (int tok, int64_t v, location_type l)
1085 : super_type (token_kind_type (tok), std::move (v), std::move (l))
1086#else
1087 symbol_type (int tok, const int64_t& v, const location_type& l)
1088 : super_type (token_kind_type (tok), v, l)
1089#endif
1090 {
1091#if !defined _MSC_VER || defined __clang__
1092 AGENT__ASSERT (tok == token::TOKEN_INTEGER);
1093#endif
1094 }
1095#if 201103L <= YY_CPLUSPLUS
1096 symbol_type (int tok, std::string v, location_type l)
1097 : super_type (token_kind_type (tok), std::move (v), std::move (l))
1098#else
1099 symbol_type (int tok, const std::string& v, const location_type& l)
1100 : super_type (token_kind_type (tok), v, l)
1101#endif
1102 {
1103#if !defined _MSC_VER || defined __clang__
1104 AGENT__ASSERT (tok == token::TOKEN_STRING);
1105#endif
1106 }
1107 };
1108
1111 virtual ~AgentParser ();
1112
1113#if 201103L <= YY_CPLUSPLUS
1115 AgentParser (const AgentParser&) = delete;
1117 AgentParser& operator= (const AgentParser&) = delete;
1118#endif
1119
1122 int operator() ();
1123
1126 virtual int parse ();
1127
1128#if AGENT_DEBUG
1130 std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
1132 void set_debug_stream (std::ostream &);
1133
1135 typedef int debug_level_type;
1137 debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
1139 void set_debug_level (debug_level_type l);
1140#endif
1141
1145 virtual void error (const location_type& loc, const std::string& msg);
1146
1148 void error (const syntax_error& err);
1149
1152 static std::string symbol_name (symbol_kind_type yysymbol);
1153
1154 // Implementation of make_symbol for each token kind.
1155#if 201103L <= YY_CPLUSPLUS
1156 static
1157 symbol_type
1158 make_END (location_type l)
1159 {
1160 return symbol_type (token::TOKEN_END, std::move (l));
1161 }
1162#else
1163 static
1164 symbol_type
1166 {
1167 return symbol_type (token::TOKEN_END, l);
1168 }
1169#endif
1170#if 201103L <= YY_CPLUSPLUS
1171 static
1172 symbol_type
1173 make_AGENT_error (location_type l)
1174 {
1175 return symbol_type (token::TOKEN_AGENT_error, std::move (l));
1176 }
1177#else
1178 static
1179 symbol_type
1181 {
1182 return symbol_type (token::TOKEN_AGENT_error, l);
1183 }
1184#endif
1185#if 201103L <= YY_CPLUSPLUS
1186 static
1187 symbol_type
1188 make_AGENT_UNDEF (location_type l)
1189 {
1190 return symbol_type (token::TOKEN_AGENT_UNDEF, std::move (l));
1191 }
1192#else
1193 static
1194 symbol_type
1196 {
1197 return symbol_type (token::TOKEN_AGENT_UNDEF, l);
1198 }
1199#endif
1200#if 201103L <= YY_CPLUSPLUS
1201 static
1202 symbol_type
1203 make_COMMA (location_type l)
1204 {
1205 return symbol_type (token::TOKEN_COMMA, std::move (l));
1206 }
1207#else
1208 static
1209 symbol_type
1211 {
1212 return symbol_type (token::TOKEN_COMMA, l);
1213 }
1214#endif
1215#if 201103L <= YY_CPLUSPLUS
1216 static
1217 symbol_type
1218 make_COLON (location_type l)
1219 {
1220 return symbol_type (token::TOKEN_COLON, std::move (l));
1221 }
1222#else
1223 static
1224 symbol_type
1226 {
1227 return symbol_type (token::TOKEN_COLON, l);
1228 }
1229#endif
1230#if 201103L <= YY_CPLUSPLUS
1231 static
1232 symbol_type
1233 make_LSQUARE_BRACKET (location_type l)
1234 {
1235 return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l));
1236 }
1237#else
1238 static
1239 symbol_type
1241 {
1242 return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
1243 }
1244#endif
1245#if 201103L <= YY_CPLUSPLUS
1246 static
1247 symbol_type
1248 make_RSQUARE_BRACKET (location_type l)
1249 {
1250 return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l));
1251 }
1252#else
1253 static
1254 symbol_type
1256 {
1257 return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
1258 }
1259#endif
1260#if 201103L <= YY_CPLUSPLUS
1261 static
1262 symbol_type
1263 make_LCURLY_BRACKET (location_type l)
1264 {
1265 return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l));
1266 }
1267#else
1268 static
1269 symbol_type
1271 {
1272 return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
1273 }
1274#endif
1275#if 201103L <= YY_CPLUSPLUS
1276 static
1277 symbol_type
1278 make_RCURLY_BRACKET (location_type l)
1279 {
1280 return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l));
1281 }
1282#else
1283 static
1284 symbol_type
1286 {
1287 return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
1288 }
1289#endif
1290#if 201103L <= YY_CPLUSPLUS
1291 static
1292 symbol_type
1293 make_NULL_TYPE (location_type l)
1294 {
1295 return symbol_type (token::TOKEN_NULL_TYPE, std::move (l));
1296 }
1297#else
1298 static
1299 symbol_type
1301 {
1302 return symbol_type (token::TOKEN_NULL_TYPE, l);
1303 }
1304#endif
1305#if 201103L <= YY_CPLUSPLUS
1306 static
1307 symbol_type
1308 make_CONTROL_AGENT (location_type l)
1309 {
1310 return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l));
1311 }
1312#else
1313 static
1314 symbol_type
1316 {
1317 return symbol_type (token::TOKEN_CONTROL_AGENT, l);
1318 }
1319#endif
1320#if 201103L <= YY_CPLUSPLUS
1321 static
1322 symbol_type
1323 make_HTTP_HOST (location_type l)
1324 {
1325 return symbol_type (token::TOKEN_HTTP_HOST, std::move (l));
1326 }
1327#else
1328 static
1329 symbol_type
1331 {
1332 return symbol_type (token::TOKEN_HTTP_HOST, l);
1333 }
1334#endif
1335#if 201103L <= YY_CPLUSPLUS
1336 static
1337 symbol_type
1338 make_HTTP_PORT (location_type l)
1339 {
1340 return symbol_type (token::TOKEN_HTTP_PORT, std::move (l));
1341 }
1342#else
1343 static
1344 symbol_type
1346 {
1347 return symbol_type (token::TOKEN_HTTP_PORT, l);
1348 }
1349#endif
1350#if 201103L <= YY_CPLUSPLUS
1351 static
1352 symbol_type
1353 make_HTTP_HEADERS (location_type l)
1354 {
1355 return symbol_type (token::TOKEN_HTTP_HEADERS, std::move (l));
1356 }
1357#else
1358 static
1359 symbol_type
1361 {
1362 return symbol_type (token::TOKEN_HTTP_HEADERS, l);
1363 }
1364#endif
1365#if 201103L <= YY_CPLUSPLUS
1366 static
1367 symbol_type
1368 make_USER_CONTEXT (location_type l)
1369 {
1370 return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
1371 }
1372#else
1373 static
1374 symbol_type
1376 {
1377 return symbol_type (token::TOKEN_USER_CONTEXT, l);
1378 }
1379#endif
1380#if 201103L <= YY_CPLUSPLUS
1381 static
1382 symbol_type
1383 make_COMMENT (location_type l)
1384 {
1385 return symbol_type (token::TOKEN_COMMENT, std::move (l));
1386 }
1387#else
1388 static
1389 symbol_type
1391 {
1392 return symbol_type (token::TOKEN_COMMENT, l);
1393 }
1394#endif
1395#if 201103L <= YY_CPLUSPLUS
1396 static
1397 symbol_type
1398 make_NAME (location_type l)
1399 {
1400 return symbol_type (token::TOKEN_NAME, std::move (l));
1401 }
1402#else
1403 static
1404 symbol_type
1406 {
1407 return symbol_type (token::TOKEN_NAME, l);
1408 }
1409#endif
1410#if 201103L <= YY_CPLUSPLUS
1411 static
1412 symbol_type
1413 make_VALUE (location_type l)
1414 {
1415 return symbol_type (token::TOKEN_VALUE, std::move (l));
1416 }
1417#else
1418 static
1419 symbol_type
1421 {
1422 return symbol_type (token::TOKEN_VALUE, l);
1423 }
1424#endif
1425#if 201103L <= YY_CPLUSPLUS
1426 static
1427 symbol_type
1428 make_AUTHENTICATION (location_type l)
1429 {
1430 return symbol_type (token::TOKEN_AUTHENTICATION, std::move (l));
1431 }
1432#else
1433 static
1434 symbol_type
1436 {
1437 return symbol_type (token::TOKEN_AUTHENTICATION, l);
1438 }
1439#endif
1440#if 201103L <= YY_CPLUSPLUS
1441 static
1442 symbol_type
1443 make_TYPE (location_type l)
1444 {
1445 return symbol_type (token::TOKEN_TYPE, std::move (l));
1446 }
1447#else
1448 static
1449 symbol_type
1451 {
1452 return symbol_type (token::TOKEN_TYPE, l);
1453 }
1454#endif
1455#if 201103L <= YY_CPLUSPLUS
1456 static
1457 symbol_type
1458 make_BASIC (location_type l)
1459 {
1460 return symbol_type (token::TOKEN_BASIC, std::move (l));
1461 }
1462#else
1463 static
1464 symbol_type
1466 {
1467 return symbol_type (token::TOKEN_BASIC, l);
1468 }
1469#endif
1470#if 201103L <= YY_CPLUSPLUS
1471 static
1472 symbol_type
1473 make_REALM (location_type l)
1474 {
1475 return symbol_type (token::TOKEN_REALM, std::move (l));
1476 }
1477#else
1478 static
1479 symbol_type
1481 {
1482 return symbol_type (token::TOKEN_REALM, l);
1483 }
1484#endif
1485#if 201103L <= YY_CPLUSPLUS
1486 static
1487 symbol_type
1488 make_DIRECTORY (location_type l)
1489 {
1490 return symbol_type (token::TOKEN_DIRECTORY, std::move (l));
1491 }
1492#else
1493 static
1494 symbol_type
1496 {
1497 return symbol_type (token::TOKEN_DIRECTORY, l);
1498 }
1499#endif
1500#if 201103L <= YY_CPLUSPLUS
1501 static
1502 symbol_type
1503 make_CLIENTS (location_type l)
1504 {
1505 return symbol_type (token::TOKEN_CLIENTS, std::move (l));
1506 }
1507#else
1508 static
1509 symbol_type
1511 {
1512 return symbol_type (token::TOKEN_CLIENTS, l);
1513 }
1514#endif
1515#if 201103L <= YY_CPLUSPLUS
1516 static
1517 symbol_type
1518 make_USER (location_type l)
1519 {
1520 return symbol_type (token::TOKEN_USER, std::move (l));
1521 }
1522#else
1523 static
1524 symbol_type
1526 {
1527 return symbol_type (token::TOKEN_USER, l);
1528 }
1529#endif
1530#if 201103L <= YY_CPLUSPLUS
1531 static
1532 symbol_type
1533 make_USER_FILE (location_type l)
1534 {
1535 return symbol_type (token::TOKEN_USER_FILE, std::move (l));
1536 }
1537#else
1538 static
1539 symbol_type
1541 {
1542 return symbol_type (token::TOKEN_USER_FILE, l);
1543 }
1544#endif
1545#if 201103L <= YY_CPLUSPLUS
1546 static
1547 symbol_type
1548 make_PASSWORD (location_type l)
1549 {
1550 return symbol_type (token::TOKEN_PASSWORD, std::move (l));
1551 }
1552#else
1553 static
1554 symbol_type
1556 {
1557 return symbol_type (token::TOKEN_PASSWORD, l);
1558 }
1559#endif
1560#if 201103L <= YY_CPLUSPLUS
1561 static
1562 symbol_type
1563 make_PASSWORD_FILE (location_type l)
1564 {
1565 return symbol_type (token::TOKEN_PASSWORD_FILE, std::move (l));
1566 }
1567#else
1568 static
1569 symbol_type
1571 {
1572 return symbol_type (token::TOKEN_PASSWORD_FILE, l);
1573 }
1574#endif
1575#if 201103L <= YY_CPLUSPLUS
1576 static
1577 symbol_type
1578 make_TRUST_ANCHOR (location_type l)
1579 {
1580 return symbol_type (token::TOKEN_TRUST_ANCHOR, std::move (l));
1581 }
1582#else
1583 static
1584 symbol_type
1586 {
1587 return symbol_type (token::TOKEN_TRUST_ANCHOR, l);
1588 }
1589#endif
1590#if 201103L <= YY_CPLUSPLUS
1591 static
1592 symbol_type
1593 make_CERT_FILE (location_type l)
1594 {
1595 return symbol_type (token::TOKEN_CERT_FILE, std::move (l));
1596 }
1597#else
1598 static
1599 symbol_type
1601 {
1602 return symbol_type (token::TOKEN_CERT_FILE, l);
1603 }
1604#endif
1605#if 201103L <= YY_CPLUSPLUS
1606 static
1607 symbol_type
1608 make_KEY_FILE (location_type l)
1609 {
1610 return symbol_type (token::TOKEN_KEY_FILE, std::move (l));
1611 }
1612#else
1613 static
1614 symbol_type
1616 {
1617 return symbol_type (token::TOKEN_KEY_FILE, l);
1618 }
1619#endif
1620#if 201103L <= YY_CPLUSPLUS
1621 static
1622 symbol_type
1623 make_CERT_REQUIRED (location_type l)
1624 {
1625 return symbol_type (token::TOKEN_CERT_REQUIRED, std::move (l));
1626 }
1627#else
1628 static
1629 symbol_type
1631 {
1632 return symbol_type (token::TOKEN_CERT_REQUIRED, l);
1633 }
1634#endif
1635#if 201103L <= YY_CPLUSPLUS
1636 static
1637 symbol_type
1638 make_CONTROL_SOCKETS (location_type l)
1639 {
1640 return symbol_type (token::TOKEN_CONTROL_SOCKETS, std::move (l));
1641 }
1642#else
1643 static
1644 symbol_type
1646 {
1647 return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
1648 }
1649#endif
1650#if 201103L <= YY_CPLUSPLUS
1651 static
1652 symbol_type
1653 make_DHCP4_SERVER (location_type l)
1654 {
1655 return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l));
1656 }
1657#else
1658 static
1659 symbol_type
1661 {
1662 return symbol_type (token::TOKEN_DHCP4_SERVER, l);
1663 }
1664#endif
1665#if 201103L <= YY_CPLUSPLUS
1666 static
1667 symbol_type
1668 make_DHCP6_SERVER (location_type l)
1669 {
1670 return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l));
1671 }
1672#else
1673 static
1674 symbol_type
1676 {
1677 return symbol_type (token::TOKEN_DHCP6_SERVER, l);
1678 }
1679#endif
1680#if 201103L <= YY_CPLUSPLUS
1681 static
1682 symbol_type
1683 make_D2_SERVER (location_type l)
1684 {
1685 return symbol_type (token::TOKEN_D2_SERVER, std::move (l));
1686 }
1687#else
1688 static
1689 symbol_type
1691 {
1692 return symbol_type (token::TOKEN_D2_SERVER, l);
1693 }
1694#endif
1695#if 201103L <= YY_CPLUSPLUS
1696 static
1697 symbol_type
1698 make_SOCKET_NAME (location_type l)
1699 {
1700 return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
1701 }
1702#else
1703 static
1704 symbol_type
1706 {
1707 return symbol_type (token::TOKEN_SOCKET_NAME, l);
1708 }
1709#endif
1710#if 201103L <= YY_CPLUSPLUS
1711 static
1712 symbol_type
1713 make_SOCKET_TYPE (location_type l)
1714 {
1715 return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
1716 }
1717#else
1718 static
1719 symbol_type
1721 {
1722 return symbol_type (token::TOKEN_SOCKET_TYPE, l);
1723 }
1724#endif
1725#if 201103L <= YY_CPLUSPLUS
1726 static
1727 symbol_type
1728 make_UNIX (location_type l)
1729 {
1730 return symbol_type (token::TOKEN_UNIX, std::move (l));
1731 }
1732#else
1733 static
1734 symbol_type
1736 {
1737 return symbol_type (token::TOKEN_UNIX, l);
1738 }
1739#endif
1740#if 201103L <= YY_CPLUSPLUS
1741 static
1742 symbol_type
1743 make_HOOKS_LIBRARIES (location_type l)
1744 {
1745 return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l));
1746 }
1747#else
1748 static
1749 symbol_type
1751 {
1752 return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
1753 }
1754#endif
1755#if 201103L <= YY_CPLUSPLUS
1756 static
1757 symbol_type
1758 make_LIBRARY (location_type l)
1759 {
1760 return symbol_type (token::TOKEN_LIBRARY, std::move (l));
1761 }
1762#else
1763 static
1764 symbol_type
1766 {
1767 return symbol_type (token::TOKEN_LIBRARY, l);
1768 }
1769#endif
1770#if 201103L <= YY_CPLUSPLUS
1771 static
1772 symbol_type
1773 make_PARAMETERS (location_type l)
1774 {
1775 return symbol_type (token::TOKEN_PARAMETERS, std::move (l));
1776 }
1777#else
1778 static
1779 symbol_type
1781 {
1782 return symbol_type (token::TOKEN_PARAMETERS, l);
1783 }
1784#endif
1785#if 201103L <= YY_CPLUSPLUS
1786 static
1787 symbol_type
1788 make_LOGGERS (location_type l)
1789 {
1790 return symbol_type (token::TOKEN_LOGGERS, std::move (l));
1791 }
1792#else
1793 static
1794 symbol_type
1796 {
1797 return symbol_type (token::TOKEN_LOGGERS, l);
1798 }
1799#endif
1800#if 201103L <= YY_CPLUSPLUS
1801 static
1802 symbol_type
1803 make_OUTPUT_OPTIONS (location_type l)
1804 {
1805 return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l));
1806 }
1807#else
1808 static
1809 symbol_type
1811 {
1812 return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
1813 }
1814#endif
1815#if 201103L <= YY_CPLUSPLUS
1816 static
1817 symbol_type
1818 make_OUTPUT (location_type l)
1819 {
1820 return symbol_type (token::TOKEN_OUTPUT, std::move (l));
1821 }
1822#else
1823 static
1824 symbol_type
1826 {
1827 return symbol_type (token::TOKEN_OUTPUT, l);
1828 }
1829#endif
1830#if 201103L <= YY_CPLUSPLUS
1831 static
1832 symbol_type
1833 make_DEBUGLEVEL (location_type l)
1834 {
1835 return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l));
1836 }
1837#else
1838 static
1839 symbol_type
1841 {
1842 return symbol_type (token::TOKEN_DEBUGLEVEL, l);
1843 }
1844#endif
1845#if 201103L <= YY_CPLUSPLUS
1846 static
1847 symbol_type
1848 make_SEVERITY (location_type l)
1849 {
1850 return symbol_type (token::TOKEN_SEVERITY, std::move (l));
1851 }
1852#else
1853 static
1854 symbol_type
1856 {
1857 return symbol_type (token::TOKEN_SEVERITY, l);
1858 }
1859#endif
1860#if 201103L <= YY_CPLUSPLUS
1861 static
1862 symbol_type
1863 make_FLUSH (location_type l)
1864 {
1865 return symbol_type (token::TOKEN_FLUSH, std::move (l));
1866 }
1867#else
1868 static
1869 symbol_type
1871 {
1872 return symbol_type (token::TOKEN_FLUSH, l);
1873 }
1874#endif
1875#if 201103L <= YY_CPLUSPLUS
1876 static
1877 symbol_type
1878 make_MAXSIZE (location_type l)
1879 {
1880 return symbol_type (token::TOKEN_MAXSIZE, std::move (l));
1881 }
1882#else
1883 static
1884 symbol_type
1886 {
1887 return symbol_type (token::TOKEN_MAXSIZE, l);
1888 }
1889#endif
1890#if 201103L <= YY_CPLUSPLUS
1891 static
1892 symbol_type
1893 make_MAXVER (location_type l)
1894 {
1895 return symbol_type (token::TOKEN_MAXVER, std::move (l));
1896 }
1897#else
1898 static
1899 symbol_type
1901 {
1902 return symbol_type (token::TOKEN_MAXVER, l);
1903 }
1904#endif
1905#if 201103L <= YY_CPLUSPLUS
1906 static
1907 symbol_type
1908 make_PATTERN (location_type l)
1909 {
1910 return symbol_type (token::TOKEN_PATTERN, std::move (l));
1911 }
1912#else
1913 static
1914 symbol_type
1916 {
1917 return symbol_type (token::TOKEN_PATTERN, l);
1918 }
1919#endif
1920#if 201103L <= YY_CPLUSPLUS
1921 static
1922 symbol_type
1923 make_START_JSON (location_type l)
1924 {
1925 return symbol_type (token::TOKEN_START_JSON, std::move (l));
1926 }
1927#else
1928 static
1929 symbol_type
1931 {
1932 return symbol_type (token::TOKEN_START_JSON, l);
1933 }
1934#endif
1935#if 201103L <= YY_CPLUSPLUS
1936 static
1937 symbol_type
1938 make_START_AGENT (location_type l)
1939 {
1940 return symbol_type (token::TOKEN_START_AGENT, std::move (l));
1941 }
1942#else
1943 static
1944 symbol_type
1946 {
1947 return symbol_type (token::TOKEN_START_AGENT, l);
1948 }
1949#endif
1950#if 201103L <= YY_CPLUSPLUS
1951 static
1952 symbol_type
1953 make_START_SUB_AGENT (location_type l)
1954 {
1955 return symbol_type (token::TOKEN_START_SUB_AGENT, std::move (l));
1956 }
1957#else
1958 static
1959 symbol_type
1961 {
1962 return symbol_type (token::TOKEN_START_SUB_AGENT, l);
1963 }
1964#endif
1965#if 201103L <= YY_CPLUSPLUS
1966 static
1967 symbol_type
1968 make_STRING (std::string v, location_type l)
1969 {
1970 return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l));
1971 }
1972#else
1973 static
1974 symbol_type
1975 make_STRING (const std::string& v, const location_type& l)
1976 {
1977 return symbol_type (token::TOKEN_STRING, v, l);
1978 }
1979#endif
1980#if 201103L <= YY_CPLUSPLUS
1981 static
1982 symbol_type
1983 make_INTEGER (int64_t v, location_type l)
1984 {
1985 return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l));
1986 }
1987#else
1988 static
1989 symbol_type
1990 make_INTEGER (const int64_t& v, const location_type& l)
1991 {
1992 return symbol_type (token::TOKEN_INTEGER, v, l);
1993 }
1994#endif
1995#if 201103L <= YY_CPLUSPLUS
1996 static
1997 symbol_type
1998 make_FLOAT (double v, location_type l)
1999 {
2000 return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l));
2001 }
2002#else
2003 static
2004 symbol_type
2005 make_FLOAT (const double& v, const location_type& l)
2006 {
2007 return symbol_type (token::TOKEN_FLOAT, v, l);
2008 }
2009#endif
2010#if 201103L <= YY_CPLUSPLUS
2011 static
2012 symbol_type
2013 make_BOOLEAN (bool v, location_type l)
2014 {
2015 return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l));
2016 }
2017#else
2018 static
2019 symbol_type
2020 make_BOOLEAN (const bool& v, const location_type& l)
2021 {
2022 return symbol_type (token::TOKEN_BOOLEAN, v, l);
2023 }
2024#endif
2025
2026
2028 {
2029 public:
2030 context (const AgentParser& yyparser, const symbol_type& yyla);
2031 const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
2032 symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
2033 const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
2034
2038 int expected_tokens (symbol_kind_type yyarg[], int yyargn) const;
2039
2040 private:
2041 const AgentParser& yyparser_;
2042 const symbol_type& yyla_;
2043 };
2044
2045 private:
2046#if YY_CPLUSPLUS < 201103L
2048 AgentParser (const AgentParser&);
2050 AgentParser& operator= (const AgentParser&);
2051#endif
2052
2053
2055 typedef short state_type;
2056
2058 int yy_syntax_error_arguments_ (const context& yyctx,
2059 symbol_kind_type yyarg[], int yyargn) const;
2060
2063 virtual std::string yysyntax_error_ (const context& yyctx) const;
2067 static state_type yy_lr_goto_state_ (state_type yystate, int yysym);
2068
2071 static bool yy_pact_value_is_default_ (int yyvalue) YY_NOEXCEPT;
2072
2075 static bool yy_table_value_is_error_ (int yyvalue) YY_NOEXCEPT;
2076
2077 static const short yypact_ninf_;
2078 static const signed char yytable_ninf_;
2079
2083 static symbol_kind_type yytranslate_ (int t) YY_NOEXCEPT;
2084
2086 static std::string yytnamerr_ (const char *yystr);
2087
2089 static const char* const yytname_[];
2090
2091
2092 // Tables.
2093 // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2094 // STATE-NUM.
2095 static const short yypact_[];
2096
2097 // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2098 // Performed when YYTABLE does not specify something else to do. Zero
2099 // means the default is an error.
2100 static const unsigned char yydefact_[];
2101
2102 // YYPGOTO[NTERM-NUM].
2103 static const short yypgoto_[];
2104
2105 // YYDEFGOTO[NTERM-NUM].
2106 static const short yydefgoto_[];
2107
2108 // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
2109 // positive, shift that token. If negative, reduce the rule whose
2110 // number is the opposite. If YYTABLE_NINF, syntax error.
2111 static const short yytable_[];
2112
2113 static const short yycheck_[];
2114
2115 // YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2116 // state STATE-NUM.
2117 static const unsigned char yystos_[];
2118
2119 // YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.
2120 static const unsigned char yyr1_[];
2121
2122 // YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.
2123 static const signed char yyr2_[];
2124
2125
2126#if AGENT_DEBUG
2127 // YYRLINE[YYN] -- Source line where rule number YYN was defined.
2128 static const short yyrline_[];
2130 virtual void yy_reduce_print_ (int r) const;
2132 virtual void yy_stack_print_ () const;
2133
2135 int yydebug_;
2137 std::ostream* yycdebug_;
2138
2142 template <typename Base>
2143 void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
2144#endif
2145
2150 template <typename Base>
2151 void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
2152
2153 private:
2155 struct by_state
2156 {
2158 by_state () YY_NOEXCEPT;
2159
2161 typedef state_type kind_type;
2162
2164 by_state (kind_type s) YY_NOEXCEPT;
2165
2167 by_state (const by_state& that) YY_NOEXCEPT;
2168
2170 void clear () YY_NOEXCEPT;
2171
2173 void move (by_state& that);
2174
2177 symbol_kind_type kind () const YY_NOEXCEPT;
2178
2181 enum { empty_state = 0 };
2182
2185 state_type state;
2186 };
2187
2189 struct stack_symbol_type : basic_symbol<by_state>
2190 {
2192 typedef basic_symbol<by_state> super_type;
2194 stack_symbol_type ();
2196 stack_symbol_type (YY_RVREF (stack_symbol_type) that);
2198 stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
2199#if YY_CPLUSPLUS < 201103L
2202 stack_symbol_type& operator= (stack_symbol_type& that);
2203
2206 stack_symbol_type& operator= (const stack_symbol_type& that);
2207#endif
2208 };
2209
2211 template <typename T, typename S = std::vector<T> >
2212 class stack
2213 {
2214 public:
2215 // Hide our reversed order.
2216 typedef typename S::iterator iterator;
2217 typedef typename S::const_iterator const_iterator;
2218 typedef typename S::size_type size_type;
2219 typedef typename std::ptrdiff_t index_type;
2220
2221 stack (size_type n = 200) YY_NOEXCEPT
2222 : seq_ (n)
2223 {}
2224
2225#if 201103L <= YY_CPLUSPLUS
2227 stack (const stack&) = delete;
2229 stack& operator= (const stack&) = delete;
2230#endif
2231
2235 const T&
2236 operator[] (index_type i) const
2237 {
2238 return seq_[size_type (size () - 1 - i)];
2239 }
2240
2244 T&
2245 operator[] (index_type i)
2246 {
2247 return seq_[size_type (size () - 1 - i)];
2248 }
2249
2253 void
2254 push (YY_MOVE_REF (T) t)
2255 {
2256 seq_.push_back (T ());
2257 operator[] (0).move (t);
2258 }
2259
2261 void
2262 pop (std::ptrdiff_t n = 1) YY_NOEXCEPT
2263 {
2264 for (; 0 < n; --n)
2265 seq_.pop_back ();
2266 }
2267
2269 void
2270 clear () YY_NOEXCEPT
2271 {
2272 seq_.clear ();
2273 }
2274
2276 index_type
2277 size () const YY_NOEXCEPT
2278 {
2279 return index_type (seq_.size ());
2280 }
2281
2283 const_iterator
2284 begin () const YY_NOEXCEPT
2285 {
2286 return seq_.begin ();
2287 }
2288
2290 const_iterator
2291 end () const YY_NOEXCEPT
2292 {
2293 return seq_.end ();
2294 }
2295
2297 class slice
2298 {
2299 public:
2300 slice (const stack& stack, index_type range) YY_NOEXCEPT
2301 : stack_ (stack)
2302 , range_ (range)
2303 {}
2304
2305 const T&
2306 operator[] (index_type i) const
2307 {
2308 return stack_[range_ - i];
2309 }
2310
2311 private:
2312 const stack& stack_;
2313 index_type range_;
2314 };
2315
2316 private:
2317#if YY_CPLUSPLUS < 201103L
2319 stack (const stack&);
2321 stack& operator= (const stack&);
2322#endif
2324 S seq_;
2325 };
2326
2327
2329 typedef stack<stack_symbol_type> stack_type;
2330
2332 stack_type yystack_;
2333
2339 void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
2340
2347 void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
2348
2350 void yypop_ (int n = 1) YY_NOEXCEPT;
2351
2353 enum
2354 {
2355 yylast_ = 279,
2356 yynnts_ = 132,
2357 yyfinal_ = 8
2358 };
2359
2360
2361 // User arguments.
2363
2364 };
2365
2366 inline
2368 AgentParser::yytranslate_ (int t) YY_NOEXCEPT
2369 {
2370 // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
2371 // TOKEN-NUM as returned by yylex.
2372 static
2373 const signed char
2374 translate_table[] =
2375 {
2376 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2377 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2378 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2379 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2380 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2381 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2382 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2383 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2384 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2385 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2386 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2388 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2389 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2391 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2393 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2395 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2396 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2397 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2401 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2402 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2403 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2404 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2405 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2406 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2407 55, 56, 57
2408 };
2409 // Last valid token kind.
2410 const int code_max = 312;
2411
2412 if (t <= 0)
2413 return symbol_kind::S_YYEOF;
2414 else if (t <= code_max)
2415 return static_cast <symbol_kind_type> (translate_table[t]);
2416 else
2418 }
2419
2420 // basic_symbol.
2421 template <typename Base>
2423 : Base (that)
2424 , value ()
2425 , location (that.location)
2426 {
2427 switch (this->kind ())
2428 {
2429 case symbol_kind::S_value: // value
2430 case symbol_kind::S_map_value: // map_value
2431 case symbol_kind::S_socket_type_value: // socket_type_value
2432 case symbol_kind::S_auth_type_value: // auth_type_value
2433 value.copy< ElementPtr > (YY_MOVE (that.value));
2434 break;
2435
2436 case symbol_kind::S_BOOLEAN: // "boolean"
2437 value.copy< bool > (YY_MOVE (that.value));
2438 break;
2439
2440 case symbol_kind::S_FLOAT: // "floating point"
2441 value.copy< double > (YY_MOVE (that.value));
2442 break;
2443
2444 case symbol_kind::S_INTEGER: // "integer"
2445 value.copy< int64_t > (YY_MOVE (that.value));
2446 break;
2447
2448 case symbol_kind::S_STRING: // "constant string"
2449 value.copy< std::string > (YY_MOVE (that.value));
2450 break;
2451
2452 default:
2453 break;
2454 }
2455
2456 }
2457
2458
2459
2460
2461 template <typename Base>
2464 {
2465 return this->kind ();
2466 }
2467
2468
2469 template <typename Base>
2470 bool
2472 {
2473 return this->kind () == symbol_kind::S_YYEMPTY;
2474 }
2475
2476 template <typename Base>
2477 void
2479 {
2480 super_type::move (s);
2481 switch (this->kind ())
2482 {
2483 case symbol_kind::S_value: // value
2484 case symbol_kind::S_map_value: // map_value
2485 case symbol_kind::S_socket_type_value: // socket_type_value
2486 case symbol_kind::S_auth_type_value: // auth_type_value
2487 value.move< ElementPtr > (YY_MOVE (s.value));
2488 break;
2489
2490 case symbol_kind::S_BOOLEAN: // "boolean"
2491 value.move< bool > (YY_MOVE (s.value));
2492 break;
2493
2494 case symbol_kind::S_FLOAT: // "floating point"
2495 value.move< double > (YY_MOVE (s.value));
2496 break;
2497
2498 case symbol_kind::S_INTEGER: // "integer"
2499 value.move< int64_t > (YY_MOVE (s.value));
2500 break;
2501
2502 case symbol_kind::S_STRING: // "constant string"
2503 value.move< std::string > (YY_MOVE (s.value));
2504 break;
2505
2506 default:
2507 break;
2508 }
2509
2510 location = YY_MOVE (s.location);
2511 }
2512
2513 // by_kind.
2514 inline
2516 : kind_ (symbol_kind::S_YYEMPTY)
2517 {}
2518
2519#if 201103L <= YY_CPLUSPLUS
2520 inline
2522 : kind_ (that.kind_)
2523 {
2524 that.clear ();
2525 }
2526#endif
2527
2528 inline
2530 : kind_ (that.kind_)
2531 {}
2532
2533 inline
2535 : kind_ (yytranslate_ (t))
2536 {}
2537
2538
2539
2540 inline
2541 void
2546
2547 inline
2548 void
2550 {
2551 kind_ = that.kind_;
2552 that.clear ();
2553 }
2554
2555 inline
2558 {
2559 return kind_;
2560 }
2561
2562
2563 inline
2566 {
2567 return this->kind ();
2568 }
2569
2570
2571#line 14 "agent_parser.yy"
2572} } // isc::agent
2573#line 2574 "agent_parser.h"
2574
2575
2576
2577
2578#endif // !YY_AGENT_AGENT_PARSER_H_INCLUDED
Forward declaration of the ParserContext class.
#define YY_RVREF(Type)
#define AGENT__ASSERT
#define YY_MOVE_REF(Type)
#define YY_NOEXCEPT
#define YY_ATTRIBUTE_PURE
#define YY_MOVE
#define YY_NOTHROW
const symbol_type & lookahead() const YY_NOEXCEPT
symbol_kind_type token() const YY_NOEXCEPT
const location_type & location() const YY_NOEXCEPT
Present a slice of the top of a stack.
slice(const stack &stack, index_type range) YY_NOEXCEPT
A buffer to store and retrieve objects.
T & emplace()
Instantiate an empty T in here.
void destroy()
Destroy the stored T.
void copy(const self_type &that)
Copy the content of that to this.
value_type(YY_RVREF(T) t)
Construct and fill.
const T & as() const YY_NOEXCEPT
Const accessor to a built T (for printer).
void swap(self_type &that) YY_NOEXCEPT
Swap the content with that, of same type.
char yyraw_[size]
A buffer large enough to store any of the semantic values.
T & as() YY_NOEXCEPT
Accessor to a built T.
value_type() YY_NOEXCEPT
Empty construction.
void move(self_type &that)
Move the content of that to this.
long double yyalign_me_
Strongest alignment constraints.
T & emplace(const T &t)
Instantiate a T in here from t.
value_type self_type
Type of *this.
T & build(const T &t)
Instantiate a T in here from t.
~value_type() YY_NOEXCEPT
Destruction, allowed only if empty.
T & build()
Instantiate an empty T in here.
static symbol_type make_D2_SERVER(const location_type &l)
static symbol_type make_PASSWORD_FILE(const location_type &l)
static symbol_type make_SOCKET_TYPE(const location_type &l)
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
static symbol_type make_HTTP_HOST(const location_type &l)
static symbol_type make_END(const location_type &l)
static symbol_type make_COMMENT(const location_type &l)
static symbol_type make_NULL_TYPE(const location_type &l)
static symbol_type make_AUTHENTICATION(const location_type &l)
static symbol_type make_CERT_FILE(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_RSQUARE_BRACKET(const location_type &l)
static symbol_type make_COLON(const location_type &l)
static symbol_type make_BASIC(const location_type &l)
static symbol_type make_PATTERN(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_FLOAT(const double &v, const location_type &l)
static symbol_type make_STRING(const std::string &v, const location_type &l)
static symbol_type make_LOGGERS(const location_type &l)
static symbol_type make_SOCKET_NAME(const location_type &l)
static symbol_type make_CONTROL_AGENT(const location_type &l)
static symbol_type make_AGENT_error(const location_type &l)
static symbol_type make_RCURLY_BRACKET(const location_type &l)
static symbol_type make_HTTP_HEADERS(const location_type &l)
static symbol_type make_DEBUGLEVEL(const location_type &l)
static symbol_type make_START_AGENT(const location_type &l)
static symbol_type make_LCURLY_BRACKET(const location_type &l)
static symbol_type make_FLUSH(const location_type &l)
static symbol_type make_CERT_REQUIRED(const location_type &l)
static symbol_type make_MAXVER(const location_type &l)
static symbol_type make_PASSWORD(const location_type &l)
static symbol_type make_START_JSON(const location_type &l)
value_type semantic_type
Backward compatibility (Bison 3.8).
token::token_kind_type token_kind_type
Token kind, as returned by yylex.
static symbol_type make_CONTROL_SOCKETS(const location_type &l)
static symbol_type make_NAME(const location_type &l)
static symbol_type make_COMMA(const location_type &l)
static symbol_type make_HOOKS_LIBRARIES(const location_type &l)
static const symbol_kind_type YYNTOKENS
The number of tokens.
static symbol_type make_OUTPUT(const location_type &l)
location location_type
Symbol locations.
static symbol_type make_CLIENTS(const location_type &l)
static symbol_type make_DHCP4_SERVER(const location_type &l)
static symbol_type make_DHCP6_SERVER(const location_type &l)
static symbol_type make_REALM(const location_type &l)
static symbol_type make_TRUST_ANCHOR(const location_type &l)
static symbol_type make_HTTP_PORT(const location_type &l)
static symbol_type make_PARAMETERS(const location_type &l)
static symbol_type make_SEVERITY(const location_type &l)
static symbol_type make_USER(const location_type &l)
static symbol_type make_USER_FILE(const location_type &l)
static symbol_type make_BOOLEAN(const bool &v, const location_type &l)
static symbol_type make_LIBRARY(const location_type &l)
static symbol_type make_KEY_FILE(const location_type &l)
static symbol_type make_AGENT_UNDEF(const location_type &l)
token_kind_type token_type
Backward compatibility alias (Bison 3.6).
static symbol_type make_START_SUB_AGENT(const location_type &l)
static symbol_type make_DIRECTORY(const location_type &l)
static symbol_type make_VALUE(const location_type &l)
static symbol_type make_UNIX(const location_type &l)
static symbol_type make_MAXSIZE(const location_type &l)
static symbol_type make_USER_CONTEXT(const location_type &l)
static symbol_type make_TYPE(const location_type &l)
static symbol_type make_INTEGER(const int64_t &v, const location_type &l)
Parser context is a wrapper around flex/bison instances dedicated to Control-agent config file parser...
boost::shared_ptr< Element > ElementPtr
Definition data.h:28
Defines the logger used by the top-level component of kea-lfc.
basic_symbol(const basic_symbol &that)
Copy constructor.
basic_symbol(typename Base::kind_type t, const int64_t &v, const location_type &l)
location_type location
The location.
basic_symbol() YY_NOEXCEPT
Default constructor.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
basic_symbol(typename Base::kind_type t, const location_type &l)
Constructors for typed symbols.
basic_symbol(typename Base::kind_type t, const std::string &v, const location_type &l)
void clear() YY_NOEXCEPT
Destroy contents, and record that is empty.
bool empty() const YY_NOEXCEPT
Whether empty.
value_type value
The semantic value.
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
basic_symbol(typename Base::kind_type t, const ElementPtr &v, const location_type &l)
basic_symbol(typename Base::kind_type t, const double &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 bool &v, const location_type &l)
Type access provider for token (enum) based symbols.
by_kind() YY_NOEXCEPT
Default constructor.
symbol_kind_type kind() const YY_NOEXCEPT
The (internal) type number (corresponding to type).
token_kind_type kind_type
The symbol kind as needed by the constructor.
symbol_kind_type kind_
The symbol kind.
symbol_kind_type type_get() const YY_NOEXCEPT
Backward compatibility (Bison 3.6).
void clear() YY_NOEXCEPT
Record that this symbol is empty.
void move(by_kind &that)
Steal the symbol kind from that.
"External" symbols: returned by the scanner.
symbol_type() YY_NOEXCEPT
Empty symbol.
basic_symbol< by_kind > super_type
Superclass.
Syntax errors thrown from user actions.
~syntax_error() YY_NOEXCEPT YY_NOTHROW
syntax_error(const syntax_error &s)
syntax_error(const location_type &l, const std::string &m)
token_kind_type yytokentype
Backward compatibility alias (Bison 3.6).