mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
multiline support
This commit is contained in:
parent
ef407a8326
commit
42f3742fe7
@ -471,9 +471,9 @@ public:
|
||||
}
|
||||
|
||||
void exprGrouping() {
|
||||
matchNewLines();
|
||||
matchNewLines(mode()==SINGLE_MODE);
|
||||
EXPR_TUPLE();
|
||||
matchNewLines();
|
||||
matchNewLines(mode()==SINGLE_MODE);
|
||||
consume(TK(")"));
|
||||
}
|
||||
|
||||
@ -525,6 +525,7 @@ __LISTCOMP:
|
||||
emitCode(OP_JUMP_ABSOLUTE, loop.start); keepOpcodeLine();
|
||||
patchJump(patch);
|
||||
exitLoop();
|
||||
matchNewLines(mode()==SINGLE_MODE);
|
||||
consume(TK("]"));
|
||||
}
|
||||
|
||||
|
@ -106,6 +106,7 @@ struct Parser {
|
||||
|
||||
int brackets_level_0 = 0;
|
||||
int brackets_level_1 = 0;
|
||||
int brackets_level_2 = 0;
|
||||
|
||||
Token nextToken(){
|
||||
if(nexts.empty()) return makeErrToken();
|
||||
@ -141,7 +142,7 @@ struct Parser {
|
||||
}
|
||||
|
||||
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();
|
||||
// https://docs.python.org/3/reference/lexical_analysis.html#indentation
|
||||
if(spaces > indents.top()){
|
||||
@ -271,6 +272,8 @@ struct Parser {
|
||||
case TK(")"): brackets_level_0--; 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{
|
||||
|
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