mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 19:40:18 +00:00
multiline support
This commit is contained in:
parent
ef407a8326
commit
42f3742fe7
@ -471,9 +471,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void exprGrouping() {
|
void exprGrouping() {
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
EXPR_TUPLE();
|
EXPR_TUPLE();
|
||||||
matchNewLines();
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
consume(TK(")"));
|
consume(TK(")"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,6 +525,7 @@ __LISTCOMP:
|
|||||||
emitCode(OP_JUMP_ABSOLUTE, loop.start); keepOpcodeLine();
|
emitCode(OP_JUMP_ABSOLUTE, loop.start); keepOpcodeLine();
|
||||||
patchJump(patch);
|
patchJump(patch);
|
||||||
exitLoop();
|
exitLoop();
|
||||||
|
matchNewLines(mode()==SINGLE_MODE);
|
||||||
consume(TK("]"));
|
consume(TK("]"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,6 +106,7 @@ struct Parser {
|
|||||||
|
|
||||||
int brackets_level_0 = 0;
|
int brackets_level_0 = 0;
|
||||||
int brackets_level_1 = 0;
|
int brackets_level_1 = 0;
|
||||||
|
int brackets_level_2 = 0;
|
||||||
|
|
||||||
Token nextToken(){
|
Token nextToken(){
|
||||||
if(nexts.empty()) return makeErrToken();
|
if(nexts.empty()) return makeErrToken();
|
||||||
@ -141,7 +142,7 @@ struct Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool eatIndentation(){
|
bool eatIndentation(){
|
||||||
if(brackets_level_0 > 0 || brackets_level_1 > 0) return true;
|
if(brackets_level_0 > 0 || brackets_level_1 > 0 || brackets_level_2 > 0) return true;
|
||||||
int spaces = eatSpaces();
|
int spaces = eatSpaces();
|
||||||
// https://docs.python.org/3/reference/lexical_analysis.html#indentation
|
// https://docs.python.org/3/reference/lexical_analysis.html#indentation
|
||||||
if(spaces > indents.top()){
|
if(spaces > indents.top()){
|
||||||
@ -271,6 +272,8 @@ struct Parser {
|
|||||||
case TK(")"): brackets_level_0--; break;
|
case TK(")"): brackets_level_0--; break;
|
||||||
case TK("["): brackets_level_1++; break;
|
case TK("["): brackets_level_1++; break;
|
||||||
case TK("]"): brackets_level_1--; break;
|
case TK("]"): brackets_level_1--; break;
|
||||||
|
case TK("{"): brackets_level_2++; break;
|
||||||
|
case TK("}"): brackets_level_2--; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
nexts.push( Token{
|
nexts.push( Token{
|
||||||
|
27
tests/multiline.py
Normal file
27
tests/multiline.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
a = [
|
||||||
|
1,2,3,
|
||||||
|
4,5,6
|
||||||
|
]
|
||||||
|
|
||||||
|
assert sum(a) == 21
|
||||||
|
|
||||||
|
c = [
|
||||||
|
i for i in range(10)
|
||||||
|
if i % 2 == 0
|
||||||
|
]
|
||||||
|
|
||||||
|
assert sum(c) == 20
|
||||||
|
|
||||||
|
d = (
|
||||||
|
1,2,3
|
||||||
|
)
|
||||||
|
|
||||||
|
assert sum(d) == 6
|
||||||
|
|
||||||
|
b = {
|
||||||
|
'a': 1,
|
||||||
|
'b': 2,
|
||||||
|
'c': 3
|
||||||
|
}
|
||||||
|
|
||||||
|
assert sum(b.values()) == 6
|
Loading…
x
Reference in New Issue
Block a user