NE
%nonassoc APPEND EQ GE GT LE LT NE MATCHOP IN '|'
| pattern NE pattern { $$ = op2($2, $1, $3); }
case LE: case LT: case EQ: case NE: case GT: case GE:
return op2(NE, n, nullnode);
%token <i> AND BOR APPEND EQ GE GT LE LT NE IN
yylval.i = NE;
RET(NE);
{ NE, "relop", " != " },
case NE: return (i != 0 ? True : False);
%left EQ NE LANGLE RANGLE GE LE
| expr NE expr {
$$ = node(NE, $1, $3);
%token <node> EQ NE GE LE GT LT
c = NE;
case NE:
case NE:
| e NE e
return (cpeek('=', NE, '\0', 0, '!'));
%token <cc> _WHILE _FOR NE LE GE INCR DECR
return (cond(NE));
if (c == '<' || c == '>' || c == NE) {
if (c == NE) {
return (record(NE, NULL));
case NE:
| cexpr NE cexpr
%left EQ NE
EVAL_OP_BIN1(NE_FOR_CSTYLE_CLEAN, NE) /* A != B */
EVAL_OP_BIN2(NE_FOR_CSTYLE_CLEAN, NE) /* A != B */
EVAL_OP_BIN3(NE_FOR_CSTYLE_CLEAN, NE) /* A != B */
EVAL_OP_BIN4(NE_FOR_CSTYLE_CLEAN, NE) /* A != B */
%left EQ NE
| expr NE expr
$$ = op2(NE, $1,
%token LT LE GT GE EQ NE
{ NE, "relop", " != "},
case NE: if (i!=0) return (true);
return (peek('=', NE, '!'));
%nonassoc GT GE LT LE NE EQ
| e NE e { $$ = $1 != $3; }
return (peek('=', NE, '!'));
%nonassoc EQ NE
| e NE e { $$ = $1 != $3; }
%left EQ NE ISNULL NOTNULL IS LIKE GLOB BETWEEN IN.
expr(A) ::= expr(X) NE expr(Y). {A = sqliteExpr(TK_NE, X, Y, 0);}
int LT, GT, EQ, NE, total;
LT = GT = EQ = NE = total = 0;
NE++;
NE++;
if (total == 2 && EQ && NE)
if (GT && NE)
if (LT && NE)
if (NE == 2)
case NE: