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); } } }
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(); }