diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c index dc4478a8..5abbbf3c 100644 --- a/src/compiler/lexer.c +++ b/src/compiler/lexer.c @@ -281,8 +281,8 @@ static Error* eat_name(pk_Lexer* self){ static Error* eat_string_until(pk_Lexer* self, char quote, bool raw, py_Str* out) { // previous char is quote bool quote3 = match_n_chars(self, 2, quote); - // small_vector_2 buff; pk_SStream buff; + pk_SStream__ctor(&buff); while(true) { char c = eatchar_include_newline(self); if(c == quote) { @@ -721,7 +721,7 @@ Error* pk_Lexer__process(pk_SourceData_ src, c11_array* out_tokens){ if(src->is_precompiled) { Error* err = from_precompiled(&lexer); - // set out tokens + // TODO: set out tokens pk_Lexer__dtor(&lexer); return err; } @@ -739,6 +739,13 @@ Error* pk_Lexer__process(pk_SourceData_ src, c11_array* out_tokens){ } } // set out_tokens + *out_tokens = (c11_array){ + .data = lexer.nexts.data, + .count = lexer.nexts.count, + .elem_size = lexer.nexts.elem_size + }; + c11_vector__ctor(&lexer.nexts, sizeof(Token)); + pk_Lexer__dtor(&lexer); return NULL; } diff --git a/src/public/vm.c b/src/public/vm.c index 373f7e39..4cf9d4ab 100644 --- a/src/public/vm.c +++ b/src/public/vm.c @@ -1,8 +1,10 @@ +#include "pocketpy/objects/sourcedata.h" #include "pocketpy/pocketpy.h" #include "pocketpy/common/utils.h" #include "pocketpy/objects/object.h" #include "pocketpy/interpreter/vm.h" +#include "pocketpy/compiler/compiler.h" pk_VM* pk_current_vm; static pk_VM pk_default_vm; @@ -22,6 +24,11 @@ void py_finalize() { } int py_exec(const char* source) { + pk_SourceData_ src = pk_SourceData__rcnew(source, "main.py", EXEC_MODE); + Error* err = pk_compile(src); + PK_DECREF(src); + if(err) abort(); + CodeObject* co = NULL; pk_VM* vm = pk_current_vm; Frame* frame = Frame__new(co, &vm->main, NULL, vm->stack.sp, vm->stack.sp, co);