public string Run(string text) { if (String.IsNullOrEmpty(text)) { return(null); } command += text; switch (CheckBrackets(command)) { case BracketsCheckResult.OK: var exp = _factory.Create(command); command = ""; EvalResult result = exp.Eval(_env); if (result.Success) { ScmExpression resultExp = exp.Eval(_env).Value; return((resultExp as SelfEvaluatingExpression).ToString()); } else { return(result.ErrorMessage); } case BracketsCheckResult.TooMuch: command = ""; return("Too many closing brackets"); default: command += " "; return(null); } }
public LambdaProcedure(ScmExpression exp, ScmEnvironment env, string[] parameters) { _parameters = parameters; _scmEnvironment = env; _scmExpression = exp; }
public static EvalResult ToResult(this ScmExpression exp) { return(EvalResult.From(exp)); }
public static EvalResult From(ScmExpression exp) { return(new EvalResult(exp)); }
public EvalResult(ScmExpression value) { Success = true; Value = value; }
public ScmProcedure Create(ScmExpression exp, ScmEnvironment env) { var variableName = (exp as VariableExpression).VariableName as string; return(env.Dict[variableName] as ScmProcedure); }