diff --git a/src/hammer.c b/src/hammer.c index b59b8630c1a7ff9c5901b874e40df5a6a6adb9b0..09358d4e239589481691b008710ecff12edb493b 100644 --- a/src/hammer.c +++ b/src/hammer.c @@ -443,8 +443,27 @@ const parser_t* xor(const parser_t* p1, const parser_t* p2) { const parser_t* repeat0(const parser_t* p) { return NULL; } const parser_t* repeat1(const parser_t* p) { return NULL; } const parser_t* repeat_n(const parser_t* p, const size_t n) { return NULL; } -const parser_t* optional(const parser_t* p) { return NULL; } -const parser_t* ignore(const parser_t* p) { return NULL; } + +static parse_result_t* parse_optional(void *env, parse_state_t *state) { + return NULL; +} + +const parser_t* optional(const parser_t* p) { + parser_t *ret = g_new(parser_t, 1); + ret->fn = parse_optional; ret->env = NULL; + return ret; +} + +static parse_result_t* parse_ignore(void *env, parse_state_t *state) { + return NULL; +} + +const parser_t* ignore(const parser_t* p) { + parser_t *ret = g_new(parser_t, 1); + ret->fn = parse_ignore; ret->env = NULL; + return ret; +} + const parser_t* list(const parser_t* p, const parser_t* sep) { return NULL; } const parser_t* epsilon_p() { return NULL; } const parser_t* attr_bool(const parser_t* p, attr_bool_t a) { return NULL; }