diff options
Diffstat (limited to 'src/parser/parser_state.h')
-rw-r--r-- | src/parser/parser_state.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/parser/parser_state.h b/src/parser/parser_state.h new file mode 100644 index 000000000..4444925e2 --- /dev/null +++ b/src/parser/parser_state.h @@ -0,0 +1,89 @@ +/********************* -*- C++ -*- */ +/** parser_state.h + ** This file is part of the CVC4 prototype. + ** + ** Extra state of the parser shared by the lexer and parser. + ** + ** The Analysis of Computer Systems Group (ACSys) + ** Courant Institute of Mathematical Sciences + ** New York University + **/ + +#ifndef __CVC4_PARSER_STATE_H +#define __CVC4_PARSER_STATE_H + +#include <iostream> +#include <sstream> +#include "expr.h" +#include "exception.h" + +namespace CVC4 { + +class ValidityChecker; + +class ParserState { +private: + // Counter for uniqueID of bound variables + int d_uid; + // The main prompt when running interactive + std::string prompt1; + // The interactive prompt in the middle of a multi-line command + std::string prompt2; + // The currently used prompt + std::string prompt; +public: + ValidityChecker* vc; + std::istream* is; + // The current input line + int lineNum; + // File name + std::string fileName; + // The last parsed Expr + Expr expr; + // Whether we are done or not + bool done; + // Whether we are running interactive + bool interactive; + // Whether arrays are enabled for smt-lib format + bool arrFlag; + // Whether bit-vectors are enabled for smt-lib format + bool bvFlag; + // Size of bit-vectors for smt-lib format + int bvSize; + // Did we encounter a formula query (smtlib) + bool queryParsed; + // Default constructor + ParserState() : d_uid(0), + prompt1("CVC> "), + prompt2("- "), + prompt("CVC> "), + vc(0), + is(0), + lineNum(1), + fileName(), + expr(Expr::null()), + done(false), + interactive(false), + arrFlag(false), + bvFlag(false), + bvSize(0), + queryParsed(false) { } + // Parser error handling (implemented in parser.cpp) + int error(const std::string& s); + // Get the next uniqueID as a string + std::string uniqueID() { + std::ostringstream ss; + ss << d_uid++; + return ss.str(); + } + // Get the current prompt + std::string getPrompt() { return prompt; } + // Set the prompt to the main one + void setPrompt1() { prompt = prompt1; } + // Set the prompt to the secondary one + void setPrompt2() { prompt = prompt2; } +}; + +} /* CVC4 namespace */ + +#endif /* __CVC4_PARSER_STATE_H */ |