Michael Meskes <meskes@postgresql.org> writes:
>> At this point I think our first question is whether flex 2.5.31 is
>> correctly detecting a hole in the ecpg lexer rules that was missed by
>> flex 2.5.4, or whether the warning is simply wrong.
> Yes, that's it. The big problem seems to be that flex does not have a
> way to help finding that hole.
Yeah, I was scratching my head over that too. You'd think there'd be
some more useful debug output.
FWIW, I found two basic causes of that failure when I was fixing the
other lexers:
* not accounting for the fact that "." matches everything but newline. You can write .|\n instead.
* not ensuring that a single character can always be matched. For instance, one lexer had several rules for \ followed
byvarious things, but no rule that could match \ not followed by anything, which meant that \ just before EOF was a
missingcase.
But I'm not sure that helps, since flex 2.5.4 detected those cases.
We don't really know what we're dealing with in this ecpg situation...
regards, tom lane