diff --git a/lang/src/ast.asm b/lang/src/ast.asm index f14f7a4..30db7ed 100644 --- a/lang/src/ast.asm +++ b/lang/src/ast.asm @@ -193,6 +193,7 @@ parse_args: mov rdx, 0 ; drop = None mov rcx, 16 ; capacity call vec_init_with + nop .loop: mov dil, TOKEN_RPARENS @@ -554,8 +555,11 @@ parse_statement: jnz .let mov dil, TOKEN_LBRACE call peek_expect_token ; parse_block expects lbrace to still be there + test rax, rax jnz .block - jmp .panic + mov rdi, [rsp] ; Ast + call parse_expr + jmp .epilogue .block: mov rdi, [rsp] ; Ast @@ -750,6 +754,11 @@ parse_prefix_expr: mov rdi, [rsp] ; Ast call parse_prefix_expr + mov rdi, [rsp] ; Ast + mov rsi, rax ; expr + ; mov rdx, rdx ; placeness + call ast_place_to_value + mov qword [rsp + 8], AST_DEREF ; AstNode.kind mov [rsp + 16], rax ; AstNode.data mov qword [rsp + 24], 0 ; AstNode.extra