Luma 0.1.0
A low-level compiled alternative to C, C++, and more!
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions
ast.h File Reference

Abstract Syntax Tree definitions with documentation comment support. More...

#include <stdbool.h>
#include <stddef.h>
#include "../c_libs/memory/memory.h"
#include "../lexer/lexer.h"
Include dependency graph for ast.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  AstNode
 

Macros

#define create_preprocessor(arena, type, line, column)
 
#define create_expr(arena, type, line, column)    create_expr_node(arena, type, line, column)
 
#define create_stmt(arena, type, line, column)    create_stmt_node(arena, type, line, column)
 
#define create_type(arena, type, line, column)    create_type_node(arena, type, line, column)
 

Typedefs

typedef struct AstNode AstNode
 
typedef AstNode Preprocessor
 
typedef AstNode Expr
 
typedef AstNode Stmt
 
typedef AstNode Type
 

Enumerations

enum  NodeType {
  AST_PREPROCESSOR_MODULE , AST_PREPROCESSOR_USE , AST_PREPROCESSOR_OS , AST_PREPROCESSOR_LINK ,
  AST_EXPR_LITERAL , AST_EXPR_IDENTIFIER , AST_EXPR_BINARY , AST_EXPR_UNARY ,
  AST_EXPR_CALL , AST_EXPR_ASSIGNMENT , AST_EXPR_TERNARY , AST_EXPR_MEMBER ,
  AST_EXPR_INDEX , AST_EXPR_GROUPING , AST_EXPR_RANGE , AST_EXPR_ARRAY ,
  AST_EXPR_DEREF , AST_EXPR_ADDR , AST_EXPR_ALLOC , AST_EXPR_MEMCPY ,
  AST_EXPR_FREE , AST_EXPR_CAST , AST_EXPR_INPUT , AST_EXPR_SIZEOF ,
  AST_EXPR_SYSTEM , AST_EXPR_SYSCALL , AST_EXPR_STRUCT , AST_EXPR_SPREAD ,
  AST_PROGRAM , AST_STMT_EXPRESSION , AST_STMT_VAR_DECL , AST_STMT_CONST_DECL ,
  AST_STMT_FUNCTION , AST_STMT_IF , AST_STMT_LOOP , AST_STMT_BREAK_CONTINUE ,
  AST_STMT_RETURN , AST_STMT_BLOCK , AST_STMT_PRINT , AST_STMT_MODULE ,
  AST_STMT_ENUM , AST_STMT_STRUCT , AST_STMT_FIELD_DECL , AST_STMT_SPREAD_DECL ,
  AST_STMT_DEFER , AST_STMT_SWITCH , AST_STMT_IMPL , AST_STMT_CASE ,
  AST_STMT_DEFAULT , AST_TYPE_RESOLUTION , AST_TYPE_BASIC , AST_TYPE_POINTER ,
  AST_TYPE_ARRAY , AST_TYPE_FUNCTION , AST_TYPE_STRUCT , AST_TYPE_ENUM
}
 
enum  LiteralType {
  LITERAL_IDENT , LITERAL_INT , LITERAL_FLOAT , LITERAL_DOUBLE ,
  LITERAL_STRING , LITERAL_CHAR , LITERAL_BOOL , LITERAL_NULL
}
 
enum  BinaryOp {
  BINOP_ADD , BINOP_SUB , BINOP_MUL , BINOP_DIV ,
  BINOP_MOD , BINOP_POW , BINOP_EQ , BINOP_NE ,
  BINOP_LT , BINOP_LE , BINOP_GT , BINOP_GE ,
  BINOP_AND , BINOP_OR , BINOP_BIT_AND , BINOP_BIT_OR ,
  BINOP_BIT_XOR , BINOP_SHL , BINOP_SHR , BINOP_RANGE
}
 
enum  UnaryOp {
  UNOP_NOT , UNOP_NEG , UNOP_POS , UNOP_BIT_NOT ,
  UNOP_PRE_INC , UNOP_PRE_DEC , UNOP_POST_INC , UNOP_POST_DEC ,
  UNOP_DEREF , UNOP_ADDR
}
 
enum  NodeCategory { Node_Category_EXPR , Node_Category_STMT , Node_Category_TYPE , Node_Category_PREPROCESSOR }
 

