[Groovy] Class ASTMatcher
- org.codehaus.groovy.macro.matcher.ASTMatcher
@AutoFinal @CompileStatic class ASTMatcher extends ContextualClassCodeVisitor
Field Summary
Modifiers | Name | Description |
---|---|---|
static String | WILDCARD |
Methods Summary
Inherited Methods Summary
Field Detail
public static final String WILDCARD
Method Detail
static List<TreeContext> find(ASTNode node, ASTNode pattern)
Locates all nodes in the given AST which match the pattern AST. This operation can cost a lot, because it tries to match a sub-tree to every node of the AST.
- Parameters:
-
node
- an AST Node -
pattern
- a pattern to be found somewhere in the AST
- Returns:
- a list of TreeContext, always not null.
@Override protected SourceUnit getSourceUnit()
<T> T ifConstraint(T defaultValue, @DelegatesTo(value: MatchingConstraints, strategy: Closure.DELEGATE_FIRST) Closure<T> code)
static boolean matches(ASTNode node, ASTNode pattern)
Matches an AST with another AST (pattern). It will return true if the AST matches all the nodes from the pattern AST.
- Parameters:
-
node
- the AST we want to match with -
pattern
- the pattern AST we want to match to
- Returns:
- true if this AST matches the pattern
@Override void visitAnnotations(AnnotatedNode node)
@Override void visitArrayExpression(ArrayExpression expression)
@Override void visitAttributeExpression(AttributeExpression expression)
@Override void visitBinaryExpression(BinaryExpression expression)
@Override void visitBitwiseNegationExpression(BitwiseNegationExpression expression)
@Override void visitBlockStatement(BlockStatement block)
@Override void visitBooleanExpression(BooleanExpression expression)
@Override void visitCastExpression(CastExpression expression)
@Override void visitClass(ClassNode node)
@Override protected void visitClassCodeContainer(Statement code)
@Override @CompileDynamic void visitClassExpression(ClassExpression expression)
@Override void visitClosureExpression(ClosureExpression expression)
@Override void visitClosureListExpression(ClosureListExpression cle)
@Override @CompileDynamic void visitConstantExpression(ConstantExpression expression)
@Override void visitConstructorCallExpression(ConstructorCallExpression call)
@Override protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)
@Override @CompileDynamic void visitDeclarationExpression(DeclarationExpression expression)
@Override void visitExpressionStatement(ExpressionStatement statement)
@Override void visitField(FieldNode node)
@Override void visitForLoop(ForStatement forLoop)
@Override void visitGStringExpression(GStringExpression expression)
@Override void visitIfElse(IfStatement ifElse)
@Override void visitImports(ModuleNode node)
@Override void visitListExpression(ListExpression expression)
@Override void visitListOfExpressions(List<? extends Expression> list)
@Override void visitMapEntryExpression(MapEntryExpression expression)
@Override void visitMapExpression(MapExpression expression)
@Override void visitMethodCallExpression(MethodCallExpression call)
@Override void visitMethodPointerExpression(MethodPointerExpression expression)
@Override void visitNotExpression(NotExpression expression)
@Override protected void visitObjectInitializerStatements(ClassNode node)
@Override void visitPackage(PackageNode node)
@Override void visitPostfixExpression(PostfixExpression expression)
@Override void visitPrefixExpression(PrefixExpression expression)
@Override void visitProperty(PropertyNode node)
@Override void visitPropertyExpression(PropertyExpression expression)
@Override void visitRangeExpression(RangeExpression expression)
@Override void visitSpreadExpression(SpreadExpression expression)
@Override void visitTernaryExpression(TernaryExpression expression)
@Override void visitTupleExpression(TupleExpression expression)
@Override void visitUnaryMinusExpression(UnaryMinusExpression expression)
@Override void visitUnaryPlusExpression(UnaryPlusExpression expression)
@Override void visitVariableExpression(VariableExpression expression)
@Override void visitWhileLoop(WhileStatement loop)
static ASTNode withConstraints(ASTNode pattern, @DelegatesTo(value: MatchingConstraintsBuilder, strategy: Closure.DELEGATE_ONLY) Closure constraintsSpec)
TODO: experimental! Annotates an AST node with matching contraints. This method should be called on an AST intended to be used as a pattern only. It will put node metadata on the AST node allowing customized behavior in pattern matching.
- Parameters:
-
pattern
- a pattern AST -
constraintsSpec
- a closure specification of matching constraints
- Returns:
- the same pattern, annotated with constraints
© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/org/codehaus/groovy/macro/matcher/ASTMatcher.html