blueloveTH 1 год назад
Родитель
Сommit
72723d24f5
2 измененных файлов с 16 добавлено и 2 удалено
  1. 9 2
      src/compiler/lexer.c
  2. 7 0
      src/public/vm.c

+ 9 - 2
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<char, 32> 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;
 }

+ 7 - 0
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);