Functions

AstNodecreate_preprocessor_node (ArenaAllocator *arena, NodeType type, NodeCategory category, size_t line, size_t column)
 
AstNodecreate_expr_node (ArenaAllocator *arena, NodeType type, size_t line, size_t column)
 
AstNodecreate_stmt_node (ArenaAllocator *arena, NodeType type, size_t line, size_t column)
 
AstNodecreate_type_node (ArenaAllocator *arena, NodeType type, size_t line, size_t column)
 
AstNodecreate_ast_node (ArenaAllocator *arena, NodeType type, NodeCategory category, size_t line, size_t column)
 
AstNodecreate_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)
 
AstNodecreate_use_node (ArenaAllocator *arena, const char *module_name, const char *alias, size_t line, size_t column)
 
AstNodecreate_os_node (ArenaAllocator *arena, char **platforms, AstNode **bodies, size_t arm_count, bool has_default, AstNode *default_body, size_t line, size_t column)
 
AstNodecreate_link_node (ArenaAllocator *arena, const char *lib_name, size_t line, size_t column)
 
void apply_dll_import (AstNode *func_node, const char *dll_name, const char *callconv)
 
void apply_lib_import (AstNode *func_node, const char *lib_name)
 
AstNodecreate_literal_expr (ArenaAllocator *arena, LiteralType lit_type, void *value, size_t line, size_t column)
 
AstNodecreate_identifier_expr (ArenaAllocator *arena, const char *name, size_t line, size_t column)
 
AstNodecreate_binary_expr (ArenaAllocator *arena, BinaryOp op, Expr *left, Expr *right, size_t line, size_t column)
 
AstNodecreate_unary_expr (ArenaAllocator *arena, UnaryOp op, Expr *operand, size_t line, size_t column)
 
AstNodecreate_call_expr (ArenaAllocator *arena, Expr *callee, Expr **args, size_t arg_count, size_t line, size_t column)
 
AstNodecreate_assignment_expr (ArenaAllocator *arena, Expr *target, Expr *value, size_t line, size_t column)
 
AstNodecreate_ternary_expr (ArenaAllocator *arena, Expr *condition, Expr *then_expr, Expr *else_expr, size_t line, size_t column)
 
AstNodecreate_member_expr (ArenaAllocator *arena, Expr *object, bool is_compiletime, const char *member, size_t line, size_t column)
 
AstNodecreate_index_expr (ArenaAllocator *arena, Expr *object, Expr *index, size_t line, size_t column)
 
AstNodecreate_grouping_expr (ArenaAllocator *arena, Expr *expr, size_t line, size_t column)
 
AstNodecreate_array_expr (ArenaAllocator *arena, Expr **elements, size_t element_count, size_t line, size_t column)
 
AstNodecreate_deref_expr (ArenaAllocator *arena, Expr *object, size_t line, size_t col)
 
AstNodecreate_addr_expr (ArenaAllocator *arena, Expr *object, size_t line, size_t col)
 
AstNodecreate_alloc_expr (ArenaAllocator *arena, Expr *size, size_t line, size_t col)
 
AstNodecreate_memcpy_expr (ArenaAllocator *arena, Expr *to, Expr *from, Expr *size, size_t line, size_t col)
 
AstNodecreate_free_expr (ArenaAllocator *arena, Expr *ptr, size_t line, size_t col)
 
AstNodecreate_cast_expr (ArenaAllocator *arena, Expr *type, Expr *castee, size_t line, size_t col)
 
AstNodecreate_input_expr (ArenaAllocator *arena, Expr *type, Expr *msg, size_t line, size_t col)
 
AstNodecreate_system_expr (ArenaAllocator *arena, Expr *command, size_t line, size_t col)
 
AstNodecreate_syscall_expr (ArenaAllocator *arena, Expr **args, size_t count, size_t line, size_t col)
 
AstNodecreate_sizeof_expr (ArenaAllocator *arena, Expr *object, bool is_type, size_t line, size_t col)
 
Exprcreate_struct_expr (ArenaAllocator *arena, char *name, char **field_names, AstNode **field_values, size_t field_count, int line, int col)
 
