cprover
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 #include "ansi_c_parse_tree.h"
17 
18 bool ansi_c_typecheck(
19  ansi_c_parse_treet &parse_tree,
20  symbol_tablet &symbol_table,
21  const std::string &module,
22  message_handlert &message_handler);
23 
24 bool ansi_c_typecheck(
25  exprt &expr,
26  message_handlert &message_handler,
27  const namespacet &ns);
28 
30 {
31 public:
33  ansi_c_parse_treet &_parse_tree,
34  symbol_tablet &_symbol_table,
35  const std::string &_module,
36  message_handlert &_message_handler):
37  c_typecheck_baset(_symbol_table, _module, _message_handler),
38  parse_tree(_parse_tree)
39  {
40  }
41 
43  ansi_c_parse_treet &_parse_tree,
44  symbol_tablet &_symbol_table1,
45  const symbol_tablet &_symbol_table2,
46  const std::string &_module,
47  message_handlert &_message_handler):
48  c_typecheck_baset(_symbol_table1, _symbol_table2,
49  _module, _message_handler),
50  parse_tree(_parse_tree)
51  {
52  }
53 
54  virtual ~ansi_c_typecheckt() { }
55 
56  virtual void typecheck();
57 
58 protected:
60 };
61 
62 #endif // CPROVER_ANSI_C_ANSI_C_TYPECHECK_H
c_typecheck_baset
Definition: c_typecheck_base.h:28
symbol_tablet
The symbol table.
Definition: symbol_table.h:20
ansi_c_typecheckt::ansi_c_typecheckt
ansi_c_typecheckt(ansi_c_parse_treet &_parse_tree, symbol_tablet &_symbol_table, const std::string &_module, message_handlert &_message_handler)
Definition: ansi_c_typecheck.h:32
c_typecheck_base.h
ANSI-C Language Type Checking.
ansi_c_parse_tree.h
ansi_c_typecheckt::parse_tree
ansi_c_parse_treet & parse_tree
Definition: ansi_c_typecheck.h:59
exprt
Base class for all expressions.
Definition: expr.h:53
ansi_c_typecheckt::~ansi_c_typecheckt
virtual ~ansi_c_typecheckt()
Definition: ansi_c_typecheck.h:54
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:92
ansi_c_typecheck
bool ansi_c_typecheck(ansi_c_parse_treet &parse_tree, symbol_tablet &symbol_table, const std::string &module, message_handlert &message_handler)
Definition: ansi_c_typecheck.cpp:22
ansi_c_typecheckt::typecheck
virtual void typecheck()
Definition: ansi_c_typecheck.cpp:14
ansi_c_parse_treet
Definition: ansi_c_parse_tree.h:18
message_handlert
Definition: message.h:28
ansi_c_typecheckt::ansi_c_typecheckt
ansi_c_typecheckt(ansi_c_parse_treet &_parse_tree, symbol_tablet &_symbol_table1, const symbol_tablet &_symbol_table2, const std::string &_module, message_handlert &_message_handler)
Definition: ansi_c_typecheck.h:42
ansi_c_typecheckt
Definition: ansi_c_typecheck.h:30