DFA

zell@curtiss.SEAS.UCLA.EDU (Adam W. Zell)
Tue, 15 Dec 1992 20:02:40 GMT

          From comp.compilers

Related articles
DFA zell@curtiss.SEAS.UCLA.EDU (1992-12-15)
| List of all articles for this month |

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]
--


Post a followup to this message

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