CBMC
ansi_c_typecheck.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: ANSI-C Language Type Checking
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_ANSI_C_ANSI_C_TYPECHECK_H
13 #define CPROVER_ANSI_C_ANSI_C_TYPECHECK_H
14 
15 #include "c_typecheck_base.h"
16 
17 class ansi_c_parse_treet;
18 
19 bool ansi_c_typecheck(
20  ansi_c_parse_treet &parse_tree,
21  symbol_table_baset &symbol_table,
22  const std::string &module,
23  message_handlert &message_handler);
24 
25 bool ansi_c_typecheck(
26  exprt &expr,
27  message_handlert &message_handler,
28  const namespacet &ns);
29 
31 {
32 public:
34  ansi_c_parse_treet &_parse_tree,
35  symbol_table_baset &_symbol_table,
36  const std::string &_module,
37  message_handlert &_message_handler)
38  : c_typecheck_baset(_symbol_table, _module, _message_handler),
39  parse_tree(_parse_tree)
40  {
41  }
42 
44  ansi_c_parse_treet &_parse_tree,
45  symbol_table_baset &_symbol_table1,
46  const symbol_table_baset &_symbol_table2,
47  const std::string &_module,
48  message_handlert &_message_handler)
50  _symbol_table1,
51  _symbol_table2,
52  _module,
53  _message_handler),
54  parse_tree(_parse_tree)
55  {
56  }
57 
58  virtual ~ansi_c_typecheckt() { }
59 
60  virtual void typecheck();
61 
62 protected:
64 };
65 
66 #endif // CPROVER_ANSI_C_ANSI_C_TYPECHECK_H
bool ansi_c_typecheck(ansi_c_parse_treet &parse_tree, symbol_table_baset &symbol_table, const std::string &module, message_handlert &message_handler)
ANSI-C Language Type Checking.
ansi_c_parse_treet & parse_tree
ansi_c_typecheckt(ansi_c_parse_treet &_parse_tree, symbol_table_baset &_symbol_table1, const symbol_table_baset &_symbol_table2, const std::string &_module, message_handlert &_message_handler)
virtual ~ansi_c_typecheckt()
virtual void typecheck()
ansi_c_typecheckt(ansi_c_parse_treet &_parse_tree, symbol_table_baset &_symbol_table, const std::string &_module, message_handlert &_message_handler)
Base class for all expressions.
Definition: expr.h:56
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:94
The symbol table base class interface.