Added support for commas in for loop initialiser statement
This commit is contained in:
parent
7b43483f68
commit
9d2327b8be
|
@ -1,10 +1,10 @@
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 123;
|
||||||
int j = 0;
|
int j = 456;
|
||||||
int k = 0;
|
int k = 0;
|
||||||
|
|
||||||
for (i = 0; i < 2; i++, j++) {
|
for (i = 0, j = 0; i < 2; i++, j++) {
|
||||||
k += 2;
|
k += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
14
parse.c
14
parse.c
|
@ -495,8 +495,18 @@ void ParseFor(struct ParseState *Parser)
|
||||||
if (LexGetToken(Parser, NULL, true) != TokenOpenBracket)
|
if (LexGetToken(Parser, NULL, true) != TokenOpenBracket)
|
||||||
ProgramFail(Parser, "'(' expected");
|
ProgramFail(Parser, "'(' expected");
|
||||||
|
|
||||||
if (ParseStatement(Parser, true) != ParseResultOk)
|
if (LexGetToken(Parser, NULL, false) != TokenSemicolon) {
|
||||||
ProgramFail(Parser, "statement expected");
|
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);
|
ParserCopyPos(&PreConditional, Parser);
|
||||||
if (LexGetToken(Parser, NULL, false) == TokenSemicolon)
|
if (LexGetToken(Parser, NULL, false) == TokenSemicolon)
|
||||||
|
|
Loading…
Reference in a new issue