Started working on butnot/difference/xor, but not gonna finish those tonight.
This commit is contained in:
parent
37ff85eae8
commit
7fa1111d84
2 changed files with 20 additions and 1 deletions
18
src/hammer.c
18
src/hammer.c
|
|
@ -254,7 +254,23 @@ const parser_t* choice(const parser_t* p_array[]) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
const parser_t* butnot(const parser_t* p1, const parser_t* p2) { return NULL; }
|
typedef struct {
|
||||||
|
const parser_t *p1;
|
||||||
|
const parser_t *p2;
|
||||||
|
} two_parsers_t;
|
||||||
|
|
||||||
|
|
||||||
|
static parse_result_t parse_butnot(void *env, parse_state_t *state) {
|
||||||
|
two_parsers_t *parsers = (two_parsers_t*)env;
|
||||||
|
input_stream_t tmp_state = state->input_stream;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const parser_t* butnot(const parser_t* p1, const parser_t* p2) {
|
||||||
|
two_parsers_t *env = g_new(two_parsers_t, 1);
|
||||||
|
env->p1 = p1; env->p2 = p2;
|
||||||
|
}
|
||||||
|
|
||||||
const parser_t* difference(const parser_t* p1, const parser_t* p2) { return NULL; }
|
const parser_t* difference(const parser_t* p1, const parser_t* p2) { return NULL; }
|
||||||
const parser_t* xor(const parser_t* p1, const parser_t* p2) { return NULL; }
|
const parser_t* xor(const parser_t* p1, const parser_t* p2) { return NULL; }
|
||||||
const parser_t* repeat0(const parser_t* p) { return NULL; }
|
const parser_t* repeat0(const parser_t* p) { return NULL; }
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,10 @@ const parser_t* nothing_p();
|
||||||
|
|
||||||
/* Given an array of parsers, p_array, apply each parser in order. The parse succeeds only if all parsers succeed. */
|
/* Given an array of parsers, p_array, apply each parser in order. The parse succeeds only if all parsers succeed. */
|
||||||
const parser_t* sequence(const parser_t* p_array[]);
|
const parser_t* sequence(const parser_t* p_array[]);
|
||||||
|
|
||||||
|
/* Given an array of parsers, p_array, apply each parser in order. The first parser to succeed is the result; if no parsers succeed, the parse fails. */
|
||||||
const parser_t* choice(const parser_t* p_array[]);
|
const parser_t* choice(const parser_t* p_array[]);
|
||||||
|
|
||||||
const parser_t* butnot(const parser_t* p1, const parser_t* p2);
|
const parser_t* butnot(const parser_t* p1, const parser_t* p2);
|
||||||
const parser_t* difference(const parser_t* p1, const parser_t* p2);
|
const parser_t* difference(const parser_t* p1, const parser_t* p2);
|
||||||
const parser_t* xor(const parser_t* p1, const parser_t* p2);
|
const parser_t* xor(const parser_t* p1, const parser_t* p2);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue