[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fwd: Re: [ale] OT: Lex pattern expression struggles]
- Subject: [Fwd: Re: [ale] OT: Lex pattern expression struggles]
- From: joe at madewell.com (Joe Steele)
- Date: Tue Oct 26 18:53:59 2004
> >
> > [:alnum:]{1,8} * (PARAM)|(TABLE)|(UPDATE) { return TOKEN_BLAH; }
> >
I think this pattern needs another set of brackets [], like so:
[[:alnum:]]{1,8} * (PARAM)|(TABLE)|(UPDATE) { return TOKEN_BLAH; }
Without the extra brackets, "[:alnum:]" has no special meaning, and
could just as well be "[na:mlu]". In other words, it ends up
matching only on the letters "a", "l", "n", "u", "m", and ":".
Also, because the alternation operator "|" has the lowest precedence
in the pattern, I think this pattern is equivalent to (note the added
parentheses):
([[:alnum:]]{1,8} * (PARAM))|(TABLE)|(UPDATE)
which is equivalent to:
(TABLE)|(UPDATE)|([[:alnum:]]{1,8} * (PARAM))
In other words, the expression ends up looking for an alphanumeric
token and a space before a "PARAM" token, but not before "TABLE" and
"UPDATE" tokens.
--Joe