Ejemplo n.º 1
0
        public static VisualNode ToVisualTree(this SyntaxNode node, Action <VisualTreeSettings> config)
        {
            var settings = new VisualTreeSettings();

            config(settings);
            return(node.ToVisualTree(settings));
        }
Ejemplo n.º 2
0
 public static VisualNode ToVisualTree(this SyntaxTree tree, VisualTreeSettings settings)
 => tree.Root.ToVisualTree(settings);
Ejemplo n.º 3
0
        public static VisualNode ToVisualTree(this SyntaxNode node)
        {
            var settings = new VisualTreeSettings();

            return(node.ToVisualTree(settings));
        }
Ejemplo n.º 4
0
        public static VisualNode ToVisualTree(this SyntaxNode node, VisualTreeSettings settings)
        {
            switch (node.Kind)
            {
            case SyntaxKind.AssignmentExpression:
            {
                var assignment = node as AssignmentExpression;
                return(new BinaryVisualNode(
                           assignment.EqualsToken.Text,
                           assignment.Kind.ToString(),
                           new TerminalVisualNode(
                               assignment.Identifier.Text.ToString(),
                               assignment.Identifier.Kind.ToString(),
                               settings),
                           assignment.Expression.ToVisualTree(settings),
                           settings));
            }

            case SyntaxKind.BinaryExpression:
            {
                var binary = node as BinaryExpression;
                return(new BinaryVisualNode(
                           binary.Text,
                           binary.OperatorToken.Kind.ToString(),
                           binary.Left.ToVisualTree(settings),
                           binary.Right.ToVisualTree(settings),
                           settings));
            }

            case SyntaxKind.LiteralExpression:
            {
                var literal = node as LiteralExpression;
                return(new TerminalVisualNode(
                           literal.Text ?? "<empty>",
                           literal.Token.Kind.ToString(),
                           settings));
            }

            case SyntaxKind.NameExpression:
            {
                var name = node as NameExpression;
                return(new TerminalVisualNode(
                           name.IdentifierToken.Value?.ToString() ?? "<unknown>",
                           name.Kind.ToString(),
                           settings));
            }

            case SyntaxKind.ParenthesesExpression:
            {
                var parens = node as ParenthesizedExpression;
                return(parens.Expression.ToVisualTree(settings));
            }

            case SyntaxKind.UnaryExpression:
            {
                var unary = node as UnaryExpression;
                return(new UnaryVisualNode(
                           unary.Text,
                           unary.OperatorToken.Kind.ToString(),
                           unary.Operand.ToVisualTree(settings),
                           settings));
            }

            //case SyntaxKind.CompilationUnit:
            //{
            //    var unit = node as CompilationUnit;
            //    return new UnaryVisualNode(
            //        string.Empty,
            //        "CompilationUnit",
            //        unit.Members.ToVisualTree(settings),
            //        settings);
            //}

            case SyntaxKind.ExpressionStatement:
            {
                var statement = node as ExpressionStatement;
                return(statement.Expression.ToVisualTree(settings));
            }

            default:
                throw new NotImplementedException(node.Kind.ToString());
            }
        }
Ejemplo n.º 5
0
 public TerminalVisualNode(string text, string nodeType, VisualTreeSettings settings)
     : base(text, nodeType, settings)
 {
 }