11#include "../c_libs/memory/memory.h"
12#include "../lexer/lexer.h"
557#define create_preprocessor(arena, type, line, column) \
558 create_preprocessor_node(arena, type, Node_Category_PREPROCESSOR, line, \
560#define create_expr(arena, type, line, column) \
561 create_expr_node(arena, type, line, column)
562#define create_stmt(arena, type, line, column) \
563 create_stmt_node(arena, type, line, column)
564#define create_type(arena, type, line, column) \
565 create_type_node(arena, type, line, column)
572 const char *doc_comment,
int potions,
573 AstNode **body,
size_t body_count,
size_t line,
576 const char *alias,
size_t line,
size_t column);
578 AstNode **bodies,
size_t arm_count,
bool has_default,
579 AstNode *default_body,
size_t line,
size_t column);
581 size_t line,
size_t column);
583 const char *callconv);
588 void *value,
size_t line,
size_t column);
590 size_t line,
size_t column);
592 Expr *right,
size_t line,
size_t column);
594 size_t line,
size_t column);
596 size_t arg_count,
size_t line,
size_t column);
598 Expr *value,
size_t line,
size_t column);
600 Expr *then_expr,
Expr *else_expr,
size_t line,
603 bool is_compiletime,
const char *member,
604 size_t line,
size_t column);
606 size_t line,
size_t column);
610 size_t element_count,
size_t line,
size_t column);
618 Expr *size,
size_t line,
size_t col);
622 size_t line,
size_t col);
624 size_t line,
size_t col);
628 size_t line,
size_t col);
630 size_t line,
size_t col);
632 AstNode **field_values,
size_t field_count,
int line,
639 size_t stmt_count,
size_t line,
size_t column);
643 const char *doc_comment,
AstNode *var_type,
644 Expr *initializer,
bool is_mutable,
645 bool is_public,
size_t line,
size_t column);
647 const char *doc_comment,
char **param_names,
648 AstNode **param_types,
size_t param_count,
649 AstNode *return_type,
bool is_public,
650 bool is_static,
bool returns_ownership,
651 bool takes_ownership,
bool forward_declared,
652 AstNode *body,
size_t line,
size_t column);
654 const char *doc_comment,
655 AstNode **public_members,
size_t public_count,
657 size_t private_count,
bool is_public,
658 size_t line,
size_t column);
660 const char *doc_comment,
AstNode *type,
661 AstNode *function,
bool is_public,
662 bool is_static,
size_t line,
size_t column);
665 bool via_pointer,
bool is_public,
666 size_t line,
size_t column);
668 const char *doc_comment,
char **members,
669 size_t member_count,
bool is_public,
size_t line,
673 int elif_count,
AstNode *else_stmt,
size_t line,
676 size_t line,
size_t column);
678 size_t init_count,
Expr *condition,
687 size_t stmt_count,
size_t line,
size_t column);
689 size_t expr_count,
bool ln,
size_t line,
692 size_t line,
size_t column);
694 size_t line,
size_t column);
696 AstNode **cases,
size_t case_count,
697 AstNode *default_case,
size_t line,
size_t column);
700 char **struct_name_list,
size_t function_name_count,
701 size_t struct_name_count,
size_t line,
size_t column);
703 size_t value_count,
AstNode *body,
size_t line,
712 size_t line,
size_t column);
714 Expr *size,
size_t line,
size_t column);
716 size_t param_count,
AstNode *return_type,
717 size_t line,
size_t column);
719 size_t part_count,
size_t line,
size_t column);
AstNode * create_assignment_expr(ArenaAllocator *arena, Expr *target, Expr *value, size_t line, size_t column)
Definition expr.c:86
AstNode Stmt
Definition ast.h:543
AstNode * create_sizeof_expr(ArenaAllocator *arena, Expr *object, bool is_type, size_t line, size_t col)
Definition expr.c:206
AstNode * create_os_node(ArenaAllocator *arena, char **platforms, AstNode **bodies, size_t arm_count, bool has_default, AstNode *default_body, size_t line, size_t column)
Definition preprocessor.c:32
void apply_lib_import(AstNode *func_node, const char *lib_name)
Definition preprocessor.c:60
AstNode * create_syscall_expr(ArenaAllocator *arena, Expr **args, size_t count, size_t line, size_t col)
Definition expr.c:198
AstNode * create_cast_expr(ArenaAllocator *arena, Expr *type, Expr *castee, size_t line, size_t col)
Definition expr.c:175
LiteralType
Definition ast.h:85
@ LITERAL_DOUBLE
Definition ast.h:89
@ LITERAL_IDENT
Definition ast.h:86
@ LITERAL_INT
Definition ast.h:87
@ LITERAL_BOOL
Definition ast.h:92
@ LITERAL_NULL
Definition ast.h:93
@ LITERAL_STRING
Definition ast.h:90
@ LITERAL_CHAR
Definition ast.h:91
@ LITERAL_FLOAT
Definition ast.h:88
AstNode * create_array_expr(ArenaAllocator *arena, Expr **elements, size_t element_count, size_t line, size_t column)
Definition expr.c:129
AstNode * create_print_stmt(ArenaAllocator *arena, Expr **expressions, size_t expr_count, bool ln, size_t line, size_t column)
Definition stmt.c:175
AstNode * create_resolution_type(ArenaAllocator *arena, char **parts, size_t part_count, size_t line, size_t column)
Definition type.c:32
AstNode * create_literal_expr(ArenaAllocator *arena, LiteralType lit_type, void *value, size_t line, size_t column)
Definition expr.c:9
AstNode * create_array_type(ArenaAllocator *arena, AstNode *element_type, Expr *size, size_t line, size_t column)
Definition type.c:17
AstNode * create_ast_node(ArenaAllocator *arena, NodeType type, NodeCategory category, size_t line, size_t column)
Definition ast.c:18
AstNode * create_pointer_type(ArenaAllocator *arena, AstNode *pointee_type, size_t line, size_t column)
Definition type.c:11
Expr * create_spread_expr(ArenaAllocator *arena, Expr *expr, size_t line, size_t col)
Definition expr.c:225
AstNode * create_type_node(ArenaAllocator *arena, NodeType type, size_t line, size_t column)
Definition ast.c:56
AstNode * create_block_stmt(ArenaAllocator *arena, AstNode **statements, size_t stmt_count, size_t line, size_t column)
Definition stmt.c:167
AstNode * create_func_decl_stmt(ArenaAllocator *arena, const char *name, const char *doc_comment, char **param_names, AstNode **param_types, size_t param_count, AstNode *return_type, bool is_public, bool is_static, bool returns_ownership, bool takes_ownership, bool forward_declared, AstNode *body, size_t line, size_t column)
Definition stmt.c:34
AstNode * create_free_expr(ArenaAllocator *arena, Expr *ptr, size_t line, size_t col)
Definition expr.c:168
AstNode * create_loop_stmt(ArenaAllocator *arena, Expr *condition, Expr *optional, AstNode *body, size_t line, size_t column)
Definition stmt.c:148
AstNode * create_enum_decl_stmt(ArenaAllocator *arena, const char *name, const char *doc_comment, char **members, size_t member_count, bool is_public, size_t line, size_t column)
Definition stmt.c:98
AstNode * create_stmt_node(ArenaAllocator *arena, NodeType type, size_t line, size_t column)
Definition ast.c:44
AstNode * create_program_node(ArenaAllocator *arena, AstNode **statements, size_t stmt_count, size_t line, size_t column)
Definition stmt.c:5
AstNode * create_ternary_expr(ArenaAllocator *arena, Expr *condition, Expr *then_expr, Expr *else_expr, size_t line, size_t column)
Definition expr.c:94
void apply_dll_import(AstNode *func_node, const char *dll_name, const char *callconv)
Definition preprocessor.c:53
AstNode * create_expr_stmt(ArenaAllocator *arena, Expr *expression, size_t line, size_t column)
Definition stmt.c:13
AstNode * create_binary_expr(ArenaAllocator *arena, BinaryOp op, Expr *left, Expr *right, size_t line, size_t column)
Definition expr.c:59
AstNode * create_system_expr(ArenaAllocator *arena, Expr *command, size_t line, size_t col)
Definition expr.c:191
BinaryOp
Definition ast.h:97
@ BINOP_AND
Definition ast.h:110
@ BINOP_GE
Definition ast.h:109
@ BINOP_BIT_XOR
Definition ast.h:114
@ BINOP_POW
Definition ast.h:103
@ BINOP_LT
Definition ast.h:106
@ BINOP_LE
Definition ast.h:107
@ BINOP_MOD
Definition ast.h:102
@ BINOP_BIT_OR
Definition ast.h:113
@ BINOP_SUB
Definition ast.h:99
@ BINOP_DIV
Definition ast.h:101
@ BINOP_GT
Definition ast.h:108
@ BINOP_RANGE
Definition ast.h:117
@ BINOP_EQ
Definition ast.h:104
@ BINOP_SHR
Definition ast.h:116
@ BINOP_BIT_AND
Definition ast.h:112
@ BINOP_MUL
Definition ast.h:100
@ BINOP_SHL
Definition ast.h:115
@ BINOP_OR
Definition ast.h:111
@ BINOP_NE
Definition ast.h:105
@ BINOP_ADD
Definition ast.h:98
AstNode * create_return_stmt(ArenaAllocator *arena, Expr *value, size_t line, size_t column)
Definition stmt.c:160
AstNode * create_switch_stmt(ArenaAllocator *arena, AstNode *condition, AstNode **cases, size_t case_count, AstNode *default_case, size_t line, size_t column)
Definition stmt.c:200
AstNode * create_break_continue_stmt(ArenaAllocator *arena, bool is_continue, size_t line, size_t column)
Definition stmt.c:185
AstNode * create_alloc_expr(ArenaAllocator *arena, Expr *size, size_t line, size_t col)
Definition expr.c:152
AstNode * create_struct_decl_stmt(ArenaAllocator *arena, const char *name, const char *doc_comment, AstNode **public_members, size_t public_count, AstNode **private_members, size_t private_count, bool is_public, size_t line, size_t column)
Definition stmt.c:57
AstNode * create_infinite_loop_stmt(ArenaAllocator *arena, AstNode *body, size_t line, size_t column)
Definition stmt.c:124
AstNode * create_memcpy_expr(ArenaAllocator *arena, Expr *to, Expr *from, Expr *size, size_t line, size_t col)
Definition expr.c:159
AstNode * create_field_decl_stmt(ArenaAllocator *arena, const char *name, const char *doc_comment, AstNode *type, AstNode *function, bool is_public, bool is_static, size_t line, size_t column)
Definition stmt.c:74
AstNode Expr
Definition ast.h:542
AstNode * create_basic_type(ArenaAllocator *arena, const char *name, size_t line, size_t column)
Definition type.c:5
AstNode * create_spread_decl_stmt(ArenaAllocator *arena, AstNode *type, bool via_pointer, bool is_public, size_t line, size_t column)
Definition stmt.c:88
AstNode * create_preprocessor_node(ArenaAllocator *arena, NodeType type, NodeCategory category, size_t line, size_t column)
Definition ast.c:3
AstNode * create_module_node(ArenaAllocator *arena, const char *name, const char *doc_comment, int potions, AstNode **body, size_t body_count, size_t line, size_t column)
Definition preprocessor.c:5
AstNode * create_identifier_expr(ArenaAllocator *arena, const char *name, size_t line, size_t column)
Definition expr.c:52
AstNode * create_grouping_expr(ArenaAllocator *arena, Expr *expr, size_t line, size_t column)
Definition expr.c:122
AstNode * create_case_stmt(ArenaAllocator *arena, AstNode **values, size_t value_count, AstNode *body, size_t line, size_t column)
Definition stmt.c:226
AstNode * create_link_node(ArenaAllocator *arena, const char *lib_name, size_t line, size_t column)
Definition preprocessor.c:45
AstNode Type
Definition ast.h:544
AstNode * create_deref_expr(ArenaAllocator *arena, Expr *object, size_t line, size_t col)
Definition expr.c:138
AstNode * create_use_node(ArenaAllocator *arena, const char *module_name, const char *alias, size_t line, size_t column)
Definition preprocessor.c:23
AstNode * create_if_stmt(ArenaAllocator *arena, Expr *condition, AstNode *then_stmt, AstNode **elif_stmts, int elif_count, AstNode *else_stmt, size_t line, size_t column)
Definition stmt.c:111
AstNode * create_expr_node(ArenaAllocator *arena, NodeType type, size_t line, size_t column)
Definition ast.c:32
AstNode * create_input_expr(ArenaAllocator *arena, Expr *type, Expr *msg, size_t line, size_t col)
Definition expr.c:183
UnaryOp
Definition ast.h:121
@ UNOP_POS
Definition ast.h:124
@ UNOP_POST_DEC
Definition ast.h:129
@ UNOP_PRE_INC
Definition ast.h:126
@ UNOP_NEG
Definition ast.h:123
@ UNOP_NOT
Definition ast.h:122
@ UNOP_DEREF
Definition ast.h:130
@ UNOP_POST_INC
Definition ast.h:128
@ UNOP_BIT_NOT
Definition ast.h:125
@ UNOP_PRE_DEC
Definition ast.h:127
@ UNOP_ADDR
Definition ast.h:131
AstNode * create_for_loop_stmt(ArenaAllocator *arena, AstNode **initializers, size_t init_count, Expr *condition, Expr *optional, AstNode *body, size_t line, size_t column)
Definition stmt.c:135
AstNode * create_defer_stmt(ArenaAllocator *arena, AstNode *statement, size_t line, size_t column)
Definition stmt.c:193
Expr * create_struct_expr(ArenaAllocator *arena, char *name, char **field_names, AstNode **field_values, size_t field_count, int line, int col)
Definition expr.c:214
NodeType
Definition ast.h:18
@ AST_STMT_EXPRESSION
Definition ast.h:53
@ AST_EXPR_INDEX
Definition ast.h:34
@ AST_STMT_ENUM
Definition ast.h:64
@ AST_EXPR_BINARY
Definition ast.h:28
@ AST_EXPR_LITERAL
Definition ast.h:26
@ AST_STMT_IF
Definition ast.h:57
@ AST_STMT_LOOP
Definition ast.h:58
@ AST_TYPE_RESOLUTION
Definition ast.h:75
@ AST_STMT_CASE
Definition ast.h:71
@ AST_TYPE_BASIC
Definition ast.h:76
@ AST_EXPR_GROUPING
Definition ast.h:35
@ AST_EXPR_RANGE
Definition ast.h:36
@ AST_STMT_DEFER
Definition ast.h:68
@ AST_EXPR_UNARY
Definition ast.h:29
@ AST_STMT_FUNCTION
Definition ast.h:56
@ AST_EXPR_ARRAY
Definition ast.h:37
@ AST_EXPR_CALL
Definition ast.h:30
@ AST_EXPR_MEMBER
Definition ast.h:33
@ AST_STMT_RETURN
Definition ast.h:60
@ AST_TYPE_STRUCT
Definition ast.h:80
@ AST_PREPROCESSOR_USE
Definition ast.h:21
@ AST_STMT_SPREAD_DECL
Definition ast.h:67
@ AST_PREPROCESSOR_OS
Definition ast.h:22
@ AST_EXPR_SPREAD
Definition ast.h:49
@ AST_TYPE_ENUM
Definition ast.h:81
@ AST_EXPR_IDENTIFIER
Definition ast.h:27
@ AST_PROGRAM
Definition ast.h:52
@ AST_EXPR_ASSIGNMENT
Definition ast.h:31
@ AST_STMT_FIELD_DECL
Definition ast.h:66
@ AST_EXPR_SYSCALL
Definition ast.h:47
@ AST_TYPE_FUNCTION
Definition ast.h:79
@ AST_EXPR_DEREF
Definition ast.h:38
@ AST_TYPE_ARRAY
Definition ast.h:78
@ AST_EXPR_TERNARY
Definition ast.h:32
@ AST_STMT_BLOCK
Definition ast.h:61
@ AST_EXPR_INPUT
Definition ast.h:44
@ AST_STMT_STRUCT
Definition ast.h:65
@ AST_EXPR_ALLOC
Definition ast.h:40
@ AST_STMT_SWITCH
Definition ast.h:69
@ AST_STMT_PRINT
Definition ast.h:62
@ AST_TYPE_POINTER
Definition ast.h:77
@ AST_EXPR_STRUCT
Definition ast.h:48
@ AST_STMT_DEFAULT
Definition ast.h:72
@ AST_STMT_IMPL
Definition ast.h:70
@ AST_EXPR_CAST
Definition ast.h:43
@ AST_STMT_CONST_DECL
Definition ast.h:55
@ AST_STMT_BREAK_CONTINUE
Definition ast.h:59
@ AST_PREPROCESSOR_MODULE
Definition ast.h:20
@ AST_EXPR_MEMCPY
Definition ast.h:41
@ AST_PREPROCESSOR_LINK
Definition ast.h:23
@ AST_EXPR_FREE
Definition ast.h:42
@ AST_EXPR_SYSTEM
Definition ast.h:46
@ AST_STMT_VAR_DECL
Definition ast.h:54
@ AST_STMT_MODULE
Definition ast.h:63
@ AST_EXPR_SIZEOF
Definition ast.h:45
@ AST_EXPR_ADDR
Definition ast.h:39
AstNode * create_function_type(ArenaAllocator *arena, AstNode **param_types, size_t param_count, AstNode *return_type, size_t line, size_t column)
Definition type.c:24
AstNode * create_default_stmt(ArenaAllocator *arena, AstNode *body, size_t line, size_t column)
Definition stmt.c:236
AstNode Preprocessor
Definition ast.h:541
AstNode * create_call_expr(ArenaAllocator *arena, Expr *callee, Expr **args, size_t arg_count, size_t line, size_t column)
Definition expr.c:76
AstNode * create_unary_expr(ArenaAllocator *arena, UnaryOp op, Expr *operand, size_t line, size_t column)
Definition expr.c:68
AstNode * create_index_expr(ArenaAllocator *arena, Expr *object, Expr *index, size_t line, size_t column)
Definition expr.c:114
NodeCategory
Definition ast.h:134
@ Node_Category_EXPR
Definition ast.h:135
@ Node_Category_TYPE
Definition ast.h:137
@ Node_Category_STMT
Definition ast.h:136
@ Node_Category_PREPROCESSOR
Definition ast.h:138
AstNode * create_var_decl_stmt(ArenaAllocator *arena, const char *name, const char *doc_comment, AstNode *var_type, Expr *initializer, bool is_mutable, bool is_public, size_t line, size_t column)
Definition stmt.c:20
AstNode * create_addr_expr(ArenaAllocator *arena, Expr *object, size_t line, size_t col)
Definition expr.c:145
AstNode * create_member_expr(ArenaAllocator *arena, Expr *object, bool is_compiletime, const char *member, size_t line, size_t column)
Definition expr.c:104
AstNode * create_impl_stmt(ArenaAllocator *arena, char **function_name_list, AstNode **function_type_list, AstNode *body, char **struct_name_list, size_t function_name_count, size_t struct_name_count, size_t line, size_t column)
Definition stmt.c:211
Arena allocator structure.
Definition memory.h:101
AstNode * condition
Definition ast.h:233
char ** function_name_list
Definition ast.h:477
struct AstNode::@0::@4::@38::@41 expr_stmt
struct AstNode::@0::@4 stmt
struct AstNode::@0::@3::@12::@20 ternary
NodeType type
Definition ast.h:143
struct AstNode::@0::@3::@12::@35 struct_expr
AstNode * from
Definition ast.h:281
struct AstNode::@0::@4::@38::@46 enum_decl
struct AstNode::@0::@3::@12::@23 grouping
struct AstNode::@0::@3::@12::@34 size_of
AstNode * statement
Definition ast.h:464
AstNode ** modules
Definition ast.h:338
bool has_default
Definition ast.h:175
struct AstNode::@0::@4::@38::@48 if_stmt
int elif_count
Definition ast.h:424
struct AstNode::@0::@3::@12::@25 deref
double float_val
Definition ast.h:193
char * member
Definition ast.h:242
const char * module_name
Definition ast.h:166
bool is_compiletime
Definition ast.h:240
bool is_mutable
Definition ast.h:353
bool is_type
Definition ast.h:316
AstNode * to
Definition ast.h:280
char * doc_comment
Definition ast.h:154
size_t column
Definition ast.h:145
void * then_scope
Definition ast.h:427
void * scope
Definition ast.h:161
size_t case_count
Definition ast.h:470
AstNode ** values
Definition ast.h:487
struct AstNode::@0::@4::@38::@55 switch_stmt
const char * file_path
Definition ast.h:158
struct AstNode::@0::@3::@12::@29 free
char ** field_names
Definition ast.h:321
AstNode * element_type
Definition ast.h:513
struct AstNode::@0::@3::@12::@26 addr
struct AstNode::@0::@2::@6::@9 use
AstNode ** bodies
Definition ast.h:173
AstNode * optional
Definition ast.h:434
char ** platforms
Definition ast.h:172
struct AstNode::@0::@5::@59::@65 resolution
size_t private_count
Definition ast.h:364
LiteralType lit_type
Definition ast.h:190
AstNode ** elif_stmts
Definition ast.h:423
struct AstNode::@0::@3::@12::@24 array
size_t part_count
Definition ast.h:526
bool is_static
Definition ast.h:374
AstNode ** args
Definition ast.h:221
size_t param_count
Definition ast.h:398
struct AstNode::@0::@2::@6::@11 link
const char * dll_callconv
Definition ast.h:412
AstNode * value
Definition ast.h:228
size_t member_count
Definition ast.h:388
struct AstNode::@0::@2::@6::@10 os
AstNode * var_type
Definition ast.h:351
AstNode ** function_type_list
Definition ast.h:478
bool via_pointer
Definition ast.h:379
bool takes_ownership
Definition ast.h:404
struct AstNode::@0::@3::@12::@31 input
struct AstNode::@0::@3::@12::@32 _system
struct AstNode::@0::@4::@38::@40 program
AstNode * function
Definition ast.h:372
size_t body_count
Definition ast.h:157
struct AstNode::@0::@3::@12::@17 unary
struct AstNode::@0::@4::@38::@58 default_clause
AstNode * default_body
Definition ast.h:176
int potions
Definition ast.h:155
size_t public_count
Definition ast.h:362
AstNode ** body
Definition ast.h:156
BinaryOp op
Definition ast.h:207
bool is_continue
Definition ast.h:460
size_t init_count
Definition ast.h:437
AstNode * index
Definition ast.h:248
bool is_dll_import
Definition ast.h:409
char ** parts
Definition ast.h:525
struct AstNode::@0::@3::@12::@28 memcpy
size_t element_count
Definition ast.h:259
struct AstNode::@0::@4::@38::@47 func_decl
char * string_val
Definition ast.h:194
AstNode * expr
Definition ast.h:253
struct AstNode::@0::@3::@12::@18 call
char ** struct_name_list
Definition ast.h:479
bool returns_ownership
Definition ast.h:403
union AstNode::@0::@3::@12::@14::@37 value
const char * lib_name
Definition ast.h:180
struct AstNode::@0::@4::@38::@44 field_decl
AstNode * type
Definition ast.h:292
struct AstNode::@0::@5::@59::@61 basic
long long int_val
Definition ast.h:192
AstNode * target
Definition ast.h:227
struct AstNode::@0::@3::@12::@14 literal
AstNode ** param_types
Definition ast.h:397
struct AstNode * default_case
Definition ast.h:471
size_t module_count
Definition ast.h:339
AstNode * then_expr
Definition ast.h:234
const char ** member_names
Definition ast.h:532
struct AstNode::@0::@4::@38::@49 loop_stmt
size_t stmt_count
Definition ast.h:448
struct AstNode::@0::@3::@12::@16 binary
const char * alias
Definition ast.h:167
AstNode * callee
Definition ast.h:220
bool forward_declared
Definition ast.h:405
AstNode * else_stmt
Definition ast.h:425
AstNode * operand
Definition ast.h:215
char char_val
Definition ast.h:195
char ** members
Definition ast.h:387
size_t field_count
Definition ast.h:323
AstNode * command
Definition ast.h:304
bool is_lib_import
Definition ast.h:415
AstNode * size
Definition ast.h:275
char * name
Definition ast.h:153
struct AstNode::@0::@3::@12::@15 identifier
struct AstNode::@0::@3::@12::@27 alloc
AstNode * castee
Definition ast.h:293
AstNode ** field_value
Definition ast.h:322
struct AstNode::@0::@4::@38::@42 var_decl
bool bool_val
Definition ast.h:196
AstNode * expression
Definition ast.h:344
size_t value_count
Definition ast.h:488
NodeCategory category
Definition ast.h:146
void * else_scope
Definition ast.h:428
struct AstNode::@0::@4::@38::@51 block
size_t arm_count
Definition ast.h:174
AstNode * return_type
Definition ast.h:399
struct AstNode::@0::@4::@38::@57 case_clause
AstNode ** elements
Definition ast.h:258
AstNode * left
Definition ast.h:208
AstNode ** member_types
Definition ast.h:531
size_t arg_count
Definition ast.h:222
size_t token_count
Definition ast.h:160
char ** param_names
Definition ast.h:396
size_t count
Definition ast.h:310
struct AstNode::@0::@5::@59::@66 struct_type
AstNode ** expressions
Definition ast.h:454
AstNode * then_stmt
Definition ast.h:422
size_t function_name_count
Definition ast.h:480
AstNode * initializer
Definition ast.h:352
AstNode * msg
Definition ast.h:299
bool ln
Definition ast.h:456
size_t struct_name_count
Definition ast.h:481
struct AstNode::@0::@2 preprocessor
AstNode * ptr
Definition ast.h:287
const char * dll_name
Definition ast.h:410
const char * name
Definition ast.h:349
AstNode * else_expr
Definition ast.h:235
Token * tokens
Definition ast.h:159
AstNode * right
Definition ast.h:209
struct AstNode::@0::@4::@38::@56 impl_stmt
AstNode * body
Definition ast.h:402
struct AstNode::@0::@5::@59::@62 pointer
struct AstNode::@0::@4::@38::@43 struct_decl
struct AstNode::@0::@4::@38::@52 print_stmt
struct AstNode::@0::@3::@12::@33 syscall
size_t expr_count
Definition ast.h:455
AstNode * pointee_type
Definition ast.h:508
struct AstNode::@0::@3::@12::@30 cast
size_t line
Definition ast.h:144
struct AstNode::@0::@3::@12::@19 assignment
struct AstNode::@0::@4::@38::@50 return_stmt
UnaryOp op
Definition ast.h:214
AstNode ** statements
Definition ast.h:447
struct AstNode::@0::@4::@38::@45 spread_decl
struct AstNode::@0::@3::@12::@36 spread
size_t target_size
Definition ast.h:260
struct AstNode::@0::@4::@38::@54 defer_stmt
AstNode ** public_members
Definition ast.h:361
struct AstNode ** cases
Definition ast.h:469
AstNode ** initializer
Definition ast.h:436
bool is_public
Definition ast.h:354
AstNode * object
Definition ast.h:241
struct AstNode::@0::@4::@38::@53 break_continue
AstNode ** private_members
Definition ast.h:363
struct AstNode::@0::@5 type_data
Represents a single token extracted by the lexer.
Definition lexer.h:151