Ejemplo n.º 1
0
 private ExpResult eagerEval(EvalContext ec) throws ExpError {
   ExpResult condRes = constCondRes != null ? constCondRes : condExp.evaluate(ec);
   ExpResult trueRes = constTrueRes != null ? constTrueRes : trueExp.evaluate(ec);
   ExpResult falseRes = constFalseRes != null ? constFalseRes : falseExp.evaluate(ec);
   if (condRes.value == 0) return falseRes;
   else return trueRes;
 }
Ejemplo n.º 2
0
    public ExpResult evaluate(EvalContext ec) throws ExpError {
      synchronized (executingThreads) {
        if (executingThreads.contains(Thread.currentThread())) {
          throw new ExpError(null, 0, "Expression recursion detected for expression: %s", source);
        }

        executingThreads.add(Thread.currentThread());
      }
      ExpResult res = null;
      try {
        res = rootNode.evaluate(ec);
      } finally {
        synchronized (executingThreads) {
          executingThreads.remove(Thread.currentThread());
        }
      }
      return res;
    }
Ejemplo n.º 3
0
 @Override
 public ExpResult evaluate(EvalContext ec) throws ExpError {
   ExpResult lRes = lConstVal != null ? lConstVal : lSubExp.evaluate(ec);
   ExpResult rRes = rConstVal != null ? rConstVal : rSubExp.evaluate(ec);
   return func.apply(context, lRes, rRes, exp.source, tokenPos);
 }
Ejemplo n.º 4
0
 @Override
 public ExpResult evaluate(EvalContext ec) throws ExpError {
   return func.apply(context, subExp.evaluate(ec));
 }