/usr/include/cvc4/parser/input.h is in libcvc4-dev 1.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | /********************* */
/*! \file input.h
** \verbatim
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Paul Meng
** This file is part of the CVC4 project.
** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
**
** \brief Base for parser inputs.
**
** Base for parser inputs.
**/
#include <cvc4/cvc4parser_public.h>
#ifndef __CVC4__PARSER__INPUT_H
#define __CVC4__PARSER__INPUT_H
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <cvc4/options/language.h>
#include <cvc4/expr/expr.h>
#include <cvc4/expr/expr_manager.h>
#include <cvc4/parser/parser_exception.h>
namespace CVC4 {
class Command;
class Type;
class FunctionType;
namespace parser {
class CVC4_PUBLIC InputStreamException : public Exception {
public:
InputStreamException(const std::string& msg);
virtual ~InputStreamException() throw() { }
};
/** Wrapper around an input stream. */
class CVC4_PUBLIC InputStream {
/** The name of this input stream. */
std::string d_name;
/** Indicates whether the input file is a temporary that we should
* delete on exit. */
bool d_fileIsTemporary;
protected:
/** Initialize the input stream with a name. */
InputStream(std::string name, bool isTemporary=false) :
d_name(name),
d_fileIsTemporary(isTemporary) {
}
public:
/** Destructor. */
virtual ~InputStream() {
if( d_fileIsTemporary ) {
remove(d_name.c_str());
}
}
/** Get the name of this input stream. */
const std::string getName() const;
};/* class InputStream */
class Parser;
/**
* An input to be parsed. The static factory methods in this class (e.g.,
* <code>newFileInput</code>, <code>newStringInput</code>) create a parser
* for the given input language and attach it to an input source of the
* appropriate type.
*/
class CVC4_PUBLIC Input {
friend class Parser; // for parseError, parseCommand, parseExpr
friend class ParserBuilder;
/** The input stream. */
InputStream *d_inputStream;
/* Since we own d_inputStream and it needs to be freed, we need to prevent
* copy construction and assignment. Mark them private and do not define
* them.
*/
Input(const Input& input) CVC4_UNDEFINED;
Input& operator=(const Input& input) CVC4_UNDEFINED;
public:
/** Create an input for the given file.
*
* @param lang the input language
* @param filename the input filename
* @param useMmap true if the parser should use memory-mapped I/O (default: false)
*/
static Input* newFileInput(InputLanguage lang,
const std::string& filename,
bool useMmap = false)
throw (InputStreamException);
/** Create an input for the given stream.
*
* @param lang the input language
* @param input the input stream
* @param name the name of the stream, for use in error messages
* @param lineBuffered whether this Input should be line-buffered
* (false, the default, means that the entire Input might be read
* before being lexed and parsed)
*/
static Input* newStreamInput(InputLanguage lang,
std::istream& input,
const std::string& name,
bool lineBuffered = false)
throw (InputStreamException);
/** Create an input for the given string
*
* @param lang the input language
* @param input the input string
* @param name the name of the stream, for use in error messages
*/
static Input* newStringInput(InputLanguage lang,
const std::string& input,
const std::string& name)
throw (InputStreamException);
/** Destructor. Frees the input stream and closes the input. */
virtual ~Input();
/** Get the language that this Input is reading. */
virtual InputLanguage getLanguage() const throw() = 0;
/** Retrieve the name of the input stream */
const std::string getInputStreamName(){
return getInputStream()->getName();
}
protected:
/** Create an input.
*
* @param inputStream the input stream
*/
Input(InputStream& inputStream);
/** Retrieve the input stream for this parser. */
InputStream *getInputStream();
/** Parse a command from the input by invoking the
* implementation-specific parsing method. Returns
* <code>NULL</code> if there is no command there to parse.
*
* @throws ParserException if an error is encountered during parsing.
*/
virtual Command* parseCommand() = 0;
/**
* Issue a warning to the user, with source file, line, and column info.
*/
virtual void warning(const std::string& msg) = 0;
/**
* Throws a <code>ParserException</code> with the given message.
*/
virtual void parseError(const std::string& msg, bool eofException = false)
throw (ParserException) = 0;
/** Parse an expression from the input by invoking the
* implementation-specific parsing method. Returns a null
* <code>Expr</code> if there is no expression there to parse.
*
* @throws ParserException if an error is encountered during parsing.
*/
virtual Expr parseExpr() = 0;
/** Set the Parser object for this input. */
virtual void setParser(Parser& parser) = 0;
};/* class Input */
}/* CVC4::parser namespace */
}/* CVC4 namespace */
#endif /* __CVC4__PARSER__ANTLR_INPUT_H */
|