Class DefaultPrettyPrinterVisitor

  • All Implemented Interfaces:
    VoidVisitor<java.lang.Void>

    public class DefaultPrettyPrinterVisitor
    extends java.lang.Object
    implements VoidVisitor<java.lang.Void>
    Outputs the AST as formatted Java source code.
    • Field Detail

      • RTRIM

        private static java.util.regex.Pattern RTRIM
      • printer

        protected final SourcePrinter printer
        Object for outputting source code.
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • printModifiers

        protected void printModifiers​(NodeList<Modifier> modifiers)
        Print a list of modifiers on a declaration. By default, this simply outputs the string representations of the modifiers separated by spaces.
      • printMembers

        protected void printMembers​(NodeList<BodyDeclaration<?>> members,
                                    java.lang.Void arg)
        Print a list of body declarations. By default, this outputs declarations surrounded with a newline before and after.
      • printCompactClassMembers

        protected void printCompactClassMembers​(NodeList<BodyDeclaration<?>> members,
                                                java.lang.Void arg)
        Print a list of compact class members. This is similar to {@see printMembers} with the exception that the empty lines preceding the first member and following the last member are not printed.
      • printMemberAnnotations

        protected void printMemberAnnotations​(NodeList<AnnotationExpr> annotations,
                                              java.lang.Void arg)
        Print a list of annotations on a member, i.e., a top-level or body declaration. By default, this outputs each annotation on a separate line.
      • printAnnotations

        protected void printAnnotations​(NodeList<AnnotationExpr> annotations,
                                        boolean prefixWithASpace,
                                        java.lang.Void arg)
        Prints a list of annotations. By default, outputs the annotations followed by spaces. If prefixWithASpace is set, outputs an additional space at the beginning if there are annotations to output.
      • printTypeArgs

        protected void printTypeArgs​(NodeWithTypeArguments<?> nodeWithTypeArguments,
                                     java.lang.Void arg)
        Print type arguments. This outputs type arguments using the <T1, ..., Tn> syntax.
      • printTypeParameters

        protected void printTypeParameters​(NodeList<TypeParameter> args,
                                           java.lang.Void arg)
        Print type parameters. This outputs type parameters using the <T1 [extends ...] [super...], ..., Tn> syntax.
      • printArguments

        protected <T extends Expression> void printArguments​(NodeList<T> args,
                                                             java.lang.Void arg)
        Outputs arguments to a method/constructor call. This outputs arguments using the (arg1, ..., argn) syntax, using either one-line or multi-line argument lists.
      • printPrePostFixOptionalList

        protected void printPrePostFixOptionalList​(NodeList<? extends Visitable> args,
                                                   java.lang.Void arg,
                                                   java.lang.String prefix,
                                                   java.lang.String separator,
                                                   java.lang.String postfix)
        General list output functionality - no output for empty lists. This outputs nothing if args is empty, and prefix args[0] separator ... separator arg[n] suffix otherwise.
        Parameters:
        args - the nodes to output
        arg - ignored
        prefix - prefix for the list output
        separator - seperator between the list items
        postfix - suffix for the list output
      • printPrePostFixRequiredList

        protected void printPrePostFixRequiredList​(NodeList<? extends Visitable> args,
                                                   java.lang.Void arg,
                                                   java.lang.String prefix,
                                                   java.lang.String separator,
                                                   java.lang.String postfix)
        General list output functionality with output for empty lists. This outputs @{code prefix suffix} if args is empty, and prefix args[0] separator ... separator arg[n] suffix otherwise.
        Parameters:
        args - the nodes to output
        arg - ignored
        prefix - prefix for the list output
        separator - seperator between the list items
        postfix - suffix for the list output
      • printComment

        protected void printComment​(java.util.Optional<Comment> comment,
                                    java.lang.Void arg)
        Output a comment, if any.
      • visit

        public void visit​(NameExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(Name n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(ArrayType n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(UnionType n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • doPrintAsArrayOfAnnotations

        private boolean doPrintAsArrayOfAnnotations​(ArrayInitializerExpr n)
        Should the given array initializer expression be output on multiple lines, as an array of annotations?
        Returns:
        true iff the INDENT_PRINT_ARRAYS_OF_ANNOTATIONS is set and the array consists of AnnotationExpr entries.
      • visit

        public void visit​(VoidType n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(VarType n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(Modifier n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(BinaryExpr n,
                          java.lang.Void arg)
        work in progress for issue-545
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(CastExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(ClassExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(ThisExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(SuperExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(UnaryExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(Parameter n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(BlockStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(EmptyStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • printSwitchNode

        private void printSwitchNode​(SwitchNode n,
                                     java.lang.Void arg)
      • visit

        public void visit​(BreakStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(YieldStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(IfStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(WhileStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(DoStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(ForStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(ThrowStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(TryStmt n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(TypeExpr n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • visit

        public void visit​(NodeList n,
                          java.lang.Void arg)
        Specified by:
        visit in interface VoidVisitor<java.lang.Void>
      • printImports

        protected void printImports​(NodeList<ImportDeclaration> imports,
                                    java.lang.Void arg)
        Print imports using an import ordering strategy. Orders imports using the selected ordering strategy, given by ORDER_IMPORTS (which forces alphabetic ordering if set), falling back to SORT_IMPORTS_STRATEGY (which yields a user-selected ordering), and finally to DefaultImportOrderingStrategy, and out them in groups, seperated by newlines.
      • printOrphanCommentsBeforeThisChildNode

        protected void printOrphanCommentsBeforeThisChildNode​(Node node)
        Print all orphaned comments coming right before node.
      • printOrphanCommentsEnding

        protected void printOrphanCommentsEnding​(Node node)
        Print all orphan comments coming at the end of the given node.
      • indentIf

        private void indentIf​(boolean expr)
        Conditionally increase indent.
      • unindentIf

        private void unindentIf​(boolean expr)
        Conditionally decrease indent.