LE
%nonassoc APPEND EQ GE GT LE LT NE MATCHOP IN '|'
| pattern LE 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 = LE;
RET(LE);
{ LE, "relop", " <= " },
} else if (a == LE) { /* input pipe */
if (files[i].mode == '|' || files[i].mode == LE)
if (files[i].mode == '|' || files[i].mode == LE)
mode = LE; /* arbitrary flag */
case LE: return (i <= 0 ? True : False);
%left EQ NE LANGLE RANGLE GE LE
| expr LE expr {
$$ = node(LE, $1, $3);
%token <node> EQ NE GE LE GT LT
c = LE;
case LE:
case LE:
| e LE e
return (cpeek('=', LE, '\0', 0, '<'));
%token <cc> _WHILE _FOR NE LE GE INCR DECR
return (record(LE, NULL));
case LE:
| cexpr LE cexpr
%left LE GE '<' '>'
EVAL_OP_BIN1(LE_FOR_CSTYLE_CLEAN, LE) /* A <= B */
EVAL_OP_BIN2(LE_FOR_CSTYLE_CLEAN, LE) /* A <= B */
EVAL_OP_BIN3(LE_FOR_CSTYLE_CLEAN, LE) /* A <= B */
EVAL_OP_BIN4(LE_FOR_CSTYLE_CLEAN, LE) /* A <= B */
%left LT LE GT GE
| expr LE expr
%token LT LE GT GE EQ NE
{ LE, "relop", " <= "},
case LE: if (i<=0) return (true);
return (peek('=', LE, LT));
%nonassoc GT GE LT LE NE EQ
| e LE e { $$ = $1 <= $3; }
return (peek3('=', LE, '<', LSHIFT, LT));
%nonassoc LE GE LT GT
| e LE e { $$ = $1 <= $3; }
%left GT GE LT LE.
expr(A) ::= expr(X) LE expr(Y). {A = sqliteExpr(TK_LE, X, Y, 0);}
case LE: