@Test(expected = java.util.EmptyStackException.class)
 public void test() {
   Plus p = new Plus();
   p.setContext(new Stack<Double>());
   p.getContext().push(8.0);
   p.eval();
 }
 @Override
 public void visit(Plus plusExp) {
   System.out.print("(");
   if (plusExp.getLHS() != null) plusExp.getLHS().accept(this);
   System.out.print(" + ");
   if (plusExp.getRHS() != null) plusExp.getRHS().accept(this);
   System.out.print(")");
 }
示例#3
0
 public void testConcatNumberString() {
   Plus plus = new Plus(new Number(2), new Text("a"));
   plus.type = TextType.instance;
   ExpressionVisitor expressionVisitor = new ExpressionVisitor(new SymbolTable());
   Expression expression = expressionVisitor.visit(plus);
   assertTrue(expression instanceof Text);
   Text text = (Text) expression;
   assertEquals("2a", text.text);
 }
示例#4
0
  public final void testAdditionBetweenIntegersSimplification() {
    Plus plus = new Plus();
    plus.left = new Number(2);
    plus.left.type = IntegerType.instance;
    plus.right = new Number(3);
    plus.right.type = IntegerType.instance;

    expressionSimplificationTester(plus, Number.class, IntegerType.instance, 5, true);
  }
示例#5
0
 public void testConcatCantOptimize() {
   IdExpression id = new IdExpression("a");
   id.type = new IdType("A");
   Text text = new Text("a");
   text.type = TextType.instance;
   Plus plus = new Plus(text, id);
   plus.type = TextType.instance;
   ExpressionVisitor expressionVisitor = new ExpressionVisitor(new SymbolTable());
   Expression expression = expressionVisitor.visit(plus);
   assertTrue(expression instanceof Concat);
   Concat concat = (Concat) expression;
   assertEquals(text, concat.left);
   assertEquals(id, concat.right);
 }
 @Override
 public Expression visit(Plus plus) {
   Plus result = new Plus();
   if (plus.getExpr().getClass() == Choice.class) {
     String name = "plus" + Integer.toString(count);
     count++;
     Nonterminal nt = new Nonterminal(name);
     Expression exp = plus.getExpr().accept(this);
     newRules.put(nt, exp);
     result.setExpr(nt);
   } else {
     Expression exp = plus.getExpr().accept(this);
     result.setExpr(exp);
   }
   return result;
 }
示例#7
0
 public final void testZeroPlusExp() {
   Plus p = new Plus();
   p.type = IntegerType.instance;
   operationWithZero(p, null, true, true);
 }