#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