10 #ifndef CPROVER_ANSI_C_ANSI_C_LANGUAGE_H
11 #define CPROVER_ANSI_C_ANSI_C_LANGUAGE_H
21 #define OPT_ANSI_C_LANGUAGE \
22 "(max-nondet-tree-depth):" \
23 "(min-null-tree-depth):"
25 #define HELP_ANSI_C_LANGUAGE \
26 " {y--max-nondet-tree-depth} {uN} \t " \
27 "limit size of nondet (e.g. input) object tree; at level {uN} pointers are " \
29 " {y--min-null-tree-depth} {uN} \t " \
30 "minimum level at which a pointer can first be NULL in a recursively " \
31 "nondet initialized struct\n" \
44 std::istream &instream,
45 const std::string &path,
46 std::ostream &outstream,
50 std::istream &instream,
51 const std::string &path,
60 const std::string &module,
62 const bool keep_file_local)
override;
66 const std::string &module,
68 const bool keep_file_local,
69 const std::set<irep_idt> &keep);
78 const std::string &module,
81 return typecheck(symbol_table, module, message_handler,
true);
105 const std::string &code,
106 const std::string &module,
113 return std::make_unique<ansi_c_languaget>();
116 std::string
id()
const override {
return "C"; }
118 std::set<std::string>
extensions()
const override;
std::unique_ptr< languaget > new_ansi_c_language()
~ansi_c_languaget() override
std::set< std::string > extensions() const override
void show_parse(std::ostream &out, message_handlert &) override
bool from_type(const typet &type, std::string &code, const namespacet &ns) override
Formats the given type in a language-specific way.
std::unique_ptr< languaget > new_language() override
void set_language_options(const optionst &options, message_handlert &) override
Set language-specific options.
bool from_expr(const exprt &expr, std::string &code, const namespacet &ns) override
Formats the given expression in a language-specific way.
bool to_expr(const std::string &code, const std::string &module, exprt &expr, const namespacet &ns, message_handlert &message_handler) override
Parses the given string into an expression.
std::string description() const override
void modules_provided(std::set< std::string > &modules) override
bool type_to_name(const typet &type, std::string &name, const namespacet &ns) override
Encodes the given type in a language-specific way.
bool typecheck(symbol_table_baset &symbol_table, const std::string &module, message_handlert &message_handler, const bool keep_file_local) override
typecheck without removing specified entries from the symbol table
bool can_keep_file_local() override
Is it possible to call three-argument typecheck() on this object?
bool preprocess(std::istream &instream, const std::string &path, std::ostream &outstream, message_handlert &message_handler) override
ANSI-C preprocessing.
bool generate_support_functions(symbol_table_baset &symbol_table, message_handlert &message_handler) override
Create language-specific support functions, such as __CPROVER_start, __CPROVER_initialize and languag...
ansi_c_parse_treet parse_tree
c_object_factory_parameterst object_factory_params
std::string id() const override
bool parse(std::istream &instream, const std::string &path, message_handlert &message_handler) override
bool typecheck(symbol_table_baset &symbol_table, const std::string &module, message_handlert &message_handler) override
Base class for all expressions.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
The symbol table base class interface.
The type of an expression, extends irept.
Abstract interface to support a programming language.
void set(const optionst &)
Assigns the parameters from given options.