1cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti/* 2cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * Copyright (C) 2007-2010 Júlio Vilmar Gesser. 3cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 5cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * This file is part of JavaParser. 6cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 7cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * JavaParser can be used either under the terms of 8cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * a) the GNU Lesser General Public License as published by 9cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * the Free Software Foundation, either version 3 of the License, or 10cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * (at your option) any later version. 11cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * b) the terms of the Apache License 12cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 13cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * You should have received a copy of both licenses in LICENCE.LGPL and 14cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * LICENCE.APACHE. Please refer to those files for details. 15cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 16cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * JavaParser is distributed in the hope that it will be useful, 17cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * but WITHOUT ANY WARRANTY; without even the implied warranty of 18cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * GNU Lesser General Public License for more details. 20cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti */ 21cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 22cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettipackage com.github.javaparser.ast.expr; 23cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 24cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettiimport com.github.javaparser.Range; 25cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettiimport com.github.javaparser.ast.visitor.GenericVisitor; 26cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettiimport com.github.javaparser.ast.visitor.VoidVisitor; 27cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 28cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti/** 29cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * @author Julio Vilmar Gesser 30cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti */ 31cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettipublic final class BinaryExpr extends Expression { 32cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 33cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public enum Operator { 34cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti or, // || 35cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti and, // && 36cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti binOr, // | 37cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti binAnd, // & 38cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti xor, // ^ 39cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti equals, // == 40cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti notEquals, // != 41cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti less, // < 42cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti greater, // > 43cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti lessEquals, // <= 44cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti greaterEquals, // >= 45cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti lShift, // << 46cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti rSignedShift, // >> 47cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti rUnsignedShift, // >>> 48cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti plus, // + 49cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti minus, // - 50cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti times, // * 51cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti divide, // / 52cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti remainder, // % 53cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 54cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 55cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti private Expression left; 56cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 57cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti private Expression right; 58cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 59cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti private Operator op; 60cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 61cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public BinaryExpr() { 62cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 63cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 64cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public BinaryExpr(Expression left, Expression right, Operator op) { 65cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setLeft(left); 66cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setRight(right); 67cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setOperator(op); 68cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 69cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 70cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public BinaryExpr(Range range, Expression left, Expression right, Operator op) { 71cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti super(range); 72cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setLeft(left); 73cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setRight(right); 74cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setOperator(op); 75cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 76cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 77cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti @Override 78cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public <R, A> R accept(GenericVisitor<R, A> v, A arg) { 79cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return v.visit(this, arg); 80cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 81cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 82cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti @Override 83cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public <A> void accept(VoidVisitor<A> v, A arg) { 84cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti v.visit(this, arg); 85cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 86cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 87cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public Expression getLeft() { 88cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return left; 89cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 90cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 91cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public Operator getOperator() { 92cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return op; 93cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 94cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 95cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public Expression getRight() { 96cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return right; 97cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 98cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 99cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public BinaryExpr setLeft(Expression left) { 100cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti this.left = left; 101cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setAsParentNodeOf(this.left); 102cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return this; 103cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 104cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 105cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public BinaryExpr setOperator(Operator op) { 106cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti this.op = op; 107cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return this; 108cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 109cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 110cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public BinaryExpr setRight(Expression right) { 111cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti this.right = right; 112cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setAsParentNodeOf(this.right); 113cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return this; 114cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 115cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti} 116