Added support for commas in for loop initialiser statement

This commit is contained in:
Russell Joyce 2020-06-18 18:41:27 +01:00
parent 7b43483f68
commit 9d2327b8be
No known key found for this signature in database
GPG key ID: 3D46BD9018AF7B72
2 changed files with 15 additions and 5 deletions

View file

@ -1,10 +1,10 @@
int main(void)
{
int i = 0;
int j = 0;
int i = 123;
int j = 456;
int k = 0;
for (i = 0; i < 2; i++, j++) {
for (i = 0, j = 0; i < 2; i++, j++) {
k += 2;
}

12
parse.c
View file

@ -495,8 +495,18 @@ void ParseFor(struct ParseState *Parser)
if (LexGetToken(Parser, NULL, true) != TokenOpenBracket)
ProgramFail(Parser, "'(' expected");
if (ParseStatement(Parser, true) != ParseResultOk)
if (LexGetToken(Parser, NULL, false) != TokenSemicolon) {
if (ParseStatement(Parser, false) != ParseResultOk)
ProgramFail(Parser, "statement expected");
while (LexGetToken(Parser, NULL, false) == TokenComma) {
LexGetToken(Parser, NULL, true);
if (ParseStatement(Parser, false) != ParseResultOk)
ProgramFail(Parser, "statement expected");
}
}
if (LexGetToken(Parser, NULL, true) != TokenSemicolon)
ProgramFail(Parser, "';' expected");
ParserCopyPos(&PreConditional, Parser);
if (LexGetToken(Parser, NULL, false) == TokenSemicolon)