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

AstNode * create_literal_expr (ArenaAllocator *arena, LiteralType lit_type, void *value, size_t line, size_t column)
 
AstNode * create_identifier_expr (ArenaAllocator *arena, const char *name, size_t line, size_t column)
 
AstNode * create_binary_expr (ArenaAllocator *arena, BinaryOp op, AstNode *left, AstNode *right, size_t line, size_t column)
 
AstNode * create_unary_expr (ArenaAllocator *arena, UnaryOp op, AstNode *operand, size_t line, size_t column)
 
AstNode * create_call_expr (ArenaAllocator *arena, AstNode *callee, AstNode **args, size_t arg_count, size_t line, size_t column)
 
AstNode * create_assignment_expr (ArenaAllocator *arena, AstNode *target, AstNode *value, size_t line, size_t column)
 
AstNode * create_ternary_expr (ArenaAllocator *arena, AstNode *condition, AstNode *then_expr, AstNode *else_expr, size_t line, size_t column)
 
AstNode * create_member_expr (ArenaAllocator *arena, AstNode *object, bool is_compiletime, const char *member, size_t line, size_t column)
 
AstNode * create_index_expr (ArenaAllocator *arena, AstNode *object, AstNode *index, size_t line, size_t column)
 
AstNode * create_grouping_expr (ArenaAllocator *arena, AstNode *expr, size_t line, size_t column)
 
AstNode * create_array_expr (ArenaAllocator *arena, AstNode **elements, size_t element_count, size_t line, size_t column)
 
AstNode * create_deref_expr (ArenaAllocator *arena, Expr *object, size_t line, size_t col)
 
AstNode * create_addr_expr (ArenaAllocator *arena, Expr *object, size_t line, size_t col)
 
AstNode * create_alloc_expr (ArenaAllocator *arena, Expr *size, size_t line, size_t col)
 
AstNode * create_memcpy_expr (ArenaAllocator *arena, Expr *to, Expr *from, Expr *size, size_t line, size_t col)
 
AstNode * create_free_expr (ArenaAllocator *arena, Expr *ptr, size_t line, size_t col)
 
AstNode * create_cast_expr (ArenaAllocator *arena, Expr *type, Expr *castee, size_t line, size_t col)
 
AstNode * create_input_expr (ArenaAllocator *arena, Expr *type, Expr *msg, size_t line, size_t col)
 
AstNode * create_system_expr (ArenaAllocator *arena, Expr *command, size_t line, size_t col)
 
AstNode * create_syscall_expr (ArenaAllocator *arena, Expr **args, size_t count, size_t line, size_t col)
 
AstNode * create_sizeof_expr (ArenaAllocator *arena, Expr *object, bool is_type, size_t line, size_t col)
 
Expr * create_struct_expr (ArenaAllocator *arena, char *name, char **field_names, AstNode **field_values, size_t field_count, int line, int col)
 
Expr * create_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 
)