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

AstNodetypecheck_binary_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_unary_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_assignment_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_call_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_index_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_member_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_deref_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_addr_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_alloc_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_free_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_memcpy_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_cast_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_input_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_system_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_syscall_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 Type check a syscall expression.
 
AstNodetypecheck_sizeof_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_array_expr (AstNode *expr, Scope *scope, ArenaAllocator *arena)
 
AstNodetypecheck_struct_expr_internal (AstNode *expr, Scope *scope, ArenaAllocator *arena, AstNode *expected_type)
 
AstNodetypecheck_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 
)