Package com.tonic.analysis.source.ast
Class ASTPrinter
- java.lang.Object
-
- com.tonic.analysis.source.ast.ASTPrinter
-
- All Implemented Interfaces:
SourceVisitor<Void>
public class ASTPrinter extends Object implements SourceVisitor<Void>
Debug visitor that renders an expression/statement AST as an indented tree, optionally with types.
-
-
Constructor Summary
Constructors Constructor Description ASTPrinter()Creates a printer that annotates nodes with their types.ASTPrinter(boolean showTypes)Creates a printer.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Stringformat(ASTNode node)Formats a node as an indented tree with type annotations.static Stringformat(ASTNode node, boolean showTypes)Formats a node as an indented tree.static StringformatCompact(ASTNode node)Formats a node as an indented tree without type annotations.StringtoString()VoidvisitArrayAccess(ArrayAccessExpr expr)Visits an array element access.VoidvisitArrayInit(ArrayInitExpr expr)Visits a braced array initializer.VoidvisitArrayType(ArraySourceType type)Visits an array type.VoidvisitBinary(BinaryExpr expr)Visits a binary operation.VoidvisitBlock(BlockStmt stmt)Visits a braced block.VoidvisitBreak(BreakStmt stmt)Visits a break statement.VoidvisitCast(CastExpr expr)Visits a cast.VoidvisitClass(ClassExpr expr)Visits a class literal.VoidvisitContinue(ContinueStmt stmt)Visits a continue statement.VoidvisitDoWhile(DoWhileStmt stmt)Visits a do-while loop.VoidvisitDynamicConstant(DynamicConstantExpr expr)Visits a dynamically computed constant.VoidvisitExprStmt(ExprStmt stmt)Visits an expression used as a statement.VoidvisitFieldAccess(FieldAccessExpr expr)Visits a field access.VoidvisitFor(ForStmt stmt)Visits a counted for loop.VoidvisitForEach(ForEachStmt stmt)Visits an enhanced for loop.VoidvisitIf(IfStmt stmt)Visits an if statement.VoidvisitInstanceOf(InstanceOfExpr expr)Visits aninstanceoftest.VoidvisitInvokeDynamic(InvokeDynamicExpr expr)Visits an invokedynamic call site.VoidvisitIRRegion(IRRegionStmt stmt)Visits a region of control flow that stayed in IR form because it could not be structured.VoidvisitLabeled(LabeledStmt stmt)Visits a labeled statement.VoidvisitLambda(LambdaExpr expr)Visits a lambda expression.VoidvisitLiteral(LiteralExpr expr)Visits a literal.VoidvisitMethodCall(MethodCallExpr expr)Visits a method call.VoidvisitMethodRef(MethodRefExpr expr)Visits a method reference.VoidvisitNew(NewExpr expr)Visits an object allocation.VoidvisitNewArray(NewArrayExpr expr)Visits an array allocation.VoidvisitPrimitiveType(PrimitiveSourceType type)Visits a primitive type.VoidvisitReferenceType(ReferenceSourceType type)Visits a class or interface type.VoidvisitReturn(ReturnStmt stmt)Visits a return statement.VoidvisitSuper(SuperExpr expr)Visits asuperreference.VoidvisitSwitch(SwitchStmt stmt)Visits a switch statement.VoidvisitSynchronized(SynchronizedStmt stmt)Visits a synchronized block.VoidvisitTernary(TernaryExpr expr)Visits a ternary conditional.VoidvisitThis(ThisExpr expr)Visits athisreference.VoidvisitThrow(ThrowStmt stmt)Visits a throw statement.VoidvisitTryCatch(TryCatchStmt stmt)Visits a try statement, with its catch clauses and finally block.VoidvisitUnary(UnaryExpr expr)Visits a unary operation.VoidvisitVarDecl(VarDeclStmt stmt)Visits a local variable declaration.VoidvisitVarRef(VarRefExpr expr)Visits a variable reference.VoidvisitVoidType(VoidSourceType type)Visits the void type.VoidvisitWhile(WhileStmt stmt)Visits a while loop.-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.tonic.analysis.source.visitor.SourceVisitor
visitAnnotationExpr, visitClassDecl, visitCompilationUnit, visitConstructorDecl, visitEnumConstantDecl, visitEnumDecl, visitFieldDecl, visitImportDecl, visitInterfaceDecl, visitMethodDecl, visitParameterDecl, visitSwitchExpr
-
-
-
-
Method Detail
-
format
public static String format(ASTNode node)
Formats a node as an indented tree with type annotations.- Parameters:
node- the node to format- Returns:
- the tree rendering
-
format
public static String format(ASTNode node, boolean showTypes)
Formats a node as an indented tree.- Parameters:
node- the node to formatshowTypes- whether to annotate nodes with their types- Returns:
- the tree rendering
-
formatCompact
public static String formatCompact(ASTNode node)
Formats a node as an indented tree without type annotations.- Parameters:
node- the node to format- Returns:
- the tree rendering
-
visitBinary
public Void visitBinary(BinaryExpr expr)
Description copied from interface:SourceVisitorVisits a binary operation.- Specified by:
visitBinaryin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitUnary
public Void visitUnary(UnaryExpr expr)
Description copied from interface:SourceVisitorVisits a unary operation.- Specified by:
visitUnaryin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitLiteral
public Void visitLiteral(LiteralExpr expr)
Description copied from interface:SourceVisitorVisits a literal.- Specified by:
visitLiteralin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitVarRef
public Void visitVarRef(VarRefExpr expr)
Description copied from interface:SourceVisitorVisits a variable reference.- Specified by:
visitVarRefin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitFieldAccess
public Void visitFieldAccess(FieldAccessExpr expr)
Description copied from interface:SourceVisitorVisits a field access.- Specified by:
visitFieldAccessin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitArrayAccess
public Void visitArrayAccess(ArrayAccessExpr expr)
Description copied from interface:SourceVisitorVisits an array element access.- Specified by:
visitArrayAccessin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitMethodCall
public Void visitMethodCall(MethodCallExpr expr)
Description copied from interface:SourceVisitorVisits a method call.- Specified by:
visitMethodCallin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitNew
public Void visitNew(NewExpr expr)
Description copied from interface:SourceVisitorVisits an object allocation.- Specified by:
visitNewin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitNewArray
public Void visitNewArray(NewArrayExpr expr)
Description copied from interface:SourceVisitorVisits an array allocation.- Specified by:
visitNewArrayin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitArrayInit
public Void visitArrayInit(ArrayInitExpr expr)
Description copied from interface:SourceVisitorVisits a braced array initializer.- Specified by:
visitArrayInitin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitCast
public Void visitCast(CastExpr expr)
Description copied from interface:SourceVisitorVisits a cast.- Specified by:
visitCastin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitInstanceOf
public Void visitInstanceOf(InstanceOfExpr expr)
Description copied from interface:SourceVisitorVisits aninstanceoftest.- Specified by:
visitInstanceOfin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitTernary
public Void visitTernary(TernaryExpr expr)
Description copied from interface:SourceVisitorVisits a ternary conditional.- Specified by:
visitTernaryin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitThis
public Void visitThis(ThisExpr expr)
Description copied from interface:SourceVisitorVisits athisreference.- Specified by:
visitThisin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitSuper
public Void visitSuper(SuperExpr expr)
Description copied from interface:SourceVisitorVisits asuperreference.- Specified by:
visitSuperin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitClass
public Void visitClass(ClassExpr expr)
Description copied from interface:SourceVisitorVisits a class literal.- Specified by:
visitClassin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitLambda
public Void visitLambda(LambdaExpr expr)
Description copied from interface:SourceVisitorVisits a lambda expression.- Specified by:
visitLambdain interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitMethodRef
public Void visitMethodRef(MethodRefExpr expr)
Description copied from interface:SourceVisitorVisits a method reference.- Specified by:
visitMethodRefin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitInvokeDynamic
public Void visitInvokeDynamic(InvokeDynamicExpr expr)
Description copied from interface:SourceVisitorVisits an invokedynamic call site.- Specified by:
visitInvokeDynamicin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitDynamicConstant
public Void visitDynamicConstant(DynamicConstantExpr expr)
Description copied from interface:SourceVisitorVisits a dynamically computed constant.- Specified by:
visitDynamicConstantin interfaceSourceVisitor<Void>- Parameters:
expr- the expression node- Returns:
- the visitor's result
-
visitBlock
public Void visitBlock(BlockStmt stmt)
Description copied from interface:SourceVisitorVisits a braced block.- Specified by:
visitBlockin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitIf
public Void visitIf(IfStmt stmt)
Description copied from interface:SourceVisitorVisits an if statement.- Specified by:
visitIfin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitWhile
public Void visitWhile(WhileStmt stmt)
Description copied from interface:SourceVisitorVisits a while loop.- Specified by:
visitWhilein interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitDoWhile
public Void visitDoWhile(DoWhileStmt stmt)
Description copied from interface:SourceVisitorVisits a do-while loop.- Specified by:
visitDoWhilein interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitFor
public Void visitFor(ForStmt stmt)
Description copied from interface:SourceVisitorVisits a counted for loop.- Specified by:
visitForin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitForEach
public Void visitForEach(ForEachStmt stmt)
Description copied from interface:SourceVisitorVisits an enhanced for loop.- Specified by:
visitForEachin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitSwitch
public Void visitSwitch(SwitchStmt stmt)
Description copied from interface:SourceVisitorVisits a switch statement.- Specified by:
visitSwitchin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitTryCatch
public Void visitTryCatch(TryCatchStmt stmt)
Description copied from interface:SourceVisitorVisits a try statement, with its catch clauses and finally block.- Specified by:
visitTryCatchin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitReturn
public Void visitReturn(ReturnStmt stmt)
Description copied from interface:SourceVisitorVisits a return statement.- Specified by:
visitReturnin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitThrow
public Void visitThrow(ThrowStmt stmt)
Description copied from interface:SourceVisitorVisits a throw statement.- Specified by:
visitThrowin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitBreak
public Void visitBreak(BreakStmt stmt)
Description copied from interface:SourceVisitorVisits a break statement.- Specified by:
visitBreakin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitContinue
public Void visitContinue(ContinueStmt stmt)
Description copied from interface:SourceVisitorVisits a continue statement.- Specified by:
visitContinuein interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitVarDecl
public Void visitVarDecl(VarDeclStmt stmt)
Description copied from interface:SourceVisitorVisits a local variable declaration.- Specified by:
visitVarDeclin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitExprStmt
public Void visitExprStmt(ExprStmt stmt)
Description copied from interface:SourceVisitorVisits an expression used as a statement.- Specified by:
visitExprStmtin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitSynchronized
public Void visitSynchronized(SynchronizedStmt stmt)
Description copied from interface:SourceVisitorVisits a synchronized block.- Specified by:
visitSynchronizedin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitLabeled
public Void visitLabeled(LabeledStmt stmt)
Description copied from interface:SourceVisitorVisits a labeled statement.- Specified by:
visitLabeledin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitIRRegion
public Void visitIRRegion(IRRegionStmt stmt)
Description copied from interface:SourceVisitorVisits a region of control flow that stayed in IR form because it could not be structured.- Specified by:
visitIRRegionin interfaceSourceVisitor<Void>- Parameters:
stmt- the statement node- Returns:
- the visitor's result
-
visitPrimitiveType
public Void visitPrimitiveType(PrimitiveSourceType type)
Description copied from interface:SourceVisitorVisits a primitive type.- Specified by:
visitPrimitiveTypein interfaceSourceVisitor<Void>- Parameters:
type- the type node- Returns:
- the visitor's result
-
visitReferenceType
public Void visitReferenceType(ReferenceSourceType type)
Description copied from interface:SourceVisitorVisits a class or interface type.- Specified by:
visitReferenceTypein interfaceSourceVisitor<Void>- Parameters:
type- the type node- Returns:
- the visitor's result
-
visitArrayType
public Void visitArrayType(ArraySourceType type)
Description copied from interface:SourceVisitorVisits an array type.- Specified by:
visitArrayTypein interfaceSourceVisitor<Void>- Parameters:
type- the type node- Returns:
- the visitor's result
-
visitVoidType
public Void visitVoidType(VoidSourceType type)
Description copied from interface:SourceVisitorVisits the void type.- Specified by:
visitVoidTypein interfaceSourceVisitor<Void>- Parameters:
type- the type node- Returns:
- the visitor's result
-
-