Fixed a problem with do..while() and breack/continue.
git-svn-id: http://picoc.googlecode.com/svn/trunk@510 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
parent
b4f882354d
commit
4da8196e9d
5
parse.c
5
parse.c
|
@ -547,6 +547,7 @@ enum ParseResult ParseStatement(struct ParseState *Parser, int CheckTrailingSemi
|
|||
case TokenDo:
|
||||
{
|
||||
struct ParseState PreStatement;
|
||||
enum RunMode PreMode = Parser->Mode;
|
||||
ParserCopyPos(&PreStatement, Parser);
|
||||
do
|
||||
{
|
||||
|
@ -555,7 +556,7 @@ enum ParseResult ParseStatement(struct ParseState *Parser, int CheckTrailingSemi
|
|||
ProgramFail(Parser, "statement expected");
|
||||
|
||||
if (Parser->Mode == RunModeContinue)
|
||||
Parser->Mode = RunModeRun;
|
||||
Parser->Mode = PreMode;
|
||||
|
||||
if (LexGetToken(Parser, NULL, TRUE) != TokenWhile)
|
||||
ProgramFail(Parser, "'while' expected");
|
||||
|
@ -570,7 +571,7 @@ enum ParseResult ParseStatement(struct ParseState *Parser, int CheckTrailingSemi
|
|||
} while (Condition && Parser->Mode == RunModeRun);
|
||||
|
||||
if (Parser->Mode == RunModeBreak)
|
||||
Parser->Mode = RunModeRun;
|
||||
Parser->Mode = PreMode;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in a new issue