Skip to main content
Module

x/pazza/mod.ts>choice

Parser combinators library designed for Deno, but also works on browsers and Node.js.
Go to Latest
function choice
import { choice } from "https://deno.land/x/pazza@v0.3.0/mod.ts";

Attempt to run each parser of a list of parsers. Once a parser succeeds, return its result. If no parsers succeed, return last result.

const parser = choice(char("-"), char("+"), char("."));
parser("-").output === "-";
parser("+").output === "+";
parser(".").output === ".";
parser("").ok === false;

Type Parameters

P extends readonly IParser<unknown, unknown, string, unknown, unknown>[]

Parameters

...parsers: P

Alternative parsers. Order is insensitive.

Returns

ChoiceParser<string, P>

Attempt to run each parser of a list of parsers. Once a parser succeeds, return its result. If no parsers succeed, return last result.

const parser = choice(byte(1), byte(2), byte(3));
parser(Uint8Array.of(1)).output === 1;
parser(Uint8Array.of(2)).output === 2;
parser(Uint8Array.of(3)).output === 3;
parser(Uint8Array.of()).ok === false;

Type Parameters

P extends readonly IParser<unknown, unknown, Uint8Array, unknown, unknown>[]

Parameters

...parsers: P

Alternative parsers. Order is insensitive.

Returns

ChoiceParser<Uint8Array, P>