diff options
author | john43 <john43> | 2006-02-15 18:31:06 +0000 |
---|---|---|
committer | john43 <john43> | 2006-02-15 18:31:06 +0000 |
commit | 1098c8526c707a319e749942909147acb475c0b5 (patch) | |
tree | 9cd81eced3545e3778adeea2ac98e42c8d855c75 /BUGS | |
parent | 9ca3dbc7929a4a047ba0a10eaa63226a81bf2248 (diff) | |
download | flex-1098c8526c707a319e749942909147acb475c0b5.tar.gz |
Transfered bugs list from lex.sf.net to BUGS file.
Diffstat (limited to 'BUGS')
-rw-r--r-- | BUGS | 89 |
1 files changed, 89 insertions, 0 deletions
@@ -0,0 +1,89 @@ +This is a list of bugs still in the queue at lex.sf.net at the time we closed +out the project. + +------------------------------------------------------------- + +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(); +} + +------------------------------------------------------------- |