Exprcreate_spread_expr (ArenaAllocator *arena, Expr *expr, size_t line, size_t col)
 
AstNodecreate_program_node (ArenaAllocator *arena, AstNode **statements, size_t stmt_count, size_t line, size_t column)
 
AstNodecreate_expr_stmt (ArenaAllocator *arena, Expr *expression, size_t line, size_t column)
 
AstNodecreate_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)
 
AstNodecreate_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)
 
AstNodecreate_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)
 
AstNodecreate_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)
 
AstNodecreate_spread_decl_stmt (ArenaAllocator *arena, AstNode *type, bool via_pointer, bool is_public, size_t line, size_t column)
 
AstNodecreate_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)
 
AstNodecreate_if_stmt (ArenaAllocator *arena, Expr *condition, AstNode *then_stmt, AstNode **elif_stmts, int elif_count, AstNode *else_stmt, size_t line, size_t column)
 
AstNodecreate_infinite_loop_stmt (ArenaAllocator *arena, AstNode *body, size_t line, size_t column)
 
AstNodecreate_for_loop_stmt (ArenaAllocator *arena, AstNode **initializers, size_t init_count, Expr *condition, Expr *optional, AstNode *body, size_t line, size_t column)
 
AstNodecreate_loop_stmt (ArenaAllocator *arena, Expr *condition, Expr *optional, AstNode *body, size_t line, size_t column)
 
AstNodecreate_return_stmt (ArenaAllocator *arena, Expr *value, size_t line, size_t column)
 
AstNodecreate_block_stmt (ArenaAllocator *arena, AstNode **statements, size_t stmt_count, size_t line, size_t column)
 
AstNodecreate_print_stmt (ArenaAllocator *arena, Expr **expressions, size_t expr_count, bool ln, size_t line, size_t column)
 
AstNodecreate_break_continue_stmt (ArenaAllocator *arena, bool is_continue, size_t line, size_t column)
 
AstNodecreate_defer_stmt (ArenaAllocator *arena, AstNode *statement, size_t line, size_t column)
 
AstNodecreate_switch_stmt (ArenaAllocator *arena, AstNode *condition, AstNode **cases, size_t case_count, AstNode *default_case, size_t line, size_t column)
 
AstNodecreate_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)
 
AstNodecreate_case_stmt (ArenaAllocator *arena, AstNode **values, size_t value_count, AstNode *body, size_t line, size_t column)
 
AstNodecreate_default_stmt (ArenaAllocator *arena, AstNode *body, size_t line, size_t column)
 
AstNodecreate_basic_type (ArenaAllocator *arena, const char *name, size_t line, size_t column)
 
AstNodecreate_pointer_type (ArenaAllocator *arena, AstNode *pointee_type, size_t line, size_t column)
 
AstNodecreate_array_type (ArenaAllocator *arena, AstNode *element_type, Expr *size, size_t line, size_t column)
 
AstNodecreate_function_type (ArenaAllocator *arena, AstNode **param_types, size_t param_count, AstNode *return_type, size_t line, size_t column)
 
AstNodecreate_resolution_type (ArenaAllocator *arena, char **parts, size_t part_count, size_t line, size_t column)
 

Detailed Description

Abstract Syntax Tree definitions with documentation comment support.

Macro Definition Documentation

◆ create_expr

#define create_expr (   arena,
  type,
  line,
  column 
)     create_expr_node(arena, type, line, column)

◆ create_preprocessor

#define create_preprocessor (   arena,
  type,
  line,
  column 
)
Value:
column)
AstNode * create_preprocessor_node(ArenaAllocator *arena, NodeType type, NodeCategory category, size_t line, size_t column)
Definition ast.c:3
@ Node_Category_PREPROCESSOR
Definition ast.h:138

◆ create_stmt

#define create_stmt (   arena,
  type,
  line,
  column 
)     create_stmt_node(arena, type, line, column)

◆ create_type

#define create_type (   arena,
  type,
  line,
  column 
)     create_type_node(arena, type, line, column)

Typedef Documentation

◆ AstNode

typedef struct AstNode AstNode

◆ Expr

typedef AstNode Expr

◆ Preprocessor

◆ Stmt

typedef AstNode Stmt

◆ Type

typedef AstNode Type

