Related articles |
---|
DFA zell@curtiss.SEAS.UCLA.EDU (1992-12-15) |
Newsgroups: | comp.compilers |
From: | zell@curtiss.SEAS.UCLA.EDU (Adam W. Zell) |
Organization: | Compilers Central |
Date: | Tue, 15 Dec 1992 20:02:40 GMT |
Keywords: | lex, question, comment |
Just a quick question. When I used flex a while back, I defined a
floating point number or integer as:
number [0-9]
exp [Ee][+-]?{number}+
numtype {number}*\.?{number}+{exp}?
While flipping through the 2nd edition of Lex and Yacc, they use the
following definition:
number [0-9]
exp [Ee][+-]?{number}+
numtype ({number}+|{number}*\.{number}+)({exp})?
Is there any advantage in using the Lex and Yacc definition? Does it use
fewer DFA states?
[I don't see any compelling advantage either way, except that the first
example works differently (worse) in AT&T lex because there's no parens
around the {exp}. We did it the way we did because we wanted an example
for the | operator and parenthesised patterns. Note that neither version
accepts "123." which I'd call a bug. -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.