Kea  1.5.0
dhcp6_parser.h
Go to the documentation of this file.
1 // A Bison parser, made by GNU Bison 3.2.1.
2 
3 // Skeleton interface for Bison LALR(1) parsers in C++
4 
5 // Copyright (C) 2002-2015, 2018 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 <http://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 // Undocumented macros, especially those whose name start with YY_,
42 // are private implementation details. Do not rely on them.
43 
44 #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
45 # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
46 // // "%code requires" blocks.
47 #line 17 "dhcp6_parser.yy" // lalr1.cc:404
48 
49 #include <string>
50 #include <cc/data.h>
51 #include <dhcp/option.h>
52 #include <boost/lexical_cast.hpp>
54 
55 using namespace isc::dhcp;
56 using namespace isc::data;
57 using namespace std;
58 
59 #line 60 "dhcp6_parser.h" // lalr1.cc:404
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 # include "location.hh"
89 #include <typeinfo>
90 #ifndef YYASSERT
91 # include <cassert>
92 # define YYASSERT assert
93 #endif
94 
95 
96 #ifndef YY_ATTRIBUTE
97 # if (defined __GNUC__ \
98  && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
99  || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
100 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
101 # else
102 # define YY_ATTRIBUTE(Spec) /* empty */
103 # endif
104 #endif
105 
106 #ifndef YY_ATTRIBUTE_PURE
107 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
108 #endif
109 
110 #ifndef YY_ATTRIBUTE_UNUSED
111 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
112 #endif
113 
114 /* Suppress unused-variable warnings by "using" E. */
115 #if ! defined lint || defined __GNUC__
116 # define YYUSE(E) ((void) (E))
117 #else
118 # define YYUSE(E) /* empty */
119 #endif
120 
121 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
122 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
123 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
124  _Pragma ("GCC diagnostic push") \
125  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
126  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
127 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
128  _Pragma ("GCC diagnostic pop")
129 #else
130 # define YY_INITIAL_VALUE(Value) Value
131 #endif
132 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
133 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
134 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
135 #endif
136 #ifndef YY_INITIAL_VALUE
137 # define YY_INITIAL_VALUE(Value) /* Nothing. */
138 #endif
139 
140 # ifndef YY_NULLPTR
141 # if defined __cplusplus
142 # if 201103L <= __cplusplus
143 # define YY_NULLPTR nullptr
144 # else
145 # define YY_NULLPTR 0
146 # endif
147 # else
148 # define YY_NULLPTR ((void*)0)
149 # endif
150 # endif
151 
152 /* Debug traces. */
153 #ifndef PARSER6_DEBUG
154 # if defined YYDEBUG
155 #if YYDEBUG
156 # define PARSER6_DEBUG 1
157 # else
158 # define PARSER6_DEBUG 0
159 # endif
160 # else /* ! defined YYDEBUG */
161 # define PARSER6_DEBUG 1
162 # endif /* ! defined YYDEBUG */
163 #endif /* ! defined PARSER6_DEBUG */
164 
165 #line 14 "dhcp6_parser.yy" // lalr1.cc:404
166 namespace isc { namespace dhcp {
167 #line 168 "dhcp6_parser.h" // lalr1.cc:404
168 
170  template <typename T, typename S = std::vector<T> >
171  class stack
172  {
173  public:
174  // Hide our reversed order.
175  typedef typename S::reverse_iterator iterator;
176  typedef typename S::const_reverse_iterator const_iterator;
177  typedef typename S::size_type size_type;
178 
179  stack (size_type n = 200)
180  : seq_ (n)
181  {}
182 
186  T&
187  operator[] (size_type i)
188  {
189  return seq_[size () - 1 - i];
190  }
191 
195  T&
196  operator[] (int i)
197  {
198  return operator[] (size_type (i));
199  }
200 
204  const T&
205  operator[] (size_type i) const
206  {
207  return seq_[size () - 1 - i];
208  }
209 
213  const T&
214  operator[] (int i) const
215  {
216  return operator[] (size_type (i));
217  }
218 
222  void
224  {
225  seq_.push_back (T ());
226  operator[](0).move (t);
227  }
228 
229  void
230  pop (int n = 1)
231  {
232  for (; 0 < n; --n)
233  seq_.pop_back ();
234  }
235 
236  void
237  clear ()
238  {
239  seq_.clear ();
240  }
241 
242  size_type
243  size () const
244  {
245  return seq_.size ();
246  }
247 
248  const_iterator
249  begin () const
250  {
251  return seq_.rbegin ();
252  }
253 
254  const_iterator
255  end () const
256  {
257  return seq_.rend ();
258  }
259 
260  private:
261  stack (const stack&);
262  stack& operator= (const stack&);
264  S seq_;
265  };
266 
268  template <typename T, typename S = stack<T> >
269  class slice
270  {
271  public:
272  slice (const S& stack, int range)
273  : stack_ (stack)
274  , range_ (range)
275  {}
276 
277  const T&
278  operator[] (int i) const
279  {
280  return stack_[range_ - i];
281  }
282 
283  private:
284  const S& stack_;
285  int range_;
286  };
287 
288 
289 
295  template <size_t S>
296  struct variant
297  {
300 
303  : yybuffer_ ()
304  , yytypeid_ (YY_NULLPTR)
305  {}
306 
308  template <typename T>
310  : yytypeid_ (&typeid (T))
311  {
312  YYASSERT (sizeof (T) <= S);
313  new (yyas_<T> ()) T (YY_MOVE (t));
314  }
315 
318  {
319  YYASSERT (!yytypeid_);
320  }
321 
323  template <typename T>
324  T&
326  {
327  YYASSERT (!yytypeid_);
328  YYASSERT (sizeof (T) <= S);
329  yytypeid_ = & typeid (T);
330  return *new (yyas_<T> ()) T ();
331  }
332 
333 # if 201103L <= YY_CPLUSPLUS
334  template <typename T, typename U>
336  T&
337  emplace (U&& u)
338  {
339  YYASSERT (!yytypeid_);
340  YYASSERT (sizeof (T) <= S);
341  yytypeid_ = & typeid (T);
342  return *new (yyas_<T> ()) T (std::forward <U>(u));
343  }
344 # else
345  template <typename T>
347  T&
348  emplace (const T& t)
349  {
350  YYASSERT (!yytypeid_);
351  YYASSERT (sizeof (T) <= S);
352  yytypeid_ = & typeid (T);
353  return *new (yyas_<T> ()) T (t);
354  }
355 # endif
356 
359  template <typename T>
360  T&
361  build ()
362  {
363  return emplace<T> ();
364  }
365 
368  template <typename T>
369  T&
370  build (const T& t)
371  {
372  return emplace<T> (t);
373  }
374 
376  template <typename T>
377  T&
378  as ()
379  {
380  YYASSERT (yytypeid_);
381  YYASSERT (*yytypeid_ == typeid (T));
382  YYASSERT (sizeof (T) <= S);
383  return *yyas_<T> ();
384  }
385 
387  template <typename T>
388  const T&
389  as () const
390  {
391  YYASSERT (yytypeid_);
392  YYASSERT (*yytypeid_ == typeid (T));
393  YYASSERT (sizeof (T) <= S);
394  return *yyas_<T> ();
395  }
396 
405  template <typename T>
406  void
407  swap (self_type& other)
408  {
409  YYASSERT (yytypeid_);
410  YYASSERT (*yytypeid_ == *other.yytypeid_);
411  std::swap (as<T> (), other.as<T> ());
412  }
413 
417  template <typename T>
418  void
419  move (self_type& other)
420  {
421 # if 201103L <= YY_CPLUSPLUS
422  emplace<T> (std::move (other.as<T> ()));
423 # else
424  emplace<T> ();
425  swap<T> (other);
426 # endif
427  other.destroy<T> ();
428  }
429 
430 # if 201103L <= YY_CPLUSPLUS
431  template <typename T>
433  void
434  move (self_type&& other)
435  {
436  emplace<T> (std::move (other.as<T> ()));
437  other.destroy<T> ();
438  }
439 #endif
440 
442  template <typename T>
443  void
444  copy (const self_type& other)
445  {
446  emplace<T> (other.as<T> ());
447  }
448 
450  template <typename T>
451  void
453  {
454  as<T> ().~T ();
455  yytypeid_ = YY_NULLPTR;
456  }
457 
458  private:
460  self_type& operator= (const self_type&);
461  variant (const self_type&);
462 
464  template <typename T>
465  T*
466  yyas_ ()
467  {
468  void *yyp = yybuffer_.yyraw;
469  return static_cast<T*> (yyp);
470  }
471 
473  template <typename T>
474  const T*
475  yyas_ () const
476  {
477  const void *yyp = yybuffer_.yyraw;
478  return static_cast<const T*> (yyp);
479  }
480 
481  union
482  {
484  long double yyalign_me;
486  char yyraw[S];
487  } yybuffer_;
488 
490  const std::type_info *yytypeid_;
491  };
492 
493 
496  {
497  public:
498 #ifndef PARSER6_STYPE
499  union union_type
501  {
502  // value
503  // map_value
504  // db_type
505  // hr_mode
506  // duid_type
507  // ncr_protocol_value
508  // replace_client_name_value
509  char dummy1[sizeof (ElementPtr)];
510 
511  // "boolean"
512  char dummy2[sizeof (bool)];
513 
514  // "floating point"
515  char dummy3[sizeof (double)];
516 
517  // "integer"
518  char dummy4[sizeof (int64_t)];
519 
520  // "constant string"
521  char dummy5[sizeof (std::string)];
522 };
523 
525  typedef variant<sizeof (union_type)> semantic_type;
526 #else
527  typedef PARSER6_STYPE semantic_type;
528 #endif
529  typedef location location_type;
531 
533  struct syntax_error : std::runtime_error
534  {
535  syntax_error (const location_type& l, const std::string& m);
537  };
538 
540  struct token
541  {
543  {
544  TOKEN_END = 0,
545  TOKEN_COMMA = 258,
546  TOKEN_COLON = 259,
547  TOKEN_LSQUARE_BRACKET = 260,
548  TOKEN_RSQUARE_BRACKET = 261,
549  TOKEN_LCURLY_BRACKET = 262,
550  TOKEN_RCURLY_BRACKET = 263,
551  TOKEN_NULL_TYPE = 264,
552  TOKEN_DHCP6 = 265,
553  TOKEN_CONFIG_CONTROL = 266,
554  TOKEN_CONFIG_DATABASES = 267,
555  TOKEN_INTERFACES_CONFIG = 268,
556  TOKEN_INTERFACES = 269,
557  TOKEN_RE_DETECT = 270,
558  TOKEN_LEASE_DATABASE = 271,
559  TOKEN_HOSTS_DATABASE = 272,
560  TOKEN_HOSTS_DATABASES = 273,
561  TOKEN_TYPE = 274,
562  TOKEN_MEMFILE = 275,
563  TOKEN_MYSQL = 276,
564  TOKEN_POSTGRESQL = 277,
565  TOKEN_CQL = 278,
566  TOKEN_USER = 279,
567  TOKEN_PASSWORD = 280,
568  TOKEN_HOST = 281,
569  TOKEN_PORT = 282,
570  TOKEN_PERSIST = 283,
571  TOKEN_LFC_INTERVAL = 284,
572  TOKEN_READONLY = 285,
573  TOKEN_CONNECT_TIMEOUT = 286,
574  TOKEN_CONTACT_POINTS = 287,
575  TOKEN_MAX_RECONNECT_TRIES = 288,
576  TOKEN_RECONNECT_WAIT_TIME = 289,
577  TOKEN_KEYSPACE = 290,
578  TOKEN_REQUEST_TIMEOUT = 291,
579  TOKEN_TCP_KEEPALIVE = 292,
580  TOKEN_TCP_NODELAY = 293,
581  TOKEN_PREFERRED_LIFETIME = 294,
582  TOKEN_VALID_LIFETIME = 295,
583  TOKEN_RENEW_TIMER = 296,
584  TOKEN_REBIND_TIMER = 297,
585  TOKEN_DECLINE_PROBATION_PERIOD = 298,
586  TOKEN_SERVER_TAG = 299,
587  TOKEN_SUBNET6 = 300,
588  TOKEN_OPTION_DEF = 301,
589  TOKEN_OPTION_DATA = 302,
590  TOKEN_NAME = 303,
591  TOKEN_DATA = 304,
592  TOKEN_CODE = 305,
593  TOKEN_SPACE = 306,
594  TOKEN_CSV_FORMAT = 307,
595  TOKEN_ALWAYS_SEND = 308,
596  TOKEN_RECORD_TYPES = 309,
597  TOKEN_ENCAPSULATE = 310,
598  TOKEN_ARRAY = 311,
599  TOKEN_POOLS = 312,
600  TOKEN_POOL = 313,
601  TOKEN_PD_POOLS = 314,
602  TOKEN_PREFIX = 315,
603  TOKEN_PREFIX_LEN = 316,
604  TOKEN_EXCLUDED_PREFIX = 317,
605  TOKEN_EXCLUDED_PREFIX_LEN = 318,
606  TOKEN_DELEGATED_LEN = 319,
607  TOKEN_USER_CONTEXT = 320,
608  TOKEN_COMMENT = 321,
609  TOKEN_SUBNET = 322,
610  TOKEN_INTERFACE = 323,
611  TOKEN_INTERFACE_ID = 324,
612  TOKEN_ID = 325,
613  TOKEN_RAPID_COMMIT = 326,
614  TOKEN_RESERVATION_MODE = 327,
615  TOKEN_DISABLED = 328,
616  TOKEN_OUT_OF_POOL = 329,
617  TOKEN_GLOBAL = 330,
618  TOKEN_ALL = 331,
619  TOKEN_SHARED_NETWORKS = 332,
620  TOKEN_MAC_SOURCES = 333,
621  TOKEN_RELAY_SUPPLIED_OPTIONS = 334,
622  TOKEN_HOST_RESERVATION_IDENTIFIERS = 335,
623  TOKEN_SANITY_CHECKS = 336,
624  TOKEN_LEASE_CHECKS = 337,
625  TOKEN_CLIENT_CLASSES = 338,
626  TOKEN_REQUIRE_CLIENT_CLASSES = 339,
627  TOKEN_TEST = 340,
628  TOKEN_ONLY_IF_REQUIRED = 341,
629  TOKEN_CLIENT_CLASS = 342,
630  TOKEN_RESERVATIONS = 343,
631  TOKEN_IP_ADDRESSES = 344,
632  TOKEN_PREFIXES = 345,
633  TOKEN_DUID = 346,
634  TOKEN_HW_ADDRESS = 347,
635  TOKEN_HOSTNAME = 348,
636  TOKEN_FLEX_ID = 349,
637  TOKEN_RELAY = 350,
638  TOKEN_IP_ADDRESS = 351,
639  TOKEN_HOOKS_LIBRARIES = 352,
640  TOKEN_LIBRARY = 353,
641  TOKEN_PARAMETERS = 354,
642  TOKEN_EXPIRED_LEASES_PROCESSING = 355,
643  TOKEN_RECLAIM_TIMER_WAIT_TIME = 356,
644  TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 357,
645  TOKEN_HOLD_RECLAIMED_TIME = 358,
646  TOKEN_MAX_RECLAIM_LEASES = 359,
647  TOKEN_MAX_RECLAIM_TIME = 360,
648  TOKEN_UNWARNED_RECLAIM_CYCLES = 361,
649  TOKEN_SERVER_ID = 362,
650  TOKEN_LLT = 363,
651  TOKEN_EN = 364,
652  TOKEN_LL = 365,
653  TOKEN_IDENTIFIER = 366,
654  TOKEN_HTYPE = 367,
655  TOKEN_TIME = 368,
656  TOKEN_ENTERPRISE_ID = 369,
657  TOKEN_DHCP4O6_PORT = 370,
658  TOKEN_CONTROL_SOCKET = 371,
659  TOKEN_SOCKET_TYPE = 372,
660  TOKEN_SOCKET_NAME = 373,
661  TOKEN_DHCP_QUEUE_CONTROL = 374,
662  TOKEN_DHCP_DDNS = 375,
663  TOKEN_ENABLE_UPDATES = 376,
664  TOKEN_QUALIFYING_SUFFIX = 377,
665  TOKEN_SERVER_IP = 378,
666  TOKEN_SERVER_PORT = 379,
667  TOKEN_SENDER_IP = 380,
668  TOKEN_SENDER_PORT = 381,
669  TOKEN_MAX_QUEUE_SIZE = 382,
670  TOKEN_NCR_PROTOCOL = 383,
671  TOKEN_NCR_FORMAT = 384,
672  TOKEN_OVERRIDE_NO_UPDATE = 385,
673  TOKEN_OVERRIDE_CLIENT_UPDATE = 386,
674  TOKEN_REPLACE_CLIENT_NAME = 387,
675  TOKEN_GENERATED_PREFIX = 388,
676  TOKEN_UDP = 389,
677  TOKEN_TCP = 390,
678  TOKEN_JSON = 391,
679  TOKEN_WHEN_PRESENT = 392,
680  TOKEN_NEVER = 393,
681  TOKEN_ALWAYS = 394,
682  TOKEN_WHEN_NOT_PRESENT = 395,
683  TOKEN_HOSTNAME_CHAR_SET = 396,
684  TOKEN_HOSTNAME_CHAR_REPLACEMENT = 397,
685  TOKEN_LOGGING = 398,
686  TOKEN_LOGGERS = 399,
687  TOKEN_OUTPUT_OPTIONS = 400,
688  TOKEN_OUTPUT = 401,
689  TOKEN_DEBUGLEVEL = 402,
690  TOKEN_SEVERITY = 403,
691  TOKEN_FLUSH = 404,
692  TOKEN_MAXSIZE = 405,
693  TOKEN_MAXVER = 406,
694  TOKEN_DHCP4 = 407,
695  TOKEN_DHCPDDNS = 408,
696  TOKEN_CONTROL_AGENT = 409,
697  TOKEN_TOPLEVEL_JSON = 410,
698  TOKEN_TOPLEVEL_DHCP6 = 411,
699  TOKEN_SUB_DHCP6 = 412,
700  TOKEN_SUB_INTERFACES6 = 413,
701  TOKEN_SUB_SUBNET6 = 414,
702  TOKEN_SUB_POOL6 = 415,
703  TOKEN_SUB_PD_POOL = 416,
704  TOKEN_SUB_RESERVATION = 417,
705  TOKEN_SUB_OPTION_DEFS = 418,
706  TOKEN_SUB_OPTION_DEF = 419,
707  TOKEN_SUB_OPTION_DATA = 420,
708  TOKEN_SUB_HOOKS_LIBRARY = 421,
709  TOKEN_SUB_DHCP_DDNS = 422,
710  TOKEN_SUB_LOGGING = 423,
711  TOKEN_SUB_CONFIG_CONTROL = 424,
712  TOKEN_STRING = 425,
713  TOKEN_INTEGER = 426,
714  TOKEN_FLOAT = 427,
715  TOKEN_BOOLEAN = 428
716  };
717  };
718 
721 
723  typedef int symbol_number_type;
724 
726  enum { empty_symbol = -2 };
727 
729  typedef unsigned char token_number_type;
730 
737  template <typename Base>
738  struct basic_symbol : Base
739  {
741  typedef Base super_type;
742 
744  basic_symbol ();
745 
748 
749 
751 # if 201103L <= YY_CPLUSPLUS
752  basic_symbol (typename Base::kind_type t, location_type&& l);
753 #else
754  basic_symbol (typename Base::kind_type t, const location_type& l);
755 #endif
756 # if 201103L <= YY_CPLUSPLUS
757  basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l);
758 #else
759  basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l);
760 #endif
761 # if 201103L <= YY_CPLUSPLUS
762  basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l);
763 #else
764  basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l);
765 #endif
766 # if 201103L <= YY_CPLUSPLUS
767  basic_symbol (typename Base::kind_type t, double&& v, location_type&& l);
768 #else
769  basic_symbol (typename Base::kind_type t, const double& v, const location_type& l);
770 #endif
771 # if 201103L <= YY_CPLUSPLUS
772  basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l);
773 #else
774  basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l);
775 #endif
776 # if 201103L <= YY_CPLUSPLUS
777  basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l);
778 #else
779  basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l);
780 #endif
781 
782 
784  ~basic_symbol ();
785 
787  void clear ();
788 
790  bool empty () const;
791 
793  void move (basic_symbol& s);
794 
797 
800 
801  private:
802 #if YY_CPLUSPLUS < 201103L
803  basic_symbol& operator= (const basic_symbol& other);
805 #endif
806  };
807 
809  struct by_type
810  {
812  by_type ();
813 
815  by_type (const by_type& other);
816 
819 
821  by_type (kind_type t);
822 
824  void clear ();
825 
827  void move (by_type& that);
828 
831  symbol_number_type type_get () const;
832 
834  token_type token () const;
835 
839  int type;
840  };
841 
844 
847  virtual ~Dhcp6Parser ();
848 
851  int operator() ();
852 
855  virtual int parse ();
856 
857 #if PARSER6_DEBUG
858  std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
861  void set_debug_stream (std::ostream &);
862 
864  typedef int debug_level_type;
866  debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
868  void set_debug_level (debug_level_type l);
869 #endif
870 
874  virtual void error (const location_type& loc, const std::string& msg);
875 
877  void error (const syntax_error& err);
878 
879  // Symbol constructors declarations.
880  static
882  make_END (YY_COPY (location_type) l);
883 
884  static
886  make_COMMA (YY_COPY (location_type) l);
887 
888  static
890  make_COLON (YY_COPY (location_type) l);
891 
892  static
894  make_LSQUARE_BRACKET (YY_COPY (location_type) l);
895 
896  static
898  make_RSQUARE_BRACKET (YY_COPY (location_type) l);
899 
900  static
902  make_LCURLY_BRACKET (YY_COPY (location_type) l);
903 
904  static
906  make_RCURLY_BRACKET (YY_COPY (location_type) l);
907 
908  static
910  make_NULL_TYPE (YY_COPY (location_type) l);
911 
912  static
914  make_DHCP6 (YY_COPY (location_type) l);
915 
916  static
918  make_CONFIG_CONTROL (YY_COPY (location_type) l);
919 
920  static
922  make_CONFIG_DATABASES (YY_COPY (location_type) l);
923 
924  static
926  make_INTERFACES_CONFIG (YY_COPY (location_type) l);
927 
928  static
930  make_INTERFACES (YY_COPY (location_type) l);
931 
932  static
934  make_RE_DETECT (YY_COPY (location_type) l);
935 
936  static
938  make_LEASE_DATABASE (YY_COPY (location_type) l);
939 
940  static
942  make_HOSTS_DATABASE (YY_COPY (location_type) l);
943 
944  static
946  make_HOSTS_DATABASES (YY_COPY (location_type) l);
947 
948  static
950  make_TYPE (YY_COPY (location_type) l);
951 
952  static
954  make_MEMFILE (YY_COPY (location_type) l);
955 
956  static
958  make_MYSQL (YY_COPY (location_type) l);
959 
960  static
962  make_POSTGRESQL (YY_COPY (location_type) l);
963 
964  static
966  make_CQL (YY_COPY (location_type) l);
967 
968  static
970  make_USER (YY_COPY (location_type) l);
971 
972  static
974  make_PASSWORD (YY_COPY (location_type) l);
975 
976  static
978  make_HOST (YY_COPY (location_type) l);
979 
980  static
982  make_PORT (YY_COPY (location_type) l);
983 
984  static
986  make_PERSIST (YY_COPY (location_type) l);
987 
988  static
990  make_LFC_INTERVAL (YY_COPY (location_type) l);
991 
992  static
994  make_READONLY (YY_COPY (location_type) l);
995 
996  static
998  make_CONNECT_TIMEOUT (YY_COPY (location_type) l);
999 
1000  static
1001  symbol_type
1002  make_CONTACT_POINTS (YY_COPY (location_type) l);
1003 
1004  static
1005  symbol_type
1006  make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l);
1007 
1008  static
1009  symbol_type
1010  make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l);
1011 
1012  static
1013  symbol_type
1014  make_KEYSPACE (YY_COPY (location_type) l);
1015 
1016  static
1017  symbol_type
1018  make_REQUEST_TIMEOUT (YY_COPY (location_type) l);
1019 
1020  static
1021  symbol_type
1022  make_TCP_KEEPALIVE (YY_COPY (location_type) l);
1023 
1024  static
1025  symbol_type
1026  make_TCP_NODELAY (YY_COPY (location_type) l);
1027 
1028  static
1029  symbol_type
1030  make_PREFERRED_LIFETIME (YY_COPY (location_type) l);
1031 
1032  static
1033  symbol_type
1034  make_VALID_LIFETIME (YY_COPY (location_type) l);
1035 
1036  static
1037  symbol_type
1038  make_RENEW_TIMER (YY_COPY (location_type) l);
1039 
1040  static
1041  symbol_type
1042  make_REBIND_TIMER (YY_COPY (location_type) l);
1043 
1044  static
1045  symbol_type
1046  make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l);
1047 
1048  static
1049  symbol_type
1050  make_SERVER_TAG (YY_COPY (location_type) l);
1051 
1052  static
1053  symbol_type
1054  make_SUBNET6 (YY_COPY (location_type) l);
1055 
1056  static
1057  symbol_type
1058  make_OPTION_DEF (YY_COPY (location_type) l);
1059 
1060  static
1061  symbol_type
1062  make_OPTION_DATA (YY_COPY (location_type) l);
1063 
1064  static
1065  symbol_type
1066  make_NAME (YY_COPY (location_type) l);
1067 
1068  static
1069  symbol_type
1070  make_DATA (YY_COPY (location_type) l);
1071 
1072  static
1073  symbol_type
1074  make_CODE (YY_COPY (location_type) l);
1075 
1076  static
1077  symbol_type
1078  make_SPACE (YY_COPY (location_type) l);
1079 
1080  static
1081  symbol_type
1082  make_CSV_FORMAT (YY_COPY (location_type) l);
1083 
1084  static
1085  symbol_type
1086  make_ALWAYS_SEND (YY_COPY (location_type) l);
1087 
1088  static
1089  symbol_type
1090  make_RECORD_TYPES (YY_COPY (location_type) l);
1091 
1092  static
1093  symbol_type
1094  make_ENCAPSULATE (YY_COPY (location_type) l);
1095 
1096  static
1097  symbol_type
1098  make_ARRAY (YY_COPY (location_type) l);
1099 
1100  static
1101  symbol_type
1102  make_POOLS (YY_COPY (location_type) l);
1103 
1104  static
1105  symbol_type
1106  make_POOL (YY_COPY (location_type) l);
1107 
1108  static
1109  symbol_type
1110  make_PD_POOLS (YY_COPY (location_type) l);
1111 
1112  static
1113  symbol_type
1114  make_PREFIX (YY_COPY (location_type) l);
1115 
1116  static
1117  symbol_type
1118  make_PREFIX_LEN (YY_COPY (location_type) l);
1119 
1120  static
1121  symbol_type
1122  make_EXCLUDED_PREFIX (YY_COPY (location_type) l);
1123 
1124  static
1125  symbol_type
1126  make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l);
1127 
1128  static
1129  symbol_type
1130  make_DELEGATED_LEN (YY_COPY (location_type) l);
1131 
1132  static
1133  symbol_type
1134  make_USER_CONTEXT (YY_COPY (location_type) l);
1135 
1136  static
1137  symbol_type
1138  make_COMMENT (YY_COPY (location_type) l);
1139 
1140  static
1141  symbol_type
1142  make_SUBNET (YY_COPY (location_type) l);
1143 
1144  static
1145  symbol_type
1146  make_INTERFACE (YY_COPY (location_type) l);
1147 
1148  static
1149  symbol_type
1150  make_INTERFACE_ID (YY_COPY (location_type) l);
1151 
1152  static
1153  symbol_type
1154  make_ID (YY_COPY (location_type) l);
1155 
1156  static
1157  symbol_type
1158  make_RAPID_COMMIT (YY_COPY (location_type) l);
1159 
1160  static
1161  symbol_type
1162  make_RESERVATION_MODE (YY_COPY (location_type) l);
1163 
1164  static
1165  symbol_type
1166  make_DISABLED (YY_COPY (location_type) l);
1167 
1168  static
1169  symbol_type
1170  make_OUT_OF_POOL (YY_COPY (location_type) l);
1171 
1172  static
1173  symbol_type
1174  make_GLOBAL (YY_COPY (location_type) l);
1175 
1176  static
1177  symbol_type
1178  make_ALL (YY_COPY (location_type) l);
1179 
1180  static
1181  symbol_type
1182  make_SHARED_NETWORKS (YY_COPY (location_type) l);
1183 
1184  static
1185  symbol_type
1186  make_MAC_SOURCES (YY_COPY (location_type) l);
1187 
1188  static
1189  symbol_type
1190  make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l);
1191 
1192  static
1193  symbol_type
1194  make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l);
1195 
1196  static
1197  symbol_type
1198  make_SANITY_CHECKS (YY_COPY (location_type) l);
1199 
1200  static
1201  symbol_type
1202  make_LEASE_CHECKS (YY_COPY (location_type) l);
1203 
1204  static
1205  symbol_type
1206  make_CLIENT_CLASSES (YY_COPY (location_type) l);
1207 
1208  static
1209  symbol_type
1210  make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l);
1211 
1212  static
1213  symbol_type
1214  make_TEST (YY_COPY (location_type) l);
1215 
1216  static
1217  symbol_type
1218  make_ONLY_IF_REQUIRED (YY_COPY (location_type) l);
1219 
1220  static
1221  symbol_type
1222  make_CLIENT_CLASS (YY_COPY (location_type) l);
1223 
1224  static
1225  symbol_type
1226  make_RESERVATIONS (YY_COPY (location_type) l);
1227 
1228  static
1229  symbol_type
1230  make_IP_ADDRESSES (YY_COPY (location_type) l);
1231 
1232  static
1233  symbol_type
1234  make_PREFIXES (YY_COPY (location_type) l);
1235 
1236  static
1237  symbol_type
1238  make_DUID (YY_COPY (location_type) l);
1239 
1240  static
1241  symbol_type
1242  make_HW_ADDRESS (YY_COPY (location_type) l);
1243 
1244  static
1245  symbol_type
1246  make_HOSTNAME (YY_COPY (location_type) l);
1247 
1248  static
1249  symbol_type
1250  make_FLEX_ID (YY_COPY (location_type) l);
1251 
1252  static
1253  symbol_type
1254  make_RELAY (YY_COPY (location_type) l);
1255 
1256  static
1257  symbol_type
1258  make_IP_ADDRESS (YY_COPY (location_type) l);
1259 
1260  static
1261  symbol_type
1262  make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
1263 
1264  static
1265  symbol_type
1266  make_LIBRARY (YY_COPY (location_type) l);
1267 
1268  static
1269  symbol_type
1270  make_PARAMETERS (YY_COPY (location_type) l);
1271 
1272  static
1273  symbol_type
1274  make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l);
1275 
1276  static
1277  symbol_type
1278  make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l);
1279 
1280  static
1281  symbol_type
1282  make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l);
1283 
1284  static
1285  symbol_type
1286  make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l);
1287 
1288  static
1289  symbol_type
1290  make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l);
1291 
1292  static
1293  symbol_type
1294  make_MAX_RECLAIM_TIME (YY_COPY (location_type) l);
1295 
1296  static
1297  symbol_type
1298  make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l);
1299 
1300  static
1301  symbol_type
1302  make_SERVER_ID (YY_COPY (location_type) l);
1303 
1304  static
1305  symbol_type
1306  make_LLT (YY_COPY (location_type) l);
1307 
1308  static
1309  symbol_type
1310  make_EN (YY_COPY (location_type) l);
1311 
1312  static
1313  symbol_type
1314  make_LL (YY_COPY (location_type) l);
1315 
1316  static
1317  symbol_type
1318  make_IDENTIFIER (YY_COPY (location_type) l);
1319 
1320  static
1321  symbol_type
1322  make_HTYPE (YY_COPY (location_type) l);
1323 
1324  static
1325  symbol_type
1326  make_TIME (YY_COPY (location_type) l);
1327 
1328  static
1329  symbol_type
1330  make_ENTERPRISE_ID (YY_COPY (location_type) l);
1331 
1332  static
1333  symbol_type
1334  make_DHCP4O6_PORT (YY_COPY (location_type) l);
1335 
1336  static
1337  symbol_type
1338  make_CONTROL_SOCKET (YY_COPY (location_type) l);
1339 
1340  static
1341  symbol_type
1342  make_SOCKET_TYPE (YY_COPY (location_type) l);
1343 
1344  static
1345  symbol_type
1346  make_SOCKET_NAME (YY_COPY (location_type) l);
1347 
1348  static
1349  symbol_type
1350  make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l);
1351 
1352  static
1353  symbol_type
1354  make_DHCP_DDNS (YY_COPY (location_type) l);
1355 
1356  static
1357  symbol_type
1358  make_ENABLE_UPDATES (YY_COPY (location_type) l);
1359 
1360  static
1361  symbol_type
1362  make_QUALIFYING_SUFFIX (YY_COPY (location_type) l);
1363 
1364  static
1365  symbol_type
1366  make_SERVER_IP (YY_COPY (location_type) l);
1367 
1368  static
1369  symbol_type
1370  make_SERVER_PORT (YY_COPY (location_type) l);
1371 
1372  static
1373  symbol_type
1374  make_SENDER_IP (YY_COPY (location_type) l);
1375 
1376  static
1377  symbol_type
1378  make_SENDER_PORT (YY_COPY (location_type) l);
1379 
1380  static
1381  symbol_type
1382  make_MAX_QUEUE_SIZE (YY_COPY (location_type) l);
1383 
1384  static
1385  symbol_type
1386  make_NCR_PROTOCOL (YY_COPY (location_type) l);
1387 
1388  static
1389  symbol_type
1390  make_NCR_FORMAT (YY_COPY (location_type) l);
1391 
1392  static
1393  symbol_type
1394  make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l);
1395 
1396  static
1397  symbol_type
1398  make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l);
1399 
1400  static
1401  symbol_type
1402  make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l);
1403 
1404  static
1405  symbol_type
1406  make_GENERATED_PREFIX (YY_COPY (location_type) l);
1407 
1408  static
1409  symbol_type
1410  make_UDP (YY_COPY (location_type) l);
1411 
1412  static
1413  symbol_type
1414  make_TCP (YY_COPY (location_type) l);
1415 
1416  static
1417  symbol_type
1418  make_JSON (YY_COPY (location_type) l);
1419 
1420  static
1421  symbol_type
1422  make_WHEN_PRESENT (YY_COPY (location_type) l);
1423 
1424  static
1425  symbol_type
1426  make_NEVER (YY_COPY (location_type) l);
1427 
1428  static
1429  symbol_type
1430  make_ALWAYS (YY_COPY (location_type) l);
1431 
1432  static
1433  symbol_type
1434  make_WHEN_NOT_PRESENT (YY_COPY (location_type) l);
1435 
1436  static
1437  symbol_type
1438  make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l);
1439 
1440  static
1441  symbol_type
1442  make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l);
1443 
1444  static
1445  symbol_type
1446  make_LOGGING (YY_COPY (location_type) l);
1447 
1448  static
1449  symbol_type
1450  make_LOGGERS (YY_COPY (location_type) l);
1451 
1452  static
1453  symbol_type
1454  make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
1455 
1456  static
1457  symbol_type
1458  make_OUTPUT (YY_COPY (location_type) l);
1459 
1460  static
1461  symbol_type
1462  make_DEBUGLEVEL (YY_COPY (location_type) l);
1463 
1464  static
1465  symbol_type
1466  make_SEVERITY (YY_COPY (location_type) l);
1467 
1468  static
1469  symbol_type
1470  make_FLUSH (YY_COPY (location_type) l);
1471 
1472  static
1473  symbol_type
1474  make_MAXSIZE (YY_COPY (location_type) l);
1475 
1476  static
1477  symbol_type
1478  make_MAXVER (YY_COPY (location_type) l);
1479 
1480  static
1481  symbol_type
1482  make_DHCP4 (YY_COPY (location_type) l);
1483 
1484  static
1485  symbol_type
1486  make_DHCPDDNS (YY_COPY (location_type) l);
1487 
1488  static
1489  symbol_type
1490  make_CONTROL_AGENT (YY_COPY (location_type) l);
1491 
1492  static
1493  symbol_type
1494  make_TOPLEVEL_JSON (YY_COPY (location_type) l);
1495 
1496  static
1497  symbol_type
1498  make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l);
1499 
1500  static
1501  symbol_type
1502  make_SUB_DHCP6 (YY_COPY (location_type) l);
1503 
1504  static
1505  symbol_type
1506  make_SUB_INTERFACES6 (YY_COPY (location_type) l);
1507 
1508  static
1509  symbol_type
1510  make_SUB_SUBNET6 (YY_COPY (location_type) l);
1511 
1512  static
1513  symbol_type
1514  make_SUB_POOL6 (YY_COPY (location_type) l);
1515 
1516  static
1517  symbol_type
1518  make_SUB_PD_POOL (YY_COPY (location_type) l);
1519 
1520  static
1521  symbol_type
1522  make_SUB_RESERVATION (YY_COPY (location_type) l);
1523 
1524  static
1525  symbol_type
1526  make_SUB_OPTION_DEFS (YY_COPY (location_type) l);
1527 
1528  static
1529  symbol_type
1530  make_SUB_OPTION_DEF (YY_COPY (location_type) l);
1531 
1532  static
1533  symbol_type
1534  make_SUB_OPTION_DATA (YY_COPY (location_type) l);
1535 
1536  static
1537  symbol_type
1538  make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l);
1539 
1540  static
1541  symbol_type
1542  make_SUB_DHCP_DDNS (YY_COPY (location_type) l);
1543 
1544  static
1545  symbol_type
1546  make_SUB_LOGGING (YY_COPY (location_type) l);
1547 
1548  static
1549  symbol_type
1550  make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l);
1551 
1552  static
1553  symbol_type
1554  make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
1555 
1556  static
1557  symbol_type
1558  make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
1559 
1560  static
1561  symbol_type
1562  make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
1563 
1564  static
1565  symbol_type
1566  make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
1567 
1568 
1569 
1570  private:
1572  Dhcp6Parser (const Dhcp6Parser&);
1573  Dhcp6Parser& operator= (const Dhcp6Parser&);
1574 
1576  typedef int state_type;
1577 
1581  virtual std::string yysyntax_error_ (state_type yystate,
1582  const symbol_type& yyla) const;
1583 
1587  state_type yy_lr_goto_state_ (state_type yystate, int yysym);
1588 
1591  static bool yy_pact_value_is_default_ (int yyvalue);
1592 
1595  static bool yy_table_value_is_error_ (int yyvalue);
1596 
1597  static const short yypact_ninf_;
1598  static const signed char yytable_ninf_;
1599 
1601  static token_number_type yytranslate_ (token_type t);
1602 
1603  // Tables.
1604  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1605  // STATE-NUM.
1606  static const short yypact_[];
1607 
1608  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1609  // Performed when YYTABLE does not specify something else to do. Zero
1610  // means the default is an error.
1611  static const unsigned short yydefact_[];
1612 
1613  // YYPGOTO[NTERM-NUM].
1614  static const short yypgoto_[];
1615 
1616  // YYDEFGOTO[NTERM-NUM].
1617  static const short yydefgoto_[];
1618 
1619  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1620  // positive, shift that token. If negative, reduce the rule whose
1621  // number is the opposite. If YYTABLE_NINF, syntax error.
1622  static const unsigned short yytable_[];
1623 
1624  static const short yycheck_[];
1625 
1626  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1627  // symbol of state STATE-NUM.
1628  static const unsigned short yystos_[];
1629 
1630  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
1631  static const unsigned short yyr1_[];
1632 
1633  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
1634  static const unsigned char yyr2_[];
1635 
1636 
1638  static std::string yytnamerr_ (const char *n);
1639 
1640 
1642  static const char* const yytname_[];
1643 #if PARSER6_DEBUG
1644  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
1645  static const unsigned short yyrline_[];
1647  virtual void yy_reduce_print_ (int r);
1649  virtual void yystack_print_ ();
1650 
1652  int yydebug_;
1654  std::ostream* yycdebug_;
1655 
1659  template <typename Base>
1660  void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
1661 #endif
1662 
1667  template <typename Base>
1668  void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
1669 
1670  private:
1672  struct by_state
1673  {
1675  by_state ();
1676 
1678  typedef state_type kind_type;
1679 
1681  by_state (kind_type s);
1682 
1684  by_state (const by_state& other);
1685 
1687  void clear ();
1688 
1690  void move (by_state& that);
1691 
1694  symbol_number_type type_get () const;
1695 
1697  enum { empty_state = -1 };
1698 
1701  state_type state;
1702  };
1703 
1705  struct stack_symbol_type : basic_symbol<by_state>
1706  {
1708  typedef basic_symbol<by_state> super_type;
1710  stack_symbol_type ();
1712  stack_symbol_type (YY_RVREF (stack_symbol_type) that);
1714  stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
1715 #if YY_CPLUSPLUS < 201103L
1716  stack_symbol_type& operator= (stack_symbol_type& that);
1719 #endif
1720  };
1721 
1723  typedef stack<stack_symbol_type> stack_type;
1724 
1726  stack_type yystack_;
1727 
1733  void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
1734 
1741  void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
1742 
1744  void yypop_ (int n = 1);
1745 
1747  enum
1748  {
1749  yyeof_ = 0,
1750  yylast_ = 1020,
1751  yynnts_ = 389,
1752  yyfinal_ = 32,
1753  yyterror_ = 1,
1754  yyerrcode_ = 256,
1755  yyntokens_ = 174
1756  };
1757 
1758 
1759  // User arguments.
1761  };
1762 
1763  // Symbol number corresponding to token number t.
1764  inline
1766  Dhcp6Parser::yytranslate_ (token_type t)
1767  {
1768  static
1769  const token_number_type
1770  translate_table[] =
1771  {
1772  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1774  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1775  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1776  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1777  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1778  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1779  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1780  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1781  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1782  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1783  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1784  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1785  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1786  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1787  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1788  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1789  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1790  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1791  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1792  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1793  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1794  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1795  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1796  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1797  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1798  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1799  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1800  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1801  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1802  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1803  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1804  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1805  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1806  85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1807  95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1808  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1809  115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1810  125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1811  135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1812  145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1813  155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1814  165, 166, 167, 168, 169, 170, 171, 172, 173
1815  };
1816  const unsigned user_token_number_max_ = 428;
1817  const token_number_type undef_token_ = 2;
1818 
1819  if (static_cast<int> (t) <= yyeof_)
1820  return yyeof_;
1821  else if (static_cast<unsigned> (t) <= user_token_number_max_)
1822  return translate_table[t];
1823  else
1824  return undef_token_;
1825  }
1826 
1827  inline
1829  : std::runtime_error (m)
1830  , location (l)
1831  {}
1832 
1833  // basic_symbol.
1834  template <typename Base>
1836  : value ()
1837  , location ()
1838  {}
1839 
1840  template <typename Base>
1842  : Base (YY_MOVE (other))
1843  , value ()
1844  , location (YY_MOVE (other.location))
1845  {
1846  switch (other.type_get ())
1847  {
1848  case 191: // value
1849  case 195: // map_value
1850  case 247: // db_type
1851  case 336: // hr_mode
1852  case 472: // duid_type
1853  case 507: // ncr_protocol_value
1854  case 514: // replace_client_name_value
1855  value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
1856  break;
1857 
1858  case 173: // "boolean"
1859  value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
1860  break;
1861 
1862  case 172: // "floating point"
1863  value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
1864  break;
1865 
1866  case 171: // "integer"
1867  value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
1868  break;
1869 
1870  case 170: // "constant string"
1871  value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
1872  break;
1873 
1874  default:
1875  break;
1876  }
1877 
1878  }
1879 
1880 
1881  // Implementation of basic_symbol constructor for each type.
1882 # if 201103L <= YY_CPLUSPLUS
1883  template <typename Base>
1884  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, location_type&& l)
1885  : Base (t)
1886  , location (std::move (l))
1887  {}
1888 #else
1889  template <typename Base>
1890  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
1891  : Base (t)
1892  , location (l)
1893  {}
1894 #endif
1895 # if 201103L <= YY_CPLUSPLUS
1896  template <typename Base>
1897  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
1898  : Base (t)
1899  , value (std::move (v))
1900  , location (std::move (l))
1901  {}
1902 #else
1903  template <typename Base>
1904  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
1905  : Base (t)
1906  , value (v)
1907  , location (l)
1908  {}
1909 #endif
1910 # if 201103L <= YY_CPLUSPLUS
1911  template <typename Base>
1912  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
1913  : Base (t)
1914  , value (std::move (v))
1915  , location (std::move (l))
1916  {}
1917 #else
1918  template <typename Base>
1919  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
1920  : Base (t)
1921  , value (v)
1922  , location (l)
1923  {}
1924 #endif
1925 # if 201103L <= YY_CPLUSPLUS
1926  template <typename Base>
1927  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
1928  : Base (t)
1929  , value (std::move (v))
1930  , location (std::move (l))
1931  {}
1932 #else
1933  template <typename Base>
1934  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
1935  : Base (t)
1936  , value (v)
1937  , location (l)
1938  {}
1939 #endif
1940 # if 201103L <= YY_CPLUSPLUS
1941  template <typename Base>
1942  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
1943  : Base (t)
1944  , value (std::move (v))
1945  , location (std::move (l))
1946  {}
1947 #else
1948  template <typename Base>
1949  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
1950  : Base (t)
1951  , value (v)
1952  , location (l)
1953  {}
1954 #endif
1955 # if 201103L <= YY_CPLUSPLUS
1956  template <typename Base>
1957  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
1958  : Base (t)
1959  , value (std::move (v))
1960  , location (std::move (l))
1961  {}
1962 #else
1963  template <typename Base>
1964  Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
1965  : Base (t)
1966  , value (v)
1967  , location (l)
1968  {}
1969 #endif
1970 
1971 
1972  template <typename Base>
1974  {
1975  clear ();
1976  }
1977 
1978  template <typename Base>
1979  void
1981  {
1982  // User destructor.
1983  symbol_number_type yytype = this->type_get ();
1984  basic_symbol<Base>& yysym = *this;
1985  (void) yysym;
1986  switch (yytype)
1987  {
1988  default:
1989  break;
1990  }
1991 
1992  // Type destructor.
1993  switch (yytype)
1994  {
1995  case 191: // value
1996  case 195: // map_value
1997  case 247: // db_type
1998  case 336: // hr_mode
1999  case 472: // duid_type
2000  case 507: // ncr_protocol_value
2001  case 514: // replace_client_name_value
2002  value.template destroy< ElementPtr > ();
2003  break;
2004 
2005  case 173: // "boolean"
2006  value.template destroy< bool > ();
2007  break;
2008 
2009  case 172: // "floating point"
2010  value.template destroy< double > ();
2011  break;
2012 
2013  case 171: // "integer"
2014  value.template destroy< int64_t > ();
2015  break;
2016 
2017  case 170: // "constant string"
2018  value.template destroy< std::string > ();
2019  break;
2020 
2021  default:
2022  break;
2023  }
2024 
2025  Base::clear ();
2026  }
2027 
2028  template <typename Base>
2029  bool
2031  {
2032  return Base::type_get () == empty_symbol;
2033  }
2034 
2035  template <typename Base>
2036  void
2038  {
2039  super_type::move (s);
2040  switch (this->type_get ())
2041  {
2042  case 191: // value
2043  case 195: // map_value
2044  case 247: // db_type
2045  case 336: // hr_mode
2046  case 472: // duid_type
2047  case 507: // ncr_protocol_value
2048  case 514: // replace_client_name_value
2049  value.move< ElementPtr > (YY_MOVE (s.value));
2050  break;
2051 
2052  case 173: // "boolean"
2053  value.move< bool > (YY_MOVE (s.value));
2054  break;
2055 
2056  case 172: // "floating point"
2057  value.move< double > (YY_MOVE (s.value));
2058  break;
2059 
2060  case 171: // "integer"
2061  value.move< int64_t > (YY_MOVE (s.value));
2062  break;
2063 
2064  case 170: // "constant string"
2065  value.move< std::string > (YY_MOVE (s.value));
2066  break;
2067 
2068  default:
2069  break;
2070  }
2071 
2072  location = YY_MOVE (s.location);
2073  }
2074 
2075  // by_type.
2076  inline
2077  Dhcp6Parser::by_type::by_type ()
2078  : type (empty_symbol)
2079  {}
2080 
2081  inline
2083  : type (other.type)
2084  {}
2085 
2086  inline
2088  : type (yytranslate_ (t))
2089  {}
2090 
2091  inline
2092  void
2094  {
2095  type = empty_symbol;
2096  }
2097 
2098  inline
2099  void
2101  {
2102  type = that.type;
2103  that.clear ();
2104  }
2105 
2106  inline
2107  int
2109  {
2110  return type;
2111  }
2112 
2113  inline
2116  {
2117  // YYTOKNUM[NUM] -- (External) token number corresponding to the
2118  // (internal) symbol number NUM (which must be that of a token). */
2119  static
2120  const unsigned short
2121  yytoken_number_[] =
2122  {
2123  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2124  265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
2125  275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2126  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2127  295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
2128  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2129  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
2130  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2131  335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2132  345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
2133  355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
2134  365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2135  375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
2136  385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
2137  395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2138  405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
2139  415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
2140  425, 426, 427, 428
2141  };
2142  return static_cast<token_type> (yytoken_number_[type]);
2143  }
2144 
2145  // Implementation of make_symbol for each symbol type.
2146  inline
2149  {
2150  return symbol_type (token::TOKEN_END, YY_MOVE (l));
2151  }
2152 
2153  inline
2156  {
2157  return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
2158  }
2159 
2160  inline
2163  {
2164  return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
2165  }
2166 
2167  inline
2170  {
2172  }
2173 
2174  inline
2177  {
2179  }
2180 
2181  inline
2184  {
2186  }
2187 
2188  inline
2191  {
2193  }
2194 
2195  inline
2198  {
2200  }
2201 
2202  inline
2205  {
2206  return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l));
2207  }
2208 
2209  inline
2212  {
2214  }
2215 
2216  inline
2219  {
2221  }
2222 
2223  inline
2226  {
2228  }
2229 
2230  inline
2233  {
2235  }
2236 
2237  inline
2240  {
2242  }
2243 
2244  inline
2247  {
2249  }
2250 
2251  inline
2254  {
2256  }
2257 
2258  inline
2261  {
2263  }
2264 
2265  inline
2268  {
2269  return symbol_type (token::TOKEN_TYPE, YY_MOVE (l));
2270  }
2271 
2272  inline
2275  {
2277  }
2278 
2279  inline
2282  {
2283  return symbol_type (token::TOKEN_MYSQL, YY_MOVE (l));
2284  }
2285 
2286  inline
2289  {
2291  }
2292 
2293  inline
2296  {
2297  return symbol_type (token::TOKEN_CQL, YY_MOVE (l));
2298  }
2299 
2300  inline
2303  {
2304  return symbol_type (token::TOKEN_USER, YY_MOVE (l));
2305  }
2306 
2307  inline
2310  {
2312  }
2313 
2314  inline
2317  {
2318  return symbol_type (token::TOKEN_HOST, YY_MOVE (l));
2319  }
2320 
2321  inline
2324  {
2325  return symbol_type (token::TOKEN_PORT, YY_MOVE (l));
2326  }
2327 
2328  inline
2331  {
2333  }
2334 
2335  inline
2338  {
2340  }
2341 
2342  inline
2345  {
2347  }
2348 
2349  inline
2352  {
2354  }
2355 
2356  inline
2359  {
2361  }
2362 
2363  inline
2366  {
2368  }
2369 
2370  inline
2373  {
2375  }
2376 
2377  inline
2380  {
2382  }
2383 
2384  inline
2387  {
2389  }
2390 
2391  inline
2394  {
2396  }
2397 
2398  inline
2401  {
2403  }
2404 
2405  inline
2408  {
2410  }
2411 
2412  inline
2415  {
2417  }
2418 
2419  inline
2422  {
2424  }
2425 
2426  inline
2429  {
2431  }
2432 
2433  inline
2436  {
2438  }
2439 
2440  inline
2443  {
2445  }
2446 
2447  inline
2450  {
2452  }
2453 
2454  inline
2457  {
2459  }
2460 
2461  inline
2464  {
2466  }
2467 
2468  inline
2471  {
2472  return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
2473  }
2474 
2475  inline
2478  {
2479  return symbol_type (token::TOKEN_DATA, YY_MOVE (l));
2480  }
2481 
2482  inline
2485  {
2486  return symbol_type (token::TOKEN_CODE, YY_MOVE (l));
2487  }
2488 
2489  inline
2492  {
2493  return symbol_type (token::TOKEN_SPACE, YY_MOVE (l));
2494  }
2495 
2496  inline
2499  {
2501  }
2502 
2503  inline
2506  {
2508  }
2509 
2510  inline
2513  {
2515  }
2516 
2517  inline
2520  {
2522  }
2523 
2524  inline
2527  {
2528  return symbol_type (token::TOKEN_ARRAY, YY_MOVE (l));
2529  }
2530 
2531  inline
2534  {
2535  return symbol_type (token::TOKEN_POOLS, YY_MOVE (l));
2536  }
2537 
2538  inline
2541  {
2542  return symbol_type (token::TOKEN_POOL, YY_MOVE (l));
2543  }
2544 
2545  inline
2548  {
2550  }
2551 
2552  inline
2555  {
2556  return symbol_type (token::TOKEN_PREFIX, YY_MOVE (l));
2557  }
2558 
2559  inline
2562  {
2564  }
2565 
2566  inline
2569  {
2571  }
2572 
2573  inline
2576  {
2578  }
2579 
2580  inline
2583  {
2585  }
2586 
2587  inline
2590  {
2592  }
2593 
2594  inline
2597  {
2599  }
2600 
2601  inline
2604  {
2605  return symbol_type (token::TOKEN_SUBNET, YY_MOVE (l));
2606  }
2607 
2608  inline
2611  {
2613  }
2614 
2615  inline
2618  {
2620  }
2621 
2622  inline
2625  {
2626  return symbol_type (token::TOKEN_ID, YY_MOVE (l));
2627  }
2628 
2629  inline
2632  {
2634  }
2635 
2636  inline
2639  {
2641  }
2642 
2643  inline
2646  {
2648  }
2649 
2650  inline
2653  {
2655  }
2656 
2657  inline
2660  {
2661  return symbol_type (token::TOKEN_GLOBAL, YY_MOVE (l));
2662  }
2663 
2664  inline
2667  {
2668  return symbol_type (token::TOKEN_ALL, YY_MOVE (l));
2669  }
2670 
2671  inline
2674  {
2676  }
2677 
2678  inline
2681  {
2683  }
2684 
2685  inline
2688  {
2690  }
2691 
2692  inline
2695  {
2697  }
2698 
2699  inline
2702  {
2704  }
2705 
2706  inline
2709  {
2711  }
2712 
2713  inline
2716  {
2718  }
2719 
2720  inline
2723  {
2725  }
2726 
2727  inline
2730  {
2731  return symbol_type (token::TOKEN_TEST, YY_MOVE (l));
2732  }
2733 
2734  inline
2737  {
2739  }
2740 
2741  inline
2744  {
2746  }
2747 
2748  inline
2751  {
2753  }
2754 
2755  inline
2758  {
2760  }
2761 
2762  inline
2765  {
2767  }
2768 
2769  inline
2772  {
2773  return symbol_type (token::TOKEN_DUID, YY_MOVE (l));
2774  }
2775 
2776  inline
2779  {
2781  }
2782 
2783  inline
2786  {
2788  }
2789 
2790  inline
2793  {
2795  }
2796 
2797  inline
2800  {
2801  return symbol_type (token::TOKEN_RELAY, YY_MOVE (l));
2802  }
2803 
2804  inline
2807  {
2809  }
2810 
2811  inline
2814  {
2816  }
2817 
2818  inline
2821  {
2823  }
2824 
2825  inline
2828  {
2830  }
2831 
2832  inline
2835  {
2837  }
2838 
2839  inline
2842  {
2844  }
2845 
2846  inline
2849  {
2851  }
2852 
2853  inline
2856  {
2858  }
2859 
2860  inline
2863  {
2865  }
2866 
2867  inline
2870  {
2872  }
2873 
2874  inline
2877  {
2879  }
2880 
2881  inline
2884  {
2886  }
2887 
2888  inline
2891  {
2892  return symbol_type (token::TOKEN_LLT, YY_MOVE (l));
2893  }
2894 
2895  inline
2898  {
2899  return symbol_type (token::TOKEN_EN, YY_MOVE (l));
2900  }
2901 
2902  inline
2905  {
2906  return symbol_type (token::TOKEN_LL, YY_MOVE (l));
2907  }
2908 
2909  inline
2912  {
2914  }
2915 
2916  inline
2919  {
2920  return symbol_type (token::TOKEN_HTYPE, YY_MOVE (l));
2921  }
2922 
2923  inline
2926  {
2927  return symbol_type (token::TOKEN_TIME, YY_MOVE (l));
2928  }
2929 
2930  inline
2933  {
2935  }
2936 
2937  inline
2940  {
2942  }
2943 
2944  inline
2947  {
2949  }
2950 
2951  inline
2954  {
2956  }
2957 
2958  inline
2961  {
2963  }
2964 
2965  inline
2968  {
2970  }
2971 
2972  inline
2975  {
2977  }
2978 
2979  inline
2982  {
2984  }
2985 
2986  inline
2989  {
2991  }
2992 
2993  inline
2996  {
2998  }
2999 
3000  inline
3003  {
3005  }
3006 
3007  inline
3010  {
3012  }
3013 
3014  inline
3017  {
3019  }
3020 
3021  inline
3024  {
3026  }
3027 
3028  inline
3031  {
3033  }
3034 
3035  inline
3038  {
3040  }
3041 
3042  inline
3045  {
3047  }
3048 
3049  inline
3052  {
3054  }
3055 
3056  inline
3059  {
3061  }
3062 
3063  inline
3066  {
3068  }
3069 
3070  inline
3073  {
3074  return symbol_type (token::TOKEN_UDP, YY_MOVE (l));
3075  }
3076 
3077  inline
3080  {
3081  return symbol_type (token::TOKEN_TCP, YY_MOVE (l));
3082  }
3083 
3084  inline
3087  {
3088  return symbol_type (token::TOKEN_JSON, YY_MOVE (l));
3089  }
3090 
3091  inline
3094  {
3096  }
3097 
3098  inline
3101  {
3102  return symbol_type (token::TOKEN_NEVER, YY_MOVE (l));
3103  }
3104 
3105  inline
3108  {
3109  return symbol_type (token::TOKEN_ALWAYS, YY_MOVE (l));
3110  }
3111 
3112  inline
3115  {
3117  }
3118 
3119  inline
3122  {
3124  }
3125 
3126  inline
3129  {
3131  }
3132 
3133  inline
3136  {
3138  }
3139 
3140  inline
3143  {
3145  }
3146 
3147  inline
3150  {
3152  }
3153 
3154  inline
3157  {
3158  return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
3159  }
3160 
3161  inline
3164  {
3166  }
3167 
3168  inline
3171  {
3173  }
3174 
3175  inline
3178  {
3179  return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
3180  }
3181 
3182  inline
3185  {
3187  }
3188 
3189  inline
3192  {
3193  return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
3194  }
3195 
3196  inline
3199  {
3200  return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l));
3201  }
3202 
3203  inline
3206  {
3208  }
3209 
3210  inline
3213  {
3215  }
3216 
3217  inline
3220  {
3222  }
3223 
3224  inline
3227  {
3229  }
3230 
3231  inline
3234  {
3236  }
3237 
3238  inline
3241  {
3243  }
3244 
3245  inline
3248  {
3250  }
3251 
3252  inline
3255  {
3257  }
3258 
3259  inline
3262  {
3264  }
3265 
3266  inline
3269  {
3271  }
3272 
3273  inline
3276  {
3278  }
3279 
3280  inline
3283  {
3285  }
3286 
3287  inline
3290  {
3292  }
3293 
3294  inline
3297  {
3299  }
3300 
3301  inline
3304  {
3306  }
3307 
3308  inline
3311  {
3313  }
3314 
3315  inline
3318  {
3320  }
3321 
3322  inline
3325  {
3326  return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
3327  }
3328 
3329  inline
3332  {
3333  return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
3334  }
3335 
3336  inline
3339  {
3340  return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
3341  }
3342 
3343  inline
3346  {
3347  return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
3348  }
3349 
3350 
3351 #line 14 "dhcp6_parser.yy" // lalr1.cc:404
3352 } } // isc::dhcp
3353 #line 3354 "dhcp6_parser.h" // lalr1.cc:404
3354 
3355 
3356 
3357 
3358 #endif // !YY_PARSER6_DHCP6_PARSER_H_INCLUDED
variant(YY_RVREF(T) t)
Construct and fill.
Definition: dhcp6_parser.h:309
static symbol_type make_CQL(YY_COPY(location_type) l)
static symbol_type make_CONTROL_AGENT(YY_COPY(location_type) l)
static symbol_type make_WHEN_NOT_PRESENT(YY_COPY(location_type) l)
static symbol_type make_NULL_TYPE(YY_COPY(location_type) l)
static symbol_type make_STRING(YY_COPY(std::string) v, YY_COPY(location_type) l)
syntax_error(const location_type &l, const std::string &m)
static symbol_type make_NAME(YY_COPY(location_type) l)
static symbol_type make_HOST(YY_COPY(location_type) l)
static symbol_type make_RECONNECT_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_RSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_SPACE(YY_COPY(location_type) l)
static symbol_type make_SANITY_CHECKS(YY_COPY(location_type) l)
static symbol_type make_VALID_LIFETIME(YY_COPY(location_type) l)
void destroy()
Destroy the stored T.
Definition: dhcp4_parser.h:452
static symbol_type make_IDENTIFIER(YY_COPY(location_type) l)
static symbol_type make_DHCPDDNS(YY_COPY(location_type) l)
static symbol_type make_SENDER_PORT(YY_COPY(location_type) l)
semantic_type value
The semantic value.
Definition: dhcp6_parser.h:796
static symbol_type make_LL(YY_COPY(location_type) l)
static symbol_type make_DISABLED(YY_COPY(location_type) l)
static symbol_type make_DHCP4O6_PORT(YY_COPY(location_type) l)
static symbol_type make_SUB_INTERFACES6(YY_COPY(location_type) l)
static symbol_type make_PREFERRED_LIFETIME(YY_COPY(location_type) l)
static symbol_type make_EXPIRED_LEASES_PROCESSING(YY_COPY(location_type) l)
Type access provider for token (enum) based symbols.
Definition: dhcp6_parser.h:809
T & emplace()
Instantiate an empty T in here.
Definition: dhcp6_parser.h:325
#define YY_MOVE
Definition: dhcp6_parser.h:82
token_type kind_type
The symbol type as needed by the constructor.
Definition: dhcp6_parser.h:818
static symbol_type make_CLIENT_CLASS(YY_COPY(location_type) l)
static symbol_type make_LOGGERS(YY_COPY(location_type) l)
static symbol_type make_RAPID_COMMIT(YY_COPY(location_type) l)
An auxiliary type to compute the largest semantic type.
Definition: dhcp6_parser.h:500
static symbol_type make_DATA(YY_COPY(location_type) l)
static symbol_type make_PASSWORD(YY_COPY(location_type) l)
static symbol_type make_INTERFACES_CONFIG(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(YY_COPY(location_type) l)
~variant()
Destruction, allowed only if empty.
Definition: dhcp6_parser.h:317
static symbol_type make_SUB_RESERVATION(YY_COPY(location_type) l)
static symbol_type make_SUB_LOGGING(YY_COPY(location_type) l)
static symbol_type make_PERSIST(YY_COPY(location_type) l)
static symbol_type make_CSV_FORMAT(YY_COPY(location_type) l)
static symbol_type make_UDP(YY_COPY(location_type) l)
static symbol_type make_LEASE_DATABASE(YY_COPY(location_type) l)
S::reverse_iterator iterator
Definition: dhcp6_parser.h:175
static symbol_type make_HOSTNAME_CHAR_SET(YY_COPY(location_type) l)
static symbol_type make_INTERFACE_ID(YY_COPY(location_type) l)
static symbol_type make_MAX_RECONNECT_TRIES(YY_COPY(location_type) l)
static symbol_type make_RELAY(YY_COPY(location_type) l)
const_iterator end() const
Definition: dhcp6_parser.h:255
token_type token() const
The token.
A char[S] buffer to store and retrieve objects.
Definition: dhcp4_parser.h:296
static symbol_type make_READONLY(YY_COPY(location_type) l)
static symbol_type make_NCR_PROTOCOL(YY_COPY(location_type) l)
A Bison parser.
Definition: dhcp6_parser.h:495
A stack with random access from its top.
Definition: dhcp4_parser.h:171
location_type location
The location.
Definition: dhcp6_parser.h:799
boost::shared_ptr< Element > ElementPtr
Definition: data.h:20
Evaluation context, an interface to the expression evaluation.
static symbol_type make_REQUIRE_CLIENT_CLASSES(YY_COPY(location_type) l)
T & build(const T &t)
Instantiate a T in here from t.
Definition: dhcp6_parser.h:370
static symbol_type make_RESERVATIONS(YY_COPY(location_type) l)
static symbol_type make_GLOBAL(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_JSON(YY_COPY(location_type) l)
int symbol_number_type
Symbol type: an internal symbol number.
Definition: dhcp6_parser.h:723
static symbol_type make_TEST(YY_COPY(location_type) l)
void move(self_type &other)
Move the content of other to this.
Definition: dhcp6_parser.h:419
static symbol_type make_ALWAYS_SEND(YY_COPY(location_type) l)
static symbol_type make_SERVER_IP(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_NCR_FORMAT(YY_COPY(location_type) l)
static symbol_type make_FLOAT(YY_COPY(double) v, YY_COPY(location_type) l)
static symbol_type make_SUBNET(YY_COPY(location_type) l)
static symbol_type make_TIME(YY_COPY(location_type) l)
static symbol_type make_END(YY_COPY(location_type) l)
static symbol_type make_RELAY_SUPPLIED_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_CLIENT_UPDATE(YY_COPY(location_type) l)
static symbol_type make_ALWAYS(YY_COPY(location_type) l)
token::yytokentype token_type
(External) token type, as returned by yylex.
Definition: dhcp6_parser.h:720
void copy(const self_type &other)
Copy the content of other to this.
Definition: dhcp6_parser.h:444
static symbol_type make_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_OUTPUT(YY_COPY(location_type) l)
static symbol_type make_SEVERITY(YY_COPY(location_type) l)
static symbol_type make_RE_DETECT(YY_COPY(location_type) l)
static symbol_type make_LSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_SUB_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_SHARED_NETWORKS(YY_COPY(location_type) l)
static symbol_type make_GENERATED_PREFIX(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_TCP(YY_COPY(location_type) l)
void push(YY_MOVE_REF(T) t)
Steal the contents of t.
Definition: dhcp6_parser.h:223
static symbol_type make_DECLINE_PROBATION_PERIOD(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP6(YY_COPY(location_type) l)
slice(const S &stack, int range)
Definition: dhcp6_parser.h:272
static symbol_type make_MEMFILE(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASE(YY_COPY(location_type) l)
static symbol_type make_ENCAPSULATE(YY_COPY(location_type) l)
static symbol_type make_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_COMMENT(YY_COPY(location_type) l)
static symbol_type make_COLON(YY_COPY(location_type) l)
static symbol_type make_FLUSH(YY_COPY(location_type) l)
static symbol_type make_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_DHCP6(YY_COPY(location_type) l)
static symbol_type make_KEYSPACE(YY_COPY(location_type) l)
static symbol_type make_DHCP6(YY_COPY(location_type) l)
static symbol_type make_PREFIX(YY_COPY(location_type) l)
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
Definition: dhcp6_parser.h:729
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
static symbol_type make_HOLD_RECLAIMED_TIME(YY_COPY(location_type) l)
static symbol_type make_INTERFACE(YY_COPY(location_type) l)
#define YYASSERT
Definition: dhcp6_parser.h:92
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
Definition: dhcp6_parser.h:843
static symbol_type make_USER_CONTEXT(YY_COPY(location_type) l)
variant()
Empty construction.
Definition: dhcp6_parser.h:302
static symbol_type make_LLT(YY_COPY(location_type) l)
location location_type
Symbol locations.
Definition: dhcp6_parser.h:530
variant< S > self_type
Type of *this.
Definition: dhcp6_parser.h:299
static symbol_type make_PARAMETERS(YY_COPY(location_type) l)
static symbol_type make_LEASE_CHECKS(YY_COPY(location_type) l)
#define YY_RVREF(Type)
Definition: dhcp6_parser.h:85
static symbol_type make_ALL(YY_COPY(location_type) l)
int debug_level_type
Type for debugging levels.
Definition: dhcp6_parser.h:864
static symbol_type make_INTERFACES(YY_COPY(location_type) l)
T & as()
Accessor to a built T.
Definition: dhcp6_parser.h:378
static symbol_type make_MAX_QUEUE_SIZE(YY_COPY(location_type) l)
static symbol_type make_MYSQL(YY_COPY(location_type) l)
static symbol_type make_SERVER_TAG(YY_COPY(location_type) l)
static symbol_type make_JSON(YY_COPY(location_type) l)
S::const_reverse_iterator const_iterator
Definition: dhcp6_parser.h:176
static symbol_type make_HW_ADDRESS(YY_COPY(location_type) l)
Syntax errors thrown from user actions.
Definition: dhcp6_parser.h:533
static symbol_type make_NEVER(YY_COPY(location_type) l)
static symbol_type make_CONTACT_POINTS(YY_COPY(location_type) l)
static symbol_type make_SUBNET6(YY_COPY(location_type) l)
static symbol_type make_CODE(YY_COPY(location_type) l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(YY_COPY(location_type) l)
const T & as() const
Const accessor to a built T (for printer).
Definition: dhcp6_parser.h:389
static symbol_type make_RENEW_TIMER(YY_COPY(location_type) l)
Present a slice of the top of a stack.
Definition: dhcp4_parser.h:269
static symbol_type make_SUB_SUBNET6(YY_COPY(location_type) l)
Defines the logger used by the top-level component of kea-dhcp-ddns.
static symbol_type make_RCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_MAXSIZE(YY_COPY(location_type) l)
static symbol_type make_EXCLUDED_PREFIX_LEN(YY_COPY(location_type) l)
static symbol_type make_OUT_OF_POOL(YY_COPY(location_type) l)
void move(by_type &that)
Steal the symbol type from that.
static symbol_type make_DHCP_QUEUE_CONTROL(YY_COPY(location_type) l)
static symbol_type make_ID(YY_COPY(location_type) l)
static symbol_type make_SERVER_PORT(YY_COPY(location_type) l)
static symbol_type make_SERVER_ID(YY_COPY(location_type) l)
static symbol_type make_CONNECT_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_EN(YY_COPY(location_type) l)
static symbol_type make_COMMA(YY_COPY(location_type) l)
T & emplace(const T &t)
Instantiate a T in here from t.
Definition: dhcp6_parser.h:348
static symbol_type make_ONLY_IF_REQUIRED(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_TIME(YY_COPY(location_type) l)
#define YY_ATTRIBUTE_PURE
Definition: dhcp6_parser.h:107
static symbol_type make_SUB_PD_POOL(YY_COPY(location_type) l)
S::size_type size_type
Definition: dhcp6_parser.h:177
static symbol_type make_MAC_SOURCES(YY_COPY(location_type) l)
static symbol_type make_HOOKS_LIBRARIES(YY_COPY(location_type) l)
static symbol_type make_INTEGER(YY_COPY(int64_t) v, YY_COPY(location_type) l)
static symbol_type make_REBIND_TIMER(YY_COPY(location_type) l)
static symbol_type make_PREFIX_LEN(YY_COPY(location_type) l)
static symbol_type make_FLEX_ID(YY_COPY(location_type) l)
static symbol_type make_MAXVER(YY_COPY(location_type) l)
static symbol_type make_DEBUGLEVEL(YY_COPY(location_type) l)
static symbol_type make_USER(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_REQUEST_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_LCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_BOOLEAN(YY_COPY(bool) v, YY_COPY(location_type) l)
static symbol_type make_RECORD_TYPES(YY_COPY(location_type) l)
Forward declaration of the ParserContext class.
static symbol_type make_SOCKET_NAME(YY_COPY(location_type) l)
static symbol_type make_ENTERPRISE_ID(YY_COPY(location_type) l)
static symbol_type make_TYPE(YY_COPY(location_type) l)
static symbol_type make_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_ENABLE_UPDATES(YY_COPY(location_type) l)
static symbol_type make_SUB_POOL6(YY_COPY(location_type) l)
#define YY_MOVE_REF(Type)
Definition: dhcp6_parser.h:84
static symbol_type make_OVERRIDE_NO_UPDATE(YY_COPY(location_type) l)
T & build()
Instantiate an empty T in here.
Definition: dhcp6_parser.h:361
by_type()
Default constructor.
static symbol_type make_REPLACE_CLIENT_NAME(YY_COPY(location_type) l)
size_type size() const
Definition: dhcp6_parser.h:243
static symbol_type make_HTYPE(YY_COPY(location_type) l)
static symbol_type make_TCP_NODELAY(YY_COPY(location_type) l)
static symbol_type make_RESERVATION_MODE(YY_COPY(location_type) l)
basic_symbol()
Default constructor.
static symbol_type make_LOGGING(YY_COPY(location_type) l)
#define YY_COPY(Type)
Definition: dhcp6_parser.h:86
static symbol_type make_SUB_OPTION_DEFS(YY_COPY(location_type) l)
static symbol_type make_POOL(YY_COPY(location_type) l)
static symbol_type make_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_SENDER_IP(YY_COPY(location_type) l)
static symbol_type make_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_WHEN_PRESENT(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_LEASES(YY_COPY(location_type) l)
void swap(self_type &other)
Swap the content with other, of same type.
Definition: dhcp6_parser.h:407
static symbol_type make_TCP_KEEPALIVE(YY_COPY(location_type) l)
static symbol_type make_POSTGRESQL(YY_COPY(location_type) l)
static symbol_type make_CONFIG_DATABASES(YY_COPY(location_type) l)
static symbol_type make_OUTPUT_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_SUB_HOOKS_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_PREFIXES(YY_COPY(location_type) l)
void pop(int n=1)
Definition: dhcp6_parser.h:230
static symbol_type make_PORT(YY_COPY(location_type) l)
static symbol_type make_DHCP4(YY_COPY(location_type) l)
static symbol_type make_EXCLUDED_PREFIX(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASES(YY_COPY(location_type) l)
static symbol_type make_ARRAY(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESSES(YY_COPY(location_type) l)
stack(size_type n=200)
Definition: dhcp6_parser.h:179
static symbol_type make_DELEGATED_LEN(YY_COPY(location_type) l)
static symbol_type make_POOLS(YY_COPY(location_type) l)
static symbol_type make_QUALIFYING_SUFFIX(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP_DDNS(YY_COPY(location_type) l)
const_iterator begin() const
Definition: dhcp6_parser.h:249
void clear()
Record that this symbol is empty.
static symbol_type make_PD_POOLS(YY_COPY(location_type) l)
static symbol_type make_LFC_INTERVAL(YY_COPY(location_type) l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_DUID(YY_COPY(location_type) l)
static symbol_type make_CONTROL_SOCKET(YY_COPY(location_type) l)
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(YY_COPY(location_type) l)