diff options
| author | Baitinq <[email protected]> | 2025-06-28 00:17:18 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-06-28 00:17:18 +0200 |
| commit | af150fb67db0d694b9d9bfd1e1796f0e671441b8 (patch) | |
| tree | b30db72360c24cc86189ab5788411a271de7b10f /src/bootstrap | |
| parent | Bootstrap: Parser: Parse function calls (diff) | |
| download | pry-lang-af150fb67db0d694b9d9bfd1e1796f0e671441b8.tar.gz pry-lang-af150fb67db0d694b9d9bfd1e1796f0e671441b8.tar.bz2 pry-lang-af150fb67db0d694b9d9bfd1e1796f0e671441b8.zip | |
Bootstrap: Codegen: start working on function calls
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/codegen.pry | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/bootstrap/codegen.pry b/src/bootstrap/codegen.pry index 3a809fe..d02baa5 100644 --- a/src/bootstrap/codegen.pry +++ b/src/bootstrap/codegen.pry @@ -35,6 +35,16 @@ let environment_drop_scope = (e: *Environment) => void { return; }; +/* TODO: */ +let environment_add_variale = (e: *Environment, name: *i8, variable: *Variable) => void { + return; +}; + +/* TODO: */ +let environment_set_variale = (e: *Environment, name: *i8, varbiable: *Variable) => void { + return; +}; + let environment_init = (alloc: *arena) => *Environment { let e = cast(*Environment, arena_alloc(alloc, sizeof(Environment))); (*e).scope_stack = cast(**Scope, arena_alloc(alloc, sizeof(*Scope) * 20)); @@ -340,6 +350,9 @@ let codegen_generate_assignment_statement = (c: *codegen, stmt: *NODE_ASSIGNMENT printf("XX %s\n", identifier); let variable = codegen_generate_expression_value(c, prhs, identifier); assert(variable != cast(*Variable, null)); + + /* TODO IMPORTANT: Add variable to variables */ + return 0; }; @@ -372,6 +385,13 @@ let codegen_generate_return_statement = (c: *codegen, stmt: *NODE_RETURN_STATEME return 0; }; +let codegen_generate_function_call_statement = (c: *codegen, stmt: *NODE_FUNCTION_CALL_STATEMENT_DATA) => i64 { + printf("LELELEL\n"); + assert(false); + + return 0; +}; + let codegen_generate_statement = (c: *codegen, statement: *Node) => i64 { let stmt = *statement; @@ -382,6 +402,10 @@ let codegen_generate_statement = (c: *codegen, statement: *Node) => i64 { if stmt.type == NODE_RETURN_STATEMENT { return codegen_generate_return_statement(c, cast(*NODE_RETURN_STATEMENT_DATA, stmt.data)); }; + + if stmt.type == NODE_FUNCTION_CALL_STATEMENT { + return codegen_generate_function_call_statement(c, cast(*NODE_FUNCTION_CALL_STATEMENT_DATA, stmt.data)); + }; printf("ASSERT 3 %d\n", stmt.type); assert(false); |