On 2023-11-27 Mo 15:34, Tom Lane wrote:
Alvaro Herrera <alvhe...@alvh.no-ip.org> writes:
(TBH I don't think the added comments really explain the problems fully.
That's most likely because I don't actually understand what the problems
are.)
The actual problem is that nobody has applied a cluestick to the SQL
committee about writing an unambiguous grammar :-(. But I digress.
I don't like the existing coding for more reasons than just
underdocumentation. Global assignment of precedence is a really,
really dangerous tool for solving ambiguous-grammar problems, because
it can mask problems unrelated to the one you think you are solving:
basically, it eliminates bison's complaints about grammar ambiguities
related to the token you mark. (Commits 12b716457 and 28a61fc6c are
relevant here.) Attaching precedence to individual productions is
far safer, because it won't have any effect that extends beyond that
production. You still need a precedence attached to the lookahead
token; but I think we should try very hard to not assign a precedence
different from IDENT's to any unreserved keywords.
After a bit of fooling around I found a patch that seems to meet
that criterion; attached.
Looks good. Perhaps the comments above the UNBOUNDED precedence setting
(esp. the first paragraph) need strengthening, with a stern injunction
to avoid different precedence for non-reserved keywords if at all possible.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com