Related articles |
---|
[19 earlier articles] |
Re: is lex useful? Robert.Corbett@Eng.Sun.COM (1996-06-30) |
Re: is lex useful? leichter@smarts.com (1996-06-30) |
Re: is lex useful? trd@murlibobo.cs.mu.OZ.AU (1996-06-30) |
Re: is lex useful? WStreett@shell.monmouth.com (1996-06-30) |
Re: is lex useful? dmr@bell-labs.com (1996-06-30) |
Re: is lex useful? clark@quarry.zk3.dec.com (1996-07-01) |
Re: is lex useful? bromage@cs.mu.OZ.AU (1996-07-02) |
Re: is lex useful? kanze@lts.sel.alcatel.de (1996-07-02) |
Re: is lex useful? colas@aye.inria.fr (1996-07-04) |
Re: is lex useful? trd@lister.cs.mu.OZ.AU (1996-07-05) |
From: | bromage@cs.mu.OZ.AU (Andrew Bromage) |
Newsgroups: | comp.compilers |
Date: | 2 Jul 1996 12:32:56 -0400 |
Organization: | Comp Sci, University of Melbourne |
References: | 96-06-101 96-06-118 96-06-123 |
Keywords: | lex |
G'day all.
Jerry Leichter <leichter@smarts.com> wrote:
> The biggest problem I have with lexical analysis generators is that they
> do a lot of work to solve problems that aren't really all that
> important.
> [deletia]
> The few cases where identifiers are *not* trivial, it's their regexp's
> that are not trivial. I recall one language in which an identifier
> was letter followed by letters, digits, or underscores, except that
> you could not have two consecutive underscores.
Problems like this can often be fixed by using a richer set of operators.
Regular sets are closed under operations such as set difference, and if
your favourite scanner generator had it as an operator, this expression
could be expressed very neatly as:
<<
alpha [a-zA-Z]
sym [a-zA-Z0-9_]
%%
{alpha}{sym}* - .*"__".*
>>
Another example is the C comment, which could be expressed:
<<
any (.|"\n")
%%
"/*"({any}* - {any}*"*/"{any}*)"*/"
>>
Cheers,
Andrew Bromage
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.