private void PrettyPrint(TextWriter writer, SyntaxNode node, string indent = "", bool isLast = true) { var marker = isLast ? "└──" : "├──"; var token = node as SyntaxToken; writer.ColorWrite(indent, ConsoleColor.White); writer.ColorWrite(marker, ConsoleColor.White); if (token is null) { writer.ColorWrite(node.Kind, ConsoleColor.White); } else { writer.ColorWrite(token.TokenKind); var colorized = ColorizedText.ColorizeToken(token, null); writer.ColorWrite(" "); writer.ColorWrite(token.Location.ToString(), colorized.Color); } writer.WriteLine(); indent += isLast ? " " : "│ "; var lastChild = node.GetChildren().LastOrDefault(); foreach (var child in node.GetChildren()) { PrettyPrint(writer, child, indent, child == lastChild); } }
protected override void RenderLine(IReadOnlyList <string> lines, int lineCount) { var line = lines[lineCount]; var src = new SourceText(line, "<stdin>"); var colorizedText = ColorizedText.ColorizeTokens(src); Console.Out.WriteColorizedText(colorizedText); Console.WriteLine(); }