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
Constructors -
Method Summary
Modifier and TypeMethodDescription<R extends CtElement>
Revaluate(R element)Partially evaluates an element and all its sub-elements.protected voidThis method is called by the scanner when exiting a scanned element.<T> voidvisitCtAnnotationFieldAccess(CtAnnotationFieldAccess<T> annotationFieldAccess)Visits a field of an annotation.<T, A extends T>
voidvisitCtAssignment(CtAssignment<T,A> variableAssignment)Visits an assignment.<T> voidvisitCtBinaryOperator(CtBinaryOperator<T> operator)Visits a binary operator.<R> voidvisitCtBlock(CtBlock<R> block)Visits a block of code.voidvisitCtCatch(CtCatch catchBlock)Visits acatchclause.<T> voidvisitCtCatchVariable(CtCatchVariable<T> catchVariable)Visits a catch variable declaration.<T> voidvisitCtConditional(CtConditional<T> conditional)Visits a conditional expressionvoidVisits adoloop.<T> voidvisitCtField(CtField<T> f)Visits a field declaration.<T> voidvisitCtFieldRead(CtFieldRead<T> fieldRead)Visits a field read access.<T> voidvisitCtFieldWrite(CtFieldWrite<T> fieldWrite)Visits a field write access.voidvisitCtFor(CtFor forLoop)Visits aforloop.voidVisits anifstatement.<T> voidvisitCtInvocation(CtInvocation<T> invocation)Visits an executable invocation.<T> voidvisitCtLiteral(CtLiteral<T> ctLiteral)Visits a literal expression.<T> voidvisitCtLocalVariable(CtLocalVariable<T> localVariable)Visits a local variable declaration.<R> voidvisitCtReturn(CtReturn<R> returnStatement)Visits areturnstatement.voidvisitCtSynchronized(CtSynchronized synchro)Visits asynchronizedmodifier.voidvisitCtThrow(CtThrow throwStatement)Visits athrowstatement.<T> voidvisitCtUnaryOperator(CtUnaryOperator<T> operator)Visits a unary operator.<T> voidvisitCtVariableRead(CtVariableRead<T> variableRead)Visits a variable read access.<T> voidvisitCtVariableWrite(CtVariableWrite<T> variableWrite)Visits a variable write access.voidvisitCtWhile(CtWhile whileLoop)Visits awhileloop.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:CtScannerThis method is called by the scanner when exiting a scanned element. To be overridden to implement specific scanners. -
evaluate
Description copied from interface:PartialEvaluatorPartially evaluates an element and all its sub-elements.- Specified by:
evaluatein 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:CtVisitorVisits a binary operator.- Specified by:
visitCtBinaryOperatorin interfaceCtVisitor- Overrides:
visitCtBinaryOperatorin classCtScanner
-
visitCtBlock
Description copied from interface:CtVisitorVisits a block of code.- Specified by:
visitCtBlockin interfaceCtVisitor- Overrides:
visitCtBlockin classCtScanner
-
visitCtDo
Description copied from interface:CtVisitorVisits adoloop. -
visitCtFieldRead
Description copied from interface:CtVisitorVisits a field read access.- Specified by:
visitCtFieldReadin interfaceCtVisitor- Overrides:
visitCtFieldReadin classCtScanner
-
visitCtFieldWrite
Description copied from interface:CtVisitorVisits a field write access.- Specified by:
visitCtFieldWritein interfaceCtVisitor- Overrides:
visitCtFieldWritein classCtScanner
-
visitCtAnnotationFieldAccess
Description copied from interface:CtVisitorVisits a field of an annotation.- Specified by:
visitCtAnnotationFieldAccessin interfaceCtVisitor- Overrides:
visitCtAnnotationFieldAccessin classCtScanner
-
visitCtFor
Description copied from interface:CtVisitorVisits aforloop.- Specified by:
visitCtForin interfaceCtVisitor- Overrides:
visitCtForin classCtScanner
-
visitCtIf
Description copied from interface:CtVisitorVisits anifstatement. -
visitCtInvocation
Description copied from interface:CtVisitorVisits an executable invocation.- Specified by:
visitCtInvocationin interfaceCtVisitor- Overrides:
visitCtInvocationin classCtScanner
-
visitCtField
Description copied from interface:CtVisitorVisits a field declaration.- Specified by:
visitCtFieldin interfaceCtVisitor- Overrides:
visitCtFieldin classCtScanner
-
visitCtLiteral
Description copied from interface:CtVisitorVisits a literal expression.- Specified by:
visitCtLiteralin interfaceCtVisitor- Overrides:
visitCtLiteralin classCtScanner
-
visitCtLocalVariable
Description copied from interface:CtVisitorVisits a local variable declaration.- Specified by:
visitCtLocalVariablein interfaceCtVisitor- Overrides:
visitCtLocalVariablein classCtScanner
-
visitCtCatchVariable
Description copied from interface:CtVisitorVisits a catch variable declaration.- Specified by:
visitCtCatchVariablein interfaceCtVisitor- Overrides:
visitCtCatchVariablein classCtScanner
-
visitCtReturn
Description copied from interface:CtVisitorVisits areturnstatement.- Specified by:
visitCtReturnin interfaceCtVisitor- Overrides:
visitCtReturnin classCtScanner
-
visitCtSynchronized
Description copied from interface:CtVisitorVisits asynchronizedmodifier.- Specified by:
visitCtSynchronizedin interfaceCtVisitor- Overrides:
visitCtSynchronizedin classCtScanner
-
visitCtThrow
Description copied from interface:CtVisitorVisits athrowstatement.- Specified by:
visitCtThrowin interfaceCtVisitor- Overrides:
visitCtThrowin classCtScanner
-
visitCtCatch
Description copied from interface:CtVisitorVisits acatchclause.- Specified by:
visitCtCatchin interfaceCtVisitor- Overrides:
visitCtCatchin classCtScanner
-
visitCtUnaryOperator
Description copied from interface:CtVisitorVisits a unary operator.- Specified by:
visitCtUnaryOperatorin interfaceCtVisitor- Overrides:
visitCtUnaryOperatorin classCtScanner
-
visitCtVariableRead
Description copied from interface:CtVisitorVisits a variable read access.- Specified by:
visitCtVariableReadin interfaceCtVisitor- Overrides:
visitCtVariableReadin classCtScanner
-
visitCtVariableWrite
Description copied from interface:CtVisitorVisits a variable write access.- Specified by:
visitCtVariableWritein interfaceCtVisitor- Overrides:
visitCtVariableWritein classCtScanner
-
visitCtAssignment
Description copied from interface:CtVisitorVisits an assignment.- Specified by:
visitCtAssignmentin interfaceCtVisitor- Overrides:
visitCtAssignmentin classCtScanner
-
visitCtWhile
Description copied from interface:CtVisitorVisits awhileloop.- Specified by:
visitCtWhilein interfaceCtVisitor- Overrides:
visitCtWhilein classCtScanner
-
visitCtConditional
Description copied from interface:CtVisitorVisits a conditional expression- Specified by:
visitCtConditionalin interfaceCtVisitor- Overrides:
visitCtConditionalin classCtScanner
-