From: Francis Dupont Date: Tue, 31 Jan 2017 23:41:02 +0000 (+0100) Subject: [5106] Converted to flex 2.6.2 X-Git-Tag: trac5243_base~13^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd65466ac0e339b7fffff068aa071a6163cb37a9;p=thirdparty%2Fkea.git [5106] Converted to flex 2.6.2 --- diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index ac84dd70df..c3e855ef63 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -14,10 +14,12 @@ #include #include -// Work around an incompatibility in flex (at least versions -// 2.5.31 through 2.5.33): it generates code that does -// not conform to C89. See Debian bug 333231 -// . +/* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */ + +/* Work around an incompatibility in flex (at least versions + 2.5.31 through 2.5.33): it generates code that does + not conform to C89. See Debian bug 333231 + . */ # undef yywrap # define yywrap() 1 @@ -30,7 +32,7 @@ unsigned int comment_start_line = 0; }; -// To avoid the call to exit... oops! +/* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) %} @@ -83,20 +85,20 @@ ControlCharacter [\x00-\x1f] ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} %{ -// 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. +/* 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); %} %% %{ - // 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 + /* 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 */ - // Code run each time yylex is called. + /* Code run each time yylex is called. */ driver.loc_.step(); if (start_token_flag) { @@ -145,9 +147,9 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} ""include" BEGIN(DIR_INCLUDE); \"([^\"\n])+\" { - // Include directive. + /* Include directive. */ - // Extract the filename. + /* Extract the filename. */ std::string tmp(yytext+1); tmp.resize(tmp.size() - 1); @@ -160,12 +162,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} <*>{blank}+ { - // Ok, we found a with space. Let's ignore it and update loc variable. + /* Ok, we found a with space. Let's ignore it and update loc variable. */ driver.loc_.step(); } <*>[\n]+ { - // Newline found. Let's update the location and continue. + /* Newline found. Let's update the location and continue. */ driver.loc_.lines(yyleng); driver.loc_.step(); } @@ -1225,9 +1227,9 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} {JSONString} { - // 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. - // for 'foo' we should get foo + /* 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. + for 'foo' we should get foo */ std::string raw(yytext+1); size_t len = raw.size() - 1; raw.resize(len); @@ -1238,12 +1240,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} char c = raw[pos]; switch (c) { case '"': - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Bad quote in \"" + raw + "\""); case '\\': ++pos; if (pos >= len) { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Overflow escape in \"" + raw + "\""); } c = raw[pos]; @@ -1269,10 +1271,10 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} decoded.push_back('\t'); break; case 'u': - // support only \u0000 to \u00ff + /* support only \u0000 to \u00ff */ ++pos; if (pos + 4 > len) { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Overflow unicode escape in \"" + raw + "\""); } @@ -1288,7 +1290,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } else if ((c >= 'a') && (c <= 'f')) { b = (c - 'a' + 10) << 4; } else { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\""); } pos++; @@ -1300,19 +1302,19 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } else if ((c >= 'a') && (c <= 'f')) { b |= c - 'a' + 10; } else { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\""); } decoded.push_back(static_cast(b & 0xff)); break; default: - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Bad escape in \"" + raw + "\""); } break; default: if ((c >= 0) && (c < 0x20)) { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Invalid control in \"" + raw + "\""); } decoded.push_back(c); @@ -1323,17 +1325,17 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } \"{JSONStringCharacter}*{ControlCharacter}{ControlCharacterFill}*\" { - // Bad string with a forbidden control character inside + /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); } \"{JSONStringCharacter}*\\{BadJSONEscapeSequence}[^\x00-\x1f"]*\" { - // Bad string with a bad escape inside + /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); } \"{JSONStringCharacter}*\\\" { - // Bad string with an open escape at the end + /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); } @@ -1345,25 +1347,25 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} ":" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } {int} { - // An integer was found. + /* An integer was found. */ std::string tmp(yytext); int64_t integer = 0; try { - // In substring we want to use negative values (e.g. -1). - // In enterprise-id we need to use values up to 0xffffffff. - // To cover both of those use cases, we need at least - // int64_t. + /* In substring we want to use negative values (e.g. -1). + In enterprise-id we need to use values up to 0xffffffff. + To cover both of those use cases, we need at least + int64_t. */ integer = boost::lexical_cast(tmp); } catch (const boost::bad_lexical_cast &) { driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer."); } - // The parser needs the string form as double conversion is no lossless + /* The parser needs the string form as double conversion is no lossless */ return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_); } [-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)? { - // A floating point was found. + /* A floating point was found. */ std::string tmp(yytext); double fp = 0.0; try { @@ -1430,10 +1432,10 @@ Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type) loc_.initialize(&file_); yy_flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; - buffer = yy_scan_bytes(str.c_str(), str.size()); + buffer = parser4__scan_bytes(str.c_str(), str.size()); if (!buffer) { fatal("cannot scan string"); - // fatal() throws an exception so this can't be reached + /* fatal() throws an exception so this can't be reached */ } } @@ -1451,7 +1453,7 @@ Parser4Context::scanFileBegin(FILE * f, yy_flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; - // See dhcp4_lexer.cc header for available definitions + /* See dhcp4_lexer.cc header for available definitions */ buffer = parser4__create_buffer(f, 65536 /*buffer size*/); if (!buffer) { fatal("cannot scan file " + filename); @@ -1465,7 +1467,7 @@ Parser4Context::scanEnd() { fclose(sfile_); sfile_ = 0; static_cast(parser4_lex_destroy()); - // Close files + /* Close files */ while (!sfiles_.empty()) { FILE* f = sfiles_.back(); if (f) { @@ -1473,7 +1475,7 @@ Parser4Context::scanEnd() { } sfiles_.pop_back(); } - // Delete states + /* Delete states */ while (!states_.empty()) { parser4__delete_buffer(states_.back()); states_.pop_back(); @@ -1510,9 +1512,9 @@ Parser4Context::includeFile(const std::string& filename) { } namespace { -/// To avoid unused function error +/** To avoid unused function error */ class Dummy { - // cppcheck-suppress unusedPrivateFunction + /* cppcheck-suppress unusedPrivateFunction */ void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); } }; } diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index c3402cea33..7660ed19b4 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -14,10 +14,12 @@ #include #include -// Work around an incompatibility in flex (at least versions -// 2.5.31 through 2.5.33): it generates code that does -// not conform to C89. See Debian bug 333231 -// . +/* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */ + +/* Work around an incompatibility in flex (at least versions + 2.5.31 through 2.5.33): it generates code that does + not conform to C89. See Debian bug 333231 + . */ # undef yywrap # define yywrap() 1 @@ -30,7 +32,7 @@ unsigned int comment_start_line = 0; }; -// To avoid the call to exit... oops! +/* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) %} @@ -83,20 +85,20 @@ ControlCharacter [\x00-\x1f] ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} %{ -// 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. +/* 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); %} %% %{ - // 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 + /* 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 */ - // Code run each time yylex is called. + /* Code run each time yylex is called. */ driver.loc_.step(); if (start_token_flag) { @@ -147,9 +149,9 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} ""include" BEGIN(DIR_INCLUDE); \"([^\"\n])+\" { - // Include directive. + /* Include directive. */ - // Extract the filename. + /* Extract the filename. */ std::string tmp(yytext+1); tmp.resize(tmp.size() - 1); @@ -162,12 +164,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} <*>{blank}+ { - // Ok, we found a with space. Let's ignore it and update loc variable. + /* Ok, we found a with space. Let's ignore it and update loc variable. */ driver.loc_.step(); } <*>[\n]+ { - // Newline found. Let's update the location and continue. + /* Newline found. Let's update the location and continue. */ driver.loc_.lines(yyleng); driver.loc_.step(); } @@ -1272,9 +1274,9 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } {JSONString} { - // 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. - // for 'foo' we should get foo + /* 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. + for 'foo' we should get foo */ std::string raw(yytext+1); size_t len = raw.size() - 1; raw.resize(len); @@ -1285,12 +1287,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} char c = raw[pos]; switch (c) { case '"': - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Bad quote in \"" + raw + "\""); case '\\': ++pos; if (pos >= len) { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Overflow escape in \"" + raw + "\""); } c = raw[pos]; @@ -1316,10 +1318,10 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} decoded.push_back('\t'); break; case 'u': - // support only \u0000 to \u00ff + /* support only \u0000 to \u00ff */ ++pos; if (pos + 4 > len) { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Overflow unicode escape in \"" + raw + "\""); } @@ -1335,7 +1337,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } else if ((c >= 'a') && (c <= 'f')) { b = (c - 'a' + 10) << 4; } else { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\""); } pos++; @@ -1347,19 +1349,19 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } else if ((c >= 'a') && (c <= 'f')) { b |= c - 'a' + 10; } else { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Not hexadecimal in unicode escape in \"" + raw + "\""); } decoded.push_back(static_cast(b & 0xff)); break; default: - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Bad escape in \"" + raw + "\""); } break; default: if ((c >= 0) && (c < 0x20)) { - // impossible condition + /* impossible condition */ driver.error(driver.loc_, "Invalid control in \"" + raw + "\""); } decoded.push_back(c); @@ -1370,17 +1372,17 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } \"{JSONStringCharacter}*{ControlCharacter}{ControlCharacterFill}*\" { - // Bad string with a forbidden control character inside + /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); } \"{JSONStringCharacter}*\\{BadJSONEscapeSequence}[^\x00-\x1f"]*\" { - // Bad string with a bad escape inside + /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); } \"{JSONStringCharacter}*\\\" { - // Bad string with an open escape at the end + /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); } @@ -1392,25 +1394,25 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} ":" { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } {int} { - // An integer was found. + /* An integer was found. */ std::string tmp(yytext); int64_t integer = 0; try { - // In substring we want to use negative values (e.g. -1). - // In enterprise-id we need to use values up to 0xffffffff. - // To cover both of those use cases, we need at least - // int64_t. + /* In substring we want to use negative values (e.g. -1). + In enterprise-id we need to use values up to 0xffffffff. + To cover both of those use cases, we need at least + int64_t. */ integer = boost::lexical_cast(tmp); } catch (const boost::bad_lexical_cast &) { driver.error(driver.loc_, "Failed to convert " + tmp + " to an integer."); } - // The parser needs the string form as double conversion is no lossless + /* The parser needs the string form as double conversion is no lossless */ return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_); } [-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)? { - // A floating point was found. + /* A floating point was found. */ std::string tmp(yytext); double fp = 0.0; try { @@ -1477,10 +1479,10 @@ Parser6Context::scanStringBegin(const std::string& str, ParserType parser_type) loc_.initialize(&file_); yy_flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; - buffer = yy_scan_bytes(str.c_str(), str.size()); + buffer = parser6__scan_bytes(str.c_str(), str.size()); if (!buffer) { fatal("cannot scan string"); - // fatal() throws an exception so this can't be reached + /* fatal() throws an exception so this can't be reached */ } } @@ -1498,7 +1500,7 @@ Parser6Context::scanFileBegin(FILE * f, yy_flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; - // See dhcp6_lexer.cc header for available definitions + /* See dhcp6_lexer.cc header for available definitions */ buffer = parser6__create_buffer(f, 65536 /*buffer size*/); if (!buffer) { fatal("cannot scan file " + filename); @@ -1512,7 +1514,7 @@ Parser6Context::scanEnd() { fclose(sfile_); sfile_ = 0; static_cast(parser6_lex_destroy()); - // Close files + /* Close files */ while (!sfiles_.empty()) { FILE* f = sfiles_.back(); if (f) { @@ -1520,7 +1522,7 @@ Parser6Context::scanEnd() { } sfiles_.pop_back(); } - // Delete states + /* Delete states */ while (!states_.empty()) { parser6__delete_buffer(states_.back()); states_.pop_back(); @@ -1557,9 +1559,9 @@ Parser6Context::includeFile(const std::string& filename) { } namespace { -/// To avoid unused function error +/** To avoid unused function error */ class Dummy { - // cppcheck-suppress unusedPrivateFunction + /* cppcheck-suppress unusedPrivateFunction */ void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); } }; } diff --git a/src/lib/eval/lexer.ll b/src/lib/eval/lexer.ll index 838123ad83..8b13136052 100644 --- a/src/lib/eval/lexer.ll +++ b/src/lib/eval/lexer.ll @@ -14,18 +14,20 @@ #include #include -// Work around an incompatibility in flex (at least versions -// 2.5.31 through 2.5.33): it generates code that does -// not conform to C89. See Debian bug 333231 -// . +/* Please avoid C++ style comments (// ... eol) as they break flex 2.6.2 */ + +/* Work around an incompatibility in flex (at least versions + 2.5.31 through 2.5.33): it generates code that does + not conform to C89. See Debian bug 333231 + . */ # undef yywrap # define yywrap() 1 -// The location of the current token. The lexer will keep updating it. This -// variable will be useful for logging errors. +/* The location of the current token. The lexer will keep updating it. This + variable will be useful for logging errors. */ static isc::eval::location loc; -// To avoid the call to exit... oops! +/* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg) %} @@ -66,34 +68,34 @@ addr4 [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ addr6 [0-9a-fA-F]*\:[0-9a-fA-F]*\:[0-9a-fA-F:.]* %{ -// 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. +/* 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); %} %% %{ - // Code run each time evallex is called. + /* Code run each time evallex is called. */ loc.step(); %} {blank}+ { - // Ok, we found a with space. Let's ignore it and update loc variable. + /* Ok, we found a with space. Let's ignore it and update loc variable. */ loc.step(); } [\n]+ { - // Newline found. Let's update the location and continue. + /* Newline found. Let's update the location and continue. */ loc.lines(evalleng); loc.step(); } \'[^\'\n]*\' { - // 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. - // for 'foo' we should get foo + /* 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. + for 'foo' we should get foo */ std::string tmp(evaltext+1); tmp.resize(tmp.size() - 1); @@ -101,41 +103,41 @@ addr6 [0-9a-fA-F]*\:[0-9a-fA-F]*\:[0-9a-fA-F:.]* } 0[xX]{hex} { - // A hex string has been matched. It contains the '0x' or '0X' header - // followed by at least one hexadecimal digit. + /* A hex string has been matched. It contains the '0x' or '0X' header + followed by at least one hexadecimal digit. */ return isc::eval::EvalParser::make_HEXSTRING(evaltext, loc); } {int} { - // An integer was found. + /* An integer was found. */ std::string tmp(evaltext); try { - // In substring we want to use negative values (e.g. -1). - // In enterprise-id we need to use values up to 0xffffffff. - // To cover both of those use cases, we need at least - // int64_t. + /* In substring we want to use negative values (e.g. -1). + In enterprise-id we need to use values up to 0xffffffff. + To cover both of those use cases, we need at least + int64_t. */ static_cast(boost::lexical_cast(tmp)); } catch (const boost::bad_lexical_cast &) { driver.error(loc, "Failed to convert " + tmp + " to an integer."); } - // The parser needs the string form as double conversion is no lossless + /* The parser needs the string form as double conversion is no lossless */ return isc::eval::EvalParser::make_INTEGER(tmp, loc); } [A-Za-z]([-_A-Za-z0-9]*[A-Za-z0-9])?/({blank}|\n)*] { - // This string specifies option name starting with a letter - // and further containing letters, digits, hyphens and - // underscores and finishing by letters or digits. + /* This string specifies option name starting with a letter + and further containing letters, digits, hyphens and + underscores and finishing by letters or digits. */ return isc::eval::EvalParser::make_OPTION_NAME(evaltext, loc); } {addr4}|{addr6} { - // IPv4 or IPv6 address + /* IPv4 or IPv6 address */ std::string tmp(evaltext); - // Some incorrect addresses can match so we have to check. + /* Some incorrect addresses can match so we have to check. */ try { isc::asiolink::IOAddress ip(tmp); } catch (...) { @@ -202,7 +204,7 @@ EvalContext::scanStringBegin() buffer = eval_scan_bytes(string_.c_str(), string_.size()); if (!buffer) { fatal("cannot scan string"); - // fatal() throws an exception so this can't be reached + /* fatal() throws an exception so this can't be reached */ } } @@ -213,9 +215,9 @@ EvalContext::scanStringEnd() } namespace { -/// To avoid unused function error +/** To avoid unused function error */ class Dummy { - // cppcheck-suppress unusedPrivateFunction + /* cppcheck-suppress unusedPrivateFunction */ void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); } }; }