/* Generated By:JJTree: Do not edit this line. ASTAtText.java Version 4.3 */ /* JavaCCOptions:MULTI=true,NODE_USES_PARSER=true,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ package org.openntf.formula.ast; import java.util.Set; import org.openntf.formula.EvaluateException; import org.openntf.formula.FormulaContext; import org.openntf.formula.FormulaReturnException; import org.openntf.formula.Function; import org.openntf.formula.ValueHolder; import org.openntf.formula.ValueHolder.DataType; import org.openntf.formula.parse.AtFormulaParserImpl; public class ASTAtText extends SimpleNode { private Function function; public ASTAtText(final AtFormulaParserImpl p, final int id) { super(p, id); function = p.getFunctionLC("@text"); } @Override public ValueHolder evaluate(final FormulaContext ctx) throws FormulaReturnException { ValueHolder params[] = new ValueHolder[children.length]; ValueHolder ret = null; for (int i = 0; i < children.length; i++) { params[i] = children[i].evaluate(ctx); if (params[i].dataType == DataType.ERROR) { ret = params[i]; break; } } try { if (ret == null) { ret = function.evaluate(ctx, params); } } catch (RuntimeException e) { return ValueHolder.valueOf(new EvaluateException(codeLine, codeColumn, e)); } if (ret.dataType == DataType.ERROR) ret = ValueHolder.valueOf(ret.getError().getMessage()); return ret; } @Override protected void analyzeThis(final Set<String> readFields, final Set<String> modifiedFields, final Set<String> variables, final Set<String> functions) { functions.add("@text"); } } /* JavaCC - OriginalChecksum=44d26c7a72251691e63865deedd5324c (do not edit this line) */