Re: right context in scanner generators (was Re: LEX and YACC)

vern@cs.cornell.edu (Vern Paxson)
Mon, 13 Nov 89 12:02:25 EST

          From comp.compilers

Related articles
right context in scanner generators (was Re: LEX and YACC) boehm@flora.rice.edu (1989-11-12)
Re: right context in scanner generators (was Re: LEX and YACC) boehm@flora.rice.edu (1989-11-12)
Re: right context in scanner generators (was Re: LEX and YACC) vern@cs.cornell.edu (1989-11-13)
Re: right context in scanner generators (was Re: LEX and YACC) peterd@cs.washington.edu (1989-11-13)
| List of all articles for this month |

Date: Mon, 13 Nov 89 12:02:25 EST
From: vern@cs.cornell.edu (Vern Paxson)
Newsgroups: comp.compilers
Summary:
Expires:
References: <1989Nov11.161355.10081@esegue.segue.boston.ma.us> <1989Nov12.041025.12451@esegue.segue.boston.ma.us>
Original-sender:
Organization: Cornell Univ. CS Dept, Ithaca NY

In article <1989Nov12.041025.12451@esegue.segue.boston.ma.us> boehm@flora.rice.edu (Hans Boehm) writes:
>A number of scanner generators, including lex, make the claim that
>they can handle regular expressions specifying right context.
>However, as was pointed out to me by a student in a compiler class
>I was teaching, the implementation that lex uses (namely that described
>in the Aho and Ullman text) is wrong. (I believe the same bug exists
>in Aho, Sethi, and Ullman, but I don't have a copy handy at the moment.)
>An example is:
>
>(a|ab)/ba
>
>on input "aba". Lex will consider "ab" to be the first token instead of "a".
>...
>Are there any scanner generators that actually
>do this right?


Note that flex kind of does this correctly--it allows x/y whenever it can
get it right, i.e., if either x or y have fixed length or if both are
variable length and the end of x will be unambiguous. It will correctly
match the above example. If the example is changed to "(a|ab)/ba*" then
it warns "Dangerous trailing context in rule at line <whatever>".


Vern


Vern Paxson vern@cs.cornell.edu
Computer Science Dept. decvax!cornell!vern
Cornell University vern@LBL (bitnet)
[Vern is the author of flex. -John]





Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.