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

Functions

AstNode * typecheck_binary_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_unary_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_assignment_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_call_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_index_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_member_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_deref_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_addr_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_alloc_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_free_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_memcpy_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_cast_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_input_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_system_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_syscall_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 Type check a syscall expression.
 
AstNode * typecheck_sizeof_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_array_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNode * typecheck_struct_expr_internal (AstNode *expr, Scope *scope, ArenaAllocator *arena, AstNode *expected_type)
 
AstNode * typecheck_struct_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 

Function Documentation

◆ typecheck_addr_expr()

AstNode * typecheck_addr_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_alloc_expr()

AstNode * typecheck_alloc_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_array_expr()

AstNode * typecheck_array_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_assignment_expr()

AstNode * typecheck_assignment_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_binary_expr()

AstNode * typecheck_binary_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_call_expr()

AstNode * typecheck_call_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_cast_expr()

AstNode * typecheck_cast_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_deref_expr()

AstNode * typecheck_deref_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_free_expr()

AstNode * typecheck_free_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_index_expr()

AstNode * typecheck_index_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_input_expr()

AstNode * typecheck_input_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_member_expr()

AstNode * typecheck_member_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_memcpy_expr()

AstNode * typecheck_memcpy_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_sizeof_expr()

AstNode * typecheck_sizeof_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_struct_expr()

AstNode * typecheck_struct_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_struct_expr_internal()

AstNode * typecheck_struct_expr_internal ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena,
AstNode *  expected_type 
)

◆ typecheck_syscall_expr()

AstNode * typecheck_syscall_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

Type check a syscall expression.

Syscall requires:

  • First argument: syscall number (int)
  • Remaining arguments: syscall parameters (typically int or pointer types)

Returns: int (the return value from the syscall)

◆ typecheck_system_expr()

AstNode * typecheck_system_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)

◆ typecheck_unary_expr()

AstNode * typecheck_unary_expr ( AstNode *  expr,
Scope *  scope,
ArenaAllocator *  arena 
)