cprover
ansi_c_language.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_ANSI_C_ANSI_C_LANGUAGE_H
11 #define CPROVER_ANSI_C_ANSI_C_LANGUAGE_H
12 
13 #include <util/language.h>
14 
15 #include "ansi_c_parse_tree.h"
16 
18 {
19 public:
20  bool preprocess(
21  std::istream &instream,
22  const std::string &path,
23  std::ostream &outstream) override;
24 
25  bool parse(
26  std::istream &instream,
27  const std::string &path) override;
28 
29  bool typecheck(
30  symbol_tablet &symbol_table,
31  const std::string &module) override;
32 
33  bool final(
34  symbol_tablet &symbol_table) override;
35 
36  void show_parse(std::ostream &out) override;
37 
38  ~ansi_c_languaget() override;
40 
41  bool from_expr(
42  const exprt &expr,
43  std::string &code,
44  const namespacet &ns) override;
45 
46  bool from_type(
47  const typet &type,
48  std::string &code,
49  const namespacet &ns) override;
50 
51  bool type_to_name(
52  const typet &type,
53  std::string &name,
54  const namespacet &ns) override;
55 
56  bool to_expr(
57  const std::string &code,
58  const std::string &module,
59  exprt &expr,
60  const namespacet &ns) override;
61 
62  languaget *new_language() override
63  { return new ansi_c_languaget; }
64 
65  std::string id() const override { return "C"; }
66  std::string description() const override { return "ANSI-C 99"; }
67  std::set<std::string> extensions() const override;
68 
69  void modules_provided(std::set<std::string> &modules) override;
70 
71 protected:
73  std::string parse_path;
74 };
75 
77 
78 #endif // CPROVER_ANSI_C_ANSI_C_LANGUAGE_H
The type of an expression.
Definition: type.h:20
~ansi_c_languaget() override
std::string parse_path
bool typecheck(symbol_tablet &symbol_table, const std::string &module) override
ansi_c_parse_treet parse_tree
bool parse(std::istream &instream, const std::string &path) override
bool to_expr(const std::string &code, const std::string &module, exprt &expr, const namespacet &ns) override
std::string description() const override
bool preprocess(std::istream &instream, const std::string &path, std::ostream &outstream) override
ANSI-C preprocessing.
The symbol table.
Definition: symbol_table.h:52
TO_BE_DOCUMENTED.
Definition: namespace.h:62
Abstract interface to support a programming language.
languaget * new_language() override
bool type_to_name(const typet &type, std::string &name, const namespacet &ns) override
void show_parse(std::ostream &out) override
Base class for all expressions.
Definition: expr.h:46
std::string id() const override
languaget * new_ansi_c_language()
bool from_type(const typet &type, std::string &code, const namespacet &ns) override
std::set< std::string > extensions() const override
bool from_expr(const exprt &expr, std::string &code, const namespacet &ns) override
void modules_provided(std::set< std::string > &modules) override