mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30: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 _body_start = getCode()->co_code.size();
|
||||||
int ARGC = 0;
|
int ARGC = 0;
|
||||||
do {
|
do {
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
if (peek() == TK("]")) break;
|
if (peek() == TK("]")) break;
|
||||||
EXPR(); ARGC++;
|
EXPR(); ARGC++;
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
if(ARGC == 1 && match(TK("for"))) goto __LISTCOMP;
|
if(ARGC == 1 && match(TK("for"))) goto __LISTCOMP;
|
||||||
} while (match(TK(",")));
|
} while (match(TK(",")));
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
consume(TK("]"));
|
consume(TK("]"));
|
||||||
emitCode(OP_BUILD_LIST, ARGC);
|
emitCode(OP_BUILD_LIST, ARGC);
|
||||||
return;
|
return;
|
||||||
@ -499,7 +499,7 @@ __LISTCOMP:
|
|||||||
getCode()->co_code[_patch].arg = _body_end;
|
getCode()->co_code[_patch].arg = _body_end;
|
||||||
emitCode(OP_BUILD_LIST, 0);
|
emitCode(OP_BUILD_LIST, 0);
|
||||||
EXPR_FOR_VARS();consume(TK("in"));EXPR_TUPLE();
|
EXPR_FOR_VARS();consume(TK("in"));EXPR_TUPLE();
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
|
|
||||||
int _skipPatch = emitCode(OP_JUMP_ABSOLUTE);
|
int _skipPatch = emitCode(OP_JUMP_ABSOLUTE);
|
||||||
int _cond_start = getCode()->co_code.size();
|
int _cond_start = getCode()->co_code.size();
|
||||||
@ -531,11 +531,11 @@ __LISTCOMP:
|
|||||||
void exprMap() {
|
void exprMap() {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
do {
|
do {
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
if (peek() == TK("}")) break;
|
if (peek() == TK("}")) break;
|
||||||
EXPR();consume(TK(":"));EXPR();
|
EXPR();consume(TK(":"));EXPR();
|
||||||
size++;
|
size++;
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
} while (match(TK(",")));
|
} while (match(TK(",")));
|
||||||
matchNewLines();
|
matchNewLines();
|
||||||
consume(TK("}"));
|
consume(TK("}"));
|
||||||
|
@ -10,7 +10,7 @@ const _Int _Int_MAX_NEG = -9223372036854775807LL;
|
|||||||
const _Float _FLOAT_INF_POS = INFINITY;
|
const _Float _FLOAT_INF_POS = INFINITY;
|
||||||
const _Float _FLOAT_INF_NEG = -INFINITY;
|
const _Float _FLOAT_INF_NEG = -INFINITY;
|
||||||
|
|
||||||
#define PK_VERSION "0.3.3"
|
#define PK_VERSION "0.3.4"
|
||||||
|
|
||||||
class CodeObject;
|
class CodeObject;
|
||||||
class BasePointer;
|
class BasePointer;
|
||||||
|
@ -13,7 +13,6 @@ class REPL: public PkExportedResource {
|
|||||||
protected:
|
protected:
|
||||||
int need_more_lines = 0;
|
int need_more_lines = 0;
|
||||||
std::string buffer;
|
std::string buffer;
|
||||||
CompileMode mode;
|
|
||||||
VM* vm;
|
VM* vm;
|
||||||
bool exited = false;
|
bool exited = false;
|
||||||
|
|
||||||
@ -34,7 +33,6 @@ public:
|
|||||||
|
|
||||||
InputResult input(std::string line){
|
InputResult input(std::string line){
|
||||||
if(exited) return EXEC_SKIPPED;
|
if(exited) return EXEC_SKIPPED;
|
||||||
mode = SINGLE_MODE;
|
|
||||||
if(need_more_lines){
|
if(need_more_lines){
|
||||||
buffer += line;
|
buffer += line;
|
||||||
buffer += '\n';
|
buffer += '\n';
|
||||||
@ -45,7 +43,6 @@ public:
|
|||||||
}
|
}
|
||||||
need_more_lines = 0;
|
need_more_lines = 0;
|
||||||
line = buffer;
|
line = buffer;
|
||||||
mode = EXEC_MODE; // tmp set to EXEC_MODE
|
|
||||||
buffer.clear();
|
buffer.clear();
|
||||||
}else{
|
}else{
|
||||||
__NOT_ENOUGH_LINES:
|
__NOT_ENOUGH_LINES:
|
||||||
@ -57,7 +54,7 @@ __NOT_ENOUGH_LINES:
|
|||||||
}
|
}
|
||||||
|
|
||||||
try{
|
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;
|
if(code == nullptr) return EXEC_SKIPPED;
|
||||||
vm->execAsync(code);
|
vm->execAsync(code);
|
||||||
return EXEC_DONE;
|
return EXEC_DONE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user