diff options
Diffstat (limited to 'BUGS')
-rw-r--r-- | BUGS | 107 |
1 files changed, 107 insertions, 0 deletions
@@ -0,0 +1,107 @@ +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 +------------------------------------------------------------- |