diff options
Diffstat (limited to 'core/parser.c')
| -rw-r--r-- | core/parser.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/core/parser.c b/core/parser.c index 58a1bc5..4779803 100644 --- a/core/parser.c +++ b/core/parser.c @@ -58,6 +58,28 @@ static const char *toktab[] = { [TT_U64] = qtok("u64") }; +static int +parser_nom(struct cescal_state *state, struct token *res) +{ + struct token tok; + + if (state == NULL || res == NULL) { + errno = EINVAL; + return -1; + } + + if (lexer_nom(state, &tok) < 0) { + return -1; + } + + if (tokbuf_push(&state->tokbuf, &tok) < 0) { + return -1; + } + + *res = tok; + return 0; +} + int parser_parse(struct cescal_state *state) { @@ -68,7 +90,7 @@ parser_parse(struct cescal_state *state) return -1; } - while (lexer_nom(state, &tok) == 0) { + while (parser_nom(state, &tok) == 0) { cc_trace("got token %s\n", tokstr(&tok)); } |
