using Newtonsoft.Json.Linq;
using Serein.Library;
using Serein.Library.Utils;
using Serein.Script.Node;
using System.ComponentModel.Design;
using System.Reflection;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.CompilerServices;
using System.Xml.Linq;
namespace Serein.Script
{
///
/// 脚本解释器,负责解析和执行 Serein 脚本
///
public class SereinScriptInterpreter
{
///
/// 挂载的函数
///
private static Dictionary _functionTable = new Dictionary();
private static Dictionary _functionInfoTable = new Dictionary();
public static Dictionary FunctionInfoTable { get { return _functionInfoTable; } }
///
/// 挂载的函数调用的对象(用于函数需要实例才能调用的场景)
///
private Dictionary> _callFuncOfGetObjects = new Dictionary>();
///
/// 定义的类型
///
private Dictionary _classDefinition = new Dictionary();
///
/// 类型分析器
///
private SereinScriptTypeAnalysis typeAnalysis;
///
/// 挂载静态函数
///
///
///
public static void AddStaticFunction(string functionName, MethodInfo methodInfo)
{
_functionTable[functionName] = new DelegateDetails(methodInfo);
_functionInfoTable[functionName] = methodInfo;
}
///
/// 挂载函数
///
/// 函数名称
/// 方法信息
public void AddFunction(string functionName, MethodInfo methodInfo, Func