Refactor AST and Parser into modular subdirectories
- Split ast.h into granular headers in v0/ast/ - Split parser.c into modular implementation files in v0/parser/ - Move and rename parser tests to v0/parser/test_*.c - Update build system (include.mk) with modular sub-makefiles - Maintain v0/ast.h and v0/parser.h as umbrella headers
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
#ifndef PARSER_INTERNAL_H
|
||||
#define PARSER_INTERNAL_H
|
||||
|
||||
#include "../parser.h"
|
||||
#include "../token.h"
|
||||
#include "../ast.h"
|
||||
|
||||
typedef struct {
|
||||
TokenStream* ts;
|
||||
Token token;
|
||||
} Parser;
|
||||
|
||||
// Core functions
|
||||
void parser_next_token(Parser* p);
|
||||
bool parser_accept(Parser* p, TokenType token);
|
||||
bool parser_expect(Parser* p, TokenType token, const char* msg);
|
||||
bool parser_peek(Parser* p, TokenType token);
|
||||
bool parser_require(Parser* p, TokenType token, const char* msg);
|
||||
char* parser_to_text(Parser* p);
|
||||
bool parser_accept_primitive(Parser* p);
|
||||
|
||||
// Base parsing (expressions, types)
|
||||
bool parse_primitive_type_expression(Parser* p, TypeExpression* expr);
|
||||
bool parse_array_type_expression(Parser* p, TypeExpression* expr);
|
||||
bool parse_type_expression(Parser* p, TypeExpression* expr);
|
||||
bool parse_expression(Parser* p, Expression* expr);
|
||||
void free_type_expression(TypeExpression* expr);
|
||||
|
||||
// Declaration parsing
|
||||
bool parse_import_declaration(Parser* p, Module* module, bool is_public);
|
||||
bool parse_alias_declaration(Parser* p, Module* module, bool is_public);
|
||||
bool parse_variable_declaration(Parser* p, Module* module, bool is_public, bool is_static, bool is_const);
|
||||
|
||||
// Module parsing
|
||||
bool parse_module_declaration(Parser* p, Module* module);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user