Re: [HACKERS] Postgres' lexer

From: Leon <leon(at)udmnet(dot)ru>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Thomas Lockhart <lockhart(at)alumni(dot)caltech(dot)edu>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] Postgres' lexer
Date: 1999-09-02 12:25:11
Message-ID: 37CE6CA7.B34BD4CE@udmnet.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Tom Lane wrote:

> To my mind, without spaces this construction *is* ambiguous, and frankly
> I'd have expected the second interpretation ('+-' is a single operator
> name). Almost every computer language in the world uses "greedy"
> tokenization where the next token is the longest series of characters
> that can validly be a token. I don't regard the above behavior as
> predictable, natural, nor obvious. In fact, I'd say it's a bug that
> "3+-2" and "3+-x" are not lexed in the same way.
>

Completely agree with that. This differentiating behavior looks like a bug.

> However, aside from arguing about whether the current behavior is good
> or bad, these examples seem to indicate that it doesn't take an infinite
> amount of lookahead to reproduce the behavior. It looks to me like we
> could preserve the current behavior by parsing a '-' as a separate token
> if it *immediately* precedes a digit, and otherwise allowing it to be
> folded into the preceding operator. That could presumably be done
> without VLTC.

Ok. If we *have* to preserve old weird behavior, here is the patch.
It is to be applied over all my other patches. Though if I were to
decide whether to restore old behavior, I wouldn't do it. Because it
is inconsistency in grammar, i.e. a bug.

--
Leon.

Attachment Content-Type Size
patch.weird_oper application/octet-stream 1011 bytes

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message The Hermit Hacker 1999-09-02 12:43:12 RE: [HACKERS] md.c is feeling much better now, thank you
Previous Message Hiroshi Inoue 1999-09-02 10:32:02 RE: [HACKERS] md.c is feeling much better now, thank you