Files
cval/include/parse.h
2025-11-23 22:07:04 +09:00

47 lines
894 B
C

#pragma once
#include <stdint.h>
#include <stdbool.h>
#include "globals.h"
#include "lex.h"
#include "ast_util.h"
typedef struct Parser {
Lexer *lexer;
Token current;
Token peek;
int flag_error;
} Parser;
Parser *parser_new(Lexer *lexer);
void parser_free(Parser *parser);
/*
PARSER PARSE FUNCTIONS
*/
ASTNode *parser_parse_program(Parser *parser);
ASTNode *parser_parse_defn(Parser *parser);
ASTNode *parser_parse_type(Parser *parser);
ASTNode *parser_parse_type_simple(Parser *parser);
ASTNode *parser_parse_type_complex(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);