Luma 0.1.0
A low-level compiled alternative to C, C++, and more!
Loading...
Searching...
No Matches
Functions
stmt.c File Reference
#include "../ast.h"
#include <stdio.h>
#include <string.h>
Include dependency graph for stmt.c:

Functions

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)
 

Function Documentation

◆ 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_case_stmt()

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

◆ 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_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_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_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_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_infinite_loop_stmt()

AstNode * create_infinite_loop_stmt ( ArenaAllocator arena,
AstNode body,
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_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_return_stmt()

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

◆ 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_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_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_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 
)