static void Main(string[] args) { Console.Title = "ArithmeticExpression"; Console.WriteLine("'vars' to list variables, 'clear' to clear expression tree"); var e = new ExpressionTree(); var p = new Interpreter.InputParser(e); string line; while (!string.IsNullOrEmpty(line = Console.ReadLine())) { switch (line) { case "vars": // Dump variables Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("Variables:"); foreach (var kvp in e.Context.Variables) Console.WriteLine("\t{0} = {1}", kvp.Key, kvp.Value); Console.ForegroundColor = ConsoleColor.Gray; break; case "clear": e.Clear(); break; default: p.Parse(line); try { Console.WriteLine(); Console.WriteLine(e.InfixExpression); Console.WriteLine($"Stack: [{string.Join(" ", e.GetEvaluated())}]"); } catch (UndefinedVariableException ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($">> {ex.Message}"); Console.ForegroundColor = ConsoleColor.Gray; } break; } } Console.ReadKey(); }
public InputParser(ExpressionTree expression) { Expression = expression; }