Fixed a parser bug with token checking

git-svn-id: http://picoc.googlecode.com/svn/trunk@83 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
zik.saleeba 2009-02-18 11:03:14 +00:00
parent fdad9f8d30
commit 2f5523f400

16
parse.c
View file

@ -590,12 +590,12 @@ int ParseStatement(struct ParseState *Parser)
break; break;
case TokenIf: case TokenIf:
if (!LexGetToken(Parser, NULL, TRUE) != TokenOpenBracket) if (LexGetToken(Parser, NULL, TRUE) != TokenOpenBracket)
ProgramFail(Parser, "'(' expected"); ProgramFail(Parser, "'(' expected");
Condition = ParseIntExpression(Parser); Condition = ParseIntExpression(Parser);
if (!LexGetToken(Parser, NULL, TRUE) != TokenCloseBracket) if (LexGetToken(Parser, NULL, TRUE) != TokenCloseBracket)
ProgramFail(Parser, "')' expected"); ProgramFail(Parser, "')' expected");
if (!ParseStatementMaybeRun(Parser, Condition)) if (!ParseStatementMaybeRun(Parser, Condition))
@ -685,18 +685,18 @@ int ParseStatement(struct ParseState *Parser)
} }
case TokenSwitch: case TokenSwitch:
if (!LexGetToken(Parser, NULL, TRUE) != TokenOpenBracket) if (LexGetToken(Parser, NULL, TRUE) != TokenOpenBracket)
ProgramFail(Parser, "'(' expected"); ProgramFail(Parser, "'(' expected");
Condition = ParseIntExpression(Parser); Condition = ParseIntExpression(Parser);
if (!LexGetToken(Parser, NULL, TRUE) != TokenCloseBracket) if (LexGetToken(Parser, NULL, TRUE) != TokenCloseBracket)
ProgramFail(Parser, "')' expected"); ProgramFail(Parser, "')' expected");
if (!LexGetToken(Parser, NULL, FALSE) != TokenLeftBrace) if (LexGetToken(Parser, NULL, FALSE) != TokenLeftBrace)
ProgramFail(Parser, "'{' expected"); ProgramFail(Parser, "'{' expected");
{ { /* new block so we can store parser state */
enum RunMode OldMode = Parser->Mode; enum RunMode OldMode = Parser->Mode;
int OldSearchLabel = Parser->SearchLabel; int OldSearchLabel = Parser->SearchLabel;
Parser->Mode = RunModeCaseSearch; Parser->Mode = RunModeCaseSearch;
@ -712,7 +712,7 @@ int ParseStatement(struct ParseState *Parser)
case TokenCase: case TokenCase:
Condition = ParseIntExpression(Parser); Condition = ParseIntExpression(Parser);
if (!LexGetToken(Parser, NULL, TRUE) != TokenColon) if (LexGetToken(Parser, NULL, TRUE) != TokenColon)
ProgramFail(Parser, "':' expected"); ProgramFail(Parser, "':' expected");
if (Parser->Mode == RunModeCaseSearch && Condition == Parser->SearchLabel) if (Parser->Mode == RunModeCaseSearch && Condition == Parser->SearchLabel)
@ -720,7 +720,7 @@ int ParseStatement(struct ParseState *Parser)
break; break;
case TokenDefault: case TokenDefault:
if (!LexGetToken(Parser, NULL, TRUE) != TokenColon) if (LexGetToken(Parser, NULL, TRUE) != TokenColon)
ProgramFail(Parser, "':' expected"); ProgramFail(Parser, "':' expected");
if (Parser->Mode == RunModeCaseSearch) if (Parser->Mode == RunModeCaseSearch)