def p_expr_rel3(p): 'expr : expr LT expr' p[0] = ast.BinOpExp(ast.BinOpExp.LT, p[1], p[3], p.lineno(1))
def p_expr_rel4(p): 'expr : expr GT expr' p[0] = ast.BinOpExp(ast.BinOpExp.GT, p[1], p[3], p.lineno(1))
def p_expr_select1(p): '''expr : expr '.' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.DOT, p[1], p[3], p.lineno(1))
def p_expr_assign2(p): '''expr : expr MULTEQ expr''' p[0] = ast.BinOpExp(ast.BinOpExp.MULTEQ, p[1], p[3], p.lineno(1))
def p_expr_add2(p): '''expr : expr '-' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.MINUS, p[1], p[3], p.lineno(1))
def p_expr_mult2(p): '''expr : expr '/' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.DIV, p[1], p[3], p.lineno(1))
def p_expr_log2(p): 'expr : expr LAND expr' p[0] = ast.BinOpExp(ast.BinOpExp.LAND, p[1], p[3], p.lineno(1))
def p_expr_shift2(p): '''expr : expr BSHR expr''' p[0] = ast.BinOpExp(ast.BinOpExp.BSHR, p[1], p[3], p.lineno(1))
def p_expr_assign11(p): '''expr : expr BOREQ expr''' p[0] = ast.BinOpExp(ast.BinOpExp.BOREQ, p[1], p[3], p.lineno(1))
def p_expr_log1(p): 'expr : expr LOR expr' p[0] = ast.BinOpExp(ast.BinOpExp.LOR, p[1], p[3], p.lineno(1))
def p_expr_assign6(p): '''expr : expr MINUSEQ expr''' p[0] = ast.BinOpExp(ast.BinOpExp.MINUSEQ, p[1], p[3], p.lineno(1))
def p_expr_assign5(p): '''expr : expr PLUSEQ expr''' p[0] = ast.BinOpExp(ast.BinOpExp.PLUSEQ, p[1], p[3], p.lineno(1))
def p_expr_assign3(p): '''expr : expr DIVEQ expr''' p[0] = ast.BinOpExp(ast.BinOpExp.DIVEQ, p[1], p[3], p.lineno(1))
def p_expr_rel5(p): 'expr : expr LE expr' p[0] = ast.BinOpExp(ast.BinOpExp.LE, p[1], p[3], p.lineno(1))
def p_expr_bit1(p): '''expr : expr '|' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.BOR, p[1], p[3], p.lineno(1))
def p_expr_rel6(p): 'expr : expr GE expr' p[0] = ast.BinOpExp(ast.BinOpExp.GE, p[1], p[3], p.lineno(1))
def p_expr_bit2(p): '''expr : expr '^' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.BXOR, p[1], p[3], p.lineno(1))
def p_expr_add1(p): '''expr : expr '+' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.PLUS, p[1], p[3], p.lineno(1))
def p_expr_bit3(p): '''expr : expr '&' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.BAND, p[1], p[3], p.lineno(1))
def p_expr_mult1(p): '''expr : expr '*' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.MULT, p[1], p[3], p.lineno(1))
def p_expr_rel1(p): 'expr : expr EE expr' p[0] = ast.BinOpExp(ast.BinOpExp.EE, p[1], p[3], p.lineno(1))
def p_expr_mult3(p): '''expr : expr '%' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.MOD, p[1], p[3], p.lineno(1))
def p_expr_rel2(p): 'expr : expr NE expr' p[0] = ast.BinOpExp(ast.BinOpExp.NE, p[1], p[3], p.lineno(1))
def p_expr_select2(p): '''expr : expr SELECT expr''' p[0] = ast.BinOpExp(ast.BinOpExp.SELECT, p[1], p[3], p.lineno(1))
def p_expr_seq(p): '''expr : expr ',' expr''' p[0] = ast.BinOpExp(ast.BinOpExp.COMMA, p[1], p[3], p.lineno(1))