Add mpc_checkf and mpc_check_withf combinators.

This commit is contained in:
Jerome M. BERGER
2018-04-03 14:53:13 +02:00
parent dfda9d3bd6
commit a63bedc74a
4 changed files with 72 additions and 0 deletions

32
mpc.c
View File

@@ -1790,6 +1790,38 @@ mpc_parser_t *mpc_check_with(mpc_parser_t *a, mpc_check_with_t f, void *x, const
return p;
}
mpc_parser_t *mpc_checkf(mpc_parser_t *a, mpc_check_t f, const char *fmt, ...) {
va_list va;
char *buffer;
mpc_parser_t *p;
va_start(va, fmt);
buffer = malloc(2048);
vsprintf(buffer, fmt, va);
va_end(va);
p = mpc_check (a, f, buffer);
free (buffer);
return p;
}
mpc_parser_t *mpc_check_withf(mpc_parser_t *a, mpc_check_with_t f, void *x, const char *fmt, ...) {
va_list va;
char *buffer;
mpc_parser_t *p;
va_start(va, fmt);
buffer = malloc(2048);
vsprintf(buffer, fmt, va);
va_end(va);
p = mpc_check_with (a, f, x, buffer);
free (buffer);
return p;
}
mpc_parser_t *mpc_predictive(mpc_parser_t *a) {
mpc_parser_t *p = mpc_undefined();
p->type = MPC_TYPE_PREDICT;