protected virtual object EvalAtom(ParseTree tree, params object[] paramlist) { throw new NotImplementedException(); }
protected virtual object EvalStart(ParseTree tree, params object[] paramlist) { return("Could not interpret input; no semantics implemented."); }
protected object GetValue(ParseTree tree, TokenType type, int index) { return(GetValue(tree, type, ref index)); }
/// <summary> /// this implements the evaluation functionality, cannot be used directly /// </summary> /// <param name="tree">the parsetree itself</param> /// <param name="paramlist">optional input parameters</param> /// <returns>a partial result of the evaluation</returns> internal object Eval(ParseTree tree, params object[] paramlist) { object Value = null; switch (Token.Type) { case TokenType.Start: Value = EvalStart(tree, paramlist); break; case TokenType.Conditional: Value = EvalConditional(tree, paramlist); break; case TokenType.Identifier: Value = EvalIdentifier(tree, paramlist); break; case TokenType.BooleanExpr: Value = EvalBooleanExpr(tree, paramlist); break; case TokenType.CompareExpr: Value = EvalCompareExpr(tree, paramlist); break; case TokenType.AddExpr: Value = EvalAddExpr(tree, paramlist); break; case TokenType.MultExpr: Value = EvalMultExpr(tree, paramlist); break; case TokenType.PowerExpr: Value = EvalPowerExpr(tree, paramlist); break; case TokenType.Params: Value = EvalParams(tree, paramlist); break; case TokenType.Method: Value = EvalMethod(tree, paramlist); break; case TokenType.Array: Value = EvalArray(tree, paramlist); break; case TokenType.QualifiedName: Value = EvalQualifiedName(tree, paramlist); break; case TokenType.UnaryExpr: Value = EvalUnaryExpr(tree, paramlist); break; case TokenType.Atom: Value = EvalAtom(tree, paramlist); break; default: Value = Token.Text; break; } return(Value); }
public ParseTree Parse(string input) { tree = new ParseTree(); return(Parse(input, tree)); }