Use pointers instead of values

This commit is contained in:
2025-02-06 22:06:22 -05:00
parent ed4ffde64e
commit 8534174ea1

View File

@@ -987,7 +987,8 @@ func thompson(re []postfixNode) (Reg, error) {
if c.nodetype == charclassNode { // A Character class consists of all the nodes in it, alternated if c.nodetype == charclassNode { // A Character class consists of all the nodes in it, alternated
// Map the list of nodes to a list of states, each state containing the contents of a specific node // Map the list of nodes to a list of states, each state containing the contents of a specific node
states := funcMap(c.nodeContents, func(node postfixNode) *nfaState { states := funcMap(c.nodeContents, func(node postfixNode) *nfaState {
s := newState() s := &nfaState{}
s.output = append(s.output, s)
nodeContents := node.contents nodeContents := node.contents
if caseInsensitive { if caseInsensitive {
nodeContents = slices.Concat(funcMap(nodeContents, func(r rune) []rune { nodeContents = slices.Concat(funcMap(nodeContents, func(r rune) []rune {
@@ -1001,7 +1002,7 @@ func thompson(re []postfixNode) (Reg, error) {
return n.contents return n.contents
})...) })...)
} }
return &s return s
}) })
// Reduce the list of states down to a single state by alternating them // Reduce the list of states down to a single state by alternating them
toAdd := funcReduce(states, func(s1 *nfaState, s2 *nfaState) *nfaState { toAdd := funcReduce(states, func(s1 *nfaState, s2 *nfaState) *nfaState {