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
55using namespace isc::dhcp;
56using namespace isc::data;
57using 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
166namespace 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&
188 {
189 return seq_[size () - 1 - i];
190 }
191
195 T&
197 {
198 return operator[] (size_type (i));
199 }
200
204 const T&
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
238 {
239 seq_.clear ();
240 }
241
243 size () const
244 {
245 return seq_.size ();
246 }
247
249 begin () const
250 {
251 return seq_.rbegin ();
252 }
253
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
335 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
346 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&
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
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
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
432 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
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
527#else
528 typedef PARSER4_STYPE semantic_type;
529#endif
531 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 {
623 TOKEN_ID = 335,
711 TOKEN_BOOLEAN = 423
712 };
713 };
714
717
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
800 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
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
855 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
879
880 static
883
884 static
887
888 static
891
892 static
895
896 static
899
900 static
903
904 static
907
908 static
911
912 static
915
916 static
919
920 static
923
924 static
927
928 static
931
932 static
935
936 static
939
940 static
943
944 static
947
948 static
951
952 static
955
956 static
959
960 static
963
964 static
967
968 static
971
972 static
975
976 static
979
980 static
983
984 static
987
988 static
991
992 static
995
996 static
999
1000 static
1003
1004 static
1007
1008 static
1011
1012 static
1015
1016 static
1019
1020 static
1023
1024 static
1027
1028 static
1031
1032 static
1035
1036 static
1039
1040 static
1043
1044 static
1047
1048 static
1051
1052 static
1055
1056 static
1059
1060 static
1063
1064 static
1067
1068 static
1071
1072 static
1075
1076 static
1079
1080 static
1083
1084 static
1087
1088 static
1091
1092 static
1095
1096 static
1099
1100 static
1103
1104 static
1107
1108 static
1111
1112 static
1115
1116 static
1119
1120 static
1123
1124 static
1127
1128 static
1131
1132 static
1135
1136 static
1139
1140 static
1143
1144 static
1147
1148 static
1151
1152 static
1155
1156 static
1159
1160 static
1163
1164 static
1167
1168 static
1171
1172 static
1175
1176 static
1179
1180 static
1183
1184 static
1187
1188 static
1191
1192 static
1195
1196 static
1199
1200 static
1203
1204 static
1207
1208 static
1211
1212 static
1215
1216 static
1219
1220 static
1223
1224 static
1227
1228 static
1231
1232 static
1235
1236 static
1239
1240 static
1243
1244 static
1247
1248 static
1251
1252 static
1255
1256 static
1259
1260 static
1263
1264 static
1267
1268 static
1271
1272 static
1275
1276 static
1279
1280 static
1283
1284 static
1287
1288 static
1291
1292 static
1295
1296 static
1299
1300 static
1303
1304 static
1307
1308 static
1311
1312 static
1315
1316 static
1319
1320 static
1323
1324 static
1327
1328 static
1331
1332 static
1335
1336 static
1339
1340 static
1343
1344 static
1347
1348 static
1351
1352 static
1355
1356 static
1359
1360 static
1363
1364 static
1367
1368 static
1371
1372 static
1375
1376 static
1379
1380 static
1383
1384 static
1387
1388 static
1391
1392 static
1395
1396 static
1399
1400 static
1403
1404 static
1407
1408 static
1411
1412 static
1415
1416 static
1419
1420 static
1423
1424 static
1427
1428 static
1431
1432 static
1435
1436 static
1439
1440 static
1443
1444 static
1447
1448 static
1451
1452 static
1455
1456 static
1459
1460 static
1463
1464 static
1467
1468 static
1471
1472 static
1475
1476 static
1479
1480 static
1483
1484 static
1487
1488 static
1491
1492 static
1495
1496 static
1499
1500 static
1503
1504 static
1507
1508 static
1511
1512 static
1515
1516 static
1519
1520 static
1523
1524 static
1527
1528 static
1530 make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
1531
1532 static
1534 make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
1535
1536 static
1538 make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
1539
1540 static
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
1694 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>
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
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 {
2136 }
2137
2138 inline
2141 {
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 {
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 {
2346 }
2347
2348 inline
2351 {
2353 }
2354
2355 inline
2358 {
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 {
2381 }
2382
2383 inline
2386 {
2388 }
2389
2390 inline
2393 {
2395 }
2396
2397 inline
2400 {
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 {
2563 }
2564
2565 inline
2568 {
2570 }
2571
2572 inline
2575 {
2577 }
2578
2579 inline
2582 {
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 {
2619 }
2620
2621 inline
2624 {
2626 }
2627
2628 inline
2631 {
2633 }
2634
2635 inline
2638 {
2640 }
2641
2642 inline
2645 {
2647 }
2648
2649 inline
2652 {
2654 }
2655
2656 inline
2659 {
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 {
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 {
2738 }
2739
2740 inline
2743 {
2745 }
2746
2747 inline
2750 {
2752 }
2753
2754 inline
2757 {
2759 }
2760
2761 inline
2764 {
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 {
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 {
3039 }
3040
3041 inline
3044 {
3046 }
3047
3048 inline
3051 {
3053 }
3054
3055 inline
3058 {
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 {
3109 }
3110
3111 inline
3114 {
3116 }
3117
3118 inline
3121 {
3123 }
3124
3125 inline
3128 {
3130 }
3131
3132 inline
3135 {
3137 }
3138
3139 inline
3142 {
3144 }
3145
3146 inline
3149 {
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 {
3270 }
3271
3272 inline
3275 {
3277 }
3278
3279 inline
3282 {
3283 return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
3284 }
3285
3286 inline
3289 {
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
#define YY_RVREF(Type)
Definition: agent_parser.h:84
#define YY_COPY(Type)
Definition: agent_parser.h:85
#define YY_MOVE_REF(Type)
Definition: agent_parser.h:83
#define YY_ATTRIBUTE_PURE
Definition: agent_parser.h:106
#define YY_MOVE
Definition: agent_parser.h:81
#define YYASSERT
Definition: agent_parser.h:91
A Bison parser.
Definition: dhcp4_parser.h:496
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
Definition: dhcp4_parser.h:839
static symbol_type make_SUB_OPTION_DEFS(YY_COPY(location_type) l)
static symbol_type make_MAX_QUEUE_SIZE(YY_COPY(location_type) l)
static symbol_type make_COMMA(YY_COPY(location_type) l)
static symbol_type make_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_DATA(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_LEASES(YY_COPY(location_type) l)
static symbol_type make_ALWAYS(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_END(YY_COPY(location_type) l)
static symbol_type make_RENEW_TIMER(YY_COPY(location_type) l)
static symbol_type make_SERVER_TAG(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_CONTACT_POINTS(YY_COPY(location_type) l)
static symbol_type make_USER_CONTEXT(YY_COPY(location_type) l)
static symbol_type make_INTEGER(YY_COPY(int64_t) v, YY_COPY(location_type) l)
static symbol_type make_FLEX_ID(YY_COPY(location_type) l)
static symbol_type make_ID(YY_COPY(location_type) l)
static symbol_type make_RESERVATIONS(YY_COPY(location_type) l)
static symbol_type make_DISABLED(YY_COPY(location_type) l)
static symbol_type make_LOGGERS(YY_COPY(location_type) l)
static symbol_type make_PORT(YY_COPY(location_type) l)
int symbol_number_type
Symbol type: an internal symbol number.
Definition: dhcp4_parser.h:719
static symbol_type make_MAXVER(YY_COPY(location_type) l)
static symbol_type make_LFC_INTERVAL(YY_COPY(location_type) l)
static symbol_type make_LCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_DHCP_QUEUE_CONTROL(YY_COPY(location_type) l)
static symbol_type make_GLOBAL(YY_COPY(location_type) l)
static symbol_type make_RCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_SERVER_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_DHCP4(YY_COPY(location_type) l)
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
static symbol_type make_SPACE(YY_COPY(location_type) l)
static symbol_type make_MAXSIZE(YY_COPY(location_type) l)
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_NULL_TYPE(YY_COPY(location_type) l)
static symbol_type make_PARAMETERS(YY_COPY(location_type) l)
static symbol_type make_POSTGRESQL(YY_COPY(location_type) l)
virtual int parse()
Parse.
static symbol_type make_USE_ROUTING(YY_COPY(location_type) l)
static symbol_type make_TCP_KEEPALIVE(YY_COPY(location_type) l)
static symbol_type make_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_HOLD_RECLAIMED_TIME(YY_COPY(location_type) l)
static symbol_type make_ECHO_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_RESERVATION_MODE(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_NO_UPDATE(YY_COPY(location_type) l)
static symbol_type make_PERSIST(YY_COPY(location_type) l)
static symbol_type make_REPLACE_CLIENT_NAME(YY_COPY(location_type) l)
static symbol_type make_BOOT_FILE_NAME(YY_COPY(location_type) l)
static symbol_type make_MYSQL(YY_COPY(location_type) l)
static symbol_type make_CONNECT_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_USER(YY_COPY(location_type) l)
static symbol_type make_JSON(YY_COPY(location_type) l)
static symbol_type make_CODE(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_SUB_INTERFACES4(YY_COPY(location_type) l)
static symbol_type make_POOL(YY_COPY(location_type) l)
static symbol_type make_TCP(YY_COPY(location_type) l)
static symbol_type make_SERVER_IP(YY_COPY(location_type) l)
static symbol_type make_OUTBOUND_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_SUBNET4(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASES(YY_COPY(location_type) l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(YY_COPY(location_type) l)
static symbol_type make_REQUEST_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_ALWAYS_SEND(YY_COPY(location_type) l)
static symbol_type make_DHCP4(YY_COPY(location_type) l)
static symbol_type make_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_EXPIRED_LEASES_PROCESSING(YY_COPY(location_type) l)
static symbol_type make_NAME(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESSES(YY_COPY(location_type) l)
static symbol_type make_SUB_LOGGING(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP4(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASS(YY_COPY(location_type) l)
static symbol_type make_KEYSPACE(YY_COPY(location_type) l)
static symbol_type make_MAX_RECONNECT_TRIES(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(YY_COPY(location_type) l)
static symbol_type make_DHCP_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_DECLINE_PROBATION_PERIOD(YY_COPY(location_type) l)
static symbol_type make_INTERFACES(YY_COPY(location_type) l)
static symbol_type make_HW_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_SUB_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_INTERFACES_CONFIG(YY_COPY(location_type) l)
static symbol_type make_TEST(YY_COPY(location_type) l)
static symbol_type make_OUTPUT(YY_COPY(location_type) l)
static symbol_type make_REQUIRE_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_RECONNECT_WAIT_TIME(YY_COPY(location_type) l)
location location_type
Symbol locations.
Definition: dhcp4_parser.h:531
static symbol_type make_AUTHORITATIVE(YY_COPY(location_type) l)
static symbol_type make_NCR_PROTOCOL(YY_COPY(location_type) l)
static symbol_type make_FLUSH(YY_COPY(location_type) l)
static symbol_type make_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_MATCH_CLIENT_ID(YY_COPY(location_type) l)
static symbol_type make_FLOAT(YY_COPY(double) v, YY_COPY(location_type) l)
static symbol_type make_LOGGING(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_CLIENT_UPDATE(YY_COPY(location_type) l)
static symbol_type make_SEVERITY(YY_COPY(location_type) l)
static symbol_type make_CQL(YY_COPY(location_type) l)
static symbol_type make_QUALIFYING_SUFFIX(YY_COPY(location_type) l)
static symbol_type make_GENERATED_PREFIX(YY_COPY(location_type) l)
static symbol_type make_RECORD_TYPES(YY_COPY(location_type) l)
static symbol_type make_HOST(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_SET(YY_COPY(location_type) l)
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_OUT_OF_POOL(YY_COPY(location_type) l)
static symbol_type make_SUB_HOOKS_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_DHCPDDNS(YY_COPY(location_type) l)
static symbol_type make_BOOLEAN(YY_COPY(bool) v, YY_COPY(location_type) l)
static symbol_type make_DUID(YY_COPY(location_type) l)
static symbol_type make_SUBNET(YY_COPY(location_type) l)
static symbol_type make_SOCKET_NAME(YY_COPY(location_type) l)
static symbol_type make_CONFIG_DATABASES(YY_COPY(location_type) l)
static symbol_type make_STRING(YY_COPY(std::string) v, YY_COPY(location_type) l)
static symbol_type make_RELAY(YY_COPY(location_type) l)
static symbol_type make_LEASE_DATABASE(YY_COPY(location_type) l)
static symbol_type make_UDP(YY_COPY(location_type) l)
static symbol_type make_NEVER(YY_COPY(location_type) l)
static symbol_type make_READONLY(YY_COPY(location_type) l)
static symbol_type make_SANITY_CHECKS(YY_COPY(location_type) l)
static symbol_type make_RSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_LEASE_CHECKS(YY_COPY(location_type) l)
static symbol_type make_CSV_FORMAT(YY_COPY(location_type) l)
static symbol_type make_VALID_LIFETIME(YY_COPY(location_type) l)
static symbol_type make_SHARED_NETWORKS(YY_COPY(location_type) l)
static symbol_type make_NEXT_SERVER(YY_COPY(location_type) l)
static symbol_type make_ARRAY(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_WHEN_PRESENT(YY_COPY(location_type) l)
static symbol_type make_ENABLE_UPDATES(YY_COPY(location_type) l)
static symbol_type make_DHCP6(YY_COPY(location_type) l)
static symbol_type make_CONTROL_SOCKET(YY_COPY(location_type) l)
static symbol_type make_REBIND_TIMER(YY_COPY(location_type) l)
static symbol_type make_DEBUGLEVEL(YY_COPY(location_type) l)
static symbol_type make_COMMENT(YY_COPY(location_type) l)
static symbol_type make_NCR_FORMAT(YY_COPY(location_type) l)
static symbol_type make_TCP_NODELAY(YY_COPY(location_type) l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_DHCP4O6_PORT(YY_COPY(location_type) l)
static symbol_type make_LSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_SAME_AS_INBOUND(YY_COPY(location_type) l)
static symbol_type make_POOLS(YY_COPY(location_type) l)
static symbol_type make_HOOKS_LIBRARIES(YY_COPY(location_type) l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_TIME(YY_COPY(location_type) l)
static symbol_type make_CIRCUIT_ID(YY_COPY(location_type) l)
static symbol_type make_SUB_RESERVATION(YY_COPY(location_type) l)
static symbol_type make_SUB_POOL4(YY_COPY(location_type) l)
static symbol_type make_WHEN_NOT_PRESENT(YY_COPY(location_type) l)
static symbol_type make_TYPE(YY_COPY(location_type) l)
static symbol_type make_COLON(YY_COPY(location_type) l)
static symbol_type make_SENDER_IP(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_SUBNET(YY_COPY(location_type) l)
static symbol_type make_PASSWORD(YY_COPY(location_type) l)
variant< sizeof(union_type)> semantic_type
Symbol semantic values.
Definition: dhcp4_parser.h:526
static symbol_type make_SENDER_PORT(YY_COPY(location_type) l)
static symbol_type make_ONLY_IF_REQUIRED(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_JSON(YY_COPY(location_type) l)
static symbol_type make_SERVER_PORT(YY_COPY(location_type) l)
static symbol_type make_OUTPUT_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_SUBNET_4O6_INTERFACE_ID(YY_COPY(location_type) l)
static symbol_type make_RE_DETECT(YY_COPY(location_type) l)
static symbol_type make_SUB_SUBNET4(YY_COPY(location_type) l)
static symbol_type make_CONTROL_AGENT(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEF(YY_COPY(location_type) l)
Evaluation context, an interface to the expression evaluation.
Present a slice of the top of a stack.
Definition: dhcp4_parser.h:270
const T & operator[](int i) const
Definition: dhcp4_parser.h:278
slice(const S &stack, int range)
Definition: dhcp4_parser.h:272
A stack with random access from its top.
Definition: dhcp4_parser.h:172
S::reverse_iterator iterator
Definition: dhcp4_parser.h:175
const_iterator begin() const
Definition: dhcp4_parser.h:249
T & operator[](size_type i)
Random access.
Definition: dhcp4_parser.h:187
S::const_reverse_iterator const_iterator
Definition: dhcp4_parser.h:176
S::size_type size_type
Definition: dhcp4_parser.h:177
size_type size() const
Definition: dhcp4_parser.h:243
const_iterator end() const
Definition: dhcp4_parser.h:255
stack(size_type n=200)
Definition: dhcp4_parser.h:179
void push(YY_MOVE_REF(T) t)
Steal the contents of t.
Definition: dhcp4_parser.h:223
void pop(int n=1)
Definition: dhcp4_parser.h:230
Forward declaration of the ParserContext class.
boost::shared_ptr< Element > ElementPtr
Definition: data.h:22
Defines the logger used by the top-level component of kea-dhcp-ddns.
location_type location
The location.
Definition: dhcp4_parser.h:795
void clear()
Destroy contents, and record that is empty.
bool empty() const
Whether empty.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
basic_symbol()
Default constructor.
semantic_type value
The semantic value.
Definition: dhcp4_parser.h:792
Type access provider for token (enum) based symbols.
Definition: dhcp4_parser.h:806
token_type kind_type
The symbol type as needed by the constructor.
Definition: dhcp4_parser.h:814
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
token_type token() const
The token.
void clear()
Record that this symbol is empty.
void move(by_type &that)
Steal the symbol type from that.
by_type()
Default constructor.
Syntax errors thrown from user actions.
Definition: dhcp4_parser.h:535
syntax_error(const location_type &l, const std::string &m)
A char[S] buffer to store and retrieve objects.
Definition: dhcp4_parser.h:297
variant(YY_RVREF(T) t)
Construct and fill.
Definition: dhcp4_parser.h:309
T & emplace()
Instantiate an empty T in here.
Definition: dhcp4_parser.h:325
long double yyalign_me
Strongest alignment constraints.
Definition: dhcp4_parser.h:484
variant()
Empty construction.
Definition: dhcp4_parser.h:302
variant< S > self_type
Type of *this.
Definition: dhcp4_parser.h:299
const T & as() const
Const accessor to a built T (for printer).
Definition: dhcp4_parser.h:389
void destroy()
Destroy the stored T.
Definition: dhcp4_parser.h:452
char yyraw[S]
A buffer large enough to store any of the semantic values.
Definition: dhcp4_parser.h:486
~variant()
Destruction, allowed only if empty.
Definition: dhcp4_parser.h:317
T & as()
Accessor to a built T.
Definition: dhcp4_parser.h:378
T & emplace(const T &t)
Instantiate a T in here from t.
Definition: dhcp4_parser.h:348
void copy(const self_type &other)
Copy the content of other to this.
Definition: dhcp4_parser.h:444
void swap(self_type &other)
Swap the content with other, of same type.
Definition: dhcp4_parser.h:407
void move(self_type &other)
Move the content of other to this.
Definition: dhcp4_parser.h:419
T & build()
Instantiate an empty T in here.
Definition: dhcp4_parser.h:361
T & build(const T &t)
Instantiate a T in here from t.
Definition: dhcp4_parser.h:370
An auxiliary type to compute the largest semantic type.
Definition: dhcp4_parser.h:501
char dummy4[sizeof(int64_t)]
Definition: dhcp4_parser.h:519
char dummy1[sizeof(ElementPtr)]
Definition: dhcp4_parser.h:510
char dummy5[sizeof(std::string)]
Definition: dhcp4_parser.h:522