| @@ -3,12 +3,21 @@ | |||
| #include "lex.h" | |||
| #include "../io.h" | |||
| #include "../strset.h" | |||
| struct l2_parse_state { | |||
| struct l2_lexer *lexer; | |||
| struct l2_bufio_writer writer; | |||
| struct l2_strset atoms; | |||
| struct l2_strset strings; | |||
| }; | |||
| void l2_parse_init( | |||
| struct l2_parse_state *state, | |||
| struct l2_lexer *lexer, struct l2_io_writer *w); | |||
| void l2_parse_free(struct l2_parse_state *state); | |||
| void l2_parse_program(struct l2_parse_state *state); | |||
| #endif | |||
| @@ -2,6 +2,20 @@ | |||
| #include "gen/gen.h" | |||
| void l2_parse_init( | |||
| struct l2_parse_state *state, | |||
| struct l2_lexer *lexer, struct l2_io_writer *w) { | |||
| state->lexer = lexer; | |||
| l2_bufio_writer_init(&state->writer, w); | |||
| l2_strset_init(&state->atoms); | |||
| l2_strset_init(&state->strings); | |||
| } | |||
| void l2_parse_free(struct l2_parse_state *state) { | |||
| l2_strset_free(&state->atoms); | |||
| l2_strset_free(&state->strings); | |||
| } | |||
| void l2_parse_program(struct l2_parse_state *state) { | |||
| l2_gen_stack_frame(&state->writer); | |||
| } | |||