blueloveTH 1 an în urmă
părinte
comite
5a8d9bb5f7
4 a modificat fișierele cu 12 adăugiri și 14 ștergeri
  1. 8 7
      docs/features/precompile.md
  2. 1 1
      include/pocketpy/compiler.h
  3. 2 5
      src/compiler.cpp
  4. 1 1
      src/io.cpp

+ 8 - 7
docs/features/precompile.md

@@ -46,16 +46,17 @@ print(code)
 ```
 
 ```txt
-pkpy:1.4.4
+pkpy:1.4.5
 0
-|print|
+=1
+print
 =6
 5,1,0,
-6,1,5,1,0,
-42,1,1,
-8,1,1,S48656c6c6f2c20776f726c6421
-43,1,0,
-3,1,0,
+6,0,,,
+42,,1,
+8,,,S48656c6c6f2c20776f726c6421
+43,,0,
+3,,,
 
 ```
 

+ 1 - 1
include/pocketpy/compiler.h

@@ -132,7 +132,7 @@ struct TokenDeserializer{
 
     TokenDeserializer(const char* source): curr(source), source(source) {}
     char read_char(){ return *curr++; }
-    char peek_char(){ return *curr; }
+    bool match_char(char c){ if(*curr == c) { curr++; return true; } return false; }
     
     std::string_view read_string(char c);
     Str read_string_from_hex(char c);

+ 2 - 5
src/compiler.cpp

@@ -1252,13 +1252,10 @@ __EAT_DOTS_END:
             if(is_raw_string_used(token.type)){
                 ss << token_indices[token.sv()] << ',';
             }
-
             if(i>0 && tokens[i-1].line == token.line) ss << ',';
             else ss << token.line << ',';
-
             if(i>0 && tokens[i-1].brackets_level == token.brackets_level) ss << ',';
             else ss << token.brackets_level << ',';
-
             // visit token value
             std::visit([&ss](auto&& arg){
                 using T = std::decay_t<decltype(arg)>;
@@ -1306,13 +1303,13 @@ __EAT_DOTS_END:
                 t.length = 0;
             }
 
-            if(deserializer.peek_char() == ','){
+            if(deserializer.match_char(',')){
                 t.line = tokens.back().line;
             }else{
                 t.line = (int)deserializer.read_uint(',');
             }
 
-            if(deserializer.peek_char() == ','){
+            if(deserializer.match_char(',')){
                 t.brackets_level = tokens.back().brackets_level;
             }else{
                 t.brackets_level = (int)deserializer.read_uint(',');

+ 1 - 1
src/io.cpp

@@ -176,7 +176,7 @@ void add_module_os(VM* vm){
         std::filesystem::directory_iterator di;
         try{
             di = std::filesystem::directory_iterator(path);
-        }catch(std::filesystem::filesystem_error& e){
+        }catch(std::filesystem::filesystem_error&){
             vm->IOError(path.string());
         }
         List ret;