edu.stanford.nlp.trees.tregex
Class TregexMatcher

java.lang.Object
  extended by edu.stanford.nlp.trees.tregex.TregexMatcher

public abstract class TregexMatcher
extends java.lang.Object

A TregexMatcher can be used to match a TregexPattern against a Tree. Usage should be similar to a Matcher.

Author:
Galen Andrew

Method Summary
 boolean find()
          Find the next match of the pattern on the tree
 boolean findAt(Tree node)
          Similar to find(), but matches only if node is the root of the match.
 boolean findNextMatchingNode()
          Find the next match of the pattern on the tree such that the matching node (that is, the tree node matching the root node of the pattern) differs from the previous matching node.
abstract  Tree getMatch()
          Get the last matching tree -- that is, the tree node that matches the root node of the pattern.
 Tree getNode(java.lang.String name)
          Returns the node labeled with name in the pattern.
 java.util.Set<java.lang.String> getNodeNames()
           
 java.lang.String getVariableString(java.lang.String var)
          If there is a current match, and that match involves setting this particular variable string, this returns that string.
abstract  boolean matches()
          Does the pattern match the tree? It's actually closer to java.util.regex's "lookingAt" in that the root of the tree has to match the root of the pattern but the whole tree does not have to be "accounted for".
 boolean matchesAt(Tree node)
          Rests the matcher and tests if it matches on the tree when rooted at node.
 void reset()
          Resets the matcher so that its search starts over.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

reset

public void reset()
Resets the matcher so that its search starts over.


matches

public abstract boolean matches()
Does the pattern match the tree? It's actually closer to java.util.regex's "lookingAt" in that the root of the tree has to match the root of the pattern but the whole tree does not have to be "accounted for". Like with lookingAt the beginning of the string has to match the pattern, but the whole string doesn't have to be "accounted for".

Returns:
whether the tree matches the pattern

matchesAt

public boolean matchesAt(Tree node)
Rests the matcher and tests if it matches on the tree when rooted at node.

Parameters:
node - The node where the match is checked
Returns:
whether the matcher matches at node

getMatch

public abstract Tree getMatch()
Get the last matching tree -- that is, the tree node that matches the root node of the pattern. Returns null if there has not been a match.

Returns:
last match

find

public boolean find()
Find the next match of the pattern on the tree

Returns:
whether there is a match somewhere in the tree

findAt

public boolean findAt(Tree node)
Similar to find(), but matches only if node is the root of the match. All other matches are ignored. If you know you are looking for matches with a particular root, this is much faster than iterating over all matches and taking only the ones that work and faster than altering the tregex to match only the correct node.
If called multiple times with the same node, this will return subsequent matches in the same manner as find() returns subsequent matches in the same tree. If you want to call this using the same TregexMatcher on more than one node, call reset() first; otherwise, an AssertionError will be thrown.


findNextMatchingNode

public boolean findNextMatchingNode()
Find the next match of the pattern on the tree such that the matching node (that is, the tree node matching the root node of the pattern) differs from the previous matching node.

Returns:
true iff another matching node is found.

getNode

public Tree getNode(java.lang.String name)
Returns the node labeled with name in the pattern.

Parameters:
name - the name of the node, specified in the pattern.
Returns:
node labeled by the name

getNodeNames

public java.util.Set<java.lang.String> getNodeNames()

getVariableString

public java.lang.String getVariableString(java.lang.String var)
If there is a current match, and that match involves setting this particular variable string, this returns that string. Otherwise, it returns null.



Stanford NLP Group