26 lines
535 B
C
26 lines
535 B
C
#ifndef __PARSER_H__
|
|
#define __PARSER_H__
|
|
|
|
#include "../frontend.h"
|
|
|
|
#include "../lexer/lexer.h"
|
|
typedef struct lexer lexer_t;
|
|
typedef struct symtab symtab_t;
|
|
#define PARSER_MAX_TOKEN_QUEUE 16
|
|
|
|
typedef struct parser {
|
|
struct ASTNode* root;
|
|
struct ASTNode* cur_node;
|
|
|
|
lexer_t* lexer;
|
|
symtab_t* symtab;
|
|
tok_buf_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
|