32 lines
499 B
C
32 lines
499 B
C
#ifndef SEMA_H
|
|
#define SEMA_H
|
|
|
|
#include "ast.h"
|
|
typedef enum {
|
|
Sym_Declar,
|
|
} SymTy;
|
|
|
|
typedef struct {
|
|
SymTy ty;
|
|
} Sym;
|
|
|
|
typedef struct {
|
|
int _;
|
|
} LabelSym;
|
|
|
|
typedef struct Sema Sema;
|
|
|
|
Sema* sema_new(void);
|
|
void sema_free(Sema* s);
|
|
|
|
void sema_scope_enter(Sema* s);
|
|
void sema_scope_leave(Sema* s);
|
|
|
|
void sema_function_enter(Sema* s, AstDeclar* declar);
|
|
void sema_function_leave(Sema* s);
|
|
|
|
void sema_visit_stmt(Sema* s, AstStmt* stmt);
|
|
void sema_visit_expr(Sema* s, AstExpr* expr);
|
|
|
|
#endif
|