about summary refs log tree commit diff homepage
path: root/include/expr
diff options
context:
space:
mode:
Diffstat (limited to 'include/expr')
-rw-r--r--include/expr/Lexer.h121
-rw-r--r--include/expr/Parser.h237
2 files changed, 0 insertions, 358 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 */
diff --git a/include/expr/Parser.h b/include/expr/Parser.h
deleted file mode 100644
index 6a34b8d0..00000000
--- a/include/expr/Parser.h
+++ /dev/null
@@ -1,237 +0,0 @@
-//===-- Parser.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_PARSER_H
-#define KLEE_PARSER_H
-
-#include "klee/Expr.h"
-
-#include <vector>
-#include <string>
-
-namespace llvm {
-  class MemoryBuffer;
-}
-
-namespace klee {
-  class ExprBuilder;
-
-namespace expr {
-  // These are the language types we manipulate.
-  typedef ref<Expr> ExprHandle;
-  typedef UpdateList VersionHandle;
-  
-  /// Identifier - Wrapper for a uniqued string.
-  struct Identifier {
-    const std::string Name;
-
-  public:
-    Identifier(const std::string _Name) : Name(_Name) {}
-  };
-
-  // FIXME: Do we have a use for tracking source locations?
-
-  /// Decl - Base class for top level declarations.
-  class Decl {
-  public:
-    enum DeclKind {
-      ArrayDeclKind,
-      ExprVarDeclKind,
-      VersionVarDeclKind,
-      QueryCommandDeclKind,
-      
-      DeclKindLast = QueryCommandDeclKind,
-      VarDeclKindFirst = ExprVarDeclKind,
-      VarDeclKindLast = VersionVarDeclKind,
-      CommandDeclKindFirst = QueryCommandDeclKind,
-      CommandDeclKindLast = QueryCommandDeclKind
-    };
-
-  private:
-    DeclKind Kind;
-
-  public:
-    Decl(DeclKind _Kind);
-    virtual ~Decl() {}
-
-    /// getKind - Get the decl kind.
-    DeclKind getKind() const { return Kind; }
-
-    /// dump - Dump the AST node to stderr.
-    virtual void dump() = 0;
-
-    static bool classof(const Decl *) { return true; }
-  };
-
-  /// ArrayDecl - Array declarations.
-  ///
-  /// For example:
-  ///   array obj[] : w32 -> w8 = symbolic
-  ///   array obj[32] : w32 -> w8 = [ ... ]
-  class ArrayDecl : public Decl {
-  public:
-    /// Name - The name of this array.
-    const Identifier *Name;
-
-    /// Domain - The width of indices.
-    const unsigned Domain;
-
-    /// Range - The width of array contents.
-    const unsigned Range;
-
-    /// Root - The root array object defined by this decl.
-    const Array *Root;
-
-  public:
-    ArrayDecl(const Identifier *_Name, uint64_t _Size, 
-              unsigned _Domain, unsigned _Range,
-              const Array *_Root)
-      : Decl(ArrayDeclKind), Name(_Name), 
-        Domain(_Domain), Range(_Range), 
-        Root(_Root) {
-    }
-
-    virtual void dump();
-
-    static bool classof(const Decl *D) {
-      return D->getKind() == Decl::ArrayDeclKind;
-    }
-    static bool classof(const ArrayDecl *) { return true; }
-  };
-
-  /// VarDecl - Variable declarations, used to associate names to
-  /// expressions or array versions outside of expressions.
-  /// 
-  /// For example:
-  // FIXME: What syntax are we going to use for this? We need it.
-  class VarDecl : public Decl {
-  public:
-    const Identifier *Name;    
-
-    static bool classof(const Decl *D) {
-      return (Decl::VarDeclKindFirst <= D->getKind() &&
-              D->getKind() <= Decl::VarDeclKindLast);
-    }
-    static bool classof(const VarDecl *) { return true; }
-  };
-
-  /// ExprVarDecl - Expression variable declarations.
-  class ExprVarDecl : public VarDecl {
-  public:
-    ExprHandle Value;
-
-    static bool classof(const Decl *D) {
-      return D->getKind() == Decl::ExprVarDeclKind;
-    }
-    static bool classof(const ExprVarDecl *) { return true; }
-  };
-
-  /// VersionVarDecl - Array version variable declarations.
-  class VersionVarDecl : public VarDecl {
-  public:
-    VersionHandle Value;
-
-    static bool classof(const Decl *D) {
-      return D->getKind() == Decl::VersionVarDeclKind;
-    }
-    static bool classof(const VersionVarDecl *) { return true; }
-  };
-
-  /// CommandDecl - Base class for language commands.
-  class CommandDecl : public Decl {
-  public:
-    CommandDecl(DeclKind _Kind) : Decl(_Kind) {}
-
-    static bool classof(const Decl *D) {
-      return (Decl::CommandDeclKindFirst <= D->getKind() &&
-              D->getKind() <= Decl::CommandDeclKindLast);
-    }
-    static bool classof(const CommandDecl *) { return true; }
-  };
-
-  /// QueryCommand - Query commands.
-  ///
-  /// (query [ ... constraints ... ] expression)
-  /// (query [ ... constraints ... ] expression values)
-  /// (query [ ... constraints ... ] expression values objects)
-  class QueryCommand : public CommandDecl {
-  public:
-    // FIXME: One issue with STP... should we require the FE to
-    // guarantee that these are consistent? That is a cornerstone of
-    // being able to do independence. We may want this as a flag, if
-    // we are to interface with things like SMT.
-
-    /// Constraints - The list of constraints to assume for this
-    /// expression.
-    const std::vector<ExprHandle> Constraints;
-    
-    /// Query - The expression being queried.
-    ExprHandle Query;
-
-    /// Values - The expressions for which counterexamples should be
-    /// given if the query is invalid.
-    const std::vector<ExprHandle> Values;
-
-    /// Objects - Symbolic arrays whose initial contents should be
-    /// given if the query is invalid.
-    const std::vector<const Array*> Objects;
-
-  public:
-    QueryCommand(const std::vector<ExprHandle> &_Constraints,
-                 ExprHandle _Query,
-                 const std::vector<ExprHandle> &_Values,
-                 const std::vector<const Array*> &_Objects
-                 )
-      : CommandDecl(QueryCommandDeclKind),
-        Constraints(_Constraints),
-        Query(_Query),
-        Values(_Values),
-        Objects(_Objects) {}
-
-    virtual void dump();
-
-    static bool classof(const Decl *D) {
-      return D->getKind() == QueryCommandDeclKind;
-    }
-    static bool classof(const QueryCommand *) { return true; }
-  };
-  
-  /// Parser - Public interface for parsing a .kquery language file.
-  class Parser {
-  protected:
-    Parser();
-  public:
-    virtual ~Parser();
-
-    /// SetMaxErrors - Suppress anything beyond the first N errors.
-    virtual void SetMaxErrors(unsigned N) = 0;
-    
-    /// GetNumErrors - Return the number of encountered errors.
-    virtual unsigned GetNumErrors() const = 0;
-
-    /// ParseTopLevelDecl - Parse and return a top level declaration,
-    /// which the caller assumes ownership of.
-    ///
-    /// \return NULL indicates the end of the file has been reached.
-    virtual Decl *ParseTopLevelDecl() = 0;
-
-    /// CreateParser - Create a parser implementation for the given
-    /// MemoryBuffer.
-    ///
-    /// \arg Name - The name to use in diagnostic messages.
-    /// \arg MB - The input data.
-    /// \arg Builder - The expression builder to use for constructing
-    /// expressions.
-    static Parser *Create(const std::string Name, const llvm::MemoryBuffer *MB,
-                          ExprBuilder *Builder, bool ClearArrayAfterQuery);
-  };
-}
-}
-
-#endif /* KLEE_PARSER_H */