Simplified Result
This commit is contained in:
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user