示例#1
0
        public void Proceed(string input, ConsolePrinter printer)
        {
            AntlrInputStream  antlrInputStream  = new AntlrInputStream(input);
            GrammarLexer      grammarLexer      = new GrammarLexer(antlrInputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(grammarLexer);
            GrammarParser     grammarParser     = new GrammarParser(commonTokenStream)
            {
                BuildParseTree = true
            };
            Visitor    visitor   = new Visitor();
            IParseTree parseTree = grammarParser.operation();
            var        error     = grammarParser.NumberOfSyntaxErrors;

            if (0 < error)
            {
                printer.InvalidInput();
            }
            else
            {
                if (!visitor.Visit(parseTree).Equals(double.NaN))
                {
                    printer.PrintResult(parseTree, grammarParser, visitor);
                }
            }
        }
示例#2
0
 public void PrintResult(IParseTree parseTree, GrammarParser grammarParser, Visitor visitor)
 {
     Console.WriteLine("");
     Console.WriteLine("Drzewo parsowania:");
     Console.ForegroundColor = ConsoleColor.Cyan;
     Console.WriteLine(parseTree.ToStringTree(grammarParser));
     Console.ForegroundColor = ConsoleColor.Yellow;
     Console.WriteLine($"Wynik = {visitor.Visit(parseTree).ToString("R", FORMAT)}" + "\n");
     Console.ResetColor();
 }