17 const size_t tags[] = { eObrTagTypes };
18 search_t search = { tags,
sizeof(tags) /
sizeof(
size_t) };
24 const size_t tags[] = { eObrTagModules };
25 search_t search = { tags,
sizeof(tags) /
sizeof(
size_t) };
31 const size_t tags[] = { tag };
32 search_t search = { tags,
sizeof(tags) /
sizeof(
size_t) };
38 const size_t tags[] = { eObrTagModules, eObrTagImports };
39 search_t search = { tags,
sizeof(tags) /
sizeof(
size_t) };
60 static tree_t *gTypeBoolean = NULL;
61 static tree_t *gTypeChar = NULL;
62 static tree_t *gTypeShort = NULL;
63 static tree_t *gTypeInteger = NULL;
64 static tree_t *gTypeLong = NULL;
65 static tree_t *gTypeReal = NULL;
66 static tree_t *gTypeLongReal = NULL;
67 static tree_t *gTypeVoid = NULL;
114 return gTypeLongReal;
130 gTypeShort =
tree_type_digit(node,
"SHORTINT", eDigitShort, eSignSigned);
131 gTypeInteger =
tree_type_digit(node,
"INTEGER", eDigitInt, eSignSigned);
135 obr_add_decl(root, eObrTagTypes,
"BOOLEAN", gTypeBoolean);
137 obr_add_decl(root, eObrTagTypes,
"SHORTINT", gTypeShort);
138 obr_add_decl(root, eObrTagTypes,
"INTEGER", gTypeInteger);
CT_PUREFN CT_TREE_API const node_t * tree_get_node(const tree_t *tree)
CT_EVENTS_API event_builder_t evt_symbol_shadowed(logger_t *logger, const char *name, const node_t *prev, const node_t *next)
signal that a declaration would shadow a previous declaration
#define CT_UNUSED(x)
mark a variable as unused
#define CTASSERT(expr)
assert a condition, prints the condition as a message
CT_UTIL_API void * util_select_decl(tree_t *sema, search_t search, const char *name)
search for a declaration by name in a set of tags
CT_TREE_API tree_t * tree_type_bool(const node_t *node, const char *name)
create a bool type, this is a type that has only two values, true and false
CT_TREE_API tree_t * tree_type_digit(const node_t *node, const char *name, digit_t digit, sign_t sign)
create a digit type
CT_TREE_API tree_t * tree_type_unit(const node_t *node, const char *name)
create a unit type, this is a type that has only one value. equivilent to void
void * tree_module_set(tree_t *self, size_t tag, const char *name, void *value)
set a declaration in the current module
CT_TREE_API tree_t * tree_type_array(const node_t *node, const char *name, const tree_t *array, size_t length)
create a new array type
void * tree_module_get(tree_t *self, size_t tag, const char *name)
recursively search for a declaration in a module
tree_t * obr_get_symbol(tree_t *sema, obr_tag_t tag, const char *name)
getters
tree_t * obr_get_char_type(void)
tree_t * obr_get_integer_type(void)
void obr_add_decl(tree_t *sema, obr_tag_t tag, const char *name, tree_t *decl)
add decls
tree_t * obr_get_module(tree_t *sema, const char *name)
void obr_create(language_runtime_t *runtime, tree_t *root)
runtime module
tree_t * obr_get_string_type(const node_t *node, size_t length)
tree_t * obr_get_void_type(void)
tree_t * obr_get_type(tree_t *sema, const char *name)
tree_t * obr_get_bool_type(void)
builtin types
tree_t * obr_get_longint_type(void)
tree_t * obr_get_namespace(tree_t *sema, const char *name)
tree_t * obr_get_real_type(void)
tree_t * obr_get_shortint_type(void)
tree_t * obr_get_longreal_type(void)
a position in a source file