Simplified Result

This commit is contained in:
2024-09-24 12:56:10 -06:00
parent 9cab6d266d
commit f8bc7582a5
7 changed files with 142 additions and 207 deletions

View File

@ -12,8 +12,6 @@ func Bind{{.}}[In, Out{{range .Count}}, T{{.}}{{end}} any](
{{template "fparams" .}}) Parser[In, Out] {
return func(s State[In]) (Result[In, Out], error) {
var anyConsumed bool
var failed bool
var msg Message
var next = s
{{range .Next.Count}}
r{{.}}, err := {{if eq . 1}}p(next){{else}}f{{.Prev}}(val{{.Prev}})(next){{end}}
@ -21,11 +19,10 @@ func Bind{{.}}[In, Out{{range .Count}}, T{{.}}{{end}} any](
return Result[In, Out]{}, err
}
anyConsumed = anyConsumed || r{{.}}.Consumed()
failed, _, msg = r{{.}}.Failed()
if failed {
return Fail[In, Out](anyConsumed, msg), nil
if r{{.}}.Failed() {
return Fail[In, Out](anyConsumed, r{{.}}.Message()), nil
}
_, _, val{{.}}, next, _ := r{{.}}.Succeeded()
_, val{{.}}, next := r{{.}}.Succeeded()
{{end}}
return Succeed(anyConsumed, val{{.Next}}, next, MessageOK(s.Pos())), nil
}

View File

@ -8,8 +8,6 @@ func Seq{{.}}[In, Out{{range .Count}}, T{{.}}{{end}} any](
) Parser[In, Out] {
return func(s State[In]) (Result[In, Out], error) {
var anyConsumed bool
var failed bool
var msg Message
var next = s
{{range .Count}}
r{{.}}, err := p{{.}}(next)
@ -17,11 +15,10 @@ func Seq{{.}}[In, Out{{range .Count}}, T{{.}}{{end}} any](
return Result[In, Out]{}, err
}
anyConsumed = anyConsumed || r{{.}}.Consumed()
failed, _, msg = r{{.}}.Failed()
if failed {
return Fail[In, Out](anyConsumed, msg), nil
if r{{.}}.Failed() {
return Fail[In, Out](anyConsumed, r{{.}}.Message()), nil
}
_, _, val{{.}}, next, _ := r{{.}}.Succeeded()
_, val{{.}}, next := r{{.}}.Succeeded()
{{end}}
final := f({{range .Count}}{{if ne . 1}}, {{end}}val{{.}}{{end}})
return Succeed(anyConsumed, final, next, MessageOK(s.Pos())), nil