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

45 lines
848 B
C

#pragma once
#include <stdint.h>
#include "globals.h"
#include "lex.h"
typedef struct Parser {
Lexer *lexer;
Token current;
Token peek;
int flag_error;
} Parser;
Parser *parser_new(Lexer *lexer);
void parser_free(Parser *parser);
static void parser_next(Parser *parser);
static void parser_expect(Parser *parser, TokenType type);
/*
PARSER PARSE FUNCTIONS
*/
ASTNode *parser_parse_program(Parser *parser);
ASTNode *parser_parse_defn(Parser *parser);
ASTNode *parser_parse_type(Parser *parser);
ASTNode *parser_parse_expr(Parser *parser);
ASTNode *parser_parse_atom(Parser *parser);
ASTNode *parser_parse_stmt(Parser *parser);
ASTNode *parser_parse_block(Parser *parser);
ASTNode *parser_parse_lambda(Parser *parser);
ASTNode *parser_parse_compound(Parser *parser);
ASTNode *parser_parse_params(Parser *parser);