minor declr parser
This commit is contained in:
34
src/parse.c
34
src/parse.c
@@ -2,3 +2,37 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
Parser *parser_new(Lexer *lexer) {
|
||||
Parser *parser = malloc(sizeof(Parser));
|
||||
if (parser == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
parser->lexer = lexer;
|
||||
parser->flag_error = 0;
|
||||
|
||||
parser_next(parser);
|
||||
parser_next(parser);
|
||||
|
||||
return parser;
|
||||
}
|
||||
|
||||
void parser_free(Parser *parser) {
|
||||
free(parser);
|
||||
}
|
||||
|
||||
static void parser_next(Parser *parser) {
|
||||
parser->current = parser->peek;
|
||||
parser->peek = lexer_next_token(parser->lexer);
|
||||
}
|
||||
|
||||
static void parser_expect(Parser *parser, TokenType type) {
|
||||
if (parser->current.type == type) {
|
||||
parser_next(parser);
|
||||
} else {
|
||||
parser->flag_error = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
IMPL. PARSER PARSE FUNCTIONS
|
||||
*/
|
||||
Reference in New Issue
Block a user