package net.sourceforge.phpdt.internal.compiler.ast; /** * Any expression that have an operator. * @author Matthieu Casanova */ public abstract class OperatorExpression extends Expression implements OperatorIds { public int operator; public OperatorExpression(int operator, int sourceStart, int sourceEnd) { super(sourceStart, sourceEnd); this.operator = operator; } public String operatorToString() { switch (operator) { case EQUAL_EQUAL : return "=="; //$NON-NLS-1$ case LESS_EQUAL : return "<="; //$NON-NLS-1$ case GREATER_EQUAL : return ">="; //$NON-NLS-1$ case NOT_EQUAL : return "!="; //$NON-NLS-1$ case LEFT_SHIFT : return "<<"; //$NON-NLS-1$ case RIGHT_SHIFT : return ">>"; //$NON-NLS-1$ case UNSIGNED_RIGHT_SHIFT : return ">>>"; //$NON-NLS-1$ case OR_OR : return "||"; //$NON-NLS-1$ case AND_AND : return "&&"; //$NON-NLS-1$ case PLUS : return "+"; //$NON-NLS-1$ case MINUS : return "-"; //$NON-NLS-1$ case NOT : return "!"; //$NON-NLS-1$ case REMAINDER : return "%"; //$NON-NLS-1$ case XOR : return "^"; //$NON-NLS-1$ case AND : return "&"; //$NON-NLS-1$ case MULTIPLY : return "*"; //$NON-NLS-1$ case OR : return "|"; //$NON-NLS-1$ case TWIDDLE : return "~"; //$NON-NLS-1$ case DIVIDE : return "/"; //$NON-NLS-1$ case GREATER : return ">"; //$NON-NLS-1$ case LESS : return "<"; //$NON-NLS-1$ case ORL : return "OR"; //$NON-NLS-1$ case ANDL : return "AND"; //$NON-NLS-1$ case DOT : return "."; //$NON-NLS-1$ case DIF : return "<>"; //$NON-NLS-1$ case BANG_EQUAL_EQUAL : return "!=="; //$NON-NLS-1$ case EQUAL_EQUAL_EQUAL : return "==="; //$NON-NLS-1$ case AT : return "@"; //$NON-NLS-1$ }; return "unknown operator"; //$NON-NLS-1$ } public String toStringExpression(){ //subclass redefine toStringExpressionNoParenthesis() return "(" + toStringExpressionNoParenthesis() + ")"; //$NON-NLS-2$ //$NON-NLS-1$ } public abstract String toStringExpressionNoParenthesis(); }