On Wed, 10 Apr 2002, Christopher Kings-Lynne wrote:
> > Chris,
> >
> > You seem to have forgotten to update keywords.c.
>
> OK - works perfectly now :)
>
> Now I'm going to play with making the SYMMERIC and ASYMMETRIC keywords less
> reserved...
>
> Can someone comment on my use of %prec BETWEEN? Is that still correct now
> that we have the extra BETWEEN forms?
Yes. Have a look at the precedence table near the top of gram.y:
%left UNION EXCEPT
%left INTERSECT
%left JOIN UNIONJOIN CROSS LEFT FULL RIGHT INNER_P NATURAL
%left OR
%left AND
%right NOT
%right '='
%nonassoc '<' '>'
%nonassoc LIKE ILIKE
%nonassoc ESCAPE
%nonassoc OVERLAPS
%nonassoc BETWEEN
%nonassoc IN
%left POSTFIXOP /* dummy for postfix Op rules */
[...]
This is the order of precedence for rules which contain these
operators. For example, if an expression contains:
a AND b AND c
it is evaluated as:
((a AND b) AND c)
On the other hand:
a OR b AND c
is evaluated as:
((a OR b) AND c)
since OR has a lower order of precedence. Now, consider:
select 2 between asymmetric 3 and 1
Without the %prec BETWEEN
3 and 1
is given precedence over between. This will break your code.
Gavin