This is a list of bugs still in the queue at lex.sf.net at the time we closed out the project and moved it to flex.sf.net. ------------------------------------------------------------- Some strict compilers warn about a few internal flex variables signedness. They are bogus warnings and can be ignored, but people send in reports nonethless. ------------------------------------------------------------- The initializer of the yy_transition array in the generated scanner contains fewer entries than the declared size of the array. Examples include yy_transition[6504] with 6250 entries, yy_transition[13215] with 12961 entries. This looks like it is always 254 fewer entries than the declared size. This bug is present in flex 2.5.4a as well. It appears to be harmless. ------------------------------------------------------------- The examples in the chapter "Generating C++ Scanners" contain suspicious code. Attached is a patch that corrects this, and after these modifications this example compiles and works. ------------------------------------------------------------- C++ scanners derived from the yyFlexLexer base class will not compile with flex-2.5.31 because the <FlexLexer.h> automatically gets included into the scanner twice. Because yyFlexLexer is now defined by default even if no prefix is specified, including FlexLexer.h twice causes the class yyFlexLexer to be declared twice. In flex-2.5.4 because yyFlexLexer was not defined by flex in the scanner code, including FlexLexer.h more than once only declared yyFlexLexer once. I appreciate that this is because of the M4 additions to flex, but I can not find a way to stop flex defining yyFlexLexer if it is not needed. Here is an example of a class that will not compile: derived_lexer.h: #ifndef __derived_lexer__ #define __derived_lexer__ #include <FlexLexer.h> class derived_lexer : public yyFlexLexer { public: derived_lexer(std::istream* arg_yyin = 0) : yyFlexLexer(arg_yyin){} int yylex(); int x; }; #endif derived_lexer.l: %{ #include "derived_lexer.h" %} %option yyclass="derived_lexer" %% [0-9]+ { x = atoi(yytext); } %% main.cpp: #include "derived_lexer.h" #include <fstream> int main() { std::ifstream input; input.open("input"); derived_lexer lexer(&input); lexer.yylex(); } ------------------------------------------------------------- Hi, the anomally is that if I generate a c++ parser it will not make yy_scan_buffer and friends. this is happenning on flex version 2.5.4. Is this the intent, if so how do I make a c++ parser read from my buffer? P.S. in c++ it will only generate: #ifndef YY_NO_SCAN_BUFFER #endif #ifndef YY_NO_SCAN_STRING #endif #ifndef YY_NO_SCAN_BYTES #endif -------------------------------------------------------------