From e8322ca988fc20baf7892915e6ccb069b11c608e Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 8 Jan 2022 18:14:59 +0530 Subject: feat(parser): implements or syntax --- src/parser/utils.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/parser/utils.ts') 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 = ( p: Parser, a: Parser, s: Parser, -): Parser => suffixed(prefixed(p, a), s) +): Parser => recoverInput(suffixed(prefixed(p, a), s)) export const satifyChar = (f: (c: char) => boolean): Parser => @@ -150,13 +150,16 @@ export const optional = (p: Parser): Parser> => ) export const pair = (a: Parser, b: Parser): 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: Parser, b: Parser, c: Parser, -): 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])) -- cgit v1.3.1