Enumeration Type Documentation

◆ BinaryOp

enum BinaryOp
Enumerator
BINOP_ADD 
BINOP_SUB 
BINOP_MUL 
BINOP_DIV 
BINOP_MOD 
BINOP_POW 
BINOP_EQ 
BINOP_NE 
BINOP_LT 
BINOP_LE 
BINOP_GT 
BINOP_GE 
BINOP_AND 
BINOP_OR 
BINOP_BIT_AND 
BINOP_BIT_OR 
BINOP_BIT_XOR 
BINOP_SHL 
BINOP_SHR 
BINOP_RANGE 

◆ LiteralType

Enumerator
LITERAL_IDENT 
LITERAL_INT 
LITERAL_FLOAT 
LITERAL_DOUBLE 
LITERAL_STRING 
LITERAL_CHAR 
LITERAL_BOOL 
LITERAL_NULL 

◆ NodeCategory

Enumerator
Node_Category_EXPR 
Node_Category_STMT 
Node_Category_TYPE 
Node_Category_PREPROCESSOR 

◆ NodeType

enum NodeType
Enumerator
AST_PREPROCESSOR_MODULE 
AST_PREPROCESSOR_USE 
AST_PREPROCESSOR_OS 
AST_PREPROCESSOR_LINK 
AST_EXPR_LITERAL 
AST_EXPR_IDENTIFIER 
AST_EXPR_BINARY 
AST_EXPR_UNARY 
AST_EXPR_CALL 
AST_EXPR_ASSIGNMENT 
AST_EXPR_TERNARY 
AST_EXPR_MEMBER 
AST_EXPR_INDEX 
AST_EXPR_GROUPING 
AST_EXPR_RANGE 
AST_EXPR_ARRAY 
AST_EXPR_DEREF 
AST_EXPR_ADDR 
AST_EXPR_ALLOC 
AST_EXPR_MEMCPY 
AST_EXPR_FREE 
AST_EXPR_CAST 
AST_EXPR_INPUT 
AST_EXPR_SIZEOF 
AST_EXPR_SYSTEM 
AST_EXPR_SYSCALL 
AST_EXPR_STRUCT 
AST_EXPR_SPREAD 
AST_PROGRAM 
AST_STMT_EXPRESSION 
AST_STMT_VAR_DECL 
AST_STMT_CONST_DECL 
AST_STMT_FUNCTION 
AST_STMT_IF 
AST_STMT_LOOP 
AST_STMT_BREAK_CONTINUE 
AST_STMT_RETURN 
AST_STMT_BLOCK 
AST_STMT_PRINT 
AST_STMT_MODULE 
AST_STMT_ENUM 
AST_STMT_STRUCT 
AST_STMT_FIELD_DECL 
AST_STMT_SPREAD_DECL 
AST_STMT_DEFER 
AST_STMT_SWITCH 
AST_STMT_IMPL 
AST_STMT_CASE 
AST_STMT_DEFAULT 
AST_TYPE_RESOLUTION 
AST_TYPE_BASIC 
AST_TYPE_POINTER 
AST_TYPE_ARRAY 
AST_TYPE_FUNCTION 
AST_TYPE_STRUCT 
AST_TYPE_ENUM 

◆ UnaryOp

enum UnaryOp
Enumerator
UNOP_NOT 
UNOP_NEG 
UNOP_POS 
UNOP_BIT_NOT 
UNOP_PRE_INC 
UNOP_PRE_DEC 
UNOP_POST_INC 
UNOP_POST_DEC 
UNOP_DEREF 
UNOP_ADDR 

Function Documentation

◆ apply_dll_import()

void apply_dll_import ( AstNode func_node,
const char *  dll_name,
const char *  callconv 
)

◆ apply_lib_import()

void apply_lib_import ( AstNode func_node,
const char *  lib_name 
)

◆ create_addr_expr()

AstNode * create_addr_expr ( ArenaAllocator arena,
Expr object,
size_t  line,
size_t  col 
)

◆ create_alloc_expr()

AstNode * create_alloc_expr ( ArenaAllocator arena,
Expr size,
size_t  line,
size_t  col 
)

◆ create_array_expr()

