@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(")"); }
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); }
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); }
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; }
public final void testZeroPlusExp() { Plus p = new Plus(); p.type = IntegerType.instance; operationWithZero(p, null, true, true); }