Upsilon/Upsilon/Utilities/NodeStringFormatter.cs

27 lines
709 B
C#

using System.Text;
using Upsilon.Parser;
namespace Upsilon.Utilities
{
public static class NodeStringFormatter
{
public static string Print(this SyntaxNode token, int depth = 0)
{
var sb = new StringBuilder();
var tabs = depth - 1;
for (var i = 0; i < tabs; i++)
sb.Append("\t");
if (depth > 0)
{
sb.Append("|-- ");
}
sb.Append(token.Kind);
foreach (var syntaxNode in token.ChildNodes())
{
sb.Append("\n");
sb.Append(syntaxNode.Print(depth + 1));
}
return sb.ToString();
}
}
}