AstNode * create_array_expr ( ArenaAllocator arena,
Expr **  elements,
size_t  element_count,
size_t  line,
size_t  column 
)

◆ create_array_type()

AstNode * create_array_type ( ArenaAllocator arena,
AstNode element_type,
Expr size,
size_t  line,
size_t  column 
)

◆ create_assignment_expr()

AstNode * create_assignment_expr ( ArenaAllocator arena,
Expr target,
Expr value,
size_t  line,
size_t  column 
)

◆ create_ast_node()

AstNode * create_ast_node ( ArenaAllocator arena,
NodeType  type,
NodeCategory  category,
size_t  line,
size_t  column 
)

◆ create_basic_type()

AstNode * create_basic_type ( ArenaAllocator arena,
const char *  name,
size_t  line,
size_t  column 
)

◆ create_binary_expr()

AstNode * create_binary_expr ( ArenaAllocator arena,
BinaryOp  op,
Expr left,
Expr right,
size_t  line,
size_t  column 
)

◆ create_block_stmt()

AstNode * create_block_stmt ( ArenaAllocator arena,
AstNode **  statements,
size_t  stmt_count,
size_t  line,
size_t  column 
)

◆ create_break_continue_stmt()

AstNode * create_break_continue_stmt ( ArenaAllocator arena,
bool  is_continue,
size_t  line,
size_t  column 
)

◆ create_call_expr()

AstNode * create_call_expr ( ArenaAllocator arena,
Expr callee,
Expr **  args,
size_t  arg_count,
size_t  line,
size_t  column 
)

◆ create_case_stmt()

AstNode * create_case_stmt ( ArenaAllocator arena,
AstNode **  values,
size_t  value_count,
AstNode body,
size_t  line,
size_t  column 
)

◆ create_cast_expr()

AstNode * create_cast_expr ( ArenaAllocator arena,
Expr type,
Expr castee,
size_t  line,
size_t  col 
)

◆ create_default_stmt()

AstNode * create_default_stmt ( ArenaAllocator arena,
AstNode body,
size_t  line,
size_t  column 
)

◆ create_defer_stmt()

AstNode * create_defer_stmt ( ArenaAllocator arena,
AstNode statement,
size_t  line,
size_t  column 
)

◆ create_deref_expr()

AstNode * create_deref_expr ( ArenaAllocator arena,
Expr object,
size_t  line,
size_t  col 
)

◆ create_enum_decl_stmt()

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 
)

◆ create_expr_node()

AstNode * create_expr_node ( ArenaAllocator arena,
NodeType  type,
size_t  line,
size_t  column 
)

◆ create_expr_stmt()

AstNode * create_expr_stmt ( ArenaAllocator arena,
Expr expression,
size_t  line,
size_t  column 
)

◆ create_field_decl_stmt()

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 
)

◆ create_for_loop_stmt()

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 
)

◆ create_free_expr()

AstNode * create_free_expr ( ArenaAllocator arena,
Expr ptr,
size_t  line,
size_t  col 
)

◆ create_func_decl_stmt()

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 
)

◆ create_function_type()

AstNode * create_function_type ( ArenaAllocator arena,
AstNode **  param_types,
size_t  param_count,
AstNode return_type,
size_t  line,
size_t  column 
)

◆ create_grouping_expr()

AstNode * create_grouping_expr ( ArenaAllocator arena,
Expr expr,
size_t  line,
size_t  column 
)

◆ create_identifier_expr()

AstNode * create_identifier_expr ( ArenaAllocator arena,
const char *  name,
size_t  line,
size_t  column 
)

◆ create_if_stmt()

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 
)

◆ create_impl_stmt()

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 
)

◆ create_index_expr()

AstNode * create_index_expr ( ArenaAllocator arena,
Expr object,
Expr index,
size_t  line,
size_t  column 
)

◆ create_infinite_loop_stmt()

AstNode * create_infinite_loop_stmt ( ArenaAllocator arena,
AstNode body,
size_t  line,
size_t  column 
)

◆ create_input_expr()

AstNode * create_input_expr ( ArenaAllocator arena,
Expr type,
Expr msg,
size_t  line,
size_t  col 
)

◆ create_link_node()

AstNode * create_link_node ( ArenaAllocator arena,
const char *  lib_name,
size_t  line,
size_t  column 
)

