private void MainWindow_StackChanged(Stack <Token> stack, PrecedenceRelation relation, ArraySegment <Token> segment, List <Token> prn) { ViewModel.PrecedenceParsingSteps.Add(new PrecedenceParsingStep { StackContent = stack.Aggregate(string.Empty, (agr, cur) => string.Join(" ", cur.Substring, agr)).Trim(), InputTokens = segment.Aggregate(string.Empty, (agr, cur) => string.Join(" ", agr, cur.Substring)).Trim(), Prn = prn.Aggregate(string.Empty, (agr, cur) => string.Join(" ", agr, cur.Substring)).Trim(), Relation = relation.ToString() }); }
public async Task Process() { Console.WriteLine("Type 'help' for a list of commands"); while (Running) { try { string line = await Console.In.ReadLineAsync().ConfigureAwait(false); string[] tokens = line.Split(' '); if (tokens.Length == 0) { return; } string commandName = tokens[0].ToLower(); if (Commands.ContainsKey(commandName)) { var args = new ArraySegment <string>(tokens, 1, tokens.Length - 1).ToArray(); Utility.LogInfo("Command: {0} {1}", commandName, args.Aggregate(string.Empty, (x, y) => x + " " + y)); try { await Commands[commandName].Execute(args); } catch (Exception ex) { Utility.LogException(ex); } } } catch (Exception ex) { Utility.LogException(ex); } } }