Cthulhu  0.2.10
Cthulhu compiler collection
sema.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: GPL-3.0-only
2 
3 #pragma once
4 
5 #include "ctu/sema/attrib.h"
6 
7 #include "ctu/ast.h"
8 
9 #include "cthulhu/tree/tree.h"
10 
12 
13 typedef enum ctu_tag_t
14 {
15 #define DECL_TAG(ID, INIT, STR) ID INIT,
16 #include "ctu/ctu.inc"
19 
23 
24 typedef struct ctu_sema_t {
29 } ctu_sema_t;
30 
31 ctu_sema_t ctu_sema_init(tree_t *sema, tree_t *decl, vector_t *block);
32 ctu_sema_t ctu_sema_nested(ctu_sema_t *parent, tree_t *sema, tree_t *decl, vector_t *block);
34 
38 
39 tree_t *ctu_get_namespace(tree_t *sema, const char *name, bool *imported);
40 tree_t *ctu_get_type(tree_t *sema, const char *name);
41 tree_t *ctu_get_decl(tree_t *sema, const char *name);
42 tree_t *ctu_get_loop(tree_t *sema, const char *name);
43 ctu_attrib_t *ctu_get_attrib(tree_t *sema, const char *name);
44 
48 
49 void ctu_add_decl(tree_t *sema, ctu_tag_t tag, const char *name, tree_t *decl);
50 
54 
56 void ctu_set_current_loop(ctu_sema_t *sema, tree_t *loop);
57 
61 
66 
70 
71 void ctu_rt_mod(language_runtime_t *runtime, tree_t *root);
ctu_tag_t
Definition: sema.h:14
@ eCtuTagTotal
Definition: sema.h:17
void ctu_rt_mod(language_runtime_t *runtime, tree_t *root)
Definition: sema.c:281
void ctu_add_decl(tree_t *sema, ctu_tag_t tag, const char *name, tree_t *decl)
Definition: sema.c:129
tree_t * ctu_get_int_type(digit_t digit, sign_t sign)
Definition: sema.c:202
ctu_attrib_t * ctu_get_attrib(tree_t *sema, const char *name)
Definition: sema.c:108
ctu_sema_t ctu_sema_nested(ctu_sema_t *parent, tree_t *sema, tree_t *decl, vector_t *block)
Definition: sema.c:35
tree_t * ctu_get_char_type(void)
Definition: sema.c:207
tree_t * ctu_get_loop(tree_t *sema, const char *name)
Definition: sema.c:122
ctu_sema_t ctu_sema_init(tree_t *sema, tree_t *decl, vector_t *block)
Definition: sema.c:21
tree_t * ctu_get_namespace(tree_t *sema, const char *name, bool *imported)
Definition: sema.c:75
tree_t * ctu_get_type(tree_t *sema, const char *name)
Definition: sema.c:101
void ctu_set_current_loop(ctu_sema_t *sema, tree_t *loop)
Definition: sema.c:156
tree_t * ctu_get_decl(tree_t *sema, const char *name)
Definition: sema.c:115
tree_t * ctu_get_void_type(void)
Definition: sema.c:209
tree_t * ctu_get_bool_type(void)
Definition: sema.c:208
tree_t * ctu_current_loop(ctu_sema_t *sema)
Definition: sema.c:149
logger_t * ctu_sema_reports(ctu_sema_t *sema)
Definition: sema.c:65
sign_t
integer sign
Definition: ops.h:104
digit_t
digit width
Definition: ops.h:96
vector_t * block
current statement block
Definition: sema.h:27
tree_t * decl
current decl
Definition: sema.h:26
tree_t * current_loop
current loop
Definition: sema.h:28
tree_t * sema
current scope
Definition: sema.h:25
a logging sink
Definition: notify.c:14
Definition: tree.h:67
a generic vector of pointers
Definition: vector.c:16