Package spoon.support.reflect.eval
Class VisitorPartialEvaluator
java.lang.Object
spoon.reflect.visitor.CtScanner
spoon.support.reflect.eval.VisitorPartialEvaluator
- All Implemented Interfaces:
PartialEvaluator
,CtVisitor
Simplifies an AST by performing all operations that are statically known and changes the AST accordingly (eg "0+1" -> "1")
This visitor implements a simple partial evaluator for the program
compile-time metamodel.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription<R extends CtElement>
Revaluate(R element)
Partially evaluates an element and all its sub-elements.protected void
This method is called by the scanner when exiting a scanned element.<T> void
visitCtAnnotationFieldAccess(CtAnnotationFieldAccess<T> annotationFieldAccess)
Visits a field of an annotation.<T, A extends T>
voidvisitCtAssignment(CtAssignment<T,A> variableAssignment)
Visits an assignment.<T> void
visitCtBinaryOperator(CtBinaryOperator<T> operator)
Visits a binary operator.<R> void
visitCtBlock(CtBlock<R> block)
Visits a block of code.void
visitCtCatch(CtCatch catchBlock)
Visits acatch
clause.<T> void
visitCtCatchVariable(CtCatchVariable<T> catchVariable)
Visits a catch variable declaration.<T> void
visitCtConditional(CtConditional<T> conditional)
Visits a conditional expressionvoid
Visits ado
loop.<T> void
visitCtField(CtField<T> f)
Visits a field declaration.<T> void
visitCtFieldRead(CtFieldRead<T> fieldRead)
Visits a field read access.<T> void
visitCtFieldWrite(CtFieldWrite<T> fieldWrite)
Visits a field write access.void
visitCtFor(CtFor forLoop)
Visits afor
loop.void
Visits anif
statement.<T> void
visitCtInvocation(CtInvocation<T> invocation)
Visits an executable invocation.<T> void
visitCtLiteral(CtLiteral<T> ctLiteral)
Visits a literal expression.<T> void
visitCtLocalVariable(CtLocalVariable<T> localVariable)
Visits a local variable declaration.<R> void
visitCtReturn(CtReturn<R> returnStatement)
Visits areturn
statement.void
visitCtSynchronized(CtSynchronized synchro)
Visits asynchronized
modifier.void
visitCtThrow(CtThrow throwStatement)
Visits athrow
statement.<T> void
visitCtUnaryOperator(CtUnaryOperator<T> operator)
Visits a unary operator.<T> void
visitCtVariableRead(CtVariableRead<T> variableRead)
Visits a variable read access.<T> void
visitCtVariableWrite(CtVariableWrite<T> variableWrite)
Visits a variable write access.void
visitCtWhile(CtWhile whileLoop)
Visits awhile
loop.Methods inherited from class spoon.reflect.visitor.CtScanner
enter, scan, scan, scan, scan, scan, scan, scan, visitCtAnnotation, visitCtAnnotationMethod, visitCtAnnotationType, visitCtAnonymousExecutable, visitCtArrayRead, visitCtArrayTypeReference, visitCtArrayWrite, visitCtAssert, visitCtBreak, visitCtCase, visitCtCatchVariableReference, visitCtClass, visitCtCodeSnippetExpression, visitCtCodeSnippetStatement, visitCtComment, visitCtCompilationUnit, visitCtConstructor, visitCtConstructorCall, visitCtContinue, visitCtEnum, visitCtEnumValue, visitCtExecutableReference, visitCtExecutableReferenceExpression, visitCtFieldReference, visitCtForEach, visitCtImport, visitCtInterface, visitCtIntersectionTypeReference, visitCtJavaDoc, visitCtJavaDocTag, visitCtLambda, visitCtLocalVariableReference, visitCtMethod, visitCtModule, visitCtModuleReference, visitCtModuleRequirement, visitCtNewArray, visitCtNewClass, visitCtOperatorAssignment, visitCtPackage, visitCtPackageDeclaration, visitCtPackageExport, visitCtPackageReference, visitCtParameter, visitCtParameterReference, visitCtProvidedService, visitCtRecord, visitCtRecordComponent, visitCtStatementList, visitCtSuperAccess, visitCtSwitch, visitCtSwitchExpression, visitCtTextBlock, visitCtThisAccess, visitCtTry, visitCtTryWithResource, visitCtTypeAccess, visitCtTypeMemberWildcardImportReference, visitCtTypeParameter, visitCtTypeParameterReference, visitCtTypePattern, visitCtTypeReference, visitCtUnboundVariableReference, visitCtUsedService, visitCtWildcardReference, visitCtYieldStatement
-
Constructor Details
-
VisitorPartialEvaluator
public VisitorPartialEvaluator()
-
-
Method Details
-
exit
Description copied from class:CtScanner
This method is called by the scanner when exiting a scanned element. To be overridden to implement specific scanners. -
evaluate
Description copied from interface:PartialEvaluator
Partially evaluates an element and all its sub-elements.- Specified by:
evaluate
in interfacePartialEvaluator
- Type Parameters:
R
- the partially evaluated element type- Parameters:
element
- the element to be partially evaluated- Returns:
- the result of the partial evaluation
-
visitCtBinaryOperator
Description copied from interface:CtVisitor
Visits a binary operator.- Specified by:
visitCtBinaryOperator
in interfaceCtVisitor
- Overrides:
visitCtBinaryOperator
in classCtScanner
-
visitCtBlock
Description copied from interface:CtVisitor
Visits a block of code.- Specified by:
visitCtBlock
in interfaceCtVisitor
- Overrides:
visitCtBlock
in classCtScanner
-
visitCtDo
Description copied from interface:CtVisitor
Visits ado
loop. -
visitCtFieldRead
Description copied from interface:CtVisitor
Visits a field read access.- Specified by:
visitCtFieldRead
in interfaceCtVisitor
- Overrides:
visitCtFieldRead
in classCtScanner
-
visitCtFieldWrite
Description copied from interface:CtVisitor
Visits a field write access.- Specified by:
visitCtFieldWrite
in interfaceCtVisitor
- Overrides:
visitCtFieldWrite
in classCtScanner
-
visitCtAnnotationFieldAccess
Description copied from interface:CtVisitor
Visits a field of an annotation.- Specified by:
visitCtAnnotationFieldAccess
in interfaceCtVisitor
- Overrides:
visitCtAnnotationFieldAccess
in classCtScanner
-
visitCtFor
Description copied from interface:CtVisitor
Visits afor
loop.- Specified by:
visitCtFor
in interfaceCtVisitor
- Overrides:
visitCtFor
in classCtScanner
-
visitCtIf
Description copied from interface:CtVisitor
Visits anif
statement. -
visitCtInvocation
Description copied from interface:CtVisitor
Visits an executable invocation.- Specified by:
visitCtInvocation
in interfaceCtVisitor
- Overrides:
visitCtInvocation
in classCtScanner
-
visitCtField
Description copied from interface:CtVisitor
Visits a field declaration.- Specified by:
visitCtField
in interfaceCtVisitor
- Overrides:
visitCtField
in classCtScanner
-
visitCtLiteral
Description copied from interface:CtVisitor
Visits a literal expression.- Specified by:
visitCtLiteral
in interfaceCtVisitor
- Overrides:
visitCtLiteral
in classCtScanner
-
visitCtLocalVariable
Description copied from interface:CtVisitor
Visits a local variable declaration.- Specified by:
visitCtLocalVariable
in interfaceCtVisitor
- Overrides:
visitCtLocalVariable
in classCtScanner
-
visitCtCatchVariable
Description copied from interface:CtVisitor
Visits a catch variable declaration.- Specified by:
visitCtCatchVariable
in interfaceCtVisitor
- Overrides:
visitCtCatchVariable
in classCtScanner
-
visitCtReturn
Description copied from interface:CtVisitor
Visits areturn
statement.- Specified by:
visitCtReturn
in interfaceCtVisitor
- Overrides:
visitCtReturn
in classCtScanner
-
visitCtSynchronized
Description copied from interface:CtVisitor
Visits asynchronized
modifier.- Specified by:
visitCtSynchronized
in interfaceCtVisitor
- Overrides:
visitCtSynchronized
in classCtScanner
-
visitCtThrow
Description copied from interface:CtVisitor
Visits athrow
statement.- Specified by:
visitCtThrow
in interfaceCtVisitor
- Overrides:
visitCtThrow
in classCtScanner
-
visitCtCatch
Description copied from interface:CtVisitor
Visits acatch
clause.- Specified by:
visitCtCatch
in interfaceCtVisitor
- Overrides:
visitCtCatch
in classCtScanner
-
visitCtUnaryOperator
Description copied from interface:CtVisitor
Visits a unary operator.- Specified by:
visitCtUnaryOperator
in interfaceCtVisitor
- Overrides:
visitCtUnaryOperator
in classCtScanner
-
visitCtVariableRead
Description copied from interface:CtVisitor
Visits a variable read access.- Specified by:
visitCtVariableRead
in interfaceCtVisitor
- Overrides:
visitCtVariableRead
in classCtScanner
-
visitCtVariableWrite
Description copied from interface:CtVisitor
Visits a variable write access.- Specified by:
visitCtVariableWrite
in interfaceCtVisitor
- Overrides:
visitCtVariableWrite
in classCtScanner
-
visitCtAssignment
Description copied from interface:CtVisitor
Visits an assignment.- Specified by:
visitCtAssignment
in interfaceCtVisitor
- Overrides:
visitCtAssignment
in classCtScanner
-
visitCtWhile
Description copied from interface:CtVisitor
Visits awhile
loop.- Specified by:
visitCtWhile
in interfaceCtVisitor
- Overrides:
visitCtWhile
in classCtScanner
-
visitCtConditional
Description copied from interface:CtVisitor
Visits a conditional expression- Specified by:
visitCtConditional
in interfaceCtVisitor
- Overrides:
visitCtConditional
in classCtScanner
-