Beispiel #1
0
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("> ");
                var line = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(line))
                {
                    return;
                }

                var parser     = new ParserImplementation(line);
                var syntaxTree = parser.Parse();
                var color      = Console.ForegroundColor;
                PrettyPrint(syntaxTree.Root);

                if (!parser.Diagnostics.Any())
                {
                    var   e      = new Evaluator(syntaxTree.Root);
                    float result = e.Evaluate();
                    Console.WriteLine(syntaxTree.Root);
                    Console.WriteLine(result);
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    foreach (var diagnostic in parser.Diagnostics)
                    {
                        Console.Write(diagnostic);
                    }

                    Console.ForegroundColor = color;
                }

                var lexer = new Lexer(line);
                while (true)
                {
                    var token = lexer.NextToken();
                    if (token.Kind == SyntaxKind.EndOfFileToken)
                    {
                        break;
                    }

                    Console.Write($"{token.Kind}: '{token.Text}' ");
                    if (token.Value != null)
                    {
                        Console.WriteLine($" {token.Value}");
                    }

                    Console.WriteLine();
                }
            }
        }
Beispiel #2
0
 public ClientEventHandler(ClientCommunicationHandler handler)
 {
     _handler     = handler;
     _xmlParser   = new ParserImplementation();
     _shouldClose = false;
 }