Files
cval/src/parse.c
2025-11-17 15:49:06 +09:00

38 lines
714 B
C

#include "parse.h"
#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
*/