private static void Compile(DogeFile file, bool verbose, string code, params string[] startup) { IEnumerable <DogeToken> tokens = Workspace.Tokenize(code).ToArray(); if (verbose) { Console.WriteLine($"{string.Join(",\n", tokens.Select(x => x.ToString()))}"); } DogeNamespaceDefinition @namespace = Workspace.Build(file, tokens); if (verbose) { Console.Write(@namespace.ToString()); } DogeSymbolTable symbolTable = Workspace.BuildSymbolTable(@namespace); if (verbose) { Console.Write(symbolTable); } Workspace.AddStandardLibrary(symbolTable); Workspace.ResolveSymbols(@namespace, symbolTable); if (verbose) { Console.Write(@namespace.ToString()); } DogeProject project = new DogeProject( @namespace, (DogeNamedMethodDefinition)symbolTable.ResolveSymbol( startup, s => s.SymbolType == DogeSymbolType.Method, _ => true) .Definition !); DogeInterpreter interpreter = new DogeInterpreter(project); interpreter.Run(); }