diff options
author | Adam Scarr <adam@vektah.net> | 2018-06-11 11:54:35 +1000 |
---|---|---|
committer | Adam Scarr <adam@vektah.net> | 2018-06-11 11:54:35 +1000 |
commit | 8a5260ae50486c5e424d9778b7ec824b27842b9d (patch) | |
tree | 8cbd8a6fffe8491fda32f6e69f4e878730f53fe5 /combinator.go | |
parent | 981f4347b18e79a0b3fbaa73b2a1c31bba1a4da4 (diff) |
remove branch predictor in Any
fixes #2
Diffstat (limited to 'combinator.go')
-rw-r--r-- | combinator.go | 14 |
1 files changed, 1 insertions, 13 deletions
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 } |