38 lines
714 B
C
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
|
|
*/ |