Related articles |
---|
FLEX <<EOF>> with yymore() token BillFen@Ulster.Net (Bill Fenlason) (2001-06-03) |
From: | "Bill Fenlason" <BillFen@Ulster.Net> |
Newsgroups: | comp.compilers |
Date: | 3 Jun 2001 17:02:00 -0400 |
Organization: | BiznessOnline.com, Inc. |
Keywords: | lex, question |
Posted-Date: | 03 Jun 2001 17:02:00 EDT |
In FLEX, the current buffer is flushed immediately when EOF is encountered,
even if it contains a token pushed by yymore(). That means that something
like:
<start_cond><<EOF>>{If (yyleng > 0) return(A_TOKEN) .... }
fails, because yyleng may be non-zero but yytext is null. The token is
copied to the start of the buffer but then overwritten by the buffer flush.
Short of using the -S option with a modified skeleton, is there a way
around this? I don't know if this is a (possibly known) bug or a
"feecher", but it seems to me that delaying the buffer flush in this
case would be a reasonable thing to do. The code makes a point that a
repeated call at EOF returns null again and that yytext was set up.
Allowing the residual token to be returned would be useful in my case.
Is FLEX still being maintained/developed?
Thanks - Bill Fenlason - billfen@ulster.net
Return to the
comp.compilers page.
Search the
comp.compilers archives again.