public Interpreter(Parser parser, ScopeManager scopeManager, SystemFunctionTable systemFunctionTable, CustomFunctionTable customFunctionTable) { _parser = parser ?? throw new ArgumentNullException(nameof(parser)); _scopeManager = scopeManager ?? throw new ArgumentNullException(nameof(scopeManager)); _systemFunctionTable = systemFunctionTable ?? throw new ArgumentNullException(nameof(systemFunctionTable)); _customFunctionTable = customFunctionTable ?? throw new ArgumentNullException(nameof(customFunctionTable)); }
static void Main() { var customFunctionTable = new CustomFunctionTable(); var scopeManager = new ScopeManager(new Scope()); var sysFuncTable = new SystemFunctionTable(scopeManager, customFunctionTable); var lexer = new Lexer(Code.ToCharArray()); var parser = new Parser(lexer, sysFuncTable); //new Interpreter(lexer, new Scope()).Run(); new Interpreter(parser, scopeManager, sysFuncTable, customFunctionTable).Execute(); }
public SystemFunctionTable(ScopeManager scopeManager, CustomFunctionTable customFunctionTable) { _functions = new Dictionary <string, Function> { { "+", new AddFunction(scopeManager) }, { "-", new SubtractFunction(scopeManager) }, { "*", new MultiplyFunction(scopeManager) }, { "/", new DivideFunction(scopeManager) }, { "=", new EqualFunction(scopeManager) }, { "!=", new NotEqualFunction(scopeManager) }, { ">", new GreaterThanFunction(scopeManager) }, { "<", new LessThanFunction(scopeManager) }, { "print", new PrintFunction(scopeManager) }, { "concat", new ConcatFunction(scopeManager) }, { "def", new DefFunction(scopeManager) }, { "func", new DefFuncFunction(scopeManager, customFunctionTable) }, { "call", new CallFunction(scopeManager) }, { "if", new IfFunction(scopeManager) }, { "list", new ListFunction(scopeManager) }, { "params", new ParamsFunction(scopeManager) }, { "return", new ReturnFunction(scopeManager) } }; }