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

Macros

#define _POSIX_C_SOURCE   200809L
 

Functions

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, AstNode *left, AstNode *right, size_t line, size_t column)
 
AstNodecreate_unary_expr (ArenaAllocator *arena, UnaryOp op, AstNode *operand, size_t line, size_t column)
 
AstNodecreate_call_expr (ArenaAllocator *arena, AstNode *callee, AstNode **args, size_t arg_count, size_t line, size_t column)
 
AstNodecreate_assignment_expr (ArenaAllocator *arena, AstNode *target, AstNode *value, size_t line, size_t column)
 
AstNodecreate_ternary_expr (ArenaAllocator *arena, AstNode *condition, AstNode *then_expr, AstNode *else_expr, size_t line, size_t column)
 
AstNodecreate_member_expr (ArenaAllocator *arena, AstNode *object, bool is_compiletime, const char *member, size_t line, size_t column)
 
AstNodecreate_index_expr (ArenaAllocator *arena, AstNode *object, AstNode *index, size_t line, size_t column)
 
AstNodecreate_grouping_expr (ArenaAllocator *arena, AstNode *expr, size_t line, size_t column)
 
AstNodecreate_array_expr (ArenaAllocator *arena, AstNode **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)
 

Macro Definition Documentation

◆ _POSIX_C_SOURCE

#define _POSIX_C_SOURCE   200809L

Function Documentation

◆ 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,
AstNode **  elements,
size_t  element_count,
size_t  line,
size_t  column 
)

◆ create_assignment_expr()

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

◆ create_binary_expr()

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

◆ create_call_expr()

AstNode * create_call_expr ( ArenaAllocator arena,
AstNode callee,
AstNode **  args,
size_t  arg_count,
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_deref_expr()

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

◆ create_free_expr()

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

◆ create_grouping_expr()

AstNode * create_grouping_expr ( ArenaAllocator arena,
AstNode 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_index_expr()

AstNode * create_index_expr ( ArenaAllocator arena,
AstNode object,
AstNode index,
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_literal_expr()

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

◆ create_member_expr()

AstNode * create_member_expr ( ArenaAllocator arena,
AstNode 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_sizeof_expr()

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

◆ create_spread_expr()

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

◆ 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_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,
AstNode condition,
AstNode then_expr,
AstNode else_expr,
size_t  line,
size_t  column 
)

◆ create_unary_expr()

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