static const flex_int16_t yy_rule_linenum[56] =
{ 0,
- 129, 131, 133, 138, 139, 144, 145, 146, 158, 161,
- 166, 173, 182, 191, 200, 209, 218, 227, 236, 245,
- 254, 263, 272, 281, 290, 299, 308, 317, 326, 335,
- 344, 353, 362, 371, 380, 389, 398, 407, 505, 510,
- 515, 520, 521, 522, 523, 524, 525, 527, 545, 558,
- 563, 567, 569, 571, 573
+ 133, 135, 137, 142, 143, 148, 149, 150, 162, 165,
+ 170, 177, 186, 195, 204, 213, 222, 231, 240, 249,
+ 258, 267, 276, 285, 294, 303, 312, 321, 330, 339,
+ 348, 357, 366, 375, 384, 393, 402, 411, 509, 514,
+ 519, 524, 525, 526, 527, 528, 529, 531, 549, 562,
+ 567, 571, 573, 575, 577
} ;
/* The intent behind this definition is that it'll catch
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#line 8 "agent_lexer.ll"
+
+/* Generated files do not make clang static analyser so happy */
+#ifndef __clang_analyzer__
+
#include <cerrno>
#include <climits>
#include <cstdlib>
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
-#line 1378 "agent_lexer.cc"
+#line 1382 "agent_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
-#line 92 "agent_lexer.ll"
+#line 96 "agent_lexer.ll"
/* This code run each time a pattern is matched. It updates the location
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1404 "agent_lexer.cc"
-#line 1405 "agent_lexer.cc"
+#line 1408 "agent_lexer.cc"
+#line 1409 "agent_lexer.cc"
#define INITIAL 0
#define COMMENT 1
{
/* %% [7.0] user's declarations go here */
-#line 98 "agent_lexer.ll"
+#line 102 "agent_lexer.ll"
-#line 102 "agent_lexer.ll"
+#line 106 "agent_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
of the generated yylex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
}
-#line 1719 "agent_lexer.cc"
+#line 1723 "agent_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
case 1:
YY_RULE_SETUP
-#line 129 "agent_lexer.ll"
+#line 133 "agent_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 131 "agent_lexer.ll"
+#line 135 "agent_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 133 "agent_lexer.ll"
+#line 137 "agent_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 138 "agent_lexer.ll"
+#line 142 "agent_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 139 "agent_lexer.ll"
+#line 143 "agent_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 140 "agent_lexer.ll"
+#line 144 "agent_lexer.ll"
{
isc_throw(ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 144 "agent_lexer.ll"
+#line 148 "agent_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 145 "agent_lexer.ll"
+#line 149 "agent_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 146 "agent_lexer.ll"
+#line 150 "agent_lexer.ll"
{
/* Include directive. */
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 155 "agent_lexer.ll"
+#line 159 "agent_lexer.ll"
{
isc_throw(ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 158 "agent_lexer.ll"
+#line 162 "agent_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 161 "agent_lexer.ll"
+#line 165 "agent_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 166 "agent_lexer.ll"
+#line 170 "agent_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
driver.loc_.lines(yyleng);
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 173 "agent_lexer.ll"
+#line 177 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 182 "agent_lexer.ll"
+#line 186 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 191 "agent_lexer.ll"
+#line 195 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 200 "agent_lexer.ll"
+#line 204 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 209 "agent_lexer.ll"
+#line 213 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKETS:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 218 "agent_lexer.ll"
+#line 222 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKETS:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 227 "agent_lexer.ll"
+#line 231 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONTROL_SOCKETS:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 236 "agent_lexer.ll"
+#line 240 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SERVER:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 245 "agent_lexer.ll"
+#line 249 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SERVER:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 254 "agent_lexer.ll"
+#line 258 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::SOCKET_TYPE:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 263 "agent_lexer.ll"
+#line 267 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::AGENT:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 272 "agent_lexer.ll"
+#line 276 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::HOOKS_LIBRARIES:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 281 "agent_lexer.ll"
+#line 285 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::HOOKS_LIBRARIES:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 290 "agent_lexer.ll"
+#line 294 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 299 "agent_lexer.ll"
+#line 303 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGING:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 308 "agent_lexer.ll"
+#line 312 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 317 "agent_lexer.ll"
+#line 321 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 326 "agent_lexer.ll"
+#line 330 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 335 "agent_lexer.ll"
+#line 339 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 344 "agent_lexer.ll"
+#line 348 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 353 "agent_lexer.ll"
+#line 357 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 362 "agent_lexer.ll"
+#line 366 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 371 "agent_lexer.ll"
+#line 375 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::LOGGERS:
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 380 "agent_lexer.ll"
+#line 384 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 389 "agent_lexer.ll"
+#line 393 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 398 "agent_lexer.ll"
+#line 402 "agent_lexer.ll"
{
switch(driver.ctx_) {
case ParserContext::CONFIG:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 407 "agent_lexer.ll"
+#line 411 "agent_lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
case 39:
/* rule 39 can match eol */
YY_RULE_SETUP
-#line 505 "agent_lexer.ll"
+#line 509 "agent_lexer.ll"
{
/* Bad string with a forbidden control character inside */
driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
case 40:
/* rule 40 can match eol */
YY_RULE_SETUP
-#line 510 "agent_lexer.ll"
+#line 514 "agent_lexer.ll"
{
/* Bad string with a bad escape inside */
driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 515 "agent_lexer.ll"
+#line 519 "agent_lexer.ll"
{
/* Bad string with an open escape at the end */
driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 520 "agent_lexer.ll"
+#line 524 "agent_lexer.ll"
{ return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 521 "agent_lexer.ll"
+#line 525 "agent_lexer.ll"
{ return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 522 "agent_lexer.ll"
+#line 526 "agent_lexer.ll"
{ return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 523 "agent_lexer.ll"
+#line 527 "agent_lexer.ll"
{ return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 524 "agent_lexer.ll"
+#line 528 "agent_lexer.ll"
{ return AgentParser::make_COMMA(driver.loc_); }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 525 "agent_lexer.ll"
+#line 529 "agent_lexer.ll"
{ return AgentParser::make_COLON(driver.loc_); }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 527 "agent_lexer.ll"
+#line 531 "agent_lexer.ll"
{
/* An integer was found. */
std::string tmp(yytext);
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 545 "agent_lexer.ll"
+#line 549 "agent_lexer.ll"
{
/* A floating point was found. */
std::string tmp(yytext);
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 558 "agent_lexer.ll"
+#line 562 "agent_lexer.ll"
{
string tmp(yytext);
return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 563 "agent_lexer.ll"
+#line 567 "agent_lexer.ll"
{
return AgentParser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 567 "agent_lexer.ll"
+#line 571 "agent_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 569 "agent_lexer.ll"
+#line 573 "agent_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 571 "agent_lexer.ll"
+#line 575 "agent_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 573 "agent_lexer.ll"
+#line 577 "agent_lexer.ll"
driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 575 "agent_lexer.ll"
+#line 579 "agent_lexer.ll"
{
if (driver.states_.empty()) {
return AgentParser::make_END(driver.loc_);
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 598 "agent_lexer.ll"
+#line 602 "agent_lexer.ll"
ECHO;
YY_BREAK
-#line 2454 "agent_lexer.cc"
+#line 2458 "agent_lexer.cc"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 598 "agent_lexer.ll"
+#line 602 "agent_lexer.ll"
using namespace isc::dhcp;
void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
};
}
+#endif /* !__clang_analyzer__ */
/// The return value of parse ().
int yyresult;
- // FIXME: This should be completely indented. It is not yet to
+ // FIXME: This shoud be completely indented. It is not yet to
// avoid gratuitous conflicts when merging into the master branch.
try
{
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
- /// should not be the variant's responsibility.
+ /// should not be the variant's responsability.
/// Swapping between built and (possibly) non-built is done with
/// variant::move ().
template <typename T>
-// Generated 201707141119
+// Generated 201710081556
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
-// Generated 201707141119
+// Generated 201710081556
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
-// Generated 201707141119
+// Generated 201710081556
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++
static const flex_int16_t yy_rule_linenum[62] =
{ 0,
- 129, 131, 133, 138, 139, 144, 145, 146, 158, 161,
- 166, 172, 181, 192, 203, 212, 221, 230, 240, 250,
- 260, 269, 278, 288, 298, 308, 319, 328, 338, 348,
- 359, 368, 377, 386, 395, 404, 413, 422, 435, 444,
- 453, 462, 471, 481, 579, 584, 589, 594, 595, 596,
- 597, 598, 599, 601, 619, 632, 637, 641, 643, 645,
- 647
+ 133, 135, 137, 142, 143, 148, 149, 150, 162, 165,
+ 170, 176, 185, 196, 207, 216, 225, 234, 244, 254,
+ 264, 273, 282, 292, 302, 312, 323, 332, 342, 352,
+ 363, 372, 381, 390, 399, 408, 417, 426, 439, 448,
+ 457, 466, 475, 485, 583, 588, 593, 598, 599, 600,
+ 601, 602, 603, 605, 623, 636, 641, 645, 647, 649,
+ 651
} ;
/* The intent behind this definition is that it'll catch
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#line 8 "d2_lexer.ll"
+
+/* Generated files do not make clang static analyser so happy */
+#ifndef __clang_analyzer__
+
#include <cerrno>
#include <climits>
#include <cstdlib>
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::d2::D2ParserContext::fatal(msg)
-#line 1115 "d2_lexer.cc"
+#line 1119 "d2_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
-#line 88 "d2_lexer.ll"
+#line 92 "d2_lexer.ll"
/* This code run each time a pattern is matched. It updates the location
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1141 "d2_lexer.cc"
-#line 1142 "d2_lexer.cc"
+#line 1145 "d2_lexer.cc"
+#line 1146 "d2_lexer.cc"
#define INITIAL 0
#define COMMENT 1
{
/* %% [7.0] user's declarations go here */
-#line 94 "d2_lexer.ll"
+#line 98 "d2_lexer.ll"
-#line 98 "d2_lexer.ll"
+#line 102 "d2_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
of the generated yylex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
}
-#line 1460 "d2_lexer.cc"
+#line 1464 "d2_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
case 1:
YY_RULE_SETUP
-#line 129 "d2_lexer.ll"
+#line 133 "d2_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 131 "d2_lexer.ll"
+#line 135 "d2_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 133 "d2_lexer.ll"
+#line 137 "d2_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 138 "d2_lexer.ll"
+#line 142 "d2_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 139 "d2_lexer.ll"
+#line 143 "d2_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 140 "d2_lexer.ll"
+#line 144 "d2_lexer.ll"
{
isc_throw(D2ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 144 "d2_lexer.ll"
+#line 148 "d2_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 145 "d2_lexer.ll"
+#line 149 "d2_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 146 "d2_lexer.ll"
+#line 150 "d2_lexer.ll"
{
/* Include directive. */
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 155 "d2_lexer.ll"
+#line 159 "d2_lexer.ll"
{
isc_throw(D2ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 158 "d2_lexer.ll"
+#line 162 "d2_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 161 "d2_lexer.ll"
+#line 165 "d2_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 166 "d2_lexer.ll"
+#line 170 "d2_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
driver.loc_.lines(yyleng);
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 172 "d2_lexer.ll"
+#line 176 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::CONFIG:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 181 "d2_lexer.ll"
+#line 185 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 192 "d2_lexer.ll"
+#line 196 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 203 "d2_lexer.ll"
+#line 207 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 212 "d2_lexer.ll"
+#line 216 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 221 "d2_lexer.ll"
+#line 225 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 230 "d2_lexer.ll"
+#line 234 "d2_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::d2::D2ParserContext::NCR_PROTOCOL) {
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 240 "d2_lexer.ll"
+#line 244 "d2_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::d2::D2ParserContext::NCR_PROTOCOL) {
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 250 "d2_lexer.ll"
+#line 254 "d2_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::d2::D2ParserContext::NCR_FORMAT) {
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 260 "d2_lexer.ll"
+#line 264 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 269 "d2_lexer.ll"
+#line 273 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 278 "d2_lexer.ll"
+#line 282 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::FORWARD_DDNS:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 288 "d2_lexer.ll"
+#line 292 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DDNS_DOMAIN:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 298 "d2_lexer.ll"
+#line 302 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DDNS_DOMAIN:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 308 "d2_lexer.ll"
+#line 312 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DNS_SERVER:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 319 "d2_lexer.ll"
+#line 323 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::DHCPDDNS:
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 328 "d2_lexer.ll"
+#line 332 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::TSIG_KEY:
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 338 "d2_lexer.ll"
+#line 342 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::TSIG_KEY:
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 348 "d2_lexer.ll"
+#line 352 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::TSIG_KEY:
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 359 "d2_lexer.ll"
+#line 363 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::CONFIG:
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 368 "d2_lexer.ll"
+#line 372 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::LOGGING:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 377 "d2_lexer.ll"
+#line 381 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::LOGGERS:
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 386 "d2_lexer.ll"
+#line 390 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 395 "d2_lexer.ll"
+#line 399 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 404 "d2_lexer.ll"
+#line 408 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 413 "d2_lexer.ll"
+#line 417 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::OUTPUT_OPTIONS:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 422 "d2_lexer.ll"
+#line 426 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::LOGGERS:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 435 "d2_lexer.ll"
+#line 439 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::LOGGERS:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 444 "d2_lexer.ll"
+#line 448 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::LOGGERS:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 453 "d2_lexer.ll"
+#line 457 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::CONFIG:
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 462 "d2_lexer.ll"
+#line 466 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::CONFIG:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 471 "d2_lexer.ll"
+#line 475 "d2_lexer.ll"
{
switch(driver.ctx_) {
case isc::d2::D2ParserContext::CONFIG:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 481 "d2_lexer.ll"
+#line 485 "d2_lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
case 45:
/* rule 45 can match eol */
YY_RULE_SETUP
-#line 579 "d2_lexer.ll"
+#line 583 "d2_lexer.ll"
{
/* Bad string with a forbidden control character inside */
driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
case 46:
/* rule 46 can match eol */
YY_RULE_SETUP
-#line 584 "d2_lexer.ll"
+#line 588 "d2_lexer.ll"
{
/* Bad string with a bad escape inside */
driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 589 "d2_lexer.ll"
+#line 593 "d2_lexer.ll"
{
/* Bad string with an open escape at the end */
driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 594 "d2_lexer.ll"
+#line 598 "d2_lexer.ll"
{ return isc::d2::D2Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 595 "d2_lexer.ll"
+#line 599 "d2_lexer.ll"
{ return isc::d2::D2Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 596 "d2_lexer.ll"
+#line 600 "d2_lexer.ll"
{ return isc::d2::D2Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 597 "d2_lexer.ll"
+#line 601 "d2_lexer.ll"
{ return isc::d2::D2Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 598 "d2_lexer.ll"
+#line 602 "d2_lexer.ll"
{ return isc::d2::D2Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 599 "d2_lexer.ll"
+#line 603 "d2_lexer.ll"
{ return isc::d2::D2Parser::make_COLON(driver.loc_); }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 601 "d2_lexer.ll"
+#line 605 "d2_lexer.ll"
{
/* An integer was found. */
std::string tmp(yytext);
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 619 "d2_lexer.ll"
+#line 623 "d2_lexer.ll"
{
/* A floating point was found. */
std::string tmp(yytext);
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 632 "d2_lexer.ll"
+#line 636 "d2_lexer.ll"
{
string tmp(yytext);
return isc::d2::D2Parser::make_BOOLEAN(tmp == "true", driver.loc_);
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 637 "d2_lexer.ll"
+#line 641 "d2_lexer.ll"
{
return isc::d2::D2Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 641 "d2_lexer.ll"
+#line 645 "d2_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 643 "d2_lexer.ll"
+#line 647 "d2_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 645 "d2_lexer.ll"
+#line 649 "d2_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 647 "d2_lexer.ll"
+#line 651 "d2_lexer.ll"
driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 649 "d2_lexer.ll"
+#line 653 "d2_lexer.ll"
{
if (driver.states_.empty()) {
return isc::d2::D2Parser::make_END(driver.loc_);
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 672 "d2_lexer.ll"
+#line 676 "d2_lexer.ll"
ECHO;
YY_BREAK
-#line 2285 "d2_lexer.cc"
+#line 2289 "d2_lexer.cc"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 672 "d2_lexer.ll"
+#line 676 "d2_lexer.ll"
using namespace isc::dhcp;
void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
};
}
+#endif /* !__clang_analyzer__ */
/// The return value of parse ().
int yyresult;
- // FIXME: This should be completely indented. It is not yet to
+ // FIXME: This shoud be completely indented. It is not yet to
// avoid gratuitous conflicts when merging into the master branch.
try
{
/// Both variants must be built beforehand, because swapping the actual
/// data requires reading it (with as()), and this is not possible on
/// unconstructed variants: it would require some dynamic testing, which
- /// should not be the variant's responsibility.
+ /// should not be the variant's responsability.
/// Swapping between built and (possibly) non-built is done with
/// variant::move ().
template <typename T>
-// Generated 201707141118
+// Generated 201710081556
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
-// Generated 201707141118
+// Generated 201710081556
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
-// Generated 201707141118
+// Generated 201710081556
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++
static const flex_int16_t yy_rule_linenum[155] =
{ 0,
- 139, 141, 143, 148, 149, 154, 155, 156, 168, 171,
- 176, 183, 192, 201, 210, 219, 229, 238, 247, 256,
- 265, 274, 285, 294, 303, 312, 321, 331, 341, 351,
- 361, 371, 381, 391, 401, 411, 422, 433, 444, 453,
- 463, 472, 482, 497, 513, 522, 531, 540, 549, 559,
- 568, 578, 587, 596, 605, 615, 624, 633, 642, 651,
- 661, 670, 679, 688, 697, 706, 715, 724, 733, 742,
- 751, 761, 772, 782, 791, 801, 811, 821, 831, 841,
- 850, 860, 869, 878, 887, 896, 906, 916, 926, 935,
- 944, 953, 962, 971, 980, 989, 998, 1007, 1016, 1025,
-
- 1034, 1043, 1052, 1061, 1070, 1079, 1088, 1097, 1106, 1115,
- 1124, 1133, 1142, 1151, 1160, 1169, 1178, 1188, 1198, 1208,
- 1218, 1228, 1238, 1248, 1258, 1268, 1277, 1286, 1295, 1304,
- 1313, 1322, 1333, 1344, 1357, 1368, 1381, 1479, 1484, 1489,
- 1494, 1495, 1496, 1497, 1498, 1499, 1501, 1519, 1532, 1537,
- 1541, 1543, 1545, 1547
+ 143, 145, 147, 152, 153, 158, 159, 160, 172, 175,
+ 180, 187, 196, 205, 214, 223, 233, 242, 251, 260,
+ 269, 278, 289, 298, 307, 316, 325, 335, 345, 355,
+ 365, 375, 385, 395, 405, 415, 426, 437, 448, 457,
+ 467, 476, 486, 501, 517, 526, 535, 544, 553, 563,
+ 572, 582, 591, 600, 609, 619, 628, 637, 646, 655,
+ 665, 674, 683, 692, 701, 710, 719, 728, 737, 746,
+ 755, 765, 776, 786, 795, 805, 815, 825, 835, 845,
+ 854, 864, 873, 882, 891, 900, 910, 920, 930, 939,
+ 948, 957, 966, 975, 984, 993, 1002, 1011, 1020, 1029,
+
+ 1038, 1047, 1056, 1065, 1074, 1083, 1092, 1101, 1110, 1119,
+ 1128, 1137, 1146, 1155, 1164, 1173, 1182, 1192, 1202, 1212,
+ 1222, 1232, 1242, 1252, 1262, 1272, 1281, 1290, 1299, 1308,
+ 1317, 1326, 1337, 1348, 1361, 1372, 1385, 1483, 1488, 1493,
+ 1498, 1499, 1500, 1501, 1502, 1503, 1505, 1523, 1536, 1541,
+ 1545, 1547, 1549, 1551
} ;
/* The intent behind this definition is that it'll catch
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#line 8 "dhcp4_lexer.ll"
+
+/* Generated files do not make clang static analyser so happy */
+#ifndef __clang_analyzer__
+
#include <cerrno>
#include <climits>
#include <cstdlib>
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1621 "dhcp4_lexer.cc"
+#line 1625 "dhcp4_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
-#line 90 "dhcp4_lexer.ll"
+#line 94 "dhcp4_lexer.ll"
/* This code run each time a pattern is matched. It updates the location
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1647 "dhcp4_lexer.cc"
-#line 1648 "dhcp4_lexer.cc"
+#line 1651 "dhcp4_lexer.cc"
+#line 1652 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
{
/* %% [7.0] user's declarations go here */
-#line 96 "dhcp4_lexer.ll"
+#line 100 "dhcp4_lexer.ll"
-#line 100 "dhcp4_lexer.ll"
+#line 104 "dhcp4_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
of the generated yylex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
}
-#line 1974 "dhcp4_lexer.cc"
+#line 1978 "dhcp4_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
case 1:
YY_RULE_SETUP
-#line 139 "dhcp4_lexer.ll"
+#line 143 "dhcp4_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 141 "dhcp4_lexer.ll"
+#line 145 "dhcp4_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 143 "dhcp4_lexer.ll"
+#line 147 "dhcp4_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 148 "dhcp4_lexer.ll"
+#line 152 "dhcp4_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 149 "dhcp4_lexer.ll"
+#line 153 "dhcp4_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 150 "dhcp4_lexer.ll"
+#line 154 "dhcp4_lexer.ll"
{
isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 154 "dhcp4_lexer.ll"
+#line 158 "dhcp4_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 155 "dhcp4_lexer.ll"
+#line 159 "dhcp4_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 156 "dhcp4_lexer.ll"
+#line 160 "dhcp4_lexer.ll"
{
/* Include directive. */
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 165 "dhcp4_lexer.ll"
+#line 169 "dhcp4_lexer.ll"
{
isc_throw(Dhcp4ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 168 "dhcp4_lexer.ll"
+#line 172 "dhcp4_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 171 "dhcp4_lexer.ll"
+#line 175 "dhcp4_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 176 "dhcp4_lexer.ll"
+#line 180 "dhcp4_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
driver.loc_.lines(yyleng);
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 183 "dhcp4_lexer.ll"
+#line 187 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 192 "dhcp4_lexer.ll"
+#line 196 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 201 "dhcp4_lexer.ll"
+#line 205 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 210 "dhcp4_lexer.ll"
+#line 214 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 219 "dhcp4_lexer.ll"
+#line 223 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 229 "dhcp4_lexer.ll"
+#line 233 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 238 "dhcp4_lexer.ll"
+#line 242 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 247 "dhcp4_lexer.ll"
+#line 251 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 256 "dhcp4_lexer.ll"
+#line 260 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 265 "dhcp4_lexer.ll"
+#line 269 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOSTS_DATABASE:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 274 "dhcp4_lexer.ll"
+#line 278 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 285 "dhcp4_lexer.ll"
+#line 289 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 294 "dhcp4_lexer.ll"
+#line 298 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 303 "dhcp4_lexer.ll"
+#line 307 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 312 "dhcp4_lexer.ll"
+#line 316 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 321 "dhcp4_lexer.ll"
+#line 325 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 331 "dhcp4_lexer.ll"
+#line 335 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 341 "dhcp4_lexer.ll"
+#line 345 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 351 "dhcp4_lexer.ll"
+#line 355 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 361 "dhcp4_lexer.ll"
+#line 365 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 371 "dhcp4_lexer.ll"
+#line 375 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 381 "dhcp4_lexer.ll"
+#line 385 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 391 "dhcp4_lexer.ll"
+#line 395 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 401 "dhcp4_lexer.ll"
+#line 405 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 411 "dhcp4_lexer.ll"
+#line 415 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 422 "dhcp4_lexer.ll"
+#line 426 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 433 "dhcp4_lexer.ll"
+#line 437 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 444 "dhcp4_lexer.ll"
+#line 448 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 453 "dhcp4_lexer.ll"
+#line 457 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 463 "dhcp4_lexer.ll"
+#line 467 "dhcp4_lexer.ll"
{
switch (driver.ctx_) {
case Parser4Context::DHCP4:
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 472 "dhcp4_lexer.ll"
+#line 476 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 482 "dhcp4_lexer.ll"
+#line 486 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 497 "dhcp4_lexer.ll"
+#line 501 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 513 "dhcp4_lexer.ll"
+#line 517 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 522 "dhcp4_lexer.ll"
+#line 526 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 531 "dhcp4_lexer.ll"
+#line 535 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 540 "dhcp4_lexer.ll"
+#line 544 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::POOLS:
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 549 "dhcp4_lexer.ll"
+#line 553 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 559 "dhcp4_lexer.ll"
+#line 563 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 568 "dhcp4_lexer.ll"
+#line 572 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 578 "dhcp4_lexer.ll"
+#line 582 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 587 "dhcp4_lexer.ll"
+#line 591 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 596 "dhcp4_lexer.ll"
+#line 600 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 605 "dhcp4_lexer.ll"
+#line 609 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 615 "dhcp4_lexer.ll"
+#line 619 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 624 "dhcp4_lexer.ll"
+#line 628 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 633 "dhcp4_lexer.ll"
+#line 637 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 642 "dhcp4_lexer.ll"
+#line 646 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 651 "dhcp4_lexer.ll"
+#line 655 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 661 "dhcp4_lexer.ll"
+#line 665 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 670 "dhcp4_lexer.ll"
+#line 674 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 679 "dhcp4_lexer.ll"
+#line 683 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGING:
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 688 "dhcp4_lexer.ll"
+#line 692 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 697 "dhcp4_lexer.ll"
+#line 701 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 706 "dhcp4_lexer.ll"
+#line 710 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 715 "dhcp4_lexer.ll"
+#line 719 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 724 "dhcp4_lexer.ll"
+#line 728 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 733 "dhcp4_lexer.ll"
+#line 737 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 742 "dhcp4_lexer.ll"
+#line 746 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 751 "dhcp4_lexer.ll"
+#line 755 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 761 "dhcp4_lexer.ll"
+#line 765 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 772 "dhcp4_lexer.ll"
+#line 776 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 782 "dhcp4_lexer.ll"
+#line 786 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 791 "dhcp4_lexer.ll"
+#line 795 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 801 "dhcp4_lexer.ll"
+#line 805 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 811 "dhcp4_lexer.ll"
+#line 815 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 821 "dhcp4_lexer.ll"
+#line 825 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 831 "dhcp4_lexer.ll"
+#line 835 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 841 "dhcp4_lexer.ll"
+#line 845 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATIONS:
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 850 "dhcp4_lexer.ll"
+#line 854 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 860 "dhcp4_lexer.ll"
+#line 864 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 869 "dhcp4_lexer.ll"
+#line 873 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 878 "dhcp4_lexer.ll"
+#line 882 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 887 "dhcp4_lexer.ll"
+#line 891 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 896 "dhcp4_lexer.ll"
+#line 900 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 906 "dhcp4_lexer.ll"
+#line 910 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 916 "dhcp4_lexer.ll"
+#line 920 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 926 "dhcp4_lexer.ll"
+#line 930 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 935 "dhcp4_lexer.ll"
+#line 939 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 944 "dhcp4_lexer.ll"
+#line 948 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 953 "dhcp4_lexer.ll"
+#line 957 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 962 "dhcp4_lexer.ll"
+#line 966 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 971 "dhcp4_lexer.ll"
+#line 975 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 980 "dhcp4_lexer.ll"
+#line 984 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 989 "dhcp4_lexer.ll"
+#line 993 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 998 "dhcp4_lexer.ll"
+#line 1002 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1007 "dhcp4_lexer.ll"
+#line 1011 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1016 "dhcp4_lexer.ll"
+#line 1020 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 1025 "dhcp4_lexer.ll"
+#line 1029 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 1034 "dhcp4_lexer.ll"
+#line 1038 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 1043 "dhcp4_lexer.ll"
+#line 1047 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 1052 "dhcp4_lexer.ll"
+#line 1056 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 1061 "dhcp4_lexer.ll"
+#line 1065 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 1070 "dhcp4_lexer.ll"
+#line 1074 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 1079 "dhcp4_lexer.ll"
+#line 1083 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 1088 "dhcp4_lexer.ll"
+#line 1092 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 1097 "dhcp4_lexer.ll"
+#line 1101 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 1106 "dhcp4_lexer.ll"
+#line 1110 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 1115 "dhcp4_lexer.ll"
+#line 1119 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 1124 "dhcp4_lexer.ll"
+#line 1128 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 1133 "dhcp4_lexer.ll"
+#line 1137 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 1142 "dhcp4_lexer.ll"
+#line 1146 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 1151 "dhcp4_lexer.ll"
+#line 1155 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 1160 "dhcp4_lexer.ll"
+#line 1164 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 1169 "dhcp4_lexer.ll"
+#line 1173 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 1178 "dhcp4_lexer.ll"
+#line 1182 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 1188 "dhcp4_lexer.ll"
+#line 1192 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 1198 "dhcp4_lexer.ll"
+#line 1202 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 1208 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 1218 "dhcp4_lexer.ll"
+#line 1222 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 1228 "dhcp4_lexer.ll"
+#line 1232 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 1238 "dhcp4_lexer.ll"
+#line 1242 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 1248 "dhcp4_lexer.ll"
+#line 1252 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 1258 "dhcp4_lexer.ll"
+#line 1262 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 1268 "dhcp4_lexer.ll"
+#line 1272 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 1277 "dhcp4_lexer.ll"
+#line 1281 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 1286 "dhcp4_lexer.ll"
+#line 1290 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 1295 "dhcp4_lexer.ll"
+#line 1299 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 1304 "dhcp4_lexer.ll"
+#line 1308 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 1313 "dhcp4_lexer.ll"
+#line 1317 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 1322 "dhcp4_lexer.ll"
+#line 1326 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 1333 "dhcp4_lexer.ll"
+#line 1337 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 1344 "dhcp4_lexer.ll"
+#line 1348 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 1357 "dhcp4_lexer.ll"
+#line 1361 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 1368 "dhcp4_lexer.ll"
+#line 1372 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 1381 "dhcp4_lexer.ll"
+#line 1385 "dhcp4_lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
case 138:
/* rule 138 can match eol */
YY_RULE_SETUP
-#line 1479 "dhcp4_lexer.ll"
+#line 1483 "dhcp4_lexer.ll"
{
/* Bad string with a forbidden control character inside */
driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
case 139:
/* rule 139 can match eol */
YY_RULE_SETUP
-#line 1484 "dhcp4_lexer.ll"
+#line 1488 "dhcp4_lexer.ll"
{
/* Bad string with a bad escape inside */
driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 1489 "dhcp4_lexer.ll"
+#line 1493 "dhcp4_lexer.ll"
{
/* Bad string with an open escape at the end */
driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 1494 "dhcp4_lexer.ll"
+#line 1498 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1499 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 1496 "dhcp4_lexer.ll"
+#line 1500 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 1497 "dhcp4_lexer.ll"
+#line 1501 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 1498 "dhcp4_lexer.ll"
+#line 1502 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 1499 "dhcp4_lexer.ll"
+#line 1503 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 1501 "dhcp4_lexer.ll"
+#line 1505 "dhcp4_lexer.ll"
{
/* An integer was found. */
std::string tmp(yytext);
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 1519 "dhcp4_lexer.ll"
+#line 1523 "dhcp4_lexer.ll"
{
/* A floating point was found. */
std::string tmp(yytext);
YY_BREAK
case 149:
YY_RULE_SETUP
-#line 1532 "dhcp4_lexer.ll"
+#line 1536 "dhcp4_lexer.ll"
{
string tmp(yytext);
return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 1537 "dhcp4_lexer.ll"
+#line 1541 "dhcp4_lexer.ll"
{
return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 151:
YY_RULE_SETUP
-#line 1541 "dhcp4_lexer.ll"
+#line 1545 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 1543 "dhcp4_lexer.ll"
+#line 1547 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 1545 "dhcp4_lexer.ll"
+#line 1549 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 1547 "dhcp4_lexer.ll"
+#line 1551 "dhcp4_lexer.ll"
driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 1549 "dhcp4_lexer.ll"
+#line 1553 "dhcp4_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 1572 "dhcp4_lexer.ll"
+#line 1576 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 3967 "dhcp4_lexer.cc"
+#line 3971 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 1572 "dhcp4_lexer.ll"
+#line 1576 "dhcp4_lexer.ll"
using namespace isc::dhcp;
void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
};
}
+#endif /* !__clang_analyzer__ */
static const flex_int16_t yy_rule_linenum[161] =
{ 0,
- 141, 143, 145, 150, 151, 156, 157, 158, 170, 173,
- 178, 185, 194, 203, 212, 221, 230, 239, 248, 257,
- 266, 275, 284, 293, 302, 311, 321, 331, 341, 351,
- 361, 371, 381, 391, 401, 410, 419, 428, 437, 446,
- 455, 464, 476, 485, 494, 503, 512, 522, 532, 542,
- 552, 563, 573, 583, 593, 603, 614, 625, 636, 647,
- 656, 666, 675, 684, 700, 716, 725, 734, 743, 752,
- 761, 770, 779, 788, 797, 806, 817, 826, 836, 846,
- 855, 865, 875, 884, 893, 902, 911, 921, 930, 939,
- 948, 957, 966, 975, 984, 993, 1002, 1012, 1021, 1030,
-
- 1040, 1051, 1061, 1070, 1079, 1088, 1099, 1109, 1118, 1128,
- 1138, 1147, 1156, 1165, 1174, 1184, 1193, 1203, 1212, 1221,
- 1230, 1239, 1248, 1257, 1266, 1275, 1284, 1293, 1302, 1311,
- 1320, 1329, 1338, 1347, 1356, 1365, 1374, 1383, 1392, 1401,
- 1410, 1419, 1429, 1527, 1532, 1537, 1542, 1543, 1544, 1545,
- 1546, 1547, 1549, 1567, 1580, 1585, 1589, 1591, 1593, 1595
+ 145, 147, 149, 154, 155, 160, 161, 162, 174, 177,
+ 182, 189, 198, 207, 216, 225, 234, 243, 252, 261,
+ 270, 279, 288, 297, 306, 315, 325, 335, 345, 355,
+ 365, 375, 385, 395, 405, 414, 423, 432, 441, 450,
+ 459, 468, 480, 489, 498, 507, 516, 526, 536, 546,
+ 556, 567, 577, 587, 597, 607, 618, 629, 640, 651,
+ 660, 670, 679, 688, 704, 720, 729, 738, 747, 756,
+ 765, 774, 783, 792, 801, 810, 821, 830, 840, 850,
+ 859, 869, 879, 888, 897, 906, 915, 925, 934, 943,
+ 952, 961, 970, 979, 988, 997, 1006, 1016, 1025, 1034,
+
+ 1044, 1055, 1065, 1074, 1083, 1092, 1103, 1113, 1122, 1132,
+ 1142, 1151, 1160, 1169, 1178, 1188, 1197, 1207, 1216, 1225,
+ 1234, 1243, 1252, 1261, 1270, 1279, 1288, 1297, 1306, 1315,
+ 1324, 1333, 1342, 1351, 1360, 1369, 1378, 1387, 1396, 1405,
+ 1414, 1423, 1433, 1531, 1536, 1541, 1546, 1547, 1548, 1549,
+ 1550, 1551, 1553, 1571, 1584, 1589, 1593, 1595, 1597, 1599
} ;
/* The intent behind this definition is that it'll catch
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#line 8 "dhcp6_lexer.ll"
+
+/* Generated files do not make clang static analyser so happy */
+#ifndef __clang_analyzer__
+
#include <cerrno>
#include <climits>
#include <cstdlib>
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1633 "dhcp6_lexer.cc"
+#line 1637 "dhcp6_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
/* for errors */
-#line 90 "dhcp6_lexer.ll"
+#line 94 "dhcp6_lexer.ll"
/* This code run each time a pattern is matched. It updates the location
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1659 "dhcp6_lexer.cc"
-#line 1660 "dhcp6_lexer.cc"
+#line 1663 "dhcp6_lexer.cc"
+#line 1664 "dhcp6_lexer.cc"
#define INITIAL 0
#define COMMENT 1
{
/* %% [7.0] user's declarations go here */
-#line 96 "dhcp6_lexer.ll"
+#line 100 "dhcp6_lexer.ll"
-#line 100 "dhcp6_lexer.ll"
+#line 104 "dhcp6_lexer.ll"
/* This part of the code is copied over to the verbatim to the top
of the generated yylex function. Explanation:
http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
}
-#line 1988 "dhcp6_lexer.cc"
+#line 1992 "dhcp6_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
case 1:
YY_RULE_SETUP
-#line 141 "dhcp6_lexer.ll"
+#line 145 "dhcp6_lexer.ll"
;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 143 "dhcp6_lexer.ll"
+#line 147 "dhcp6_lexer.ll"
;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 145 "dhcp6_lexer.ll"
+#line 149 "dhcp6_lexer.ll"
{
BEGIN(COMMENT);
comment_start_line = driver.loc_.end.line;;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 150 "dhcp6_lexer.ll"
+#line 154 "dhcp6_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 151 "dhcp6_lexer.ll"
+#line 155 "dhcp6_lexer.ll"
;
YY_BREAK
case YY_STATE_EOF(COMMENT):
-#line 152 "dhcp6_lexer.ll"
+#line 156 "dhcp6_lexer.ll"
{
isc_throw(Dhcp6ParseError, "Comment not closed. (/* in line " << comment_start_line);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 156 "dhcp6_lexer.ll"
+#line 160 "dhcp6_lexer.ll"
BEGIN(DIR_ENTER);
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 157 "dhcp6_lexer.ll"
+#line 161 "dhcp6_lexer.ll"
BEGIN(DIR_INCLUDE);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 158 "dhcp6_lexer.ll"
+#line 162 "dhcp6_lexer.ll"
{
/* Include directive. */
case YY_STATE_EOF(DIR_ENTER):
case YY_STATE_EOF(DIR_INCLUDE):
case YY_STATE_EOF(DIR_EXIT):
-#line 167 "dhcp6_lexer.ll"
+#line 171 "dhcp6_lexer.ll"
{
isc_throw(Dhcp6ParseError, "Directive not closed.");
}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 170 "dhcp6_lexer.ll"
+#line 174 "dhcp6_lexer.ll"
BEGIN(INITIAL);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 173 "dhcp6_lexer.ll"
+#line 177 "dhcp6_lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
driver.loc_.step();
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 178 "dhcp6_lexer.ll"
+#line 182 "dhcp6_lexer.ll"
{
/* Newline found. Let's update the location and continue. */
driver.loc_.lines(yyleng);
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 185 "dhcp6_lexer.ll"
+#line 189 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 194 "dhcp6_lexer.ll"
+#line 198 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 203 "dhcp6_lexer.ll"
+#line 207 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 212 "dhcp6_lexer.ll"
+#line 216 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 221 "dhcp6_lexer.ll"
+#line 225 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 230 "dhcp6_lexer.ll"
+#line 234 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 239 "dhcp6_lexer.ll"
+#line 243 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 248 "dhcp6_lexer.ll"
+#line 252 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 257 "dhcp6_lexer.ll"
+#line 261 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 266 "dhcp6_lexer.ll"
+#line 270 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 275 "dhcp6_lexer.ll"
+#line 279 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 284 "dhcp6_lexer.ll"
+#line 288 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 293 "dhcp6_lexer.ll"
+#line 297 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 302 "dhcp6_lexer.ll"
+#line 306 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP_DDNS:
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 311 "dhcp6_lexer.ll"
+#line 315 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 321 "dhcp6_lexer.ll"
+#line 325 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 331 "dhcp6_lexer.ll"
+#line 335 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_FORMAT) {
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 341 "dhcp6_lexer.ll"
+#line 345 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 351 "dhcp6_lexer.ll"
+#line 355 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 361 "dhcp6_lexer.ll"
+#line 365 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 371 "dhcp6_lexer.ll"
+#line 375 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 381 "dhcp6_lexer.ll"
+#line 385 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 391 "dhcp6_lexer.ll"
+#line 395 "dhcp6_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 401 "dhcp6_lexer.ll"
+#line 405 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 410 "dhcp6_lexer.ll"
+#line 414 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 419 "dhcp6_lexer.ll"
+#line 423 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 428 "dhcp6_lexer.ll"
+#line 432 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 437 "dhcp6_lexer.ll"
+#line 441 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 446 "dhcp6_lexer.ll"
+#line 450 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 455 "dhcp6_lexer.ll"
+#line 459 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOSTS_DATABASE:
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 464 "dhcp6_lexer.ll"
+#line 468 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 476 "dhcp6_lexer.ll"
+#line 480 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 485 "dhcp6_lexer.ll"
+#line 489 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 494 "dhcp6_lexer.ll"
+#line 498 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 503 "dhcp6_lexer.ll"
+#line 507 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 512 "dhcp6_lexer.ll"
+#line 516 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 522 "dhcp6_lexer.ll"
+#line 526 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 532 "dhcp6_lexer.ll"
+#line 536 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 542 "dhcp6_lexer.ll"
+#line 546 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 552 "dhcp6_lexer.ll"
+#line 556 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 563 "dhcp6_lexer.ll"
+#line 567 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 573 "dhcp6_lexer.ll"
+#line 577 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 583 "dhcp6_lexer.ll"
+#line 587 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 593 "dhcp6_lexer.ll"
+#line 597 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 603 "dhcp6_lexer.ll"
+#line 607 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 614 "dhcp6_lexer.ll"
+#line 618 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 625 "dhcp6_lexer.ll"
+#line 629 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 636 "dhcp6_lexer.ll"
+#line 640 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 647 "dhcp6_lexer.ll"
+#line 651 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 656 "dhcp6_lexer.ll"
+#line 660 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 666 "dhcp6_lexer.ll"
+#line 670 "dhcp6_lexer.ll"
{
switch (driver.ctx_) {
case Parser6Context::DHCP6:
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 675 "dhcp6_lexer.ll"
+#line 679 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 684 "dhcp6_lexer.ll"
+#line 688 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 700 "dhcp6_lexer.ll"
+#line 704 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 716 "dhcp6_lexer.ll"
+#line 720 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 725 "dhcp6_lexer.ll"
+#line 729 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 734 "dhcp6_lexer.ll"
+#line 738 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 743 "dhcp6_lexer.ll"
+#line 747 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 752 "dhcp6_lexer.ll"
+#line 756 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 761 "dhcp6_lexer.ll"
+#line 765 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 770 "dhcp6_lexer.ll"
+#line 774 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 779 "dhcp6_lexer.ll"
+#line 783 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 788 "dhcp6_lexer.ll"
+#line 792 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::PD_POOLS:
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 797 "dhcp6_lexer.ll"
+#line 801 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::POOLS:
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 806 "dhcp6_lexer.ll"
+#line 810 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::POOLS:
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 817 "dhcp6_lexer.ll"
+#line 821 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 826 "dhcp6_lexer.ll"
+#line 830 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 836 "dhcp6_lexer.ll"
+#line 840 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 846 "dhcp6_lexer.ll"
+#line 850 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 855 "dhcp6_lexer.ll"
+#line 859 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 865 "dhcp6_lexer.ll"
+#line 869 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 875 "dhcp6_lexer.ll"
+#line 879 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 884 "dhcp6_lexer.ll"
+#line 888 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 893 "dhcp6_lexer.ll"
+#line 897 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 902 "dhcp6_lexer.ll"
+#line 906 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 911 "dhcp6_lexer.ll"
+#line 915 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 921 "dhcp6_lexer.ll"
+#line 925 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 930 "dhcp6_lexer.ll"
+#line 934 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 939 "dhcp6_lexer.ll"
+#line 943 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 948 "dhcp6_lexer.ll"
+#line 952 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 957 "dhcp6_lexer.ll"
+#line 961 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGING:
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 966 "dhcp6_lexer.ll"
+#line 970 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 975 "dhcp6_lexer.ll"
+#line 979 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 984 "dhcp6_lexer.ll"
+#line 988 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 993 "dhcp6_lexer.ll"
+#line 997 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 1002 "dhcp6_lexer.ll"
+#line 1006 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1012 "dhcp6_lexer.ll"
+#line 1016 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1021 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 1030 "dhcp6_lexer.ll"
+#line 1034 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 1040 "dhcp6_lexer.ll"
+#line 1044 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 1051 "dhcp6_lexer.ll"
+#line 1055 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CLIENT_CLASSES:
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 1061 "dhcp6_lexer.ll"
+#line 1065 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 1070 "dhcp6_lexer.ll"
+#line 1074 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 1079 "dhcp6_lexer.ll"
+#line 1083 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 1088 "dhcp6_lexer.ll"
+#line 1092 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::MAC_SOURCES:
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 1099 "dhcp6_lexer.ll"
+#line 1103 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 1109 "dhcp6_lexer.ll"
+#line 1113 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 1118 "dhcp6_lexer.ll"
+#line 1122 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 1128 "dhcp6_lexer.ll"
+#line 1132 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 1138 "dhcp6_lexer.ll"
+#line 1142 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 1147 "dhcp6_lexer.ll"
+#line 1151 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 1156 "dhcp6_lexer.ll"
+#line 1160 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 1165 "dhcp6_lexer.ll"
+#line 1169 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DEF:
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 1174 "dhcp6_lexer.ll"
+#line 1178 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 1184 "dhcp6_lexer.ll"
+#line 1188 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RELAY:
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 1193 "dhcp6_lexer.ll"
+#line 1197 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 1203 "dhcp6_lexer.ll"
+#line 1207 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 1212 "dhcp6_lexer.ll"
+#line 1216 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 1221 "dhcp6_lexer.ll"
+#line 1225 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 1230 "dhcp6_lexer.ll"
+#line 1234 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DUID_TYPE:
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 1239 "dhcp6_lexer.ll"
+#line 1243 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DUID_TYPE:
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 1248 "dhcp6_lexer.ll"
+#line 1252 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DUID_TYPE:
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 1257 "dhcp6_lexer.ll"
+#line 1261 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 1266 "dhcp6_lexer.ll"
+#line 1270 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 1275 "dhcp6_lexer.ll"
+#line 1279 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 127:
YY_RULE_SETUP
-#line 1284 "dhcp6_lexer.ll"
+#line 1288 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SERVER_ID:
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 1293 "dhcp6_lexer.ll"
+#line 1297 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 129:
YY_RULE_SETUP
-#line 1302 "dhcp6_lexer.ll"
+#line 1306 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 1311 "dhcp6_lexer.ll"
+#line 1315 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 1320 "dhcp6_lexer.ll"
+#line 1324 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 1329 "dhcp6_lexer.ll"
+#line 1333 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 1338 "dhcp6_lexer.ll"
+#line 1342 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 1347 "dhcp6_lexer.ll"
+#line 1351 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 1356 "dhcp6_lexer.ll"
+#line 1360 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 1365 "dhcp6_lexer.ll"
+#line 1369 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 1374 "dhcp6_lexer.ll"
+#line 1378 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONTROL_SOCKET:
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 1383 "dhcp6_lexer.ll"
+#line 1387 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONTROL_SOCKET:
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 1392 "dhcp6_lexer.ll"
+#line 1396 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 1401 "dhcp6_lexer.ll"
+#line 1405 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 1410 "dhcp6_lexer.ll"
+#line 1414 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 1419 "dhcp6_lexer.ll"
+#line 1423 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 1429 "dhcp6_lexer.ll"
+#line 1433 "dhcp6_lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
case 144:
/* rule 144 can match eol */
YY_RULE_SETUP
-#line 1527 "dhcp6_lexer.ll"
+#line 1531 "dhcp6_lexer.ll"
{
/* Bad string with a forbidden control character inside */
driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
case 145:
/* rule 145 can match eol */
YY_RULE_SETUP
-#line 1532 "dhcp6_lexer.ll"
+#line 1536 "dhcp6_lexer.ll"
{
/* Bad string with a bad escape inside */
driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 1537 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
{
/* Bad string with an open escape at the end */
driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 1542 "dhcp6_lexer.ll"
+#line 1546 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 1543 "dhcp6_lexer.ll"
+#line 1547 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 149:
YY_RULE_SETUP
-#line 1544 "dhcp6_lexer.ll"
+#line 1548 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 150:
YY_RULE_SETUP
-#line 1545 "dhcp6_lexer.ll"
+#line 1549 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 151:
YY_RULE_SETUP
-#line 1546 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 152:
YY_RULE_SETUP
-#line 1547 "dhcp6_lexer.ll"
+#line 1551 "dhcp6_lexer.ll"
{ return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 1549 "dhcp6_lexer.ll"
+#line 1553 "dhcp6_lexer.ll"
{
/* An integer was found. */
std::string tmp(yytext);
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 1567 "dhcp6_lexer.ll"
+#line 1571 "dhcp6_lexer.ll"
{
/* A floating point was found. */
std::string tmp(yytext);
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 1580 "dhcp6_lexer.ll"
+#line 1584 "dhcp6_lexer.ll"
{
string tmp(yytext);
return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 1585 "dhcp6_lexer.ll"
+#line 1589 "dhcp6_lexer.ll"
{
return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
case 157:
YY_RULE_SETUP
-#line 1589 "dhcp6_lexer.ll"
+#line 1593 "dhcp6_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 1591 "dhcp6_lexer.ll"
+#line 1595 "dhcp6_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 1593 "dhcp6_lexer.ll"
+#line 1597 "dhcp6_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
case 160:
YY_RULE_SETUP
-#line 1595 "dhcp6_lexer.ll"
+#line 1599 "dhcp6_lexer.ll"
driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 1597 "dhcp6_lexer.ll"
+#line 1601 "dhcp6_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
YY_BREAK
case 161:
YY_RULE_SETUP
-#line 1620 "dhcp6_lexer.ll"
+#line 1624 "dhcp6_lexer.ll"
ECHO;
YY_BREAK
-#line 4045 "dhcp6_lexer.cc"
+#line 4049 "dhcp6_lexer.cc"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 1620 "dhcp6_lexer.ll"
+#line 1624 "dhcp6_lexer.ll"
using namespace isc::dhcp;
void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
};
}
+#endif /* !__clang_analyzer__ */
static const flex_int16_t yy_rule_linenum[52] =
{ 0,
- 102, 107, 113, 123, 129, 147, 154, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211
+ 106, 111, 117, 127, 133, 151, 158, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215
} ;
static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#line 8 "lexer.ll"
+
+/* Generated files do not make clang static analyser so happy */
+#ifndef __clang_analyzer__
+
#include <cerrno>
#include <climits>
#include <cstdlib>
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg)
-#line 1044 "lexer.cc"
+#line 1048 "lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
/* These are not token expressions yet, just convenience expressions that
can be used during actual token definitions. Note some can match
incorrect inputs (e.g., IP addresses) which must be checked. */
-#line 76 "lexer.ll"
+#line 80 "lexer.ll"
/* This code run each time a pattern is matched. It updates the location
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION loc.columns(evalleng);
-#line 1069 "lexer.cc"
-#line 1070 "lexer.cc"
+#line 1073 "lexer.cc"
+#line 1074 "lexer.cc"
#define INITIAL 0
{
/* %% [7.0] user's declarations go here */
-#line 82 "lexer.ll"
+#line 86 "lexer.ll"
-#line 86 "lexer.ll"
+#line 90 "lexer.ll"
/* Code run each time evallex is called. */
loc.step();
-#line 1375 "lexer.cc"
+#line 1379 "lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
/* %% [13.0] actions go here */
case 1:
YY_RULE_SETUP
-#line 102 "lexer.ll"
+#line 106 "lexer.ll"
{
/* Ok, we found a with space. Let's ignore it and update loc variable. */
loc.step();
case 2:
/* rule 2 can match eol */
YY_RULE_SETUP
-#line 107 "lexer.ll"
+#line 111 "lexer.ll"
{
/* Newline found. Let's update the location and continue. */
loc.lines(evalleng);
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 113 "lexer.ll"
+#line 117 "lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 123 "lexer.ll"
+#line 127 "lexer.ll"
{
/* A hex string has been matched. It contains the '0x' or '0X' header
followed by at least one hexadecimal digit. */
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 129 "lexer.ll"
+#line 133 "lexer.ll"
{
/* An integer was found. */
std::string tmp(evaltext);
case 6:
/* rule 6 can match eol */
YY_RULE_SETUP
-#line 147 "lexer.ll"
+#line 151 "lexer.ll"
{
/* This string specifies option name starting with a letter
and further containing letters, digits, hyphens and
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 154 "lexer.ll"
+#line 158 "lexer.ll"
{
/* IPv4 or IPv6 address */
std::string tmp(evaltext);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 168 "lexer.ll"
+#line 172 "lexer.ll"
return isc::eval::EvalParser::make_EQUAL(loc);
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 169 "lexer.ll"
+#line 173 "lexer.ll"
return isc::eval::EvalParser::make_OPTION(loc);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 170 "lexer.ll"
+#line 174 "lexer.ll"
return isc::eval::EvalParser::make_RELAY4(loc);
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 171 "lexer.ll"
+#line 175 "lexer.ll"
return isc::eval::EvalParser::make_RELAY6(loc);
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 172 "lexer.ll"
+#line 176 "lexer.ll"
return isc::eval::EvalParser::make_PEERADDR(loc);
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 173 "lexer.ll"
+#line 177 "lexer.ll"
return isc::eval::EvalParser::make_LINKADDR(loc);
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 174 "lexer.ll"
+#line 178 "lexer.ll"
return isc::eval::EvalParser::make_TEXT(loc);
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 175 "lexer.ll"
+#line 179 "lexer.ll"
return isc::eval::EvalParser::make_HEX(loc);
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 176 "lexer.ll"
+#line 180 "lexer.ll"
return isc::eval::EvalParser::make_EXISTS(loc);
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 177 "lexer.ll"
+#line 181 "lexer.ll"
return isc::eval::EvalParser::make_PKT(loc);
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 178 "lexer.ll"
+#line 182 "lexer.ll"
return isc::eval::EvalParser::make_IFACE(loc);
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 179 "lexer.ll"
+#line 183 "lexer.ll"
return isc::eval::EvalParser::make_SRC(loc);
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 180 "lexer.ll"
+#line 184 "lexer.ll"
return isc::eval::EvalParser::make_DST(loc);
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 181 "lexer.ll"
+#line 185 "lexer.ll"
return isc::eval::EvalParser::make_LEN(loc);
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 182 "lexer.ll"
+#line 186 "lexer.ll"
return isc::eval::EvalParser::make_PKT4(loc);
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 183 "lexer.ll"
+#line 187 "lexer.ll"
return isc::eval::EvalParser::make_CHADDR(loc);
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 184 "lexer.ll"
+#line 188 "lexer.ll"
return isc::eval::EvalParser::make_HLEN(loc);
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 185 "lexer.ll"
+#line 189 "lexer.ll"
return isc::eval::EvalParser::make_HTYPE(loc);
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 186 "lexer.ll"
+#line 190 "lexer.ll"
return isc::eval::EvalParser::make_CIADDR(loc);
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 187 "lexer.ll"
+#line 191 "lexer.ll"
return isc::eval::EvalParser::make_GIADDR(loc);
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 188 "lexer.ll"
+#line 192 "lexer.ll"
return isc::eval::EvalParser::make_YIADDR(loc);
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 189 "lexer.ll"
+#line 193 "lexer.ll"
return isc::eval::EvalParser::make_SIADDR(loc);
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 190 "lexer.ll"
+#line 194 "lexer.ll"
return isc::eval::EvalParser::make_PKT6(loc);
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 191 "lexer.ll"
+#line 195 "lexer.ll"
return isc::eval::EvalParser::make_MSGTYPE(loc);
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 192 "lexer.ll"
+#line 196 "lexer.ll"
return isc::eval::EvalParser::make_TRANSID(loc);
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 193 "lexer.ll"
+#line 197 "lexer.ll"
return isc::eval::EvalParser::make_VENDOR(loc);
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 194 "lexer.ll"
+#line 198 "lexer.ll"
return isc::eval::EvalParser::make_VENDOR_CLASS(loc);
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 195 "lexer.ll"
+#line 199 "lexer.ll"
return isc::eval::EvalParser::make_DATA(loc);
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 196 "lexer.ll"
+#line 200 "lexer.ll"
return isc::eval::EvalParser::make_ENTERPRISE(loc);
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 197 "lexer.ll"
+#line 201 "lexer.ll"
return isc::eval::EvalParser::make_SUBSTRING(loc);
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 198 "lexer.ll"
+#line 202 "lexer.ll"
return isc::eval::EvalParser::make_ALL(loc);
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 199 "lexer.ll"
+#line 203 "lexer.ll"
return isc::eval::EvalParser::make_CONCAT(loc);
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 200 "lexer.ll"
+#line 204 "lexer.ll"
return isc::eval::EvalParser::make_IFELSE(loc);
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 201 "lexer.ll"
+#line 205 "lexer.ll"
return isc::eval::EvalParser::make_NOT(loc);
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 202 "lexer.ll"
+#line 206 "lexer.ll"
return isc::eval::EvalParser::make_AND(loc);
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 203 "lexer.ll"
+#line 207 "lexer.ll"
return isc::eval::EvalParser::make_OR(loc);
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 204 "lexer.ll"
+#line 208 "lexer.ll"
return isc::eval::EvalParser::make_DOT(loc);
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 205 "lexer.ll"
+#line 209 "lexer.ll"
return isc::eval::EvalParser::make_LPAREN(loc);
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 206 "lexer.ll"
+#line 210 "lexer.ll"
return isc::eval::EvalParser::make_RPAREN(loc);
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 207 "lexer.ll"
+#line 211 "lexer.ll"
return isc::eval::EvalParser::make_LBRACKET(loc);
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 208 "lexer.ll"
+#line 212 "lexer.ll"
return isc::eval::EvalParser::make_RBRACKET(loc);
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 209 "lexer.ll"
+#line 213 "lexer.ll"
return isc::eval::EvalParser::make_COMA(loc);
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 210 "lexer.ll"
+#line 214 "lexer.ll"
return isc::eval::EvalParser::make_ANY(loc);
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 211 "lexer.ll"
+#line 215 "lexer.ll"
driver.error (loc, "Invalid character: " + std::string(evaltext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 212 "lexer.ll"
+#line 216 "lexer.ll"
return isc::eval::EvalParser::make_END(loc);
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 213 "lexer.ll"
+#line 217 "lexer.ll"
ECHO;
YY_BREAK
-#line 1806 "lexer.cc"
+#line 1810 "lexer.cc"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 213 "lexer.ll"
+#line 217 "lexer.ll"
using namespace isc::eval;
void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
};
}
+#endif /* !__clang_analyzer__ */