diff options
Diffstat (limited to 'src/utils/parser-comb.ts')
| -rw-r--r-- | src/utils/parser-comb.ts | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/utils/parser-comb.ts b/src/utils/parser-comb.ts index e0665f6..f682068 100644 --- a/src/utils/parser-comb.ts +++ b/src/utils/parser-comb.ts @@ -73,3 +73,11 @@ export const sepBy = <A>(parser: Parser<A>, sepP: Parser<any>): Parser<Array<A>> Err: _ => Result.Ok({ value: [], input: originalInput }), }) +export const optional = <A>(parser: Parser<A>): Parser<undefined | A> => input => { + const result = parser(input) + return match(result, { + Ok: _ => result, + Err: _ => Result.Ok({ value: undefined, input }) + }) +} + |
