protected virtual object EvaluateStringLiteral(ParseTree tree, params object[] paramlist) { throw new NotImplementedException(); }
protected virtual object EvaluateVariable(ParseTree tree, params object[] paramlist) { throw new NotImplementedException(); }
protected virtual object EvaluateAssignmentExpression(ParseTree tree, params object[] paramlist) { throw new NotImplementedException(); }
protected virtual object EvaluateMultiplicativeExpression(ParseTree tree, params object[] paramlist) { throw new NotImplementedException(); }
protected virtual object EvaluateStart(ParseTree tree, params object[] paramlist) { return("Could not interpret input; no semantics implemented."); }
/// <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 Evaluate(ParseTree tree, params object[] paramlist) { object Value = null; switch (Token.Type) { case TokenType.Start: Value = EvaluateStart(tree, paramlist); break; case TokenType.Function: Value = EvaluateFunction(tree, paramlist); break; case TokenType.PrimaryExpression: Value = EvaluatePrimaryExpression(tree, paramlist); break; case TokenType.ParenthesizedExpression: Value = EvaluateParenthesizedExpression(tree, paramlist); break; case TokenType.UnaryExpression: Value = EvaluateUnaryExpression(tree, paramlist); break; case TokenType.PowerExpression: Value = EvaluatePowerExpression(tree, paramlist); break; case TokenType.MultiplicativeExpression: Value = EvaluateMultiplicativeExpression(tree, paramlist); break; case TokenType.AdditiveExpression: Value = EvaluateAdditiveExpression(tree, paramlist); break; case TokenType.ConcatEpression: Value = EvaluateConcatEpression(tree, paramlist); break; case TokenType.RelationalExpression: Value = EvaluateRelationalExpression(tree, paramlist); break; case TokenType.EqualityExpression: Value = EvaluateEqualityExpression(tree, paramlist); break; case TokenType.ConditionalAndExpression: Value = EvaluateConditionalAndExpression(tree, paramlist); break; case TokenType.ConditionalOrExpression: Value = EvaluateConditionalOrExpression(tree, paramlist); break; case TokenType.AssignmentExpression: Value = EvaluateAssignmentExpression(tree, paramlist); break; case TokenType.Expression: Value = EvaluateExpression(tree, paramlist); break; case TokenType.Params: Value = EvaluateParams(tree, paramlist); break; case TokenType.Literal: Value = EvaluateLiteral(tree, paramlist); break; case TokenType.IntegerLiteral: Value = EvaluateIntegerLiteral(tree, paramlist); break; case TokenType.RealLiteral: Value = EvaluateRealLiteral(tree, paramlist); break; case TokenType.StringLiteral: Value = EvaluateStringLiteral(tree, paramlist); break; case TokenType.Variable: Value = EvaluateVariable(tree, paramlist); break; default: Value = Token.Text; break; } return(Value); }
protected object GetValue(ParseTree tree, TokenType type, int index) { return(GetValue(tree, type, ref index)); }