/*
* ASBinaryExpression.java
*
* Copyright (c) 2008 David Holroyd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package uk.co.badgersinfoil.metaas.dom;
import uk.co.badgersinfoil.metaas.ActionScriptFactory;
/**
* A binary expression, such as <code>a + b</code> or <code>a && b</code>.
*
* @see ActionScriptFactory#newAddExpression(Expression, Expression)
* @see ActionScriptFactory#newAndExpression(Expression, Expression)
* @see ActionScriptFactory#newBitAndExpression(Expression, Expression)
* @see ActionScriptFactory#newBitOrExpression(Expression, Expression)
* @see ActionScriptFactory#newBitXorExpression(Expression, Expression)
* @see ActionScriptFactory#newDivisionExpression(Expression, Expression)
* @see ActionScriptFactory#newEqualsExpression(Expression, Expression)
* @see ActionScriptFactory#newGreaterEqualsExpression(Expression, Expression)
* @see ActionScriptFactory#newGreaterThanExpression(Expression, Expression)
* @see ActionScriptFactory#newLessEqualsExpression(Expression, Expression)
* @see ActionScriptFactory#newLessThanExpression(Expression, Expression)
* @see ActionScriptFactory#newModuloExpression(Expression, Expression)
* @see ActionScriptFactory#newMultiplyExpression(Expression, Expression)
* @see ActionScriptFactory#newNotEqualsExpression(Expression, Expression)
* @see ActionScriptFactory#newOrExpression(Expression, Expression)
* @see ActionScriptFactory#newShiftLeftExpression(Expression, Expression)
* @see ActionScriptFactory#newShiftRightExpression(Expression, Expression)
* @see ActionScriptFactory#newShiftRightUnsignedExpression(Expression, Expression)
* @see ActionScriptFactory#newSubtractExpression(Expression, Expression)
*/
public interface ASBinaryExpression extends Expression {
public Op getOperator();
public void setOperator(Op operator);
public Expression getLeftSubexpression();
public void setLeftSubexpression(Expression left);
public Expression getRightSubexpression();
public void setRightSubexpression(Expression right);
/**
* Operators allowed for binary-expressions
*/
public static class Op {
private String name;
private Op(String name) {
this.name = name;
}
/** Addition '+' */
public static final Op ADD = new Op("ADD");
/** Logical and '&&' */
public static final Op AND = new Op("AND");
/** Bit-wise and '&' */
public static final Op BITAND = new Op("BITAND");
/** Bit-wise or '|' */
public static final Op BITOR = new Op("BITOR");
/** Bit-wise xor '^' */
public static final Op BITXOR = new Op("BITXOR");
/** Division '/' */
public static final Op DIV = new Op("DIV");
/** Equality '==' */
public static final Op EQ = new Op("EQ");
/** Greater-than-or-equals '>=' */
public static final Op GE = new Op("GE");
/** Strictly greater-than '>' */
public static final Op GT = new Op("GT");
/** Less-than-or-equals '<=' */
public static final Op LE = new Op("LE");
/** Strictly less-than '<' */
public static final Op LT = new Op("LT");
/** Modulo '%' */
public static final Op MOD = new Op("MOD");
/** Multiplication '*' */
public static final Op MUL = new Op("MUL");
/** Not equal '!=' */
public static final Op NE = new Op("NE");
/** Logical or '||' */
public static final Op OR = new Op("OR");
/** Shift left '<<' */
public static final Op SL = new Op("SL");
/** Shift right '>>' */
public static final Op SR = new Op("SR");
/** Shift right, unsigned '>>>' */
public static final Op SRU = new Op("SRU");
/** Subtraction '-' */
public static final Op SUB = new Op("SUB");
public String toString() {
return name;
}
}
}