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 ---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly