12#ifndef CPROVER_CPP_CPP_LANGUAGE_H
13#define CPROVER_CPP_CPP_LANGUAGE_H
35 const std::string &path,
40 const std::string &path)
override;
79 const std::string &code,
87 std::string
id()
const override {
return "cpp"; }
89 std::set<std::string>
extensions()
const override;
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
bool from_type(const typet &type, std::string &code, const namespacet &ns) override
Formats the given type in a language-specific way.
void set_language_options(const optionst &options) override
Set language-specific options.
bool type_to_name(const typet &type, std::string &name, const namespacet &ns) override
Encodes the given type in a language-specific way.
std::string id() const override
c_object_factory_parameterst object_factory_params
bool to_expr(const std::string &code, const std::string &module, exprt &expr, const namespacet &ns) override
Parses the given string into an expression.
std::string description() const override
std::set< std::string > extensions() const override
std::unique_ptr< languaget > new_language() override
std::string main_symbol()
~cpp_languaget() override
bool merge_symbol_table(symbol_tablet &dest, symbol_tablet &src, const std::string &module, class replace_symbolt &replace_symbol) const
bool generate_support_functions(symbol_tablet &symbol_table) override
Create language-specific support functions, such as __CPROVER_start, __CPROVER_initialize and languag...
bool from_expr(const exprt &expr, std::string &code, const namespacet &ns) override
Formats the given expression in a language-specific way.
bool preprocess(std::istream &instream, const std::string &path, std::ostream &outstream) override
ANSI-C preprocessing.
bool parse(std::istream &instream, const std::string &path) override
void modules_provided(std::set< std::string > &modules) override
bool typecheck(symbol_tablet &symbol_table, const std::string &module) override
cpp_parse_treet cpp_parse_tree
void show_parse(std::ostream &out) override
Base class for all expressions.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Replace expression or type symbols by an expression or type, respectively.
The type of an expression, extends irept.
std::unique_ptr< languaget > new_cpp_language()
Abstract interface to support a programming language.
void set(const optionst &)
Assigns the parameters from given options.