minor declr parser
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
#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);
|
||||
Reference in New Issue
Block a user