public static void RunConsole(string code) { var tokenizer = new Tokenizer(); try { List <Token> list = tokenizer.Tokenize(code); IEnumerable <Expression> expressions = new Expressionizer().Expressionize(list, code); foreach (Expression exp in expressions) { Console.Write(exp.ToString() + "="); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(exp.GetValue()); Console.ForegroundColor = ConsoleColor.White; } } catch (TokenizeException e) { Console.WriteLine(e); } catch (ExpressionException e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception:\n" + e.Message); Console.ForegroundColor = ConsoleColor.White; Console.Write("\nException at: "); e.CallStack.OutputStackposition(); } }
public static Value Run(string code) { var tokenizer = new Tokenizer(); Value returnValue = NullValue.Null; try { List <Token> list = tokenizer.Tokenize(code); IEnumerable <Expression> expressions = new Expressionizer().Expressionize(list, code); foreach (Expression exp in expressions) { returnValue = exp.GetValue(); } } catch (TokenizeException e) { Console.WriteLine(e); } catch (ExpressionException e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception:\n" + e.Message); Console.ForegroundColor = ConsoleColor.White; Console.Write("\nException at: "); e.CallStack.OutputStackposition(); } return(returnValue); }
public static void RunDebug(string code) { var tokenizer = new Tokenizer(); try { List <Token> list = tokenizer.Tokenize(code); var debug = Expand(list).ToList(); var names = debug.Select(t => t.Name).ToList(); var types = debug.Select(t => MapType(t.Type)).ToList(); var texts = debug.Select(t => t.Text).ToList(); var lengths = names.Zip(types.Zip(texts)).Select((a) => Math.Max(a.First.Length, Math.Max(a.Second.First.Length, a.Second.Second.Length))).ToList(); for (int i = 0; i < 3; i++) { List <string> cur = i switch { 0 => names, 1 => types, 2 => texts }; for (int j = 0; j < debug.Count; j++) { string str = new string(' ', (lengths[j] - cur[j].Length) / 2); str += cur[j]; str += new string(' ', lengths[j] + 3 - str.Length); Console.Write(str); } Console.WriteLine(); } Console.WriteLine(); IEnumerable <Expression> expressions = new Expressionizer().Expressionize(list, code); foreach (Expression exp in expressions) { Console.Write(exp.ToString() + "="); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(exp.GetValue()); Console.ForegroundColor = ConsoleColor.White; } } catch (TokenizeException e) { Console.WriteLine(e); } catch (ExpressionException e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception:\n" + e.Message); Console.ForegroundColor = ConsoleColor.White; Console.Write("\nException at: "); e.CallStack.OutputStackposition(); } }