Fix and document matcher operator 'shadowing' behaviour
@@ -138,7 +138,10 @@ cdef int get_action(const TokenPatternC* pattern, const TokenC* token) nogil:
# This is a bandaid over the 'shadowing' problem described here:
# https://github.com/explosion/spaCy/issues/864
next_action = get_action(pattern+1, token)
- return REPEAT if next_action is REJECT else next_action
+ if next_action is REJECT:
+ return REPEAT
+ else:
+ return ADVANCE_ZERO
else:
return PANIC
@@ -228,9 +231,8 @@ cdef class Matcher:
return len(self._patterns)
def add(self, key, on_match, *patterns):
- """Add a match-rule to the matcher.
- A match-rule consists of: an ID key, an on_match callback, and one or
- more patterns.
+ """Add a match-rule to the matcher. A match-rule consists of: an ID key,
+ an on_match callback, and one or more patterns.
If the key exists, the patterns are appended to the previous ones, and
the previous on_match callback is replaced. The `on_match` callback will
