Upsilon/Upsilon/Executor.cs

100 lines
3.5 KiB
C#
Raw Normal View History

2019-02-13 17:10:39 +00:00
using System.Collections;
2018-12-03 17:32:27 +00:00
using Upsilon.Binder;
2018-11-26 15:55:10 +00:00
using Upsilon.Evaluator;
namespace Upsilon
{
public static class Executor
{
private static readonly ScriptOptions DefaultOptions = new ScriptOptions();
public static Script ParseInput(string input, ScriptOptions options = null)
{
if (options == null) options = DefaultOptions;
var script = new Script(input, "unnamed", options);
2018-12-03 17:32:27 +00:00
script.Parse();
return script;
}
public static Script ParseFile(string fileName, ScriptOptions options = null)
{
if (options == null) options = DefaultOptions;
var input = options.ScriptLoader.LoadFile(fileName);
if (input == null)
return null;
var script = new Script(input,fileName, options);
2018-11-26 15:55:10 +00:00
script.Parse();
return script;
}
public static Script ParseInputAndEvaluate(string input, ScriptOptions options = null)
{
if (options == null) options = DefaultOptions;
var script = new Script(input, "unnamed", options);
2018-11-26 15:55:10 +00:00
script.Parse();
script.Evaluate();
return script;
}
2018-12-03 17:32:27 +00:00
public static Script ParseFileAndEvaluate(string fileName, ScriptOptions options = null)
{
if (options == null) options = DefaultOptions;
var input = options.ScriptLoader.LoadFile(fileName);
var script = new Script(input, fileName, options);
2018-12-03 17:32:27 +00:00
script.Parse();
script.Evaluate();
return script;
}
public static Script ContinueWith(Script script, string input, string fileName = "unnamed")
2018-11-26 15:55:10 +00:00
{
var s = Script.ContinueWith(script, fileName, input);
2018-11-26 15:55:10 +00:00
s.Parse();
2018-12-03 17:32:27 +00:00
return s;
}
2018-12-03 17:32:27 +00:00
public static Script ContinueWith(Script script, BoundScript bound)
{
var s = Script.ContinueWith(script, bound);
2018-12-06 14:32:07 +00:00
s.Evaluate();
2018-11-26 15:55:10 +00:00
return s;
}
public static T EvaluateScript<T>(string input, ScriptOptions options = null)
{
var script = ParseInput(input, options);
return script.Evaluate<T>();
}
public static object EvaluateScript(string input, ScriptOptions options = null)
{
var script = ParseInput(input, options);
return script.Evaluate();
}
public static object EvaluateScript(BoundScript input, ScriptOptions options = null)
{
var script = new Script(input, options);
return script.Evaluate();
}
2018-11-26 15:55:10 +00:00
public static T EvaluateFunction<T>(string input, string function, object[] parameters = null, ScriptOptions options = null)
{
var script = ParseInputAndEvaluate(input, options);
2018-11-26 15:55:10 +00:00
return script.EvaluateFunction<T>(function, parameters);
}
public static object EvaluateFunction(string input, string function, object[] parameters = null, ScriptOptions options = null)
{
var script = ParseInputAndEvaluate(input, options);
2018-11-26 15:55:10 +00:00
return script.EvaluateFunction(function, parameters);
}
2019-02-13 17:10:39 +00:00
public static IEnumerator EvaluateFunctionCoroutine(string input, string function, object[] parameters = null, ScriptOptions options = null)
{
var script = ParseInputAndEvaluate(input, options);
return script.EvaluateFunctionCoroutine(function, parameters);
}
2018-11-26 15:55:10 +00:00
}
}