Esempio n. 1
0
 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()
     });
 }
Esempio n. 2
0
        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);
                }
            }
        }