Class Matcher<T extends ASTNode>

java.lang.Object
io.github.douira.glsl_transformer.ast.transform.Matcher<T>

public class Matcher<T extends ASTNode> extends Object
Instances of the matcher can match a node against a stored pattern. This avoids a separate equality implementation for each node type.
  • Field Details

    • pattern

      protected final T extends ASTNode pattern
  • Constructor Details

    • Matcher

      public Matcher(T pattern, String wildcardIdentifier)
    • Matcher

      public Matcher(T pattern)
    • Matcher

      public Matcher(String input, Function<io.github.douira.glsl_transformer.GLSLParser,RuleType> parseMethod, BiFunction<ASTBuilder,RuleType,T> visitMethod, String wildcardIdentifier)
    • Matcher

      public Matcher(String input, Function<io.github.douira.glsl_transformer.GLSLParser,RuleType> parseMethod, BiFunction<ASTBuilder,RuleType,T> visitMethod)
  • Method Details

    • preparePatternItems

      public void preparePatternItems()
    • matches

      public boolean matches(T tree)
      Traverse the given tree and the pattern at the same time and make sure they are the same at each visit step.
    • matchesExtract

      public boolean matchesExtract(T tree)
    • matchesExtract

      public boolean matchesExtract(T tree, Map<String,Object> dataMatches, Map<String,ASTNode> nodeMatches)
    • matchesWide

      public boolean matchesWide(ASTNode tree)
    • matchesExtractWide

      public boolean matchesExtractWide(ASTNode tree)
    • matchesExtractWide

      public boolean matchesExtractWide(ASTNode tree, Map<String,Object> dataMatches, Map<String,ASTNode> nodeMatches)
    • getDataMatches

      public Map<String,Object> getDataMatches()
    • getNodeMatches

      public Map<String,ASTNode> getNodeMatches()
    • getDataMatch

      public Object getDataMatch(String name)
    • getStringDataMatch

      public String getStringDataMatch(String name)
    • getNodeMatch

      public ASTNode getNodeMatch(String name)
    • getNodeMatch

      public <R extends ASTNode> R getNodeMatch(String name, Class<R> clazz)
    • markAnyWildcard

      public void markAnyWildcard(String name, ASTNode patternNode)
    • markPredicatedWildcard

      public void markPredicatedWildcard(String name, ASTNode patternNode, Predicate<ASTNode> matchPredicate)
    • markClassWildcard

      public void markClassWildcard(String name, ASTNode patternNode, Class<? extends ASTNode> clazz)
    • markClassWildcard

      public void markClassWildcard(String name, ASTNode patternNode)
    • markClassedPredicateWildcard

      public <R extends ASTNode> void markClassedPredicateWildcard(String name, ASTNode patternNode, Class<R> clazz, Predicate<R> predicate)