mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-22 04:20:17 +00:00
Update compiler.h
This commit is contained in:
parent
cdc88afa23
commit
65dfb4e035
@ -349,12 +349,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool matchEndStatement() {
|
bool matchEndStatement() {
|
||||||
if (match(TK(";"))) {
|
if (match(TK(";"))) { matchNewLines(); return true; }
|
||||||
matchNewLines();
|
if (matchNewLines() || peek()==TK("@eof")) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (matchNewLines() || peek() == TK("@eof"))
|
|
||||||
return true;
|
|
||||||
if (peek() == TK("@dedent")) return true;
|
if (peek() == TK("@dedent")) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -420,7 +416,6 @@ public:
|
|||||||
EXPR_TUPLE();
|
EXPR_TUPLE();
|
||||||
emit(OP_STORE_REF);
|
emit(OP_STORE_REF);
|
||||||
}else{ // a += (expr) -> a = a + (expr)
|
}else{ // a += (expr) -> a = a + (expr)
|
||||||
// TODO: optimization is needed for inplace operators
|
|
||||||
emit(OP_DUP_TOP);
|
emit(OP_DUP_TOP);
|
||||||
EXPR();
|
EXPR();
|
||||||
switch (op) {
|
switch (op) {
|
||||||
@ -429,7 +424,6 @@ public:
|
|||||||
case TK("*="): emit(OP_BINARY_OP, 2); break;
|
case TK("*="): emit(OP_BINARY_OP, 2); break;
|
||||||
case TK("/="): emit(OP_BINARY_OP, 3); break;
|
case TK("/="): emit(OP_BINARY_OP, 3); break;
|
||||||
case TK("//="): emit(OP_BINARY_OP, 4); break;
|
case TK("//="): emit(OP_BINARY_OP, 4); break;
|
||||||
|
|
||||||
case TK("%="): emit(OP_BINARY_OP, 5); break;
|
case TK("%="): emit(OP_BINARY_OP, 5); break;
|
||||||
case TK("&="): emit(OP_BITWISE_OP, 2); break;
|
case TK("&="): emit(OP_BITWISE_OP, 2); break;
|
||||||
case TK("|="): emit(OP_BITWISE_OP, 3); break;
|
case TK("|="): emit(OP_BITWISE_OP, 3); break;
|
||||||
@ -506,9 +500,7 @@ public:
|
|||||||
|
|
||||||
void exprUnaryOp() {
|
void exprUnaryOp() {
|
||||||
_TokenType op = parser->prev.type;
|
_TokenType op = parser->prev.type;
|
||||||
matchNewLines();
|
|
||||||
parsePrecedence((Precedence)(PREC_UNARY + 1));
|
parsePrecedence((Precedence)(PREC_UNARY + 1));
|
||||||
|
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case TK("-"): emit(OP_UNARY_NEGATIVE); break;
|
case TK("-"): emit(OP_UNARY_NEGATIVE); break;
|
||||||
case TK("not"): emit(OP_UNARY_NOT); break;
|
case TK("not"): emit(OP_UNARY_NOT); break;
|
||||||
@ -597,7 +589,6 @@ __LISTCOMP:
|
|||||||
size++;
|
size++;
|
||||||
matchNewLines(mode()==SINGLE_MODE);
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
} while (match(TK(",")));
|
} while (match(TK(",")));
|
||||||
matchNewLines();
|
|
||||||
consume(TK("}"));
|
consume(TK("}"));
|
||||||
|
|
||||||
if(size == 0 || parsing_dict) emit(OP_BUILD_MAP, size);
|
if(size == 0 || parsing_dict) emit(OP_BUILD_MAP, size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user