GE
%nonassoc APPEND EQ GE GT LE LT NE MATCHOP IN '|'
| pattern GE pattern { $$ = op2($2, $1, $3); }
case LE: case LT: case EQ: case NE: case GT: case GE:
%token <i> AND BOR APPEND EQ GE GT LE LT NE IN
yylval.i = GE;
RET(GE);
{ GE, "relop", " >= " },
case GE: return (i >= 0 ? True : False);
%left EQ NE LANGLE RANGLE GE LE
| expr GE expr {
$$ = node(GE, $1, $3);
%token <node> EQ NE GE LE GT LT
c = GE;
case GE:
case GE:
| e GE e
return (cpeek('=', GE, '\0', 0, '>'));
%token <cc> _WHILE _FOR NE LE GE INCR DECR
return (record(GE, NULL));
case GE:
| cexpr GE cexpr
%left LE GE '<' '>'
EVAL_OP_BIN1(GE_FOR_CSTYLE_CLEAN, GE) /* A >= B */
EVAL_OP_BIN2(GE_FOR_CSTYLE_CLEAN, GE) /* A >= B */
EVAL_OP_BIN3(GE_FOR_CSTYLE_CLEAN, GE) /* A >= B */
EVAL_OP_BIN4(GE_FOR_CSTYLE_CLEAN, GE) /* A >= B */
%left LT LE GT GE
| expr GE expr
%token LT LE GT GE EQ NE
{ GE, "relop", " >= "},
case GE: if (i>=0) return (true);
return (peek('=', GE, GT));
%nonassoc GT GE LT LE NE EQ
| e GE e { $$ = $1 >= $3; }
return (peek3('=', GE, '>', RSHIFT, GT));
%nonassoc LE GE LT GT
| e GE e { $$ = $1 >= $3; }
%left GT GE LT LE.
expr(A) ::= expr(X) GE expr(Y). {A = sqliteExpr(TK_GE, X, Y, 0);}
case GE: