diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-25 14:32:18 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-25 14:32:18 +0200 |
commit | ad8c598e84bd1e5469e2487cc3e4d0ea784d0ff3 (patch) | |
tree | 0d2439abaf88f22009ad0cbe41d9ab0ac3cc0a05 /src/bytecode/compiler.h | |
parent | b9644b4ccda5abee01fd0704ddc42b08b68e5b5d (diff) | |
download | bdl-ad8c598e84bd1e5469e2487cc3e4d0ea784d0ff3.tar.gz bdl-ad8c598e84bd1e5469e2487cc3e4d0ea784d0ff3.zip |
Add callframe support for the VM
Diffstat (limited to 'src/bytecode/compiler.h')
-rwxr-xr-x | src/bytecode/compiler.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/bytecode/compiler.h b/src/bytecode/compiler.h index 3b68868..4130269 100755 --- a/src/bytecode/compiler.h +++ b/src/bytecode/compiler.h | |||
@@ -14,7 +14,7 @@ Token next_token(Compiler *compiler); | |||
14 | Token peek_token(const Compiler *compiler); | 14 | Token peek_token(const Compiler *compiler); |
15 | bool has_next_token(const Compiler *compiler); | 15 | bool has_next_token(const Compiler *compiler); |
16 | 16 | ||
17 | Chunk * compile(Token *tokens); | 17 | Object compile(Token *tokens); |
18 | 18 | ||
19 | Token | 19 | Token |
20 | peek_token(const Compiler *compiler) { | 20 | peek_token(const Compiler *compiler) { |
@@ -415,20 +415,19 @@ parse_tree(Chunk *chunk, Compiler *compiler) { | |||
415 | return; | 415 | return; |
416 | } | 416 | } |
417 | 417 | ||
418 | Chunk * | 418 | Object |
419 | compile(Token *tokens) { | 419 | compile(Token *tokens) { |
420 | Chunk *chunk = NULL; | 420 | Object main = make_lambda((StringView){"main", sizeof("main")}); |
421 | chunk = NEW_CHUNK("main"); | ||
422 | Compiler compiler = (Compiler){ | 421 | Compiler compiler = (Compiler){ |
423 | .tokens = tokens, | 422 | .tokens = tokens, |
424 | .current = 0, | 423 | .current = 0, |
425 | }; | 424 | }; |
426 | Token start_tok = peek_token(&compiler); | 425 | Token start_tok = peek_token(&compiler); |
427 | while (has_next_token(&compiler) && peek_token(&compiler).type != TOKEN_EOF) { | 426 | while (has_next_token(&compiler) && peek_token(&compiler).type != TOKEN_EOF) { |
428 | parse_tree(chunk, &compiler); | 427 | parse_tree(main.chunk, &compiler); |
429 | } | 428 | } |
430 | add_code(chunk, OP_RETURN, start_tok.line, start_tok.column); | 429 | add_code(main.chunk, OP_RETURN, start_tok.line, start_tok.column); |
431 | return chunk; | 430 | return main; |
432 | } | 431 | } |
433 | 432 | ||
434 | #endif // BDL_COMPILER_H | 433 | #endif // BDL_COMPILER_H |