public IScheminType Interpret(List<Token> tokens)
{
try
{
var parsed = this.parser.Parse(tokens, false);
var expanded = (ScheminPair) this.macroExpander.ExpandAll(parsed);
IScheminType returnType = this.evaluator.EvaluateInternal(expanded);
return returnType;
}
catch (BadArgumentsException b)
{
this.evaluator.CurrentOutputPort.OutputStream.WriteLine("bad arguments: " + b.Message);
return new ScheminPair();
}
catch (Exception e)
{
this.evaluator.CurrentOutputPort.OutputStream.WriteLine("error: " + e.Message);
return new ScheminPair();
}
}