Kea  1.5.0
dhcp4_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_PARSER4_DHCP4_PARSER_H_INCLUDED
45 # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
46 // // "%code requires" blocks.
47 #line 17 "dhcp4_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 "dhcp4_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 PARSER4_DEBUG
154 # if defined YYDEBUG
155 #if YYDEBUG
156 # define PARSER4_DEBUG 1
157 # else
158 # define PARSER4_DEBUG 0
159 # endif
160 # else /* ! defined YYDEBUG */
161 # define PARSER4_DEBUG 1
162 # endif /* ! defined YYDEBUG */
163 #endif /* ! defined PARSER4_DEBUG */
164 
165 #line 14 "dhcp4_parser.yy" // lalr1.cc:404
166 namespace isc { namespace dhcp {
167 #line 168 "dhcp4_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 PARSER4_STYPE
499  union union_type
501  {
502  // value
503  // map_value
504  // socket_type
505  // outbound_interface_value
506  // db_type
507  // hr_mode
508  // ncr_protocol_value
509  // replace_client_name_value
510  char dummy1[sizeof (ElementPtr)];
511 
512  // "boolean"
513  char dummy2[sizeof (bool)];
514 
515  // "floating point"
516  char dummy3[sizeof (double)];
517 
518  // "integer"
519  char dummy4[sizeof (int64_t)];
520 
521  // "constant string"
522  char dummy5[sizeof (std::string)];
523 };
524 
526  typedef variant<sizeof (union_type)> semantic_type;
527 #else
528  typedef PARSER4_STYPE semantic_type;
529 #endif
530  typedef location location_type;
532 
534  struct syntax_error : std::runtime_error
535  {
536  syntax_error (const location_type& l, const std::string& m);
538  };
539 
541  struct token
542  {
544  {
545  TOKEN_END = 0,
546  TOKEN_COMMA = 258,
547  TOKEN_COLON = 259,
548  TOKEN_LSQUARE_BRACKET = 260,
549  TOKEN_RSQUARE_BRACKET = 261,
550  TOKEN_LCURLY_BRACKET = 262,
551  TOKEN_RCURLY_BRACKET = 263,
552  TOKEN_NULL_TYPE = 264,
553  TOKEN_DHCP4 = 265,
554  TOKEN_CONFIG_CONTROL = 266,
555  TOKEN_CONFIG_DATABASES = 267,
556  TOKEN_INTERFACES_CONFIG = 268,
557  TOKEN_INTERFACES = 269,
558  TOKEN_DHCP_SOCKET_TYPE = 270,
559  TOKEN_RAW = 271,
560  TOKEN_UDP = 272,
561  TOKEN_OUTBOUND_INTERFACE = 273,
562  TOKEN_SAME_AS_INBOUND = 274,
563  TOKEN_USE_ROUTING = 275,
564  TOKEN_RE_DETECT = 276,
565  TOKEN_SANITY_CHECKS = 277,
566  TOKEN_LEASE_CHECKS = 278,
567  TOKEN_ECHO_CLIENT_ID = 279,
568  TOKEN_MATCH_CLIENT_ID = 280,
569  TOKEN_AUTHORITATIVE = 281,
570  TOKEN_NEXT_SERVER = 282,
571  TOKEN_SERVER_HOSTNAME = 283,
572  TOKEN_BOOT_FILE_NAME = 284,
573  TOKEN_LEASE_DATABASE = 285,
574  TOKEN_HOSTS_DATABASE = 286,
575  TOKEN_HOSTS_DATABASES = 287,
576  TOKEN_TYPE = 288,
577  TOKEN_MEMFILE = 289,
578  TOKEN_MYSQL = 290,
579  TOKEN_POSTGRESQL = 291,
580  TOKEN_CQL = 292,
581  TOKEN_USER = 293,
582  TOKEN_PASSWORD = 294,
583  TOKEN_HOST = 295,
584  TOKEN_PORT = 296,
585  TOKEN_PERSIST = 297,
586  TOKEN_LFC_INTERVAL = 298,
587  TOKEN_READONLY = 299,
588  TOKEN_CONNECT_TIMEOUT = 300,
589  TOKEN_CONTACT_POINTS = 301,
590  TOKEN_KEYSPACE = 302,
591  TOKEN_MAX_RECONNECT_TRIES = 303,
592  TOKEN_RECONNECT_WAIT_TIME = 304,
593  TOKEN_REQUEST_TIMEOUT = 305,
594  TOKEN_TCP_KEEPALIVE = 306,
595  TOKEN_TCP_NODELAY = 307,
596  TOKEN_VALID_LIFETIME = 308,
597  TOKEN_RENEW_TIMER = 309,
598  TOKEN_REBIND_TIMER = 310,
599  TOKEN_DECLINE_PROBATION_PERIOD = 311,
600  TOKEN_SERVER_TAG = 312,
601  TOKEN_SUBNET4 = 313,
602  TOKEN_SUBNET_4O6_INTERFACE = 314,
603  TOKEN_SUBNET_4O6_INTERFACE_ID = 315,
604  TOKEN_SUBNET_4O6_SUBNET = 316,
605  TOKEN_OPTION_DEF = 317,
606  TOKEN_OPTION_DATA = 318,
607  TOKEN_NAME = 319,
608  TOKEN_DATA = 320,
609  TOKEN_CODE = 321,
610  TOKEN_SPACE = 322,
611  TOKEN_CSV_FORMAT = 323,
612  TOKEN_ALWAYS_SEND = 324,
613  TOKEN_RECORD_TYPES = 325,
614  TOKEN_ENCAPSULATE = 326,
615  TOKEN_ARRAY = 327,
616  TOKEN_SHARED_NETWORKS = 328,
617  TOKEN_POOLS = 329,
618  TOKEN_POOL = 330,
619  TOKEN_USER_CONTEXT = 331,
620  TOKEN_COMMENT = 332,
621  TOKEN_SUBNET = 333,
622  TOKEN_INTERFACE = 334,
623  TOKEN_ID = 335,
624  TOKEN_RESERVATION_MODE = 336,
625  TOKEN_DISABLED = 337,
626  TOKEN_OUT_OF_POOL = 338,
627  TOKEN_GLOBAL = 339,
628  TOKEN_ALL = 340,
629  TOKEN_HOST_RESERVATION_IDENTIFIERS = 341,
630  TOKEN_CLIENT_CLASSES = 342,
631  TOKEN_REQUIRE_CLIENT_CLASSES = 343,
632  TOKEN_TEST = 344,
633  TOKEN_ONLY_IF_REQUIRED = 345,
634  TOKEN_CLIENT_CLASS = 346,
635  TOKEN_RESERVATIONS = 347,
636  TOKEN_DUID = 348,
637  TOKEN_HW_ADDRESS = 349,
638  TOKEN_CIRCUIT_ID = 350,
639  TOKEN_CLIENT_ID = 351,
640  TOKEN_HOSTNAME = 352,
641  TOKEN_FLEX_ID = 353,
642  TOKEN_RELAY = 354,
643  TOKEN_IP_ADDRESS = 355,
644  TOKEN_IP_ADDRESSES = 356,
645  TOKEN_HOOKS_LIBRARIES = 357,
646  TOKEN_LIBRARY = 358,
647  TOKEN_PARAMETERS = 359,
648  TOKEN_EXPIRED_LEASES_PROCESSING = 360,
649  TOKEN_RECLAIM_TIMER_WAIT_TIME = 361,
650  TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 362,
651  TOKEN_HOLD_RECLAIMED_TIME = 363,
652  TOKEN_MAX_RECLAIM_LEASES = 364,
653  TOKEN_MAX_RECLAIM_TIME = 365,
654  TOKEN_UNWARNED_RECLAIM_CYCLES = 366,
655  TOKEN_DHCP4O6_PORT = 367,
656  TOKEN_CONTROL_SOCKET = 368,
657  TOKEN_SOCKET_TYPE = 369,
658  TOKEN_SOCKET_NAME = 370,
659  TOKEN_DHCP_QUEUE_CONTROL = 371,
660  TOKEN_DHCP_DDNS = 372,
661  TOKEN_ENABLE_UPDATES = 373,
662  TOKEN_QUALIFYING_SUFFIX = 374,
663  TOKEN_SERVER_IP = 375,
664  TOKEN_SERVER_PORT = 376,
665  TOKEN_SENDER_IP = 377,
666  TOKEN_SENDER_PORT = 378,
667  TOKEN_MAX_QUEUE_SIZE = 379,
668  TOKEN_NCR_PROTOCOL = 380,
669  TOKEN_NCR_FORMAT = 381,
670  TOKEN_OVERRIDE_NO_UPDATE = 382,
671  TOKEN_OVERRIDE_CLIENT_UPDATE = 383,
672  TOKEN_REPLACE_CLIENT_NAME = 384,
673  TOKEN_GENERATED_PREFIX = 385,
674  TOKEN_TCP = 386,
675  TOKEN_JSON = 387,
676  TOKEN_WHEN_PRESENT = 388,
677  TOKEN_NEVER = 389,
678  TOKEN_ALWAYS = 390,
679  TOKEN_WHEN_NOT_PRESENT = 391,
680  TOKEN_HOSTNAME_CHAR_SET = 392,
681  TOKEN_HOSTNAME_CHAR_REPLACEMENT = 393,
682  TOKEN_LOGGING = 394,
683  TOKEN_LOGGERS = 395,
684  TOKEN_OUTPUT_OPTIONS = 396,
685  TOKEN_OUTPUT = 397,
686  TOKEN_DEBUGLEVEL = 398,
687  TOKEN_SEVERITY = 399,
688  TOKEN_FLUSH = 400,
689  TOKEN_MAXSIZE = 401,
690  TOKEN_MAXVER = 402,
691  TOKEN_DHCP6 = 403,
692  TOKEN_DHCPDDNS = 404,
693  TOKEN_CONTROL_AGENT = 405,
694  TOKEN_TOPLEVEL_JSON = 406,
695  TOKEN_TOPLEVEL_DHCP4 = 407,
696  TOKEN_SUB_DHCP4 = 408,
697  TOKEN_SUB_INTERFACES4 = 409,
698  TOKEN_SUB_SUBNET4 = 410,
699  TOKEN_SUB_POOL4 = 411,
700  TOKEN_SUB_RESERVATION = 412,
701  TOKEN_SUB_OPTION_DEFS = 413,
702  TOKEN_SUB_OPTION_DEF = 414,
703  TOKEN_SUB_OPTION_DATA = 415,
704  TOKEN_SUB_HOOKS_LIBRARY = 416,
705  TOKEN_SUB_DHCP_DDNS = 417,
706  TOKEN_SUB_LOGGING = 418,
707  TOKEN_SUB_CONFIG_CONTROL = 419,
708  TOKEN_STRING = 420,
709  TOKEN_INTEGER = 421,
710  TOKEN_FLOAT = 422,
711  TOKEN_BOOLEAN = 423
712  };
713  };
714 
717 
719  typedef int symbol_number_type;
720 
722  enum { empty_symbol = -2 };
723 
725  typedef unsigned char token_number_type;
726 
733  template <typename Base>
734  struct basic_symbol : Base
735  {
737  typedef Base super_type;
738 
740  basic_symbol ();
741 
744 
745 
747 # if 201103L <= YY_CPLUSPLUS
748  basic_symbol (typename Base::kind_type t, location_type&& l);
749 #else
750  basic_symbol (typename Base::kind_type t, const location_type& l);
751 #endif
752 # if 201103L <= YY_CPLUSPLUS
753  basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l);
754 #else
755  basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l);
756 #endif
757 # if 201103L <= YY_CPLUSPLUS
758  basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l);
759 #else
760  basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l);
761 #endif
762 # if 201103L <= YY_CPLUSPLUS
763  basic_symbol (typename Base::kind_type t, double&& v, location_type&& l);
764 #else
765  basic_symbol (typename Base::kind_type t, const double& v, const location_type& l);
766 #endif
767 # if 201103L <= YY_CPLUSPLUS
768  basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l);
769 #else
770  basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l);
771 #endif
772 # if 201103L <= YY_CPLUSPLUS
773  basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l);
774 #else
775  basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l);
776 #endif
777 
778 
780  ~basic_symbol ();
781 
783  void clear ();
784 
786  bool empty () const;
787 
789  void move (basic_symbol& s);
790 
793 
796 
797  private:
798 #if YY_CPLUSPLUS < 201103L
799  basic_symbol& operator= (const basic_symbol& other);
801 #endif
802  };
803 
805  struct by_type
806  {
808  by_type ();
809 
811  by_type (const by_type& other);
812 
815 
817  by_type (kind_type t);
818 
820  void clear ();
821 
823  void move (by_type& that);
824 
827  symbol_number_type type_get () const;
828 
830  token_type token () const;
831 
835  int type;
836  };
837 
840 
843  virtual ~Dhcp4Parser ();
844 
847  int operator() ();
848 
851  virtual int parse ();
852 
853 #if PARSER4_DEBUG
854  std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
857  void set_debug_stream (std::ostream &);
858 
860  typedef int debug_level_type;
862  debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
864  void set_debug_level (debug_level_type l);
865 #endif
866 
870  virtual void error (const location_type& loc, const std::string& msg);
871 
873  void error (const syntax_error& err);
874 
875  // Symbol constructors declarations.
876  static
878  make_END (YY_COPY (location_type) l);
879 
880  static
882  make_COMMA (YY_COPY (location_type) l);
883 
884  static
886  make_COLON (YY_COPY (location_type) l);
887 
888  static
890  make_LSQUARE_BRACKET (YY_COPY (location_type) l);
891 
892  static
894  make_RSQUARE_BRACKET (YY_COPY (location_type) l);
895 
896  static
898  make_LCURLY_BRACKET (YY_COPY (location_type) l);
899 
900  static
902  make_RCURLY_BRACKET (YY_COPY (location_type) l);
903 
904  static
906  make_NULL_TYPE (YY_COPY (location_type) l);
907 
908  static
910  make_DHCP4 (YY_COPY (location_type) l);
911 
912  static
914  make_CONFIG_CONTROL (YY_COPY (location_type) l);
915 
916  static
918  make_CONFIG_DATABASES (YY_COPY (location_type) l);
919 
920  static
922  make_INTERFACES_CONFIG (YY_COPY (location_type) l);
923 
924  static
926  make_INTERFACES (YY_COPY (location_type) l);
927 
928  static
930  make_DHCP_SOCKET_TYPE (YY_COPY (location_type) l);
931 
932  static
934  make_RAW (YY_COPY (location_type) l);
935 
936  static
938  make_UDP (YY_COPY (location_type) l);
939 
940  static
942  make_OUTBOUND_INTERFACE (YY_COPY (location_type) l);
943 
944  static
946  make_SAME_AS_INBOUND (YY_COPY (location_type) l);
947 
948  static
950  make_USE_ROUTING (YY_COPY (location_type) l);
951 
952  static
954  make_RE_DETECT (YY_COPY (location_type) l);
955 
956  static
958  make_SANITY_CHECKS (YY_COPY (location_type) l);
959 
960  static
962  make_LEASE_CHECKS (YY_COPY (location_type) l);
963 
964  static
966  make_ECHO_CLIENT_ID (YY_COPY (location_type) l);
967 
968  static
970  make_MATCH_CLIENT_ID (YY_COPY (location_type) l);
971 
972  static
974  make_AUTHORITATIVE (YY_COPY (location_type) l);
975 
976  static
978  make_NEXT_SERVER (YY_COPY (location_type) l);
979 
980  static
982  make_SERVER_HOSTNAME (YY_COPY (location_type) l);
983 
984  static
986  make_BOOT_FILE_NAME (YY_COPY (location_type) l);
987 
988  static
990  make_LEASE_DATABASE (YY_COPY (location_type) l);
991 
992  static
994  make_HOSTS_DATABASE (YY_COPY (location_type) l);
995 
996  static
998  make_HOSTS_DATABASES (YY_COPY (location_type) l);
999 
1000  static
1001  symbol_type
1002  make_TYPE (YY_COPY (location_type) l);
1003 
1004  static
1005  symbol_type
1006  make_MEMFILE (YY_COPY (location_type) l);
1007 
1008  static
1009  symbol_type
1010  make_MYSQL (YY_COPY (location_type) l);
1011 
1012  static
1013  symbol_type
1014  make_POSTGRESQL (YY_COPY (location_type) l);
1015 
1016  static
1017  symbol_type
1018  make_CQL (YY_COPY (location_type) l);
1019 
1020  static
1021  symbol_type
1022  make_USER (YY_COPY (location_type) l);
1023 
1024  static
1025  symbol_type
1026  make_PASSWORD (YY_COPY (location_type) l);
1027 
1028  static
1029  symbol_type
1030  make_HOST (YY_COPY (location_type) l);
1031 
1032  static
1033  symbol_type
1034  make_PORT (YY_COPY (location_type) l);
1035 
1036  static
1037  symbol_type
1038  make_PERSIST (YY_COPY (location_type) l);
1039 
1040  static
1041  symbol_type
1042  make_LFC_INTERVAL (YY_COPY (location_type) l);
1043 
1044  static
1045  symbol_type
1046  make_READONLY (YY_COPY (location_type) l);
1047 
1048  static
1049  symbol_type
1050  make_CONNECT_TIMEOUT (YY_COPY (location_type) l);
1051 
1052  static
1053  symbol_type
1054  make_CONTACT_POINTS (YY_COPY (location_type) l);
1055 
1056  static
1057  symbol_type
1058  make_KEYSPACE (YY_COPY (location_type) l);
1059 
1060  static
1061  symbol_type
1062  make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l);
1063 
1064  static
1065  symbol_type
1066  make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l);
1067 
1068  static
1069  symbol_type
1070  make_REQUEST_TIMEOUT (YY_COPY (location_type) l);
1071 
1072  static
1073  symbol_type
1074  make_TCP_KEEPALIVE (YY_COPY (location_type) l);
1075 
1076  static
1077  symbol_type
1078  make_TCP_NODELAY (YY_COPY (location_type) l);
1079 
1080  static
1081  symbol_type
1082  make_VALID_LIFETIME (YY_COPY (location_type) l);
1083 
1084  static
1085  symbol_type
1086  make_RENEW_TIMER (YY_COPY (location_type) l);
1087 
1088  static
1089  symbol_type
1090  make_REBIND_TIMER (YY_COPY (location_type) l);
1091 
1092  static
1093  symbol_type
1094  make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l);
1095 
1096  static
1097  symbol_type
1098  make_SERVER_TAG (YY_COPY (location_type) l);
1099 
1100  static
1101  symbol_type
1102  make_SUBNET4 (YY_COPY (location_type) l);
1103 
1104  static
1105  symbol_type
1106  make_SUBNET_4O6_INTERFACE (YY_COPY (location_type) l);
1107 
1108  static
1109  symbol_type
1110  make_SUBNET_4O6_INTERFACE_ID (YY_COPY (location_type) l);
1111 
1112  static
1113  symbol_type
1114  make_SUBNET_4O6_SUBNET (YY_COPY (location_type) l);
1115 
1116  static
1117  symbol_type
1118  make_OPTION_DEF (YY_COPY (location_type) l);
1119 
1120  static
1121  symbol_type
1122  make_OPTION_DATA (YY_COPY (location_type) l);
1123 
1124  static
1125  symbol_type
1126  make_NAME (YY_COPY (location_type) l);
1127 
1128  static
1129  symbol_type
1130  make_DATA (YY_COPY (location_type) l);
1131 
1132  static
1133  symbol_type
1134  make_CODE (YY_COPY (location_type) l);
1135 
1136  static
1137  symbol_type
1138  make_SPACE (YY_COPY (location_type) l);
1139 
1140  static
1141  symbol_type
1142  make_CSV_FORMAT (YY_COPY (location_type) l);
1143 
1144  static
1145  symbol_type
1146  make_ALWAYS_SEND (YY_COPY (location_type) l);
1147 
1148  static
1149  symbol_type
1150  make_RECORD_TYPES (YY_COPY (location_type) l);
1151 
1152  static
1153  symbol_type
1154  make_ENCAPSULATE (YY_COPY (location_type) l);
1155 
1156  static
1157  symbol_type
1158  make_ARRAY (YY_COPY (location_type) l);
1159 
1160  static
1161  symbol_type
1162  make_SHARED_NETWORKS (YY_COPY (location_type) l);
1163 
1164  static
1165  symbol_type
1166  make_POOLS (YY_COPY (location_type) l);
1167 
1168  static
1169  symbol_type
1170  make_POOL (YY_COPY (location_type) l);
1171 
1172  static
1173  symbol_type
1174  make_USER_CONTEXT (YY_COPY (location_type) l);
1175 
1176  static
1177  symbol_type
1178  make_COMMENT (YY_COPY (location_type) l);
1179 
1180  static
1181  symbol_type
1182  make_SUBNET (YY_COPY (location_type) l);
1183 
1184  static
1185  symbol_type
1186  make_INTERFACE (YY_COPY (location_type) l);
1187 
1188  static
1189  symbol_type
1190  make_ID (YY_COPY (location_type) l);
1191 
1192  static
1193  symbol_type
1194  make_RESERVATION_MODE (YY_COPY (location_type) l);
1195 
1196  static
1197  symbol_type
1198  make_DISABLED (YY_COPY (location_type) l);
1199 
1200  static
1201  symbol_type
1202  make_OUT_OF_POOL (YY_COPY (location_type) l);
1203 
1204  static
1205  symbol_type
1206  make_GLOBAL (YY_COPY (location_type) l);
1207 
1208  static
1209  symbol_type
1210  make_ALL (YY_COPY (location_type) l);
1211 
1212  static
1213  symbol_type
1214  make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l);
1215 
1216  static
1217  symbol_type
1218  make_CLIENT_CLASSES (YY_COPY (location_type) l);
1219 
1220  static
1221  symbol_type
1222  make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l);
1223 
1224  static
1225  symbol_type
1226  make_TEST (YY_COPY (location_type) l);
1227 
1228  static
1229  symbol_type
1230  make_ONLY_IF_REQUIRED (YY_COPY (location_type) l);
1231 
1232  static
1233  symbol_type
1234  make_CLIENT_CLASS (YY_COPY (location_type) l);
1235 
1236  static
1237  symbol_type
1238  make_RESERVATIONS (YY_COPY (location_type) l);
1239 
1240  static
1241  symbol_type
1242  make_DUID (YY_COPY (location_type) l);
1243 
1244  static
1245  symbol_type
1246  make_HW_ADDRESS (YY_COPY (location_type) l);
1247 
1248  static
1249  symbol_type
1250  make_CIRCUIT_ID (YY_COPY (location_type) l);
1251 
1252  static
1253  symbol_type
1254  make_CLIENT_ID (YY_COPY (location_type) l);
1255 
1256  static
1257  symbol_type
1258  make_HOSTNAME (YY_COPY (location_type) l);
1259 
1260  static
1261  symbol_type
1262  make_FLEX_ID (YY_COPY (location_type) l);
1263 
1264  static
1265  symbol_type
1266  make_RELAY (YY_COPY (location_type) l);
1267 
1268  static
1269  symbol_type
1270  make_IP_ADDRESS (YY_COPY (location_type) l);
1271 
1272  static
1273  symbol_type
1274  make_IP_ADDRESSES (YY_COPY (location_type) l);
1275 
1276  static
1277  symbol_type
1278  make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
1279 
1280  static
1281  symbol_type
1282  make_LIBRARY (YY_COPY (location_type) l);
1283 
1284  static
1285  symbol_type
1286  make_PARAMETERS (YY_COPY (location_type) l);
1287 
1288  static
1289  symbol_type
1290  make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l);
1291 
1292  static
1293  symbol_type
1294  make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l);
1295 
1296  static
1297  symbol_type
1298  make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l);
1299 
1300  static
1301  symbol_type
1302  make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l);
1303 
1304  static
1305  symbol_type
1306  make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l);
1307 
1308  static
1309  symbol_type
1310  make_MAX_RECLAIM_TIME (YY_COPY (location_type) l);
1311 
1312  static
1313  symbol_type
1314  make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l);
1315 
1316  static
1317  symbol_type
1318  make_DHCP4O6_PORT (YY_COPY (location_type) l);
1319 
1320  static
1321  symbol_type
1322  make_CONTROL_SOCKET (YY_COPY (location_type) l);
1323 
1324  static
1325  symbol_type
1326  make_SOCKET_TYPE (YY_COPY (location_type) l);
1327 
1328  static
1329  symbol_type
1330  make_SOCKET_NAME (YY_COPY (location_type) l);
1331 
1332  static
1333  symbol_type
1334  make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l);
1335 
1336  static
1337  symbol_type
1338  make_DHCP_DDNS (YY_COPY (location_type) l);
1339 
1340  static
1341  symbol_type
1342  make_ENABLE_UPDATES (YY_COPY (location_type) l);
1343 
1344  static
1345  symbol_type
1346  make_QUALIFYING_SUFFIX (YY_COPY (location_type) l);
1347 
1348  static
1349  symbol_type
1350  make_SERVER_IP (YY_COPY (location_type) l);
1351 
1352  static
1353  symbol_type
1354  make_SERVER_PORT (YY_COPY (location_type) l);
1355 
1356  static
1357  symbol_type
1358  make_SENDER_IP (YY_COPY (location_type) l);
1359 
1360  static
1361  symbol_type
1362  make_SENDER_PORT (YY_COPY (location_type) l);
1363 
1364  static
1365  symbol_type
1366  make_MAX_QUEUE_SIZE (YY_COPY (location_type) l);
1367 
1368  static
1369  symbol_type
1370  make_NCR_PROTOCOL (YY_COPY (location_type) l);
1371 
1372  static
1373  symbol_type
1374  make_NCR_FORMAT (YY_COPY (location_type) l);
1375 
1376  static
1377  symbol_type
1378  make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l);
1379 
1380  static
1381  symbol_type
1382  make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l);
1383 
1384  static
1385  symbol_type
1386  make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l);
1387 
1388  static
1389  symbol_type
1390  make_GENERATED_PREFIX (YY_COPY (location_type) l);
1391 
1392  static
1393  symbol_type
1394  make_TCP (YY_COPY (location_type) l);
1395 
1396  static
1397  symbol_type
1398  make_JSON (YY_COPY (location_type) l);
1399 
1400  static
1401  symbol_type
1402  make_WHEN_PRESENT (YY_COPY (location_type) l);
1403 
1404  static
1405  symbol_type
1406  make_NEVER (YY_COPY (location_type) l);
1407 
1408  static
1409  symbol_type
1410  make_ALWAYS (YY_COPY (location_type) l);
1411 
1412  static
1413  symbol_type
1414  make_WHEN_NOT_PRESENT (YY_COPY (location_type) l);
1415 
1416  static
1417  symbol_type
1418  make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l);
1419 
1420  static
1421  symbol_type
1422  make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l);
1423 
1424  static
1425  symbol_type
1426  make_LOGGING (YY_COPY (location_type) l);
1427 
1428  static
1429  symbol_type
1430  make_LOGGERS (YY_COPY (location_type) l);
1431 
1432  static
1433  symbol_type
1434  make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
1435 
1436  static
1437  symbol_type
1438  make_OUTPUT (YY_COPY (location_type) l);
1439 
1440  static
1441  symbol_type
1442  make_DEBUGLEVEL (YY_COPY (location_type) l);
1443 
1444  static
1445  symbol_type
1446  make_SEVERITY (YY_COPY (location_type) l);
1447 
1448  static
1449  symbol_type
1450  make_FLUSH (YY_COPY (location_type) l);
1451 
1452  static
1453  symbol_type
1454  make_MAXSIZE (YY_COPY (location_type) l);
1455 
1456  static
1457  symbol_type
1458  make_MAXVER (YY_COPY (location_type) l);
1459 
1460  static
1461  symbol_type
1462  make_DHCP6 (YY_COPY (location_type) l);
1463 
1464  static
1465  symbol_type
1466  make_DHCPDDNS (YY_COPY (location_type) l);
1467 
1468  static
1469  symbol_type
1470  make_CONTROL_AGENT (YY_COPY (location_type) l);
1471 
1472  static
1473  symbol_type
1474  make_TOPLEVEL_JSON (YY_COPY (location_type) l);
1475 
1476  static
1477  symbol_type
1478  make_TOPLEVEL_DHCP4 (YY_COPY (location_type) l);
1479 
1480  static
1481  symbol_type
1482  make_SUB_DHCP4 (YY_COPY (location_type) l);
1483 
1484  static
1485  symbol_type
1486  make_SUB_INTERFACES4 (YY_COPY (location_type) l);
1487 
1488  static
1489  symbol_type
1490  make_SUB_SUBNET4 (YY_COPY (location_type) l);
1491 
1492  static
1493  symbol_type
1494  make_SUB_POOL4 (YY_COPY (location_type) l);
1495 
1496  static
1497  symbol_type
1498  make_SUB_RESERVATION (YY_COPY (location_type) l);
1499 
1500  static
1501  symbol_type
1502  make_SUB_OPTION_DEFS (YY_COPY (location_type) l);
1503 
1504  static
1505  symbol_type
1506  make_SUB_OPTION_DEF (YY_COPY (location_type) l);
1507 
1508  static
1509  symbol_type
1510  make_SUB_OPTION_DATA (YY_COPY (location_type) l);
1511 
1512  static
1513  symbol_type
1514  make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l);
1515 
1516  static
1517  symbol_type
1518  make_SUB_DHCP_DDNS (YY_COPY (location_type) l);
1519 
1520  static
1521  symbol_type
1522  make_SUB_LOGGING (YY_COPY (location_type) l);
1523 
1524  static
1525  symbol_type
1526  make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l);
1527 
1528  static
1529  symbol_type
1530  make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
1531 
1532  static
1533  symbol_type
1534  make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
1535 
1536  static
1537  symbol_type
1538  make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
1539 
1540  static
1541  symbol_type
1542  make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
1543 
1544 
1545 
1546  private:
1548  Dhcp4Parser (const Dhcp4Parser&);
1549  Dhcp4Parser& operator= (const Dhcp4Parser&);
1550 
1552  typedef int state_type;
1553 
1557  virtual std::string yysyntax_error_ (state_type yystate,
1558  const symbol_type& yyla) const;
1559 
1563  state_type yy_lr_goto_state_ (state_type yystate, int yysym);
1564 
1567  static bool yy_pact_value_is_default_ (int yyvalue);
1568 
1571  static bool yy_table_value_is_error_ (int yyvalue);
1572 
1573  static const short yypact_ninf_;
1574  static const signed char yytable_ninf_;
1575 
1577  static token_number_type yytranslate_ (token_type t);
1578 
1579  // Tables.
1580  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1581  // STATE-NUM.
1582  static const short yypact_[];
1583 
1584  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1585  // Performed when YYTABLE does not specify something else to do. Zero
1586  // means the default is an error.
1587  static const unsigned short yydefact_[];
1588 
1589  // YYPGOTO[NTERM-NUM].
1590  static const short yypgoto_[];
1591 
1592  // YYDEFGOTO[NTERM-NUM].
1593  static const short yydefgoto_[];
1594 
1595  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1596  // positive, shift that token. If negative, reduce the rule whose
1597  // number is the opposite. If YYTABLE_NINF, syntax error.
1598  static const unsigned short yytable_[];
1599 
1600  static const short yycheck_[];
1601 
1602  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1603  // symbol of state STATE-NUM.
1604  static const unsigned short yystos_[];
1605 
1606  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
1607  static const unsigned short yyr1_[];
1608 
1609  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
1610  static const unsigned char yyr2_[];
1611 
1612 
1614  static std::string yytnamerr_ (const char *n);
1615 
1616 
1618  static const char* const yytname_[];
1619 #if PARSER4_DEBUG
1620  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
1621  static const unsigned short yyrline_[];
1623  virtual void yy_reduce_print_ (int r);
1625  virtual void yystack_print_ ();
1626 
1628  int yydebug_;
1630  std::ostream* yycdebug_;
1631 
1635  template <typename Base>
1636  void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
1637 #endif
1638 
1643  template <typename Base>
1644  void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
1645 
1646  private:
1648  struct by_state
1649  {
1651  by_state ();
1652 
1654  typedef state_type kind_type;
1655 
1657  by_state (kind_type s);
1658 
1660  by_state (const by_state& other);
1661 
1663  void clear ();
1664 
1666  void move (by_state& that);
1667 
1670  symbol_number_type type_get () const;
1671 
1673  enum { empty_state = -1 };
1674 
1677  state_type state;
1678  };
1679 
1681  struct stack_symbol_type : basic_symbol<by_state>
1682  {
1684  typedef basic_symbol<by_state> super_type;
1686  stack_symbol_type ();
1688  stack_symbol_type (YY_RVREF (stack_symbol_type) that);
1690  stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
1691 #if YY_CPLUSPLUS < 201103L
1692  stack_symbol_type& operator= (stack_symbol_type& that);
1695 #endif
1696  };
1697 
1699  typedef stack<stack_symbol_type> stack_type;
1700 
1702  stack_type yystack_;
1703 
1709  void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
1710 
1717  void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
1718 
1720  void yypop_ (int n = 1);
1721 
1723  enum
1724  {
1725  yyeof_ = 0,
1726  yylast_ = 1000,
1727  yynnts_ = 373,
1728  yyfinal_ = 30,
1729  yyterror_ = 1,
1730  yyerrcode_ = 256,
1731  yyntokens_ = 169
1732  };
1733 
1734 
1735  // User arguments.
1737  };
1738 
1739  // Symbol number corresponding to token number t.
1740  inline
1742  Dhcp4Parser::yytranslate_ (token_type t)
1743  {
1744  static
1745  const token_number_type
1746  translate_table[] =
1747  {
1748  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1749  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1750  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1751  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1752  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1753  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1754  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1755  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1756  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1757  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1758  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1759  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1760  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1761  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1762  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1763  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1764  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1765  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1766  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1767  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1768  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1769  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1770  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1771  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1772  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1774  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1775  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1776  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1777  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1778  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1779  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1780  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1781  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1782  85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1783  95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1784  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1785  115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1786  125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1787  135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1788  145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1789  155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1790  165, 166, 167, 168
1791  };
1792  const unsigned user_token_number_max_ = 423;
1793  const token_number_type undef_token_ = 2;
1794 
1795  if (static_cast<int> (t) <= yyeof_)
1796  return yyeof_;
1797  else if (static_cast<unsigned> (t) <= user_token_number_max_)
1798  return translate_table[t];
1799  else
1800  return undef_token_;
1801  }
1802 
1803  inline
1805  : std::runtime_error (m)
1806  , location (l)
1807  {}
1808 
1809  // basic_symbol.
1810  template <typename Base>
1812  : value ()
1813  , location ()
1814  {}
1815 
1816  template <typename Base>
1818  : Base (YY_MOVE (other))
1819  , value ()
1820  , location (YY_MOVE (other.location))
1821  {
1822  switch (other.type_get ())
1823  {
1824  case 185: // value
1825  case 189: // map_value
1826  case 230: // socket_type
1827  case 233: // outbound_interface_value
1828  case 255: // db_type
1829  case 337: // hr_mode
1830  case 486: // ncr_protocol_value
1831  case 493: // replace_client_name_value
1832  value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
1833  break;
1834 
1835  case 168: // "boolean"
1836  value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
1837  break;
1838 
1839  case 167: // "floating point"
1840  value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
1841  break;
1842 
1843  case 166: // "integer"
1844  value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
1845  break;
1846 
1847  case 165: // "constant string"
1848  value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
1849  break;
1850 
1851  default:
1852  break;
1853  }
1854 
1855  }
1856 
1857 
1858  // Implementation of basic_symbol constructor for each type.
1859 # if 201103L <= YY_CPLUSPLUS
1860  template <typename Base>
1861  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, location_type&& l)
1862  : Base (t)
1863  , location (std::move (l))
1864  {}
1865 #else
1866  template <typename Base>
1867  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
1868  : Base (t)
1869  , location (l)
1870  {}
1871 #endif
1872 # if 201103L <= YY_CPLUSPLUS
1873  template <typename Base>
1874  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
1875  : Base (t)
1876  , value (std::move (v))
1877  , location (std::move (l))
1878  {}
1879 #else
1880  template <typename Base>
1881  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
1882  : Base (t)
1883  , value (v)
1884  , location (l)
1885  {}
1886 #endif
1887 # if 201103L <= YY_CPLUSPLUS
1888  template <typename Base>
1889  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
1890  : Base (t)
1891  , value (std::move (v))
1892  , location (std::move (l))
1893  {}
1894 #else
1895  template <typename Base>
1896  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
1897  : Base (t)
1898  , value (v)
1899  , location (l)
1900  {}
1901 #endif
1902 # if 201103L <= YY_CPLUSPLUS
1903  template <typename Base>
1904  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
1905  : Base (t)
1906  , value (std::move (v))
1907  , location (std::move (l))
1908  {}
1909 #else
1910  template <typename Base>
1911  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
1912  : Base (t)
1913  , value (v)
1914  , location (l)
1915  {}
1916 #endif
1917 # if 201103L <= YY_CPLUSPLUS
1918  template <typename Base>
1919  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
1920  : Base (t)
1921  , value (std::move (v))
1922  , location (std::move (l))
1923  {}
1924 #else
1925  template <typename Base>
1926  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
1927  : Base (t)
1928  , value (v)
1929  , location (l)
1930  {}
1931 #endif
1932 # if 201103L <= YY_CPLUSPLUS
1933  template <typename Base>
1934  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
1935  : Base (t)
1936  , value (std::move (v))
1937  , location (std::move (l))
1938  {}
1939 #else
1940  template <typename Base>
1941  Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
1942  : Base (t)
1943  , value (v)
1944  , location (l)
1945  {}
1946 #endif
1947 
1948 
1949  template <typename Base>
1951  {
1952  clear ();
1953  }
1954 
1955  template <typename Base>
1956  void
1958  {
1959  // User destructor.
1960  symbol_number_type yytype = this->type_get ();
1961  basic_symbol<Base>& yysym = *this;
1962  (void) yysym;
1963  switch (yytype)
1964  {
1965  default:
1966  break;
1967  }
1968 
1969  // Type destructor.
1970  switch (yytype)
1971  {
1972  case 185: // value
1973  case 189: // map_value
1974  case 230: // socket_type
1975  case 233: // outbound_interface_value
1976  case 255: // db_type
1977  case 337: // hr_mode
1978  case 486: // ncr_protocol_value
1979  case 493: // replace_client_name_value
1980  value.template destroy< ElementPtr > ();
1981  break;
1982 
1983  case 168: // "boolean"
1984  value.template destroy< bool > ();
1985  break;
1986 
1987  case 167: // "floating point"
1988  value.template destroy< double > ();
1989  break;
1990 
1991  case 166: // "integer"
1992  value.template destroy< int64_t > ();
1993  break;
1994 
1995  case 165: // "constant string"
1996  value.template destroy< std::string > ();
1997  break;
1998 
1999  default:
2000  break;
2001  }
2002 
2003  Base::clear ();
2004  }
2005 
2006  template <typename Base>
2007  bool
2009  {
2010  return Base::type_get () == empty_symbol;
2011  }
2012 
2013  template <typename Base>
2014  void
2016  {
2017  super_type::move (s);
2018  switch (this->type_get ())
2019  {
2020  case 185: // value
2021  case 189: // map_value
2022  case 230: // socket_type
2023  case 233: // outbound_interface_value
2024  case 255: // db_type
2025  case 337: // hr_mode
2026  case 486: // ncr_protocol_value
2027  case 493: // replace_client_name_value
2028  value.move< ElementPtr > (YY_MOVE (s.value));
2029  break;
2030 
2031  case 168: // "boolean"
2032  value.move< bool > (YY_MOVE (s.value));
2033  break;
2034 
2035  case 167: // "floating point"
2036  value.move< double > (YY_MOVE (s.value));
2037  break;
2038 
2039  case 166: // "integer"
2040  value.move< int64_t > (YY_MOVE (s.value));
2041  break;
2042 
2043  case 165: // "constant string"
2044  value.move< std::string > (YY_MOVE (s.value));
2045  break;
2046 
2047  default:
2048  break;
2049  }
2050 
2051  location = YY_MOVE (s.location);
2052  }
2053 
2054  // by_type.
2055  inline
2056  Dhcp4Parser::by_type::by_type ()
2057  : type (empty_symbol)
2058  {}
2059 
2060  inline
2062  : type (other.type)
2063  {}
2064 
2065  inline
2067  : type (yytranslate_ (t))
2068  {}
2069 
2070  inline
2071  void
2073  {
2074  type = empty_symbol;
2075  }
2076 
2077  inline
2078  void
2080  {
2081  type = that.type;
2082  that.clear ();
2083  }
2084 
2085  inline
2086  int
2088  {
2089  return type;
2090  }
2091 
2092  inline
2095  {
2096  // YYTOKNUM[NUM] -- (External) token number corresponding to the
2097  // (internal) symbol number NUM (which must be that of a token). */
2098  static
2099  const unsigned short
2100  yytoken_number_[] =
2101  {
2102  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2103  265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
2104  275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2105  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2106  295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
2107  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2108  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
2109  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2110  335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2111  345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
2112  355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
2113  365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2114  375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
2115  385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
2116  395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2117  405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
2118  415, 416, 417, 418, 419, 420, 421, 422, 423
2119  };
2120  return static_cast<token_type> (yytoken_number_[type]);
2121  }
2122 
2123  // Implementation of make_symbol for each symbol type.
2124  inline
2127  {
2128  return symbol_type (token::TOKEN_END, YY_MOVE (l));
2129  }
2130 
2131  inline
2134  {
2135  return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
2136  }
2137 
2138  inline
2141  {
2142  return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
2143  }
2144 
2145  inline
2148  {
2150  }
2151 
2152  inline
2155  {
2157  }
2158 
2159  inline
2162  {
2164  }
2165 
2166  inline
2169  {
2171  }
2172 
2173  inline
2176  {
2178  }
2179 
2180  inline
2183  {
2184  return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l));
2185  }
2186 
2187  inline
2190  {
2192  }
2193 
2194  inline
2197  {
2199  }
2200 
2201  inline
2204  {
2206  }
2207 
2208  inline
2211  {
2213  }
2214 
2215  inline
2218  {
2220  }
2221 
2222  inline
2225  {
2226  return symbol_type (token::TOKEN_RAW, YY_MOVE (l));
2227  }
2228 
2229  inline
2232  {
2233  return symbol_type (token::TOKEN_UDP, YY_MOVE (l));
2234  }
2235 
2236  inline
2239  {
2241  }
2242 
2243  inline
2246  {
2248  }
2249 
2250  inline
2253  {
2255  }
2256 
2257  inline
2260  {
2262  }
2263 
2264  inline
2267  {
2269  }
2270 
2271  inline
2274  {
2276  }
2277 
2278  inline
2281  {
2283  }
2284 
2285  inline
2288  {
2290  }
2291 
2292  inline
2295  {
2297  }
2298 
2299  inline
2302  {
2304  }
2305 
2306  inline
2309  {
2311  }
2312 
2313  inline
2316  {
2318  }
2319 
2320  inline
2323  {
2325  }
2326 
2327  inline
2330  {
2332  }
2333 
2334  inline
2337  {
2339  }
2340 
2341  inline
2344  {
2345  return symbol_type (token::TOKEN_TYPE, YY_MOVE (l));
2346  }
2347 
2348  inline
2351  {
2353  }
2354 
2355  inline
2358  {
2359  return symbol_type (token::TOKEN_MYSQL, YY_MOVE (l));
2360  }
2361 
2362  inline
2365  {
2367  }
2368 
2369  inline
2372  {
2373  return symbol_type (token::TOKEN_CQL, YY_MOVE (l));
2374  }
2375 
2376  inline
2379  {
2380  return symbol_type (token::TOKEN_USER, YY_MOVE (l));
2381  }
2382 
2383  inline
2386  {
2388  }
2389 
2390  inline
2393  {
2394  return symbol_type (token::TOKEN_HOST, YY_MOVE (l));
2395  }
2396 
2397  inline
2400  {
2401  return symbol_type (token::TOKEN_PORT, YY_MOVE (l));
2402  }
2403 
2404  inline
2407  {
2409  }
2410 
2411  inline
2414  {
2416  }
2417 
2418  inline
2421  {
2423  }
2424 
2425  inline
2428  {
2430  }
2431 
2432  inline
2435  {
2437  }
2438 
2439  inline
2442  {
2444  }
2445 
2446  inline
2449  {
2451  }
2452 
2453  inline
2456  {
2458  }
2459 
2460  inline
2463  {
2465  }
2466 
2467  inline
2470  {
2472  }
2473 
2474  inline
2477  {
2479  }
2480 
2481  inline
2484  {
2486  }
2487 
2488  inline
2491  {
2493  }
2494 
2495  inline
2498  {
2500  }
2501 
2502  inline
2505  {
2507  }
2508 
2509  inline
2512  {
2514  }
2515 
2516  inline
2519  {
2521  }
2522 
2523  inline
2526  {
2528  }
2529 
2530  inline
2533  {
2535  }
2536 
2537  inline
2540  {
2542  }
2543 
2544  inline
2547  {
2549  }
2550 
2551  inline
2554  {
2556  }
2557 
2558  inline
2561  {
2562  return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
2563  }
2564 
2565  inline
2568  {
2569  return symbol_type (token::TOKEN_DATA, YY_MOVE (l));
2570  }
2571 
2572  inline
2575  {
2576  return symbol_type (token::TOKEN_CODE, YY_MOVE (l));
2577  }
2578 
2579  inline
2582  {
2583  return symbol_type (token::TOKEN_SPACE, YY_MOVE (l));
2584  }
2585 
2586  inline
2589  {
2591  }
2592 
2593  inline
2596  {
2598  }
2599 
2600  inline
2603  {
2605  }
2606 
2607  inline
2610  {
2612  }
2613 
2614  inline
2617  {
2618  return symbol_type (token::TOKEN_ARRAY, YY_MOVE (l));
2619  }
2620 
2621  inline
2624  {
2626  }
2627 
2628  inline
2631  {
2632  return symbol_type (token::TOKEN_POOLS, YY_MOVE (l));
2633  }
2634 
2635  inline
2638  {
2639  return symbol_type (token::TOKEN_POOL, YY_MOVE (l));
2640  }
2641 
2642  inline
2645  {
2647  }
2648 
2649  inline
2652  {
2654  }
2655 
2656  inline
2659  {
2660  return symbol_type (token::TOKEN_SUBNET, YY_MOVE (l));
2661  }
2662 
2663  inline
2666  {
2668  }
2669 
2670  inline
2673  {
2674  return symbol_type (token::TOKEN_ID, YY_MOVE (l));
2675  }
2676 
2677  inline
2680  {
2682  }
2683 
2684  inline
2687  {
2689  }
2690 
2691  inline
2694  {
2696  }
2697 
2698  inline
2701  {
2702  return symbol_type (token::TOKEN_GLOBAL, YY_MOVE (l));
2703  }
2704 
2705  inline
2708  {
2709  return symbol_type (token::TOKEN_ALL, YY_MOVE (l));
2710  }
2711 
2712  inline
2715  {
2717  }
2718 
2719  inline
2722  {
2724  }
2725 
2726  inline
2729  {
2731  }
2732 
2733  inline
2736  {
2737  return symbol_type (token::TOKEN_TEST, YY_MOVE (l));
2738  }
2739 
2740  inline
2743  {
2745  }
2746 
2747  inline
2750  {
2752  }
2753 
2754  inline
2757  {
2759  }
2760 
2761  inline
2764  {
2765  return symbol_type (token::TOKEN_DUID, YY_MOVE (l));
2766  }
2767 
2768  inline
2771  {
2773  }
2774 
2775  inline
2778  {
2780  }
2781 
2782  inline
2785  {
2787  }
2788 
2789  inline
2792  {
2794  }
2795 
2796  inline
2799  {
2801  }
2802 
2803  inline
2806  {
2807  return symbol_type (token::TOKEN_RELAY, YY_MOVE (l));
2808  }
2809 
2810  inline
2813  {
2815  }
2816 
2817  inline
2820  {
2822  }
2823 
2824  inline
2827  {
2829  }
2830 
2831  inline
2834  {
2836  }
2837 
2838  inline
2841  {
2843  }
2844 
2845  inline
2848  {
2850  }
2851 
2852  inline
2855  {
2857  }
2858 
2859  inline
2862  {
2864  }
2865 
2866  inline
2869  {
2871  }
2872 
2873  inline
2876  {
2878  }
2879 
2880  inline
2883  {
2885  }
2886 
2887  inline
2890  {
2892  }
2893 
2894  inline
2897  {
2899  }
2900 
2901  inline
2904  {
2906  }
2907 
2908  inline
2911  {
2913  }
2914 
2915  inline
2918  {
2920  }
2921 
2922  inline
2925  {
2927  }
2928 
2929  inline
2932  {
2934  }
2935 
2936  inline
2939  {
2941  }
2942 
2943  inline
2946  {
2948  }
2949 
2950  inline
2953  {
2955  }
2956 
2957  inline
2960  {
2962  }
2963 
2964  inline
2967  {
2969  }
2970 
2971  inline
2974  {
2976  }
2977 
2978  inline
2981  {
2983  }
2984 
2985  inline
2988  {
2990  }
2991 
2992  inline
2995  {
2997  }
2998 
2999  inline
3002  {
3004  }
3005 
3006  inline
3009  {
3011  }
3012 
3013  inline
3016  {
3018  }
3019 
3020  inline
3023  {
3025  }
3026 
3027  inline
3030  {
3031  return symbol_type (token::TOKEN_TCP, YY_MOVE (l));
3032  }
3033 
3034  inline
3037  {
3038  return symbol_type (token::TOKEN_JSON, YY_MOVE (l));
3039  }
3040 
3041  inline
3044  {
3046  }
3047 
3048  inline
3051  {
3052  return symbol_type (token::TOKEN_NEVER, YY_MOVE (l));
3053  }
3054 
3055  inline
3058  {
3059  return symbol_type (token::TOKEN_ALWAYS, YY_MOVE (l));
3060  }
3061 
3062  inline
3065  {
3067  }
3068 
3069  inline
3072  {
3074  }
3075 
3076  inline
3079  {
3081  }
3082 
3083  inline
3086  {
3088  }
3089 
3090  inline
3093  {
3095  }
3096 
3097  inline
3100  {
3102  }
3103 
3104  inline
3107  {
3108  return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
3109  }
3110 
3111  inline
3114  {
3116  }
3117 
3118  inline
3121  {
3123  }
3124 
3125  inline
3128  {
3129  return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
3130  }
3131 
3132  inline
3135  {
3137  }
3138 
3139  inline
3142  {
3143  return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
3144  }
3145 
3146  inline
3149  {
3150  return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l));
3151  }
3152 
3153  inline
3156  {
3158  }
3159 
3160  inline
3163  {
3165  }
3166 
3167  inline
3170  {
3172  }
3173 
3174  inline
3177  {
3179  }
3180 
3181  inline
3184  {
3186  }
3187 
3188  inline
3191  {
3193  }
3194 
3195  inline
3198  {
3200  }
3201 
3202  inline
3205  {
3207  }
3208 
3209  inline
3212  {
3214  }
3215 
3216  inline
3219  {
3221  }
3222 
3223  inline
3226  {
3228  }
3229 
3230  inline
3233  {
3235  }
3236 
3237  inline
3240  {
3242  }
3243 
3244  inline
3247  {
3249  }
3250 
3251  inline
3254  {
3256  }
3257 
3258  inline
3261  {
3263  }
3264 
3265  inline
3268  {
3269  return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
3270  }
3271 
3272  inline
3275  {
3276  return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
3277  }
3278 
3279  inline
3282  {
3283  return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
3284  }
3285 
3286  inline
3289  {
3290  return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
3291  }
3292 
3293 
3294 #line 14 "dhcp4_parser.yy" // lalr1.cc:404
3295 } } // isc::dhcp
3296 #line 3297 "dhcp4_parser.h" // lalr1.cc:404
3297 
3298 
3299 
3300 
3301 #endif // !YY_PARSER4_DHCP4_PARSER_H_INCLUDED
token_type token() const
The token.
static symbol_type make_NCR_PROTOCOL(YY_COPY(location_type) l)
variant(YY_RVREF(T) t)
Construct and fill.
Definition: dhcp4_parser.h:309
static symbol_type make_RECONNECT_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_SENDER_IP(YY_COPY(location_type) l)
static symbol_type make_RELAY(YY_COPY(location_type) l)
static symbol_type make_STRING(YY_COPY(std::string) v, YY_COPY(location_type) l)
static symbol_type make_LSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_ALWAYS_SEND(YY_COPY(location_type) l)
static symbol_type make_DHCP_QUEUE_CONTROL(YY_COPY(location_type) l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(YY_COPY(location_type) l)
static symbol_type make_LOGGING(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASES(YY_COPY(location_type) l)
void destroy()
Destroy the stored T.
Definition: dhcp4_parser.h:452
static symbol_type make_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_MEMFILE(YY_COPY(location_type) l)
T & emplace()
Instantiate an empty T in here.
Definition: dhcp4_parser.h:325
static symbol_type make_HOSTS_DATABASE(YY_COPY(location_type) l)
static symbol_type make_REQUIRE_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_CONNECT_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_REPLACE_CLIENT_NAME(YY_COPY(location_type) l)
int debug_level_type
Type for debugging levels.
Definition: dhcp4_parser.h:860
static symbol_type make_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESSES(YY_COPY(location_type) l)
static symbol_type make_SUB_SUBNET4(YY_COPY(location_type) l)
token::yytokentype token_type
(External) token type, as returned by yylex.
Definition: dhcp4_parser.h:716
static symbol_type make_OVERRIDE_CLIENT_UPDATE(YY_COPY(location_type) l)
static symbol_type make_JSON(YY_COPY(location_type) l)
static symbol_type make_SUB_HOOKS_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_USER(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_LEASE_CHECKS(YY_COPY(location_type) l)
int symbol_number_type
Symbol type: an internal symbol number.
Definition: dhcp4_parser.h:719
Evaluation context, an interface to the expression evaluation.
~variant()
Destruction, allowed only if empty.
Definition: dhcp4_parser.h:317
static symbol_type make_ENABLE_UPDATES(YY_COPY(location_type) l)
static symbol_type make_RAW(YY_COPY(location_type) l)
static symbol_type make_ALL(YY_COPY(location_type) l)
static symbol_type make_SERVER_PORT(YY_COPY(location_type) l)
static symbol_type make_PERSIST(YY_COPY(location_type) l)
static symbol_type make_RSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_GLOBAL(YY_COPY(location_type) l)
static symbol_type make_OUT_OF_POOL(YY_COPY(location_type) l)
S::reverse_iterator iterator
Definition: dhcp4_parser.h:175
An auxiliary type to compute the largest semantic type.
Definition: dhcp4_parser.h:500
static symbol_type make_DEBUGLEVEL(YY_COPY(location_type) l)
const_iterator end() const
Definition: dhcp4_parser.h:255
A char[S] buffer to store and retrieve objects.
Definition: dhcp4_parser.h:296
static symbol_type make_SENDER_PORT(YY_COPY(location_type) l)
static symbol_type make_DHCP_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_RENEW_TIMER(YY_COPY(location_type) l)
static symbol_type make_SUB_RESERVATION(YY_COPY(location_type) l)
A stack with random access from its top.
Definition: dhcp4_parser.h:171
static symbol_type make_CODE(YY_COPY(location_type) l)
static symbol_type make_COMMA(YY_COPY(location_type) l)
static symbol_type make_COMMENT(YY_COPY(location_type) l)
boost::shared_ptr< Element > ElementPtr
Definition: data.h:20
static symbol_type make_SUBNET_4O6_SUBNET(YY_COPY(location_type) l)
T & build(const T &t)
Instantiate a T in here from t.
Definition: dhcp4_parser.h:370
#define YY_MOVE
Definition: dhcp4_parser.h:82
static symbol_type make_INTERFACES_CONFIG(YY_COPY(location_type) l)
static symbol_type make_ARRAY(YY_COPY(location_type) l)
void move(self_type &other)
Move the content of other to this.
Definition: dhcp4_parser.h:419
static symbol_type make_ENCAPSULATE(YY_COPY(location_type) l)
static symbol_type make_SHARED_NETWORKS(YY_COPY(location_type) l)
static symbol_type make_POSTGRESQL(YY_COPY(location_type) l)
static symbol_type make_EXPIRED_LEASES_PROCESSING(YY_COPY(location_type) l)
static symbol_type make_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_USE_ROUTING(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_TIME(YY_COPY(location_type) l)
static symbol_type make_KEYSPACE(YY_COPY(location_type) l)
static symbol_type make_PASSWORD(YY_COPY(location_type) l)
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
Definition: dhcp4_parser.h:725
static symbol_type make_LEASE_DATABASE(YY_COPY(location_type) l)
static symbol_type make_CONTROL_SOCKET(YY_COPY(location_type) l)
void copy(const self_type &other)
Copy the content of other to this.
Definition: dhcp4_parser.h:444
static symbol_type make_MYSQL(YY_COPY(location_type) l)
static symbol_type make_ALWAYS(YY_COPY(location_type) l)
static symbol_type make_WHEN_PRESENT(YY_COPY(location_type) l)
static symbol_type make_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_ECHO_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_DHCP6(YY_COPY(location_type) l)
static symbol_type make_CONTACT_POINTS(YY_COPY(location_type) l)
static symbol_type make_TCP_KEEPALIVE(YY_COPY(location_type) l)
static symbol_type make_TCP(YY_COPY(location_type) l)
static symbol_type make_SUB_LOGGING(YY_COPY(location_type) l)
static symbol_type make_SERVER_IP(YY_COPY(location_type) l)
static symbol_type make_UDP(YY_COPY(location_type) l)
void push(YY_MOVE_REF(T) t)
Steal the contents of t.
Definition: dhcp4_parser.h:223
slice(const S &stack, int range)
Definition: dhcp4_parser.h:272
static symbol_type make_HOOKS_LIBRARIES(YY_COPY(location_type) l)
static symbol_type make_DECLINE_PROBATION_PERIOD(YY_COPY(location_type) l)
static symbol_type make_SANITY_CHECKS(YY_COPY(location_type) l)
static symbol_type make_PORT(YY_COPY(location_type) l)
void clear()
Record that this symbol is empty.
static symbol_type make_SUB_DHCP4(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(YY_COPY(location_type) l)
static symbol_type make_NEVER(YY_COPY(location_type) l)
static symbol_type make_END(YY_COPY(location_type) l)
static symbol_type make_RESERVATION_MODE(YY_COPY(location_type) l)
static symbol_type make_CONFIG_DATABASES(YY_COPY(location_type) l)
static symbol_type make_NCR_FORMAT(YY_COPY(location_type) l)
syntax_error(const location_type &l, const std::string &m)
static symbol_type make_RESERVATIONS(YY_COPY(location_type) l)
static symbol_type make_VALID_LIFETIME(YY_COPY(location_type) l)
static symbol_type make_MAXVER(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_INTERFACE_ID(YY_COPY(location_type) l)
static symbol_type make_SOCKET_NAME(YY_COPY(location_type) l)
static symbol_type make_DHCP4(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASS(YY_COPY(location_type) l)
static symbol_type make_DUID(YY_COPY(location_type) l)
static symbol_type make_SUB_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_SUBNET4(YY_COPY(location_type) l)
static symbol_type make_SAME_AS_INBOUND(YY_COPY(location_type) l)
static symbol_type make_GENERATED_PREFIX(YY_COPY(location_type) l)
variant()
Empty construction.
Definition: dhcp4_parser.h:302
static symbol_type make_HOST(YY_COPY(location_type) l)
static symbol_type make_SUB_INTERFACES4(YY_COPY(location_type) l)
variant< S > self_type
Type of *this.
Definition: dhcp4_parser.h:299
void move(by_type &that)
Steal the symbol type from that.
long double yyalign_me
Strongest alignment constraints.
Definition: dhcp4_parser.h:484
static symbol_type make_OUTPUT(YY_COPY(location_type) l)
T & as()
Accessor to a built T.
Definition: dhcp4_parser.h:378
static symbol_type make_RECORD_TYPES(YY_COPY(location_type) l)
static symbol_type make_BOOT_FILE_NAME(YY_COPY(location_type) l)
static symbol_type make_HOLD_RECLAIMED_TIME(YY_COPY(location_type) l)
static symbol_type make_TYPE(YY_COPY(location_type) l)
S::const_reverse_iterator const_iterator
Definition: dhcp4_parser.h:176
static symbol_type make_USER_CONTEXT(YY_COPY(location_type) l)
static symbol_type make_LIBRARY(YY_COPY(location_type) l)
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
Definition: dhcp4_parser.h:839
#define YY_RVREF(Type)
Definition: dhcp4_parser.h:85
static symbol_type make_OUTBOUND_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_ID(YY_COPY(location_type) l)
const T & as() const
Const accessor to a built T (for printer).
Definition: dhcp4_parser.h:389
static symbol_type make_MAX_RECLAIM_LEASES(YY_COPY(location_type) l)
Present a slice of the top of a stack.
Definition: dhcp4_parser.h:269
static symbol_type make_SERVER_TAG(YY_COPY(location_type) l)
static symbol_type make_INTEGER(YY_COPY(int64_t) v, YY_COPY(location_type) l)
static symbol_type make_DHCP4O6_PORT(YY_COPY(location_type) l)
static symbol_type make_RE_DETECT(YY_COPY(location_type) l)
static symbol_type make_REBIND_TIMER(YY_COPY(location_type) l)
Defines the logger used by the top-level component of kea-dhcp-ddns.
static symbol_type make_MAX_RECONNECT_TRIES(YY_COPY(location_type) l)
static symbol_type make_READONLY(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_AUTHORITATIVE(YY_COPY(location_type) l)
by_type()
Default constructor.
#define YY_MOVE_REF(Type)
Definition: dhcp4_parser.h:84
static symbol_type make_MATCH_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_FLUSH(YY_COPY(location_type) l)
A Bison parser.
Definition: dhcp4_parser.h:495
#define YYASSERT
Definition: dhcp4_parser.h:92
static symbol_type make_LFC_INTERVAL(YY_COPY(location_type) l)
static symbol_type make_MAXSIZE(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_DATA(YY_COPY(location_type) l)
Syntax errors thrown from user actions.
Definition: dhcp4_parser.h:534
static symbol_type make_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_CIRCUIT_ID(YY_COPY(location_type) l)
semantic_type value
The semantic value.
Definition: dhcp4_parser.h:792
static symbol_type make_QUALIFYING_SUFFIX(YY_COPY(location_type) l)
T & emplace(const T &t)
Instantiate a T in here from t.
Definition: dhcp4_parser.h:348
static symbol_type make_SUBNET(YY_COPY(location_type) l)
static symbol_type make_NAME(YY_COPY(location_type) l)
static symbol_type make_CSV_FORMAT(YY_COPY(location_type) l)
static symbol_type make_PARAMETERS(YY_COPY(location_type) l)
static symbol_type make_DISABLED(YY_COPY(location_type) l)
S::size_type size_type
Definition: dhcp4_parser.h:177
static symbol_type make_NULL_TYPE(YY_COPY(location_type) l)
static symbol_type make_DHCPDDNS(YY_COPY(location_type) l)
static symbol_type make_FLOAT(YY_COPY(double) v, YY_COPY(location_type) l)
static symbol_type make_INTERFACES(YY_COPY(location_type) l)
static symbol_type make_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_MAX_QUEUE_SIZE(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_ONLY_IF_REQUIRED(YY_COPY(location_type) l)
#define YY_ATTRIBUTE_PURE
Definition: dhcp4_parser.h:107
Forward declaration of the ParserContext class.
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_JSON(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_NO_UPDATE(YY_COPY(location_type) l)
static symbol_type make_COLON(YY_COPY(location_type) l)
Type access provider for token (enum) based symbols.
Definition: dhcp4_parser.h:805
T & build()
Instantiate an empty T in here.
Definition: dhcp4_parser.h:361
static symbol_type make_SUB_POOL4(YY_COPY(location_type) l)
static symbol_type make_TEST(YY_COPY(location_type) l)
size_type size() const
Definition: dhcp4_parser.h:243
location location_type
Symbol locations.
Definition: dhcp4_parser.h:531
static symbol_type make_IP_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_SERVER_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_FLEX_ID(YY_COPY(location_type) l)
static symbol_type make_OUTPUT_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_CONTROL_AGENT(YY_COPY(location_type) l)
basic_symbol()
Default constructor.
static symbol_type make_LOGGERS(YY_COPY(location_type) l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_REQUEST_TIMEOUT(YY_COPY(location_type) l)
void swap(self_type &other)
Swap the content with other, of same type.
Definition: dhcp4_parser.h:407
static symbol_type make_HW_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_SET(YY_COPY(location_type) l)
void pop(int n=1)
Definition: dhcp4_parser.h:230
#define YY_COPY(Type)
Definition: dhcp4_parser.h:86
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
static symbol_type make_DHCP_DDNS(YY_COPY(location_type) l)
location_type location
The location.
Definition: dhcp4_parser.h:795
static symbol_type make_LCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_WHEN_NOT_PRESENT(YY_COPY(location_type) l)
static symbol_type make_POOLS(YY_COPY(location_type) l)
stack(size_type n=200)
Definition: dhcp4_parser.h:179
static symbol_type make_POOL(YY_COPY(location_type) l)
static symbol_type make_BOOLEAN(YY_COPY(bool) v, YY_COPY(location_type) l)
static symbol_type make_CQL(YY_COPY(location_type) l)
const_iterator begin() const
Definition: dhcp4_parser.h:249
static symbol_type make_NEXT_SERVER(YY_COPY(location_type) l)
static symbol_type make_SPACE(YY_COPY(location_type) l)
static symbol_type make_SEVERITY(YY_COPY(location_type) l)
static symbol_type make_RCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_TCP_NODELAY(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEFS(YY_COPY(location_type) l)
token_type kind_type
The symbol type as needed by the constructor.
Definition: dhcp4_parser.h:814
static symbol_type make_TOPLEVEL_DHCP4(YY_COPY(location_type) l)