diff options
Diffstat (limited to '')
| -rw-r--r-- | src/parser/utils.ts | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/parser/utils.ts b/src/parser/utils.ts index a06b6c9..debff22 100644 --- a/src/parser/utils.ts +++ b/src/parser/utils.ts @@ -78,7 +78,7 @@ export const delimited = <T>( p: Parser<any>, a: Parser<T>, s: Parser<any>, -): Parser<T> => suffixed(prefixed(p, a), s) +): Parser<T> => recoverInput(suffixed(prefixed(p, a), s)) export const satifyChar = (f: (c: char) => boolean): Parser<char> => @@ -150,13 +150,16 @@ export const optional = <T>(p: Parser<T>): Parser<Option<T>> => ) export const pair = <A, B>(a: Parser<A>, b: Parser<B>): Parser<[A, B]> => - pipe( - a, - andThen(ra => mapTo(b, rb => [ra, rb])), + recoverInput( + pipe( + a, + andThen(ra => mapTo(b, rb => [ra, rb])), + ), ) export const tuple3 = <A, B, C>( a: Parser<A>, b: Parser<B>, c: Parser<C>, -): Parser<[A, B, C]> => mapTo(pair(pair(a, b), c), ([[a, b], c]) => [a, b, c]) +): Parser<[A, B, C]> => + recoverInput(mapTo(pair(pair(a, b), c), ([[a, b], c]) => [a, b, c])) |
