pub fn alt3<P1, P2, P3, A>(
parser1: P1,
parser2: P2,
parser3: P3
) -> impl Fn(ParseInput<'_>) -> ParseResult<'_, A>where
P1: Fn(ParseInput<'_>) -> ParseResult<'_, A>,
P2: Fn(ParseInput<'_>) -> ParseResult<'_, A>,
P3: Fn(ParseInput<'_>) -> ParseResult<'_, A>,