Added support for commas in for loop update statement
This commit is contained in:
parent
d04337125e
commit
3979f563aa
12
c-tests/loop-comma.c
Normal file
12
c-tests/loop-comma.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
int main(void)
|
||||
{
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
int k = 0;
|
||||
|
||||
for (i = 0; i < 2; i++, j++) {
|
||||
k += 2;
|
||||
}
|
||||
|
||||
return k - (j * 2);
|
||||
}
|
8
parse.c
8
parse.c
|
@ -509,6 +509,10 @@ void ParseFor(struct ParseState *Parser)
|
|||
|
||||
ParserCopyPos(&PreIncrement, Parser);
|
||||
ParseStatementMaybeRun(Parser, false, false);
|
||||
while (LexGetToken(Parser, NULL, false) == TokenComma) {
|
||||
LexGetToken(Parser, NULL, true);
|
||||
ParseStatementMaybeRun(Parser, false, false);
|
||||
}
|
||||
|
||||
if (LexGetToken(Parser, NULL, true) != TokenCloseBracket)
|
||||
ProgramFail(Parser, "')' expected");
|
||||
|
@ -525,6 +529,10 @@ void ParseFor(struct ParseState *Parser)
|
|||
while (Condition && Parser->Mode == RunModeRun) {
|
||||
ParserCopyPos(Parser, &PreIncrement);
|
||||
ParseStatement(Parser, false);
|
||||
while (LexGetToken(Parser, NULL, false) == TokenComma) {
|
||||
LexGetToken(Parser, NULL, true);
|
||||
ParseStatement(Parser, false);
|
||||
}
|
||||
|
||||
ParserCopyPos(Parser, &PreConditional);
|
||||
if (LexGetToken(Parser, NULL, false) == TokenSemicolon)
|
||||
|
|
Loading…
Reference in a new issue