Fixed fallthrough problem in lexer
git-svn-id: http://picoc.googlecode.com/svn/trunk@56 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
parent
0547bcaff0
commit
44117cde04
48
lex.c
48
lex.c
|
@ -243,30 +243,30 @@ enum LexToken LexScanGetToken(struct LexState *Lexer, struct Value **Value)
|
||||||
Lexer->Pos++;
|
Lexer->Pos++;
|
||||||
switch (ThisChar)
|
switch (ThisChar)
|
||||||
{
|
{
|
||||||
case '"': GotToken = LexGetStringConstant(Lexer, *Value);
|
case '"': GotToken = LexGetStringConstant(Lexer, *Value); break;
|
||||||
case '\'': GotToken = LexGetCharacterConstant(Lexer, *Value);
|
case '\'': GotToken = LexGetCharacterConstant(Lexer, *Value); break;
|
||||||
case '(': GotToken = TokenOpenBracket;
|
case '(': GotToken = TokenOpenBracket; break;
|
||||||
case ')': GotToken = TokenCloseBracket;
|
case ')': GotToken = TokenCloseBracket; break;
|
||||||
case '=': NEXTIS('=', TokenEquality, TokenAssign);
|
case '=': NEXTIS('=', TokenEquality, TokenAssign); break;
|
||||||
case '+': NEXTIS3('=', TokenAddAssign, '+', TokenIncrement, TokenPlus);
|
case '+': NEXTIS3('=', TokenAddAssign, '+', TokenIncrement, TokenPlus); break;
|
||||||
case '-': NEXTIS4('=', TokenSubtractAssign, '>', TokenArrow, '-', TokenDecrement, TokenMinus);
|
case '-': NEXTIS4('=', TokenSubtractAssign, '>', TokenArrow, '-', TokenDecrement, TokenMinus); break;
|
||||||
case '*': GotToken = TokenAsterisk;
|
case '*': GotToken = TokenAsterisk; break;
|
||||||
case '/': if (NextChar == '/' || NextChar == '*') LexSkipComment(Lexer, NextChar); else GotToken = TokenSlash;
|
case '/': if (NextChar == '/' || NextChar == '*') LexSkipComment(Lexer, NextChar); else GotToken = TokenSlash; break;
|
||||||
case '<': NEXTIS('=', TokenLessEqual, TokenLessThan);
|
case '<': NEXTIS('=', TokenLessEqual, TokenLessThan); break;
|
||||||
case '>': NEXTIS('=', TokenGreaterEqual, TokenGreaterThan);
|
case '>': NEXTIS('=', TokenGreaterEqual, TokenGreaterThan); break;
|
||||||
case ';': GotToken = TokenSemicolon;
|
case ';': GotToken = TokenSemicolon; break;
|
||||||
case '&': NEXTIS('&', TokenLogicalAnd, TokenAmpersand);
|
case '&': NEXTIS('&', TokenLogicalAnd, TokenAmpersand); break;
|
||||||
case '|': NEXTIS('|', TokenLogicalOr, TokenArithmeticOr);
|
case '|': NEXTIS('|', TokenLogicalOr, TokenArithmeticOr); break;
|
||||||
case '{': GotToken = TokenLeftBrace;
|
case '{': GotToken = TokenLeftBrace; break;
|
||||||
case '}': GotToken = TokenRightBrace;
|
case '}': GotToken = TokenRightBrace; break;
|
||||||
case '[': GotToken = TokenLeftSquareBracket;
|
case '[': GotToken = TokenLeftSquareBracket; break;
|
||||||
case ']': GotToken = TokenRightSquareBracket;
|
case ']': GotToken = TokenRightSquareBracket; break;
|
||||||
case '!': GotToken = TokenUnaryNot;
|
case '!': GotToken = TokenUnaryNot; break;
|
||||||
case '^': GotToken = TokenArithmeticExor;
|
case '^': GotToken = TokenArithmeticExor; break;
|
||||||
case '~': GotToken = TokenUnaryExor;
|
case '~': GotToken = TokenUnaryExor; break;
|
||||||
case ',': GotToken = TokenComma;
|
case ',': GotToken = TokenComma; break;
|
||||||
case '.': GotToken = TokenDot;
|
case '.': GotToken = TokenDot; break;
|
||||||
default: LexFail(Lexer, "illegal character '%c'", ThisChar);
|
default: LexFail(Lexer, "illegal character '%c'", ThisChar); break;
|
||||||
}
|
}
|
||||||
} while (GotToken == TokenNone);
|
} while (GotToken == TokenNone);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue