public class UnparseVisitor extends java.lang.Object implements Visitor.ComprehensiveVisitor
Writer
. See main(String[])
for a usage example.Modifier and Type | Field and Description |
---|---|
private static java.util.Set<java.lang.String> |
LEFT_ASSOCIATIVE_OPERATORS |
private static java.util.Map<java.lang.String,java.lang.Integer> |
OPERATOR_PRECEDENCE |
protected java.io.PrintWriter |
pw
Where the
visit...() methods print their text. |
private static java.util.Set<java.lang.String> |
RIGHT_ASSOCIATIVE_OPERATORS |
private static java.util.Set<java.lang.String> |
UNARY_OPERATORS |
Constructor and Description |
---|
UnparseVisitor(java.io.Writer w) |
protected final java.io.PrintWriter pw
visit...()
methods print their text. Noice that this PrintWriter
does not print to
the output directly, but through an AutoIndentWriter
.private static final java.util.Set<java.lang.String> LEFT_ASSOCIATIVE_OPERATORS
private static final java.util.Set<java.lang.String> RIGHT_ASSOCIATIVE_OPERATORS
private static final java.util.Set<java.lang.String> UNARY_OPERATORS
private static final java.util.Map<java.lang.String,java.lang.Integer> OPERATOR_PRECEDENCE
public static void main(java.lang.String[] args) throws java.lang.Exception
Reads compilation units from the files named on the command line
and unparses them to System.out
.
java.lang.Exception
public static void unparse(Java.CompilationUnit cu, java.io.Writer w)
Java.CompilationUnit
to the given Writer
.public void close()
public void unparseCompilationUnit(Java.CompilationUnit cu)
cu
- The compilation unit to unparsepublic void visitSingleTypeImportDeclaration(Java.CompilationUnit.SingleTypeImportDeclaration stid)
Visitor.ImportVisitor
visitSingleTypeImportDeclaration
in interface Visitor.ImportVisitor
public void visitTypeImportOnDemandDeclaration(Java.CompilationUnit.TypeImportOnDemandDeclaration tiodd)
Visitor.ImportVisitor
visitTypeImportOnDemandDeclaration
in interface Visitor.ImportVisitor
public void visitSingleStaticImportDeclaration(Java.CompilationUnit.SingleStaticImportDeclaration ssid)
Visitor.ImportVisitor
visitSingleStaticImportDeclaration
in interface Visitor.ImportVisitor
public void visitStaticImportOnDemandDeclaration(Java.CompilationUnit.StaticImportOnDemandDeclaration siodd)
Visitor.ImportVisitor
visitStaticImportOnDemandDeclaration
in interface Visitor.ImportVisitor
public void visitLocalClassDeclaration(Java.LocalClassDeclaration lcd)
Visitor.TypeDeclarationVisitor
visitLocalClassDeclaration
in interface Visitor.TypeDeclarationVisitor
public void visitMemberClassDeclaration(Java.MemberClassDeclaration mcd)
Visitor.TypeDeclarationVisitor
visitMemberClassDeclaration
in interface Visitor.TypeBodyDeclarationVisitor
visitMemberClassDeclaration
in interface Visitor.TypeDeclarationVisitor
public void visitMemberInterfaceDeclaration(Java.MemberInterfaceDeclaration mid)
Visitor.TypeDeclarationVisitor
visitMemberInterfaceDeclaration
in interface Visitor.TypeBodyDeclarationVisitor
visitMemberInterfaceDeclaration
in interface Visitor.TypeDeclarationVisitor
public void visitPackageMemberClassDeclaration(Java.PackageMemberClassDeclaration pmcd)
Visitor.TypeDeclarationVisitor
visitPackageMemberClassDeclaration
in interface Visitor.TypeDeclarationVisitor
public void visitPackageMemberInterfaceDeclaration(Java.PackageMemberInterfaceDeclaration pmid)
Visitor.TypeDeclarationVisitor
visitPackageMemberInterfaceDeclaration
in interface Visitor.TypeDeclarationVisitor
public void visitConstructorDeclarator(Java.ConstructorDeclarator cd)
Visitor.FunctionDeclaratorVisitor
visitConstructorDeclarator
in interface Visitor.FunctionDeclaratorVisitor
public void visitMethodDeclarator(Java.MethodDeclarator md)
Visitor.FunctionDeclaratorVisitor
visitMethodDeclarator
in interface Visitor.FunctionDeclaratorVisitor
public void visitFieldDeclaration(Java.FieldDeclaration fd)
Visitor.TypeBodyDeclarationVisitor
visitFieldDeclaration
in interface Visitor.BlockStatementVisitor
visitFieldDeclaration
in interface Visitor.TypeBodyDeclarationVisitor
public void visitInitializer(Java.Initializer i)
Visitor.TypeBodyDeclarationVisitor
visitInitializer
in interface Visitor.BlockStatementVisitor
visitInitializer
in interface Visitor.TypeBodyDeclarationVisitor
public void visitBlock(Java.Block b)
Visitor.BlockStatementVisitor
visitBlock
in interface Visitor.BlockStatementVisitor
private void unparseStatements(java.util.List<? extends Java.BlockStatement> statements)
public void visitBreakStatement(Java.BreakStatement bs)
Visitor.BlockStatementVisitor
visitBreakStatement
in interface Visitor.BlockStatementVisitor
public void visitContinueStatement(Java.ContinueStatement cs)
Visitor.BlockStatementVisitor
visitContinueStatement
in interface Visitor.BlockStatementVisitor
public void visitAssertStatement(Java.AssertStatement as)
Visitor.BlockStatementVisitor
visitAssertStatement
in interface Visitor.BlockStatementVisitor
public void visitDoStatement(Java.DoStatement ds)
Visitor.BlockStatementVisitor
visitDoStatement
in interface Visitor.BlockStatementVisitor
public void visitEmptyStatement(Java.EmptyStatement es)
Visitor.BlockStatementVisitor
visitEmptyStatement
in interface Visitor.BlockStatementVisitor
public void visitExpressionStatement(Java.ExpressionStatement es)
Visitor.BlockStatementVisitor
visitExpressionStatement
in interface Visitor.BlockStatementVisitor
public void visitForStatement(Java.ForStatement fs)
Visitor.BlockStatementVisitor
visitForStatement
in interface Visitor.BlockStatementVisitor
public void visitForEachStatement(Java.ForEachStatement fes)
Visitor.BlockStatementVisitor
visitForEachStatement
in interface Visitor.BlockStatementVisitor
public void visitIfStatement(Java.IfStatement is)
Visitor.BlockStatementVisitor
visitIfStatement
in interface Visitor.BlockStatementVisitor
public void visitLabeledStatement(Java.LabeledStatement ls)
Visitor.BlockStatementVisitor
visitLabeledStatement
in interface Visitor.BlockStatementVisitor
public void visitLocalClassDeclarationStatement(Java.LocalClassDeclarationStatement lcds)
Visitor.BlockStatementVisitor
visitLocalClassDeclarationStatement
in interface Visitor.BlockStatementVisitor
public void visitLocalVariableDeclarationStatement(Java.LocalVariableDeclarationStatement lvds)
Visitor.BlockStatementVisitor
visitLocalVariableDeclarationStatement
in interface Visitor.BlockStatementVisitor
public void visitReturnStatement(Java.ReturnStatement rs)
Visitor.BlockStatementVisitor
visitReturnStatement
in interface Visitor.BlockStatementVisitor
public void visitSwitchStatement(Java.SwitchStatement ss)
Visitor.BlockStatementVisitor
visitSwitchStatement
in interface Visitor.BlockStatementVisitor
public void visitSynchronizedStatement(Java.SynchronizedStatement ss)
Visitor.BlockStatementVisitor
visitSynchronizedStatement
in interface Visitor.BlockStatementVisitor
public void visitThrowStatement(Java.ThrowStatement ts)
Visitor.BlockStatementVisitor
visitThrowStatement
in interface Visitor.BlockStatementVisitor
public void visitTryStatement(Java.TryStatement ts)
Visitor.BlockStatementVisitor
visitTryStatement
in interface Visitor.BlockStatementVisitor
public void visitWhileStatement(Java.WhileStatement ws)
Visitor.BlockStatementVisitor
visitWhileStatement
in interface Visitor.BlockStatementVisitor
private void unparseVariableDeclarator(Java.VariableDeclarator vd)
private void unparseFormalParameter(Java.FunctionDeclarator.FormalParameter fp, boolean hasEllipsis)
public void visitMethodInvocation(Java.MethodInvocation mi)
Visitor.RvalueVisitor
visitMethodInvocation
in interface Visitor.RvalueVisitor
public void visitAlternateConstructorInvocation(Java.AlternateConstructorInvocation aci)
Visitor.BlockStatementVisitor
visitAlternateConstructorInvocation
in interface Visitor.BlockStatementVisitor
public void visitSuperConstructorInvocation(Java.SuperConstructorInvocation sci)
Visitor.BlockStatementVisitor
visitSuperConstructorInvocation
in interface Visitor.BlockStatementVisitor
public void visitNewClassInstance(Java.NewClassInstance nci)
Visitor.RvalueVisitor
visitNewClassInstance
in interface Visitor.RvalueVisitor
public void visitAssignment(Java.Assignment a)
Visitor.RvalueVisitor
visitAssignment
in interface Visitor.RvalueVisitor
public void visitAmbiguousName(Java.AmbiguousName an)
Visitor.LvalueVisitor
visitAmbiguousName
in interface Visitor.LvalueVisitor
public void visitArrayAccessExpression(Java.ArrayAccessExpression aae)
Visitor.LvalueVisitor
visitArrayAccessExpression
in interface Visitor.LvalueVisitor
public void visitArrayLength(Java.ArrayLength al)
Visitor.RvalueVisitor
visitArrayLength
in interface Visitor.RvalueVisitor
public void visitArrayType(Java.ArrayType at)
Visitor.TypeVisitor
Java.ArrayType.accept(Visitor.TypeVisitor)
visitArrayType
in interface Visitor.TypeVisitor
public void visitBasicType(Java.BasicType bt)
Visitor.TypeVisitor
Java.BasicType.accept(Visitor.TypeVisitor)
visitBasicType
in interface Visitor.TypeVisitor
public void visitBinaryOperation(Java.BinaryOperation bo)
Visitor.RvalueVisitor
visitBinaryOperation
in interface Visitor.RvalueVisitor
public void visitCast(Java.Cast c)
Visitor.RvalueVisitor
Java.Cast.accept(Visitor.RvalueVisitor)
visitCast
in interface Visitor.RvalueVisitor
public void visitClassLiteral(Java.ClassLiteral cl)
Visitor.RvalueVisitor
visitClassLiteral
in interface Visitor.RvalueVisitor
public void visitConditionalExpression(Java.ConditionalExpression ce)
Visitor.RvalueVisitor
visitConditionalExpression
in interface Visitor.RvalueVisitor
public void visitCrement(Java.Crement c)
Visitor.RvalueVisitor
Java.Crement.accept(Visitor.RvalueVisitor)
visitCrement
in interface Visitor.RvalueVisitor
public void visitFieldAccess(Java.FieldAccess fa)
Visitor.LvalueVisitor
visitFieldAccess
in interface Visitor.LvalueVisitor
public void visitFieldAccessExpression(Java.FieldAccessExpression fae)
Visitor.LvalueVisitor
visitFieldAccessExpression
in interface Visitor.LvalueVisitor
public void visitSuperclassFieldAccessExpression(Java.SuperclassFieldAccessExpression scfae)
Visitor.LvalueVisitor
visitSuperclassFieldAccessExpression
in interface Visitor.LvalueVisitor
public void visitInstanceof(Java.Instanceof io)
Visitor.RvalueVisitor
visitInstanceof
in interface Visitor.RvalueVisitor
public void visitIntegerLiteral(Java.IntegerLiteral il)
Visitor.RvalueVisitor
visitIntegerLiteral
in interface Visitor.RvalueVisitor
public void visitFloatingPointLiteral(Java.FloatingPointLiteral fpl)
Visitor.RvalueVisitor
visitFloatingPointLiteral
in interface Visitor.RvalueVisitor
public void visitBooleanLiteral(Java.BooleanLiteral bl)
Visitor.RvalueVisitor
visitBooleanLiteral
in interface Visitor.RvalueVisitor
public void visitCharacterLiteral(Java.CharacterLiteral cl)
Visitor.RvalueVisitor
visitCharacterLiteral
in interface Visitor.RvalueVisitor
public void visitStringLiteral(Java.StringLiteral sl)
Visitor.RvalueVisitor
visitStringLiteral
in interface Visitor.RvalueVisitor
public void visitNullLiteral(Java.NullLiteral nl)
Visitor.RvalueVisitor
visitNullLiteral
in interface Visitor.RvalueVisitor
public void visitSimpleConstant(Java.SimpleConstant sl)
Visitor.RvalueVisitor
visitSimpleConstant
in interface Visitor.RvalueVisitor
public void visitLocalVariableAccess(Java.LocalVariableAccess lva)
Visitor.LvalueVisitor
visitLocalVariableAccess
in interface Visitor.LvalueVisitor
public void visitNewArray(Java.NewArray na)
Visitor.RvalueVisitor
Java.NewArray.accept(Visitor.RvalueVisitor)
visitNewArray
in interface Visitor.RvalueVisitor
public void visitNewInitializedArray(Java.NewInitializedArray nai)
Visitor.RvalueVisitor
visitNewInitializedArray
in interface Visitor.RvalueVisitor
public void visitPackage(Java.Package p)
Visitor.AtomVisitor
Java.Package.accept(Visitor.AtomVisitor)
.visitPackage
in interface Visitor.AtomVisitor
public void visitParameterAccess(Java.ParameterAccess pa)
Visitor.RvalueVisitor
visitParameterAccess
in interface Visitor.RvalueVisitor
public void visitQualifiedThisReference(Java.QualifiedThisReference qtr)
Visitor.RvalueVisitor
visitQualifiedThisReference
in interface Visitor.RvalueVisitor
public void visitReferenceType(Java.ReferenceType rt)
Visitor.TypeVisitor
visitReferenceType
in interface Visitor.TypeVisitor
public void visitRvalueMemberType(Java.RvalueMemberType rmt)
Visitor.TypeVisitor
visitRvalueMemberType
in interface Visitor.TypeVisitor
public void visitSimpleType(Java.SimpleType st)
Visitor.TypeVisitor
Java.SimpleType.accept(Visitor.TypeVisitor)
visitSimpleType
in interface Visitor.TypeVisitor
public void visitSuperclassMethodInvocation(Java.SuperclassMethodInvocation smi)
Visitor.RvalueVisitor
visitSuperclassMethodInvocation
in interface Visitor.RvalueVisitor
public void visitThisReference(Java.ThisReference tr)
Visitor.RvalueVisitor
visitThisReference
in interface Visitor.RvalueVisitor
public void visitUnaryOperation(Java.UnaryOperation uo)
Visitor.RvalueVisitor
visitUnaryOperation
in interface Visitor.RvalueVisitor
public void visitParenthesizedExpression(Java.ParenthesizedExpression pe)
Visitor.LvalueVisitor
visitParenthesizedExpression
in interface Visitor.LvalueVisitor
private void unparseBlockStatement(Java.BlockStatement blockStatement)
private void unparseTypeDeclaration(Java.TypeDeclaration typeDeclaration)
private void unparseType(Java.Type type)
private void unparse(Java.Atom operand)
private void unparseUnaryOperation(Java.Rvalue operand, java.lang.String unaryOperator)
operand
is unnatural for the unaryOperator
, enclose the
operand
in parentheses. Example: "a+b" is an unnatural operand for unary "!x".unaryOperator
- ++x --x +x -x ~x !x x++ x--private void unparseLhs(Java.Atom lhs, java.lang.String binaryOperator)
lhs
is unnatural for the binaryOperator
, enclose the
lhs
in parentheses. Example: "a+b" is an unnatural lhs for operator "*".binaryOperator
- = +=... ?: || && | ^ & == != < > <= >= instanceof << >> >>> + - * / % castprivate void unparseRhs(Java.Rvalue rhs, java.lang.String binaryOperator)
rhs
is unnatural for the binaryOperator
, enclose the
rhs
in parentheses. Example: "a+b" is an unnatural rhs for operator "*".private void unparse(Java.Atom operand, boolean natural)
private static boolean isRightAssociate(java.lang.String op)
a = b = c
evaluates as
a = (b = c)
.private static boolean isLeftAssociate(java.lang.String op)
a - b - c
evaluates as
(a - b) - c
.private static int comparePrecedence(java.lang.String operator, Java.Atom operand)
operator
has lower precedence than the operand
operator
has equal precedence than the operand
operator
has higher precedence than the operand
private static int getOperatorPrecedence(java.lang.String operator)
private void unparseNamedClassDeclaration(Java.NamedClassDeclaration ncd)
private void unparseArrayInitializerOrRvalue(Java.ArrayInitializerOrRvalue aiorv)
public void visitAnonymousClassDeclaration(Java.AnonymousClassDeclaration acd)
Visitor.TypeDeclarationVisitor
visitAnonymousClassDeclaration
in interface Visitor.TypeDeclarationVisitor
public void visitNewAnonymousClassInstance(Java.NewAnonymousClassInstance naci)
Visitor.RvalueVisitor
visitNewAnonymousClassInstance
in interface Visitor.RvalueVisitor
private void unparseClassDeclarationBody(Java.ClassDeclaration cd)
private void unparseInterfaceDeclaration(Java.InterfaceDeclaration id)
private void unparseAbstractTypeDeclarationBody(Java.AbstractTypeDeclaration atd)
private void unparseFunctionDeclaratorRest(Java.FunctionDeclarator fd)
private void unparseDocComment(Java.DocCommentable dc)
private void unparseAnnotations(Java.Annotation[] annotations)
private void unparseModifiers(short modifiers)
private void unparseFunctionInvocationArguments(Java.Rvalue[] arguments)
public void visitMarkerAnnotation(Java.MarkerAnnotation ma)
Visitor.AnnotationVisitor
visitMarkerAnnotation
in interface Visitor.AnnotationVisitor
public void visitNormalAnnotation(Java.NormalAnnotation na)
Visitor.AnnotationVisitor
visitNormalAnnotation
in interface Visitor.AnnotationVisitor
public void visitSingleElementAnnotation(Java.SingleElementAnnotation sea)
Visitor.AnnotationVisitor
visitSingleElementAnnotation
in interface Visitor.AnnotationVisitor
public void visitElementValueArrayInitializer(Java.ElementValueArrayInitializer evai)
Visitor.ElementValueVisitor
visitElementValueArrayInitializer
in interface Visitor.ElementValueVisitor