| #include "lex.h" | #include "lex.h" | ||||
| #include "../io.h" | #include "../io.h" | ||||
| #include "../strset.h" | |||||
| struct l2_parse_state { | struct l2_parse_state { | ||||
| struct l2_lexer *lexer; | struct l2_lexer *lexer; | ||||
| struct l2_bufio_writer writer; | 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); | void l2_parse_program(struct l2_parse_state *state); | ||||
| #endif | #endif |
| #include "gen/gen.h" | #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) { | void l2_parse_program(struct l2_parse_state *state) { | ||||
| l2_gen_stack_frame(&state->writer); | l2_gen_stack_frame(&state->writer); | ||||
| } | } |