Implement Backreferences #3

Merged
Rockingcool merged 6 commits from implementBackreferences into master 2025-02-12 21:17:36 -06:00
5 changed files with 245 additions and 116 deletions
Showing only changes of commit 81b8b1b11c - Show all commits

View File

@@ -319,7 +319,7 @@ func findAllSubmatchHelper(start *nfaState, str []rune, offset int, numGroups in
if currentState.contentContains(str, idx, preferLongest) { if currentState.contentContains(str, idx, preferLongest) {
nextStates = addStateToList(str, idx+1, nextStates, *currentState.next, currentState.threadGroups, nil, preferLongest) nextStates = addStateToList(str, idx+1, nextStates, *currentState.next, currentState.threadGroups, nil, preferLongest)
} }
} else if currentState.isBackreference { } else if currentState.isBackreference && currentState.threadGroups[currentState.referredGroup].IsValid() {
groupLength := currentState.threadGroups[currentState.referredGroup].EndIdx - currentState.threadGroups[currentState.referredGroup].StartIdx groupLength := currentState.threadGroups[currentState.referredGroup].EndIdx - currentState.threadGroups[currentState.referredGroup].StartIdx
if currentState.threadBackref == groupLength { if currentState.threadBackref == groupLength {
currentState.threadBackref = 0 currentState.threadBackref = 0