aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/expr/Lexer.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/expr/Lexer.h')
-rw-r--r--include/expr/Lexer.h121
1 files changed, 0 insertions, 121 deletions
diff --git a/include/expr/Lexer.h b/include/expr/Lexer.h
deleted file mode 100644
index 14ae7f85..00000000
--- a/include/expr/Lexer.h
+++ /dev/null
@@ -1,121 +0,0 @@
-//===-- Lexer.h -------------------------------------------------*- C++ -*-===//
-//
-// The KLEE Symbolic Virtual Machine
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef KLEE_LEXER_H
-#define KLEE_LEXER_H
-
-#include <string>
-
-namespace llvm {
- class MemoryBuffer;
-}
-
-namespace klee {
-namespace expr {
- struct Token {
- enum Kind {
- At, ///< '@'
- Arrow, ///< '->'
- Colon, ///< ':'
- Comma, ///< ','
- Comment, ///< #[^\n]+
- EndOfFile, ///< <end of file>
- Equals, ///< ' = '
- Identifier, ///< [a-zA-Z_][a-zA-Z0-9._]*
- KWArray, ///< 'array'
- KWFalse, ///< 'false'
- KWQuery, ///< 'query'
- KWReserved, ///< fp[0-9]+([.].*)?, i[0-9]+
- KWSymbolic, ///< 'symbolic'
- KWTrue, ///< 'true'
- KWWidth, ///< w[0-9]+
- LBrace, ///< '{'
- LParen, ///< '('
- LSquare, ///< '['
- Number, ///< [+-]?[0-9][a-zA-Z0-9_]+
- RBrace, ///< '}'
- RParen, ///< ')'
- RSquare, ///< ']'
- Semicolon, ///< ';'
- Unknown, ///< <other>
-
- KWKindFirst=KWArray,
- KWKindLast=KWWidth
- };
-
- Kind kind; /// The token kind.
- const char *start; /// The beginning of the token string.
- unsigned length; /// The length of the token.
- unsigned line; /// The line number of the start of this token.
- unsigned column; /// The column number at the start of
- /// this token.
-
- /// getKindName - The name of this token's kind.
- const char *getKindName() const;
-
- /// getString - The string spanned by this token. This is not
- /// particularly efficient, use start and length when reasonable.
- std::string getString() const { return std::string(start, length); }
-
- /// isKeyword - True if this token is a keyword.
- bool isKeyword() const {
- return kind >= KWKindFirst && kind <= KWKindLast;
- }
-
- // dump - Dump the token to stderr.
- void dump();
-
- Token() : kind(Unknown), start(nullptr) {}
- };
-
- /// Lexer - Interface for lexing tokens from a .kquery language file.
- class Lexer {
- const char *BufferPos; /// The current lexer position.
- const char *BufferEnd; /// The buffer end position.
- unsigned LineNumber; /// The current line.
- unsigned ColumnNumber; /// The current column.
-
- /// GetNextChar - Eat a character or -1 from the stream.
- int GetNextChar();
-
- /// PeekNextChar - Return the next character without consuming it
- /// from the stream. This does not perform newline
- /// canonicalization.
- int PeekNextChar();
-
- /// SetTokenKind - Set the token kind and length (using the
- /// token's start pointer, which must have been initialized).
- Token &SetTokenKind(Token &Result, Token::Kind k);
-
- /// SetTokenKind - Set an identifiers token kind. This has the
- /// same requirements as SetTokenKind and additionally takes care
- /// of keyword recognition.
- Token &SetIdentifierTokenKind(Token &Result);
-
- void SkipToEndOfLine();
-
- /// LexNumber - Lex a number which does not have a base specifier.
- Token &LexNumber(Token &Result);
-
- /// LexIdentifier - Lex an identifier.
- Token &LexIdentifier(Token &Result);
-
- public:
- explicit Lexer(const llvm::MemoryBuffer *_buf);
- ~Lexer();
-
- /// Lex - Return the next token from the file or EOF continually
- /// when the end of the file is reached. The input argument is
- /// used as the result, for convenience.
- Token &Lex(Token &Result);
- };
-}
-}
-
-#endif /* KLEE_LEXER_H */