#ifndef __PARSER_H__ #define __PARSER_H__ #include "../lexer/lexer.h" #include "ast.h" typedef struct lexer lexer_t; typedef struct symtab symtab_t; #define PARSER_MAX_TOKEN_QUEUE 16 typedef struct parser { ast_node_t* root; ast_node_t* cur_node; lexer_t* lexer; symtab_t* symtab; tok_stream_t tokbuf; tok_t TokenBuffer[PARSER_MAX_TOKEN_QUEUE]; int err_level; } parser_t; void init_parser(parser_t* parser, lexer_t* lexer, symtab_t* symtab); void run_parser(parser_t* parser); #endif