larpcc/resolve.h
2026-10-02 03:48:45 +02:00

41 lines
696 B
C

#ifndef RES_H
#define RES_H
#include "ast.h"
#include "collection.h"
typedef enum {
Sym_Typedef,
Sym_Declarator,
} SymTy;
typedef struct {
SymTy ty;
union {
struct {
AstStmt* stmt;
AstDeclar* declar;
} declarator;
};
} Sym;
typedef struct Syms Syms;
Syms* syms_new();
void syms_free(Syms* s);
void syms_push_scope(Syms* s);
void syms_pop_scope(Syms* s);
void syms_define(Syms* s, const char* ident, Sym* sym);
Sym* syms_get(Syms* s, const char* ident);
typedef struct Resolver Resolver;
Resolver* resolver_new(Arena* arena);
void resolver_free(Resolver* r);
void resolver_resolve_top_stmt(Resolver* r, AstStmt* stmt);
#endif