◆ create_literal_expr()

AstNode * create_literal_expr ( ArenaAllocator arena,
LiteralType  lit_type,
void *  value,
size_t  line,
size_t  column 
)

◆ create_loop_stmt()

AstNode * create_loop_stmt ( ArenaAllocator arena,
Expr condition,
Expr optional,
AstNode body,
size_t  line,
size_t  column 
)

◆ create_member_expr()

AstNode * create_member_expr ( ArenaAllocator arena,
Expr object,
bool  is_compiletime,
const char *  member,
size_t  line,
size_t  column 
)

◆ create_memcpy_expr()

AstNode * create_memcpy_expr ( ArenaAllocator arena,
Expr to,
Expr from,
Expr size,
size_t  line,
size_t  col 
)

◆ create_module_node()

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 
)

◆ create_os_node()

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 
)

◆ create_pointer_type()

AstNode * create_pointer_type ( ArenaAllocator arena,
AstNode pointee_type,
size_t  line,
size_t  column 
)

◆ create_preprocessor_node()

AstNode * create_preprocessor_node ( ArenaAllocator arena,
NodeType  type,
NodeCategory  category,
size_t  line,
size_t  column 
)

◆ create_print_stmt()

AstNode * create_print_stmt ( ArenaAllocator arena,
Expr **  expressions,
size_t  expr_count,
bool  ln,
size_t  line,
size_t  column 
)

◆ create_program_node()

AstNode * create_program_node ( ArenaAllocator arena,
AstNode **  statements,
size_t  stmt_count,
size_t  line,
size_t  column 
)

◆ create_resolution_type()

AstNode * create_resolution_type ( ArenaAllocator arena,
char **  parts,
size_t  part_count,
size_t  line,
size_t  column 
)

◆ create_return_stmt()

AstNode * create_return_stmt ( ArenaAllocator arena,
Expr value,
size_t  line,
size_t  column 
)

◆ create_sizeof_expr()

AstNode * create_sizeof_expr ( ArenaAllocator arena,
Expr object,
bool  is_type,
size_t  line,
size_t  col 
)

◆ create_spread_decl_stmt()

AstNode * create_spread_decl_stmt ( ArenaAllocator arena,
AstNode type,
bool  via_pointer,
bool  is_public,
size_t  line,
size_t  column 
)

◆ create_spread_expr()

Expr * create_spread_expr ( ArenaAllocator arena,
Expr expr,
size_t  line,
size_t  col 
)

◆ create_stmt_node()

AstNode * create_stmt_node ( ArenaAllocator arena,
NodeType  type,
size_t  line,
size_t  column 
)

◆ create_struct_decl_stmt()

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 
)

◆ create_struct_expr()

Expr * create_struct_expr ( ArenaAllocator arena,
char *  name,
char **  field_names,
AstNode **  field_values,
size_t  field_count,
int  line,
int  col 
)

◆ create_switch_stmt()

AstNode * create_switch_stmt ( ArenaAllocator arena,
AstNode condition,
AstNode **  cases,
size_t  case_count,
AstNode default_case,
size_t  line,
size_t  column 
)

◆ create_syscall_expr()

AstNode * create_syscall_expr ( ArenaAllocator arena,
Expr **  args,
size_t  count,
size_t  line,
size_t  col 
)

◆ create_system_expr()

AstNode * create_system_expr ( ArenaAllocator arena,
Expr command,
size_t  line,
size_t  col 
)

◆ create_ternary_expr()

AstNode * create_ternary_expr ( ArenaAllocator arena,
Expr condition,
Expr then_expr,
Expr else_expr,
size_t  line,
size_t  column 
)

◆ create_type_node()

AstNode * create_type_node ( ArenaAllocator arena,
NodeType  type,
size_t  line,
size_t  column 
)

◆ create_unary_expr()

AstNode * create_unary_expr ( ArenaAllocator arena,
UnaryOp  op,
Expr operand,
size_t  line,
size_t  column 
)

◆ create_use_node()

AstNode * create_use_node ( ArenaAllocator arena,
const char *  module_name,
const char *  alias,
size_t  line,
size_t  column 
)

◆ create_var_decl_stmt()

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 
)