From 8a5260ae50486c5e424d9778b7ec824b27842b9d Mon Sep 17 00:00:00 2001 From: Adam Scarr Date: Mon, 11 Jun 2018 11:54:35 +1000 Subject: remove branch predictor in Any fixes #2 --- combinator.go | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) (limited to 'combinator.go') diff --git a/combinator.go b/combinator.go index 38145ee..5b0d584 100644 --- a/combinator.go +++ b/combinator.go @@ -36,7 +36,6 @@ func NoAutoWS(parser Parserish) Parser { func Any(parsers ...Parserish) Parser { parserfied := ParsifyAll(parsers...) // Records which parser was successful for each byte, and will use it first next time. - predictor := [255]int{} return NewParser("Any()", func(ps *State, node *Result) { ps.WS(ps) @@ -45,13 +44,6 @@ func Any(parsers ...Parserish) Parser { return } startpos := ps.Pos - predictorChar := ps.Input[startpos] - predicted := predictor[predictorChar] - - parserfied[predicted](ps, node) - if !ps.Errored() { - return - } longestError := ps.Error if ps.Cut <= startpos { @@ -60,10 +52,7 @@ func Any(parsers ...Parserish) Parser { return } - for i, parser := range parserfied { - if i == predicted { - continue - } + for _, parser := range parserfied { parser(ps, node) if ps.Errored() { if ps.Error.pos >= longestError.pos { @@ -75,7 +64,6 @@ func Any(parsers ...Parserish) Parser { ps.Recover() continue } - predictor[predictorChar] = i return } -- cgit v1.2.3