12#define MATCH(parse_expr) \
14 const Compy_ParseResult parse_res_var = parse_expr; \
16 match(parse_res_var) { \
17 of(Compy_ParseResult_Success, status) { \
19 of(Compy_ParseStatus_Complete, offset) input = \
20 CharSlice99_advance(input, *offset); \
21 otherwise return parse_res_var; \
24 of(Compy_ParseResult_Failure, err) { \
25 return Compy_ParseResult_Failure(*err); \
33Compy_ParseResult compy_match_until(
34 CharSlice99 input,
bool (*matcher)(
char c,
void *ctx),
void *ctx);
37compy_match_until_str(CharSlice99 input,
const char *restrict str);
39Compy_ParseResult compy_match_until_crlf(CharSlice99 input);
40Compy_ParseResult compy_match_until_double_crlf(CharSlice99 input);
41Compy_ParseResult compy_match_char(CharSlice99 input,
char c);
42Compy_ParseResult compy_match_str(CharSlice99 input,
const char *restrict str);
43Compy_ParseResult compy_match_whitespaces(CharSlice99 input);
44Compy_ParseResult compy_match_non_whitespaces(CharSlice99 input);
45Compy_ParseResult compy_match_numeric(CharSlice99 input);
46Compy_ParseResult compy_match_ident(CharSlice99 input);
47Compy_ParseResult compy_match_header_name(CharSlice99 input);