Related articles |
---|
Removing GCC warnings from flex- and bison- generated C code zender@uci.edu (Charlie Zender) (2004-01-09) |
Re: Removing GCC warnings from flex- and bison- generated C code eggert@twinsun.com (Paul Eggert) (2004-01-12) |
Re: Removing GCC warnings from flex- and bison- generated C code fjh@cs.mu.oz.au (Fergus Henderson) (2004-01-12) |
Re: Removing GCC warnings from flex- and bison- generated C code zender@uci.edu (Charlie Zender) (2004-01-16) |
From: | Charlie Zender <zender@uci.edu> |
Newsgroups: | comp.compilers |
Date: | 16 Jan 2004 22:38:52 -0500 |
Organization: | University of California at Irvine |
References: | 04-01-045 04-01-065 |
Keywords: | lex |
Posted-Date: | 16 Jan 2004 22:38:52 EST |
Hi,
First, thanks to everyone who responded.
>>ncap_yacc.c: In function `yyparse':
>>ncap_yacc.c:1216: warning: implicit declaration of function `yylex'
> You can avoid that one by explicitly declaring yylex() in the declaration
> section at the start of your .y file:
Yes, I'm now using YY_DECL in three places (my lexer gets called by
two different routines)
>>ncap_lex.l: In function `yylex':
>>ncap_lex.l:670: warning: implicit declaration of function `yy_flex_realloc'
> You can avoid that one by declaring yy_flex_realloc().
I tried that and yy_flex_realloc() is tricky. Adding
int yy_flex_realloc(void *,size_t);
works on GNU/Linux but causes failures on IBM AIX xlC and
SGI IRIX cc. So prototyping these functions becomes platform/compiler
specific and, I think, would best be handled by flex itself.
>>ncap_lex.c: In function `yy_init_buffer':
>>ncap_lex.c:2595: warning: implicit declaration of function `fileno'
> That one can be fixed by compiling with -D_POSIX_SOURCE or including
> `#define _POSIX_SOURCE 1' in the declaration section of your .l file.
Thanks for the pointer, didn't know about POSIX_SOURCE, I'll try that.
The remaining functions are as yy_flex_realloc(). They either do or do
not get referenced by flex depending on the compiler/OS. So I'm
unable to include a prototyping hack in ncap_lex.l without many
compiler-specific tests which is extremely non-portable.
My guess is that if the flex maintainers would compile their test
lexers with -Werror -Wall -Wmissing-prototypes they would find the
same problems and could easily solve them.
Thanks,
Charlie
Return to the
comp.compilers page.
Search the
comp.compilers archives again.