diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-06-07 09:57:01 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-06-07 09:57:01 +0000 |
commit | 20aebfdb32657e9427c6a2567516dc8fd8843bdb (patch) | |
tree | ffa9457d29bd96f3d568fc7c77d8ea948cee2355 /lib/Expr/Lexer.cpp | |
parent | 1287ce6562613d656bb3d74af21326bf91183ffa (diff) | |
download | klee-20aebfdb32657e9427c6a2567516dc8fd8843bdb.tar.gz |
Implement array declarations.
- Printing current prints all declarations, and we allow redefinition, since the printer doesn't know what has already been printed. - Names don't print right yet, since the Array* object doesn't have the name. - Various things are unsupported. o Array domain/range must be w32/w8. o Concrete initializers for arrays are unsupported. git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@73026 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Expr/Lexer.cpp')
-rw-r--r-- | lib/Expr/Lexer.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/Expr/Lexer.cpp b/lib/Expr/Lexer.cpp index 77e25f62..d8809a53 100644 --- a/lib/Expr/Lexer.cpp +++ b/lib/Expr/Lexer.cpp @@ -34,9 +34,11 @@ const char *Token::getKindName() const { case EndOfFile: return "EndOfFile"; case Equals: return "Equals"; case Identifier: return "Identifier"; + case KWArray: return "KWArray"; case KWFalse: return "KWFalse"; case KWQuery: return "KWQuery"; case KWReserved: return "KWReserved"; + case KWSymbolic: return "KWSymbolic"; case KWTrue: return "KWTrue"; case KWWidth: return "KWWidth"; case LBrace: return "LBrace"; @@ -153,7 +155,7 @@ Token &Lexer::SetIdentifierTokenKind(Token &Result) { case 5: if (memcmp("array", Result.start, 5) == 0) - return SetTokenKind(Result, Token::KWReserved); + return SetTokenKind(Result, Token::KWArray); if (memcmp("false", Result.start, 5) == 0) return SetTokenKind(Result, Token::KWFalse); if (memcmp("query", Result.start, 5) == 0) @@ -169,6 +171,11 @@ Token &Lexer::SetIdentifierTokenKind(Token &Result) { if (memcmp("declare", Result.start, 7) == 0) return SetTokenKind(Result, Token::KWReserved); break; + + case 8: + if (memcmp("symbolic", Result.start, 8) == 0) + return SetTokenKind(Result, Token::KWSymbolic); + break; } if (isReservedKW(Result.start, Length)) |