blob: fb44f7ff262b0ed18db47f9cd96e895d206f2914 [file] [log] [blame]
package org.eclipse.epsilon.eol.dom;
import org.eclipse.epsilon.common.parse.AST;
public class OperatorExpressionFactory {
public OperatorExpression createOperatorExpression(AST ast) {
String operator = ast.getText();
if (operator.equals("=")) {
return new EqualsOperatorExpression();
}
else if (operator.equals("==")) {
return new DoubleEqualsOperatorExpression();
}
else if (operator.equals("<>")) {
return new NotEqualsOperatorExpression();
}
else if (operator.equals("+")) {
return new PlusOperatorExpression();
}
else if (operator.equals("-")) {
if (ast.getChildCount() == 2) {
return new MinusOperatorExpression();
}
else {
return new NegativeOperatorExpression();
}
}
else if (operator.equals("*")) {
return new TimesOperatorExpression();
}
else if (operator.equals("/")) {
return new DivOperatorExpression();
}
else if (operator.equals("<")) {
return new LessThanOperatorExpression();
}
else if (operator.equals(">")) {
return new GreaterThanOperatorExpression();
}
else if (operator.equals("<=")) {
return new LessEqualOperatorExpression();
}
else if (operator.equals(">=")) {
return new GreaterEqualOperatorExpression();
}
else if (operator.equals("and")) {
return new AndOperatorExpression();
}
else if (operator.equals("or")) {
return new OrOperatorExpression();
}
else if (operator.equals("not")) {
return new NotOperatorExpression();
}
else if (operator.equals("xor")) {
return new XorOperatorExpression();
}
else if (operator.equals("implies")) {
return new ImpliesOperatorExpression();
}
else if (operator.equals("++")) {
return new PostfixOperatorExpression(true);
}
else if (operator.equals("--")) {
return new PostfixOperatorExpression(false);
}
throw new RuntimeException("Unknown operator: " + operator);
}
}