blueloveTH пре 3 година
родитељ
комит
ef407a8326
3 измењених фајлова са 8 додато и 11 уклоњено
  1. 6 6
      src/compiler.h
  2. 1 1
      src/obj.h
  3. 1 4
      src/repl.h

+ 6 - 6
src/compiler.h

@@ -482,13 +482,13 @@ public:
         int _body_start = getCode()->co_code.size();
         int ARGC = 0;
         do {
-            matchNewLines();
+            matchNewLines(mode()==SINGLE_MODE);
             if (peek() == TK("]")) break;
             EXPR(); ARGC++;
-            matchNewLines();
+            matchNewLines(mode()==SINGLE_MODE);
             if(ARGC == 1 && match(TK("for"))) goto __LISTCOMP;
         } while (match(TK(",")));
-        matchNewLines();
+        matchNewLines(mode()==SINGLE_MODE);
         consume(TK("]"));
         emitCode(OP_BUILD_LIST, ARGC);
         return;
@@ -499,7 +499,7 @@ __LISTCOMP:
         getCode()->co_code[_patch].arg = _body_end;
         emitCode(OP_BUILD_LIST, 0);
         EXPR_FOR_VARS();consume(TK("in"));EXPR_TUPLE();
-        matchNewLines();
+        matchNewLines(mode()==SINGLE_MODE);
         
         int _skipPatch = emitCode(OP_JUMP_ABSOLUTE);
         int _cond_start = getCode()->co_code.size();
@@ -531,11 +531,11 @@ __LISTCOMP:
     void exprMap() {
         int size = 0;
         do {
-            matchNewLines();
+            matchNewLines(mode()==SINGLE_MODE);
             if (peek() == TK("}")) break;
             EXPR();consume(TK(":"));EXPR();
             size++;
-            matchNewLines();
+            matchNewLines(mode()==SINGLE_MODE);
         } while (match(TK(",")));
         matchNewLines();
         consume(TK("}"));

+ 1 - 1
src/obj.h

@@ -10,7 +10,7 @@ const _Int _Int_MAX_NEG = -9223372036854775807LL;
 const _Float _FLOAT_INF_POS = INFINITY;
 const _Float _FLOAT_INF_NEG = -INFINITY;
 
-#define PK_VERSION "0.3.3"
+#define PK_VERSION "0.3.4"
 
 class CodeObject;
 class BasePointer;

+ 1 - 4
src/repl.h

@@ -13,7 +13,6 @@ class REPL: public PkExportedResource {
 protected:
     int need_more_lines = 0;
     std::string buffer;
-    CompileMode mode;
     VM* vm;
     bool exited = false;
 
@@ -34,7 +33,6 @@ public:
 
     InputResult input(std::string line){
         if(exited) return EXEC_SKIPPED;
-        mode = SINGLE_MODE;
         if(need_more_lines){
             buffer += line;
             buffer += '\n';
@@ -45,7 +43,6 @@ public:
                 }
                 need_more_lines = 0;
                 line = buffer;
-                mode = EXEC_MODE;       // tmp set to EXEC_MODE
                 buffer.clear();
             }else{
 __NOT_ENOUGH_LINES:
@@ -57,7 +54,7 @@ __NOT_ENOUGH_LINES:
         }
 
         try{
-            _Code code = compile(vm, line.c_str(), "<stdin>", mode);
+            _Code code = compile(vm, line.c_str(), "<stdin>", SINGLE_MODE);
             if(code == nullptr) return EXEC_SKIPPED;
             vm->execAsync(code);
             return EXEC_DONE;