mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
some fix
This commit is contained in:
parent
8f29dcbca7
commit
ef407a8326
@ -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("}"));
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user