#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); | ||||
} | } |