Package org.openntf.formula.ast

Source Code of org.openntf.formula.ast.ASTAtText

/* 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) */ 
TOP

Related Classes of org.openntf.formula.ast.ASTAtText

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.