Kea 1.5.0
dhcp6_parser.h
Go to the documentation of this file.
1// A Bison parser, made by GNU Bison 3.2.1.
2
3// Skeleton interface for Bison LALR(1) parsers in C++
4
5// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
6
7// This program is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License
18// along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20// As a special exception, you may create a larger work that contains
21// part or all of the Bison parser skeleton and distribute that work
22// under terms of your choice, so long as that work isn't itself a
23// parser generator using the skeleton or a modified version thereof
24// as a parser skeleton. Alternatively, if you modify or redistribute
25// the parser skeleton itself, you may (at your option) remove this
26// special exception, which will cause the skeleton and the resulting
27// Bison output files to be licensed under the GNU General Public
28// License without this special exception.
29
30// This special exception was added by the Free Software Foundation in
31// version 2.2 of Bison.
32
33
39// C++ LALR(1) parser skeleton written by Akim Demaille.
40
41// Undocumented macros, especially those whose name start with YY_,
42// are private implementation details. Do not rely on them.
43
44#ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
45# define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
46// // "%code requires" blocks.
47#line 17 "dhcp6_parser.yy" // lalr1.cc:404
48
49#include <string>
50#include <cc/data.h>
51#include <dhcp/option.h>
52#include <boost/lexical_cast.hpp>
54
55using namespace isc::dhcp;
56using namespace isc::data;
57using namespace std;
58
59#line 60 "dhcp6_parser.h" // lalr1.cc:404
60
61# include <cassert>
62# include <cstdlib> // std::abort
63# include <iostream>
64# include <stdexcept>
65# include <string>
66# include <vector>
67
68#if defined __cplusplus
69# define YY_CPLUSPLUS __cplusplus
70#else
71# define YY_CPLUSPLUS 199711L
72#endif
73
74// Support move semantics when possible.
75#if 201103L <= YY_CPLUSPLUS
76# define YY_MOVE std::move
77# define YY_MOVE_OR_COPY move
78# define YY_MOVE_REF(Type) Type&&
79# define YY_RVREF(Type) Type&&
80# define YY_COPY(Type) Type
81#else
82# define YY_MOVE
83# define YY_MOVE_OR_COPY copy
84# define YY_MOVE_REF(Type) Type&
85# define YY_RVREF(Type) const Type&
86# define YY_COPY(Type) const Type&
87#endif
88# include "location.hh"
89#include <typeinfo>
90#ifndef YYASSERT
91# include <cassert>
92# define YYASSERT assert
93#endif
94
95
96#ifndef YY_ATTRIBUTE
97# if (defined __GNUC__ \
98 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
99 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
100# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
101# else
102# define YY_ATTRIBUTE(Spec) /* empty */
103# endif
104#endif
105
106#ifndef YY_ATTRIBUTE_PURE
107# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
108#endif
109
110#ifndef YY_ATTRIBUTE_UNUSED
111# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
112#endif
113
114/* Suppress unused-variable warnings by "using" E. */
115#if ! defined lint || defined __GNUC__
116# define YYUSE(E) ((void) (E))
117#else
118# define YYUSE(E) /* empty */
119#endif
120
121#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
122/* Suppress an incorrect diagnostic about yylval being uninitialized. */
123# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
124 _Pragma ("GCC diagnostic push") \
125 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
126 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
127# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
128 _Pragma ("GCC diagnostic pop")
129#else
130# define YY_INITIAL_VALUE(Value) Value
131#endif
132#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
133# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
134# define YY_IGNORE_MAYBE_UNINITIALIZED_END
135#endif
136#ifndef YY_INITIAL_VALUE
137# define YY_INITIAL_VALUE(Value) /* Nothing. */
138#endif
139
140# ifndef YY_NULLPTR
141# if defined __cplusplus
142# if 201103L <= __cplusplus
143# define YY_NULLPTR nullptr
144# else
145# define YY_NULLPTR 0
146# endif
147# else
148# define YY_NULLPTR ((void*)0)
149# endif
150# endif
151
152/* Debug traces. */
153#ifndef PARSER6_DEBUG
154# if defined YYDEBUG
155#if YYDEBUG
156# define PARSER6_DEBUG 1
157# else
158# define PARSER6_DEBUG 0
159# endif
160# else /* ! defined YYDEBUG */
161# define PARSER6_DEBUG 1
162# endif /* ! defined YYDEBUG */
163#endif /* ! defined PARSER6_DEBUG */
164
165#line 14 "dhcp6_parser.yy" // lalr1.cc:404
166namespace isc { namespace dhcp {
167#line 168 "dhcp6_parser.h" // lalr1.cc:404
168
170 template <typename T, typename S = std::vector<T> >
171 class stack
172 {
173 public:
174 // Hide our reversed order.
175 typedef typename S::reverse_iterator iterator;
176 typedef typename S::const_reverse_iterator const_iterator;
177 typedef typename S::size_type size_type;
178
179 stack (size_type n = 200)
180 : seq_ (n)
181 {}
182
186 T&
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 PARSER6_STYPE
501 {
502 // value
503 // map_value
504 // db_type
505 // hr_mode
506 // duid_type
507 // ncr_protocol_value
508 // replace_client_name_value
509 char dummy1[sizeof (ElementPtr)];
510
511 // "boolean"
512 char dummy2[sizeof (bool)];
513
514 // "floating point"
515 char dummy3[sizeof (double)];
516
517 // "integer"
518 char dummy4[sizeof (int64_t)];
519
520 // "constant string"
521 char dummy5[sizeof (std::string)];
522};
523
526#else
527 typedef PARSER6_STYPE semantic_type;
528#endif
530 typedef location location_type;
531
533 struct syntax_error : std::runtime_error
534 {
535 syntax_error (const location_type& l, const std::string& m);
537 };
538
540 struct token
541 {
543 {
612 TOKEN_ID = 325,
651 TOKEN_EN = 364,
652 TOKEN_LL = 365,
715 TOKEN_BOOLEAN = 428
716 };
717 };
718
721
724
726 enum { empty_symbol = -2 };
727
729 typedef unsigned char token_number_type;
730
737 template <typename Base>
738 struct basic_symbol : Base
739 {
741 typedef Base super_type;
742
744 basic_symbol ();
745
748
749
751# if 201103L <= YY_CPLUSPLUS
752 basic_symbol (typename Base::kind_type t, location_type&& l);
753#else
754 basic_symbol (typename Base::kind_type t, const location_type& l);
755#endif
756# if 201103L <= YY_CPLUSPLUS
757 basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l);
758#else
759 basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l);
760#endif
761# if 201103L <= YY_CPLUSPLUS
762 basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l);
763#else
764 basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l);
765#endif
766# if 201103L <= YY_CPLUSPLUS
767 basic_symbol (typename Base::kind_type t, double&& v, location_type&& l);
768#else
769 basic_symbol (typename Base::kind_type t, const double& v, const location_type& l);
770#endif
771# if 201103L <= YY_CPLUSPLUS
772 basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l);
773#else
774 basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l);
775#endif
776# if 201103L <= YY_CPLUSPLUS
777 basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l);
778#else
779 basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l);
780#endif
781
782
784 ~basic_symbol ();
785
787 void clear ();
788
790 bool empty () const;
791
793 void move (basic_symbol& s);
794
797
800
801 private:
802#if YY_CPLUSPLUS < 201103L
804 basic_symbol& operator= (const basic_symbol& other);
805#endif
806 };
807
809 struct by_type
810 {
812 by_type ();
813
815 by_type (const by_type& other);
816
819
821 by_type (kind_type t);
822
824 void clear ();
825
827 void move (by_type& that);
828
832
834 token_type token () const;
835
839 int type;
840 };
841
844
847 virtual ~Dhcp6Parser ();
848
851 int operator() ();
852
855 virtual int parse ();
856
857#if PARSER6_DEBUG
859 std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
861 void set_debug_stream (std::ostream &);
862
864 typedef int debug_level_type;
866 debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
868 void set_debug_level (debug_level_type l);
869#endif
870
874 virtual void error (const location_type& loc, const std::string& msg);
875
877 void error (const syntax_error& err);
878
879 // Symbol constructors declarations.
880 static
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
1531
1532 static
1535
1536 static
1539
1540 static
1543
1544 static
1547
1548 static
1551
1552 static
1554 make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
1555
1556 static
1558 make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
1559
1560 static
1562 make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
1563
1564 static
1566 make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
1567
1568
1569
1570 private:
1572 Dhcp6Parser (const Dhcp6Parser&);
1573 Dhcp6Parser& operator= (const Dhcp6Parser&);
1574
1576 typedef int state_type;
1577
1581 virtual std::string yysyntax_error_ (state_type yystate,
1582 const symbol_type& yyla) const;
1583
1587 state_type yy_lr_goto_state_ (state_type yystate, int yysym);
1588
1591 static bool yy_pact_value_is_default_ (int yyvalue);
1592
1595 static bool yy_table_value_is_error_ (int yyvalue);
1596
1597 static const short yypact_ninf_;
1598 static const signed char yytable_ninf_;
1599
1601 static token_number_type yytranslate_ (token_type t);
1602
1603 // Tables.
1604 // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1605 // STATE-NUM.
1606 static const short yypact_[];
1607
1608 // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1609 // Performed when YYTABLE does not specify something else to do. Zero
1610 // means the default is an error.
1611 static const unsigned short yydefact_[];
1612
1613 // YYPGOTO[NTERM-NUM].
1614 static const short yypgoto_[];
1615
1616 // YYDEFGOTO[NTERM-NUM].
1617 static const short yydefgoto_[];
1618
1619 // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1620 // positive, shift that token. If negative, reduce the rule whose
1621 // number is the opposite. If YYTABLE_NINF, syntax error.
1622 static const unsigned short yytable_[];
1623
1624 static const short yycheck_[];
1625
1626 // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1627 // symbol of state STATE-NUM.
1628 static const unsigned short yystos_[];
1629
1630 // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
1631 static const unsigned short yyr1_[];
1632
1633 // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
1634 static const unsigned char yyr2_[];
1635
1636
1638 static std::string yytnamerr_ (const char *n);
1639
1640
1642 static const char* const yytname_[];
1643#if PARSER6_DEBUG
1644 // YYRLINE[YYN] -- Source line where rule number YYN was defined.
1645 static const unsigned short yyrline_[];
1647 virtual void yy_reduce_print_ (int r);
1649 virtual void yystack_print_ ();
1650
1652 int yydebug_;
1654 std::ostream* yycdebug_;
1655
1659 template <typename Base>
1660 void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
1661#endif
1662
1667 template <typename Base>
1668 void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
1669
1670 private:
1672 struct by_state
1673 {
1675 by_state ();
1676
1678 typedef state_type kind_type;
1679
1681 by_state (kind_type s);
1682
1684 by_state (const by_state& other);
1685
1687 void clear ();
1688
1690 void move (by_state& that);
1691
1694 symbol_number_type type_get () const;
1695
1697 enum { empty_state = -1 };
1698
1701 state_type state;
1702 };
1703
1705 struct stack_symbol_type : basic_symbol<by_state>
1706 {
1708 typedef basic_symbol<by_state> super_type;
1710 stack_symbol_type ();
1712 stack_symbol_type (YY_RVREF (stack_symbol_type) that);
1714 stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
1715#if YY_CPLUSPLUS < 201103L
1718 stack_symbol_type& operator= (stack_symbol_type& that);
1719#endif
1720 };
1721
1723 typedef stack<stack_symbol_type> stack_type;
1724
1726 stack_type yystack_;
1727
1733 void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
1734
1741 void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
1742
1744 void yypop_ (int n = 1);
1745
1747 enum
1748 {
1749 yyeof_ = 0,
1750 yylast_ = 1020,
1751 yynnts_ = 389,
1752 yyfinal_ = 32,
1753 yyterror_ = 1,
1754 yyerrcode_ = 256,
1755 yyntokens_ = 174
1756 };
1757
1758
1759 // User arguments.
1761 };
1762
1763 // Symbol number corresponding to token number t.
1764 inline
1766 Dhcp6Parser::yytranslate_ (token_type t)
1767 {
1768 static
1769 const token_number_type
1770 translate_table[] =
1771 {
1772 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1797 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1798 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1799 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1800 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1801 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1802 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1803 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1804 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1805 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1806 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1807 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1808 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1809 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1810 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1811 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1812 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1813 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1814 165, 166, 167, 168, 169, 170, 171, 172, 173
1815 };
1816 const unsigned user_token_number_max_ = 428;
1817 const token_number_type undef_token_ = 2;
1818
1819 if (static_cast<int> (t) <= yyeof_)
1820 return yyeof_;
1821 else if (static_cast<unsigned> (t) <= user_token_number_max_)
1822 return translate_table[t];
1823 else
1824 return undef_token_;
1825 }
1826
1827 inline
1829 : std::runtime_error (m)
1830 , location (l)
1831 {}
1832
1833 // basic_symbol.
1834 template <typename Base>
1836 : value ()
1837 , location ()
1838 {}
1839
1840 template <typename Base>
1842 : Base (YY_MOVE (other))
1843 , value ()
1844 , location (YY_MOVE (other.location))
1845 {
1846 switch (other.type_get ())
1847 {
1848 case 191: // value
1849 case 195: // map_value
1850 case 247: // db_type
1851 case 336: // hr_mode
1852 case 472: // duid_type
1853 case 507: // ncr_protocol_value
1854 case 514: // replace_client_name_value
1855 value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
1856 break;
1857
1858 case 173: // "boolean"
1859 value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
1860 break;
1861
1862 case 172: // "floating point"
1863 value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
1864 break;
1865
1866 case 171: // "integer"
1867 value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
1868 break;
1869
1870 case 170: // "constant string"
1871 value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
1872 break;
1873
1874 default:
1875 break;
1876 }
1877
1878 }
1879
1880
1881 // Implementation of basic_symbol constructor for each type.
1882# if 201103L <= YY_CPLUSPLUS
1883 template <typename Base>
1884 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, location_type&& l)
1885 : Base (t)
1886 , location (std::move (l))
1887 {}
1888#else
1889 template <typename Base>
1891 : Base (t)
1892 , location (l)
1893 {}
1894#endif
1895# if 201103L <= YY_CPLUSPLUS
1896 template <typename Base>
1897 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
1898 : Base (t)
1899 , value (std::move (v))
1900 , location (std::move (l))
1901 {}
1902#else
1903 template <typename Base>
1904 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
1905 : Base (t)
1906 , value (v)
1907 , location (l)
1908 {}
1909#endif
1910# if 201103L <= YY_CPLUSPLUS
1911 template <typename Base>
1912 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
1913 : Base (t)
1914 , value (std::move (v))
1915 , location (std::move (l))
1916 {}
1917#else
1918 template <typename Base>
1919 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
1920 : Base (t)
1921 , value (v)
1922 , location (l)
1923 {}
1924#endif
1925# if 201103L <= YY_CPLUSPLUS
1926 template <typename Base>
1927 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
1928 : Base (t)
1929 , value (std::move (v))
1930 , location (std::move (l))
1931 {}
1932#else
1933 template <typename Base>
1934 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
1935 : Base (t)
1936 , value (v)
1937 , location (l)
1938 {}
1939#endif
1940# if 201103L <= YY_CPLUSPLUS
1941 template <typename Base>
1942 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
1943 : Base (t)
1944 , value (std::move (v))
1945 , location (std::move (l))
1946 {}
1947#else
1948 template <typename Base>
1949 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
1950 : Base (t)
1951 , value (v)
1952 , location (l)
1953 {}
1954#endif
1955# if 201103L <= YY_CPLUSPLUS
1956 template <typename Base>
1957 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
1958 : Base (t)
1959 , value (std::move (v))
1960 , location (std::move (l))
1961 {}
1962#else
1963 template <typename Base>
1964 Dhcp6Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
1965 : Base (t)
1966 , value (v)
1967 , location (l)
1968 {}
1969#endif
1970
1971
1972 template <typename Base>
1974 {
1975 clear ();
1976 }
1977
1978 template <typename Base>
1979 void
1981 {
1982 // User destructor.
1983 symbol_number_type yytype = this->type_get ();
1984 basic_symbol<Base>& yysym = *this;
1985 (void) yysym;
1986 switch (yytype)
1987 {
1988 default:
1989 break;
1990 }
1991
1992 // Type destructor.
1993 switch (yytype)
1994 {
1995 case 191: // value
1996 case 195: // map_value
1997 case 247: // db_type
1998 case 336: // hr_mode
1999 case 472: // duid_type
2000 case 507: // ncr_protocol_value
2001 case 514: // replace_client_name_value
2002 value.template destroy< ElementPtr > ();
2003 break;
2004
2005 case 173: // "boolean"
2006 value.template destroy< bool > ();
2007 break;
2008
2009 case 172: // "floating point"
2010 value.template destroy< double > ();
2011 break;
2012
2013 case 171: // "integer"
2014 value.template destroy< int64_t > ();
2015 break;
2016
2017 case 170: // "constant string"
2018 value.template destroy< std::string > ();
2019 break;
2020
2021 default:
2022 break;
2023 }
2024
2025 Base::clear ();
2026 }
2027
2028 template <typename Base>
2029 bool
2031 {
2032 return Base::type_get () == empty_symbol;
2033 }
2034
2035 template <typename Base>
2036 void
2038 {
2039 super_type::move (s);
2040 switch (this->type_get ())
2041 {
2042 case 191: // value
2043 case 195: // map_value
2044 case 247: // db_type
2045 case 336: // hr_mode
2046 case 472: // duid_type
2047 case 507: // ncr_protocol_value
2048 case 514: // replace_client_name_value
2049 value.move< ElementPtr > (YY_MOVE (s.value));
2050 break;
2051
2052 case 173: // "boolean"
2053 value.move< bool > (YY_MOVE (s.value));
2054 break;
2055
2056 case 172: // "floating point"
2057 value.move< double > (YY_MOVE (s.value));
2058 break;
2059
2060 case 171: // "integer"
2061 value.move< int64_t > (YY_MOVE (s.value));
2062 break;
2063
2064 case 170: // "constant string"
2065 value.move< std::string > (YY_MOVE (s.value));
2066 break;
2067
2068 default:
2069 break;
2070 }
2071
2072 location = YY_MOVE (s.location);
2073 }
2074
2075 // by_type.
2076 inline
2078 : type (empty_symbol)
2079 {}
2080
2081 inline
2083 : type (other.type)
2084 {}
2085
2086 inline
2088 : type (yytranslate_ (t))
2089 {}
2090
2091 inline
2092 void
2094 {
2095 type = empty_symbol;
2096 }
2097
2098 inline
2099 void
2101 {
2102 type = that.type;
2103 that.clear ();
2104 }
2105
2106 inline
2107 int
2109 {
2110 return type;
2111 }
2112
2113 inline
2116 {
2117 // YYTOKNUM[NUM] -- (External) token number corresponding to the
2118 // (internal) symbol number NUM (which must be that of a token). */
2119 static
2120 const unsigned short
2121 yytoken_number_[] =
2122 {
2123 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2124 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
2125 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2126 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
2127 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
2128 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2129 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
2130 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
2131 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2132 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
2133 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
2134 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2135 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
2136 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
2137 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
2138 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
2139 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
2140 425, 426, 427, 428
2141 };
2142 return static_cast<token_type> (yytoken_number_[type]);
2143 }
2144
2145 // Implementation of make_symbol for each symbol type.
2146 inline
2149 {
2150 return symbol_type (token::TOKEN_END, YY_MOVE (l));
2151 }
2152
2153 inline
2156 {
2158 }
2159
2160 inline
2163 {
2165 }
2166
2167 inline
2170 {
2172 }
2173
2174 inline
2177 {
2179 }
2180
2181 inline
2184 {
2186 }
2187
2188 inline
2191 {
2193 }
2194
2195 inline
2198 {
2200 }
2201
2202 inline
2205 {
2207 }
2208
2209 inline
2212 {
2214 }
2215
2216 inline
2219 {
2221 }
2222
2223 inline
2226 {
2228 }
2229
2230 inline
2233 {
2235 }
2236
2237 inline
2240 {
2242 }
2243
2244 inline
2247 {
2249 }
2250
2251 inline
2254 {
2256 }
2257
2258 inline
2261 {
2263 }
2264
2265 inline
2268 {
2270 }
2271
2272 inline
2275 {
2277 }
2278
2279 inline
2282 {
2284 }
2285
2286 inline
2289 {
2291 }
2292
2293 inline
2296 {
2297 return symbol_type (token::TOKEN_CQL, YY_MOVE (l));
2298 }
2299
2300 inline
2303 {
2305 }
2306
2307 inline
2310 {
2312 }
2313
2314 inline
2317 {
2319 }
2320
2321 inline
2324 {
2326 }
2327
2328 inline
2331 {
2333 }
2334
2335 inline
2338 {
2340 }
2341
2342 inline
2345 {
2347 }
2348
2349 inline
2352 {
2354 }
2355
2356 inline
2359 {
2361 }
2362
2363 inline
2366 {
2368 }
2369
2370 inline
2373 {
2375 }
2376
2377 inline
2380 {
2382 }
2383
2384 inline
2387 {
2389 }
2390
2391 inline
2394 {
2396 }
2397
2398 inline
2401 {
2403 }
2404
2405 inline
2408 {
2410 }
2411
2412 inline
2415 {
2417 }
2418
2419 inline
2422 {
2424 }
2425
2426 inline
2429 {
2431 }
2432
2433 inline
2436 {
2438 }
2439
2440 inline
2443 {
2445 }
2446
2447 inline
2450 {
2452 }
2453
2454 inline
2457 {
2459 }
2460
2461 inline
2464 {
2466 }
2467
2468 inline
2471 {
2473 }
2474
2475 inline
2478 {
2480 }
2481
2482 inline
2485 {
2487 }
2488
2489 inline
2492 {
2494 }
2495
2496 inline
2499 {
2501 }
2502
2503 inline
2506 {
2508 }
2509
2510 inline
2513 {
2515 }
2516
2517 inline
2520 {
2522 }
2523
2524 inline
2527 {
2529 }
2530
2531 inline
2534 {
2536 }
2537
2538 inline
2541 {
2543 }
2544
2545 inline
2548 {
2550 }
2551
2552 inline
2555 {
2557 }
2558
2559 inline
2562 {
2564 }
2565
2566 inline
2569 {
2571 }
2572
2573 inline
2576 {
2578 }
2579
2580 inline
2583 {
2585 }
2586
2587 inline
2590 {
2592 }
2593
2594 inline
2597 {
2599 }
2600
2601 inline
2604 {
2606 }
2607
2608 inline
2611 {
2613 }
2614
2615 inline
2618 {
2620 }
2621
2622 inline
2625 {
2626 return symbol_type (token::TOKEN_ID, YY_MOVE (l));
2627 }
2628
2629 inline
2632 {
2634 }
2635
2636 inline
2639 {
2641 }
2642
2643 inline
2646 {
2648 }
2649
2650 inline
2653 {
2655 }
2656
2657 inline
2660 {
2662 }
2663
2664 inline
2667 {
2668 return symbol_type (token::TOKEN_ALL, YY_MOVE (l));
2669 }
2670
2671 inline
2674 {
2676 }
2677
2678 inline
2681 {
2683 }
2684
2685 inline
2688 {
2690 }
2691
2692 inline
2695 {
2697 }
2698
2699 inline
2702 {
2704 }
2705
2706 inline
2709 {
2711 }
2712
2713 inline
2716 {
2718 }
2719
2720 inline
2723 {
2725 }
2726
2727 inline
2730 {
2732 }
2733
2734 inline
2737 {
2739 }
2740
2741 inline
2744 {
2746 }
2747
2748 inline
2751 {
2753 }
2754
2755 inline
2758 {
2760 }
2761
2762 inline
2765 {
2767 }
2768
2769 inline
2772 {
2774 }
2775
2776 inline
2779 {
2781 }
2782
2783 inline
2786 {
2788 }
2789
2790 inline
2793 {
2795 }
2796
2797 inline
2800 {
2802 }
2803
2804 inline
2807 {
2809 }
2810
2811 inline
2814 {
2816 }
2817
2818 inline
2821 {
2823 }
2824
2825 inline
2828 {
2830 }
2831
2832 inline
2835 {
2837 }
2838
2839 inline
2842 {
2844 }
2845
2846 inline
2849 {
2851 }
2852
2853 inline
2856 {
2858 }
2859
2860 inline
2863 {
2865 }
2866
2867 inline
2870 {
2872 }
2873
2874 inline
2877 {
2879 }
2880
2881 inline
2884 {
2886 }
2887
2888 inline
2891 {
2892 return symbol_type (token::TOKEN_LLT, YY_MOVE (l));
2893 }
2894
2895 inline
2898 {
2899 return symbol_type (token::TOKEN_EN, YY_MOVE (l));
2900 }
2901
2902 inline
2905 {
2906 return symbol_type (token::TOKEN_LL, YY_MOVE (l));
2907 }
2908
2909 inline
2912 {
2914 }
2915
2916 inline
2919 {
2921 }
2922
2923 inline
2926 {
2928 }
2929
2930 inline
2933 {
2935 }
2936
2937 inline
2940 {
2942 }
2943
2944 inline
2947 {
2949 }
2950
2951 inline
2954 {
2956 }
2957
2958 inline
2961 {
2963 }
2964
2965 inline
2968 {
2970 }
2971
2972 inline
2975 {
2977 }
2978
2979 inline
2982 {
2984 }
2985
2986 inline
2989 {
2991 }
2992
2993 inline
2996 {
2998 }
2999
3000 inline
3003 {
3005 }
3006
3007 inline
3010 {
3012 }
3013
3014 inline
3017 {
3019 }
3020
3021 inline
3024 {
3026 }
3027
3028 inline
3031 {
3033 }
3034
3035 inline
3038 {
3040 }
3041
3042 inline
3045 {
3047 }
3048
3049 inline
3052 {
3054 }
3055
3056 inline
3059 {
3061 }
3062
3063 inline
3066 {
3068 }
3069
3070 inline
3073 {
3074 return symbol_type (token::TOKEN_UDP, YY_MOVE (l));
3075 }
3076
3077 inline
3080 {
3081 return symbol_type (token::TOKEN_TCP, YY_MOVE (l));
3082 }
3083
3084 inline
3087 {
3089 }
3090
3091 inline
3094 {
3096 }
3097
3098 inline
3101 {
3103 }
3104
3105 inline
3108 {
3110 }
3111
3112 inline
3115 {
3117 }
3118
3119 inline
3122 {
3124 }
3125
3126 inline
3129 {
3131 }
3132
3133 inline
3136 {
3138 }
3139
3140 inline
3143 {
3145 }
3146
3147 inline
3150 {
3152 }
3153
3154 inline
3157 {
3159 }
3160
3161 inline
3164 {
3166 }
3167
3168 inline
3171 {
3173 }
3174
3175 inline
3178 {
3180 }
3181
3182 inline
3185 {
3187 }
3188
3189 inline
3192 {
3194 }
3195
3196 inline
3199 {
3201 }
3202
3203 inline
3206 {
3208 }
3209
3210 inline
3213 {
3215 }
3216
3217 inline
3220 {
3222 }
3223
3224 inline
3227 {
3229 }
3230
3231 inline
3234 {
3236 }
3237
3238 inline
3241 {
3243 }
3244
3245 inline
3248 {
3250 }
3251
3252 inline
3255 {
3257 }
3258
3259 inline
3262 {
3264 }
3265
3266 inline
3269 {
3271 }
3272
3273 inline
3276 {
3278 }
3279
3280 inline
3283 {
3285 }
3286
3287 inline
3290 {
3292 }
3293
3294 inline
3297 {
3299 }
3300
3301 inline
3304 {
3306 }
3307
3308 inline
3311 {
3313 }
3314
3315 inline
3318 {
3320 }
3321
3322 inline
3325 {
3327 }
3328
3329 inline
3332 {
3334 }
3335
3336 inline
3339 {
3340 return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
3341 }
3342
3343 inline
3346 {
3348 }
3349
3350
3351#line 14 "dhcp6_parser.yy" // lalr1.cc:404
3352} } // isc::dhcp
3353#line 3354 "dhcp6_parser.h" // lalr1.cc:404
3354
3355
3356
3357
3358#endif // !YY_PARSER6_DHCP6_PARSER_H_INCLUDED
#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: dhcp6_parser.h:496
static symbol_type make_LEASE_CHECKS(YY_COPY(location_type) l)
static symbol_type make_CONTACT_POINTS(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_NO_UPDATE(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_OUT_OF_POOL(YY_COPY(location_type) l)
static symbol_type make_NAME(YY_COPY(location_type) l)
static symbol_type make_UNWARNED_RECLAIM_CYCLES(YY_COPY(location_type) l)
static symbol_type make_ALWAYS(YY_COPY(location_type) l)
static symbol_type make_DUID(YY_COPY(location_type) l)
static symbol_type make_RECONNECT_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_REQUEST_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_MEMFILE(YY_COPY(location_type) l)
token::yytokentype token_type
(External) token type, as returned by yylex.
Definition: dhcp6_parser.h:720
static symbol_type make_IDENTIFIER(YY_COPY(location_type) l)
static symbol_type make_SERVER_ID(YY_COPY(location_type) l)
static symbol_type make_NULL_TYPE(YY_COPY(location_type) l)
static symbol_type make_INTEGER(YY_COPY(int64_t) v, YY_COPY(location_type) l)
static symbol_type make_RELAY(YY_COPY(location_type) l)
static symbol_type make_SUB_SUBNET6(YY_COPY(location_type) l)
static symbol_type make_CONTROL_AGENT(YY_COPY(location_type) l)
static symbol_type make_ID(YY_COPY(location_type) l)
static symbol_type make_TCP_KEEPALIVE(YY_COPY(location_type) l)
static symbol_type make_SUBNET(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_TIME(YY_COPY(location_type) l)
variant< sizeof(union_type)> semantic_type
Symbol semantic values.
Definition: dhcp6_parser.h:525
static symbol_type make_FLUSH(YY_COPY(location_type) l)
static symbol_type make_SEVERITY(YY_COPY(location_type) l)
static symbol_type make_SENDER_PORT(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DATA(YY_COPY(location_type) l)
static symbol_type make_DECLINE_PROBATION_PERIOD(YY_COPY(location_type) l)
static symbol_type make_EXCLUDED_PREFIX_LEN(YY_COPY(location_type) l)
static symbol_type make_GENERATED_PREFIX(YY_COPY(location_type) l)
static symbol_type make_LL(YY_COPY(location_type) l)
static symbol_type make_SUB_RESERVATION(YY_COPY(location_type) l)
static symbol_type make_HOOKS_LIBRARIES(YY_COPY(location_type) l)
static symbol_type make_DHCPDDNS(YY_COPY(location_type) l)
static symbol_type make_USER_CONTEXT(YY_COPY(location_type) l)
static symbol_type make_TIME(YY_COPY(location_type) l)
static symbol_type make_ENCAPSULATE(YY_COPY(location_type) l)
static symbol_type make_RELAY_SUPPLIED_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_PREFERRED_LIFETIME(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASE(YY_COPY(location_type) l)
static symbol_type make_DHCP4O6_PORT(YY_COPY(location_type) l)
static symbol_type make_OUTPUT(YY_COPY(location_type) l)
static symbol_type make_SENDER_IP(YY_COPY(location_type) l)
static symbol_type make_REPLACE_CLIENT_NAME(YY_COPY(location_type) l)
static symbol_type make_CODE(YY_COPY(location_type) l)
static symbol_type make_HOLD_RECLAIMED_TIME(YY_COPY(location_type) l)
static symbol_type make_ONLY_IF_REQUIRED(YY_COPY(location_type) l)
static symbol_type make_LCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_JSON(YY_COPY(location_type) l)
static symbol_type make_LEASE_DATABASE(YY_COPY(location_type) l)
static symbol_type make_PREFIXES(YY_COPY(location_type) l)
static symbol_type make_FLEX_ID(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_EN(YY_COPY(location_type) l)
static symbol_type make_PERSIST(YY_COPY(location_type) l)
static symbol_type make_DEBUGLEVEL(YY_COPY(location_type) l)
static symbol_type make_FLOAT(YY_COPY(double) v, YY_COPY(location_type) l)
static symbol_type make_LSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_USER(YY_COPY(location_type) l)
static symbol_type make_SUB_INTERFACES6(YY_COPY(location_type) l)
static symbol_type make_SUB_HOOKS_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_SUB_OPTION_DEFS(YY_COPY(location_type) l)
static symbol_type make_POOLS(YY_COPY(location_type) l)
static symbol_type make_RECLAIM_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_SERVER_IP(YY_COPY(location_type) l)
static symbol_type make_SPACE(YY_COPY(location_type) l)
static symbol_type make_PORT(YY_COPY(location_type) l)
static symbol_type make_RCURLY_BRACKET(YY_COPY(location_type) l)
static symbol_type make_IP_ADDRESSES(YY_COPY(location_type) l)
static symbol_type make_COMMENT(YY_COPY(location_type) l)
static symbol_type make_UDP(YY_COPY(location_type) l)
static symbol_type make_TCP_NODELAY(YY_COPY(location_type) l)
static symbol_type make_PASSWORD(YY_COPY(location_type) l)
static symbol_type make_END(YY_COPY(location_type) l)
static symbol_type make_CONNECT_TIMEOUT(YY_COPY(location_type) l)
static symbol_type make_SHARED_NETWORKS(YY_COPY(location_type) l)
static symbol_type make_RESERVATIONS(YY_COPY(location_type) l)
static symbol_type make_ALL(YY_COPY(location_type) l)
static symbol_type make_STRING(YY_COPY(std::string) v, YY_COPY(location_type) l)
static symbol_type make_REQUIRE_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_OVERRIDE_CLIENT_UPDATE(YY_COPY(location_type) l)
location location_type
Symbol locations.
Definition: dhcp6_parser.h:530
static symbol_type make_CQL(YY_COPY(location_type) l)
static symbol_type make_EXPIRED_LEASES_PROCESSING(YY_COPY(location_type) l)
static symbol_type make_WHEN_NOT_PRESENT(YY_COPY(location_type) l)
static symbol_type make_POSTGRESQL(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_SET(YY_COPY(location_type) l)
int symbol_number_type
Symbol type: an internal symbol number.
Definition: dhcp6_parser.h:723
static symbol_type make_RAPID_COMMIT(YY_COPY(location_type) l)
static symbol_type make_RENEW_TIMER(YY_COPY(location_type) l)
static symbol_type make_HOST(YY_COPY(location_type) l)
static symbol_type make_SOCKET_TYPE(YY_COPY(location_type) l)
static symbol_type make_DISABLED(YY_COPY(location_type) l)
static symbol_type make_SANITY_CHECKS(YY_COPY(location_type) l)
static symbol_type make_PREFIX_LEN(YY_COPY(location_type) l)
static symbol_type make_LOGGING(YY_COPY(location_type) l)
static symbol_type make_LIBRARY(YY_COPY(location_type) l)
static symbol_type make_CONFIG_CONTROL(YY_COPY(location_type) l)
static symbol_type make_ARRAY(YY_COPY(location_type) l)
static symbol_type make_PARAMETERS(YY_COPY(location_type) l)
static symbol_type make_CONTROL_SOCKET(YY_COPY(location_type) l)
static symbol_type make_OPTION_DEF(YY_COPY(location_type) l)
static symbol_type make_HOST_RESERVATION_IDENTIFIERS(YY_COPY(location_type) l)
static symbol_type make_MAX_RECLAIM_LEASES(YY_COPY(location_type) l)
static symbol_type make_DATA(YY_COPY(location_type) l)
static symbol_type make_SUB_LOGGING(YY_COPY(location_type) l)
static symbol_type make_POOL(YY_COPY(location_type) l)
static symbol_type make_SERVER_TAG(YY_COPY(location_type) l)
static symbol_type make_DHCP6(YY_COPY(location_type) l)
static symbol_type make_NCR_FORMAT(YY_COPY(location_type) l)
virtual int parse()
Parse.
static symbol_type make_JSON(YY_COPY(location_type) l)
static symbol_type make_INTERFACE(YY_COPY(location_type) l)
static symbol_type make_NCR_PROTOCOL(YY_COPY(location_type) l)
static symbol_type make_LLT(YY_COPY(location_type) l)
static symbol_type make_SERVER_PORT(YY_COPY(location_type) l)
static symbol_type make_MAXSIZE(YY_COPY(location_type) l)
static symbol_type make_MYSQL(YY_COPY(location_type) l)
static symbol_type make_MAX_RECONNECT_TRIES(YY_COPY(location_type) l)
static symbol_type make_ENABLE_UPDATES(YY_COPY(location_type) l)
static symbol_type make_INTERFACE_ID(YY_COPY(location_type) l)
static symbol_type make_QUALIFYING_SUFFIX(YY_COPY(location_type) l)
static symbol_type make_GLOBAL(YY_COPY(location_type) l)
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
Definition: dhcp6_parser.h:729
static symbol_type make_LOGGERS(YY_COPY(location_type) l)
static symbol_type make_SOCKET_NAME(YY_COPY(location_type) l)
static symbol_type make_TOPLEVEL_DHCP6(YY_COPY(location_type) l)
static symbol_type make_KEYSPACE(YY_COPY(location_type) l)
static symbol_type make_REBIND_TIMER(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASS(YY_COPY(location_type) l)
static symbol_type make_BOOLEAN(YY_COPY(bool) v, YY_COPY(location_type) l)
static symbol_type make_COMMA(YY_COPY(location_type) l)
static symbol_type make_HOSTS_DATABASES(YY_COPY(location_type) l)
static symbol_type make_INTERFACES(YY_COPY(location_type) l)
static symbol_type make_DELEGATED_LEN(YY_COPY(location_type) l)
static symbol_type make_RECORD_TYPES(YY_COPY(location_type) l)
static symbol_type make_SUBNET6(YY_COPY(location_type) l)
static symbol_type make_FLUSH_RECLAIMED_TIMER_WAIT_TIME(YY_COPY(location_type) l)
static symbol_type make_SUB_POOL6(YY_COPY(location_type) l)
static symbol_type make_PD_POOLS(YY_COPY(location_type) l)
static symbol_type make_COLON(YY_COPY(location_type) l)
static symbol_type make_LFC_INTERVAL(YY_COPY(location_type) l)
static symbol_type make_HW_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_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_TYPE(YY_COPY(location_type) l)
static symbol_type make_CONFIG_DATABASES(YY_COPY(location_type) l)
static symbol_type make_WHEN_PRESENT(YY_COPY(location_type) l)
static symbol_type make_RSQUARE_BRACKET(YY_COPY(location_type) l)
static symbol_type make_ALWAYS_SEND(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_IP_ADDRESS(YY_COPY(location_type) l)
static symbol_type make_HTYPE(YY_COPY(location_type) l)
static symbol_type make_DHCP_QUEUE_CONTROL(YY_COPY(location_type) l)
static symbol_type make_MAXVER(YY_COPY(location_type) l)
static symbol_type make_TEST(YY_COPY(location_type) l)
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
Definition: dhcp6_parser.h:843
static symbol_type make_NEVER(YY_COPY(location_type) l)
static symbol_type make_MAC_SOURCES(YY_COPY(location_type) l)
static symbol_type make_CLIENT_CLASSES(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME(YY_COPY(location_type) l)
static symbol_type make_RE_DETECT(YY_COPY(location_type) l)
static symbol_type make_VALID_LIFETIME(YY_COPY(location_type) l)
static symbol_type make_EXCLUDED_PREFIX(YY_COPY(location_type) l)
static symbol_type make_SUB_PD_POOL(YY_COPY(location_type) l)
static symbol_type make_PREFIX(YY_COPY(location_type) l)
static symbol_type make_TCP(YY_COPY(location_type) l)
static symbol_type make_ENTERPRISE_ID(YY_COPY(location_type) l)
static symbol_type make_CSV_FORMAT(YY_COPY(location_type) l)
static symbol_type make_DHCP_DDNS(YY_COPY(location_type) l)
static symbol_type make_RESERVATION_MODE(YY_COPY(location_type) l)
static symbol_type make_MAX_QUEUE_SIZE(YY_COPY(location_type) l)
static symbol_type make_READONLY(YY_COPY(location_type) l)
static symbol_type make_SUB_DHCP6(YY_COPY(location_type) l)
static symbol_type make_OUTPUT_OPTIONS(YY_COPY(location_type) l)
static symbol_type make_HOSTNAME_CHAR_REPLACEMENT(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: dhcp6_parser.h:272
A stack with random access from its top.
Definition: dhcp4_parser.h:172
S::reverse_iterator iterator
Definition: dhcp6_parser.h:175
const_iterator begin() const
Definition: dhcp6_parser.h:249
T & operator[](size_type i)
Random access.
Definition: dhcp4_parser.h:187
S::const_reverse_iterator const_iterator
Definition: dhcp6_parser.h:176
S::size_type size_type
Definition: dhcp6_parser.h:177
size_type size() const
Definition: dhcp4_parser.h:243
const_iterator end() const
Definition: dhcp6_parser.h:255
stack(size_type n=200)
Definition: dhcp6_parser.h:179
void push(YY_MOVE_REF(T) t)
Steal the contents of t.
Definition: dhcp6_parser.h:223
void pop(int n=1)
Definition: dhcp6_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: dhcp6_parser.h:799
void move(basic_symbol &s)
Destructive move, s is emptied into this.
bool empty() const
Whether empty.
basic_symbol()
Default constructor.
void clear()
Destroy contents, and record that is empty.
semantic_type value
The semantic value.
Definition: dhcp6_parser.h:796
Type access provider for token (enum) based symbols.
Definition: dhcp6_parser.h:810
by_type()
Default constructor.
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.
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
token_type kind_type
The symbol type as needed by the constructor.
Definition: dhcp6_parser.h:818
Syntax errors thrown from user actions.
Definition: dhcp6_parser.h:534
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: dhcp6_parser.h:309
T & emplace()
Instantiate an empty T in here.
Definition: dhcp6_parser.h:325
long double yyalign_me
Strongest alignment constraints.
Definition: dhcp4_parser.h:484
variant()
Empty construction.
Definition: dhcp6_parser.h:302
variant< S > self_type
Type of *this.
Definition: dhcp6_parser.h:299
const T & as() const
Const accessor to a built T (for printer).
Definition: dhcp6_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: dhcp6_parser.h:317
T & as()
Accessor to a built T.
Definition: dhcp6_parser.h:378
T & emplace(const T &t)
Instantiate a T in here from t.
Definition: dhcp6_parser.h:348
void copy(const self_type &other)
Copy the content of other to this.
Definition: dhcp6_parser.h:444
void swap(self_type &other)
Swap the content with other, of same type.
Definition: dhcp6_parser.h:407
void move(self_type &other)
Move the content of other to this.
Definition: dhcp6_parser.h:419
T & build()
Instantiate an empty T in here.
Definition: dhcp6_parser.h:361
T & build(const T &t)
Instantiate a T in here from t.
Definition: dhcp6_parser.h:370
An auxiliary type to compute the largest semantic type.
Definition: dhcp6_parser.h:501
char dummy5[sizeof(std::string)]
Definition: dhcp6_parser.h:521
char dummy1[sizeof(ElementPtr)]
Definition: dhcp6_parser.h:509
char dummy4[sizeof(int64_t)]
Definition: dhcp6_parser.h:518