cprover
cpp_parser.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: C++ Parser
4 
5 Author: Daniel Kroening, kroening@cs.cmu.edu
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_CPP_CPP_PARSER_H
13 #define CPROVER_CPP_CPP_PARSER_H
14 
15 #include <cassert>
16 
17 #include <util/string_hash.h>
18 #include <util/parser.h>
19 #include <util/expr.h>
20 
21 #include <ansi-c/ansi_c_parser.h>
22 
23 #include "cpp_parse_tree.h"
24 #include "cpp_token_buffer.h"
25 
26 class cpp_parsert:public parsert
27 {
28 public:
30 
31  virtual bool parse() override;
32 
33  virtual void clear() override
34  {
36  parse_tree.clear();
38  asm_block_following=false;
39  }
40 
42  mode(configt::ansi_ct::flavourt::ANSI),
43  recognize_wchar_t(true),
44  asm_block_following(false)
45  {
46  }
47 
48 public:
49  // internal state
51 
52  // We can furthermore twiddle the recognition of various
53  // keywords. This is honored in particular modes.
55 
57 
59  {
60  return token_buffer.current_token();
61  }
62 
63  void add_location()
64  {
67  }
68 
69  // scanner
72 };
73 
74 extern cpp_parsert cpp_parser;
75 
76 #endif // CPROVER_CPP_CPP_PARSER_H
cpp_parsert::parse_tree
cpp_parse_treet parse_tree
Definition: cpp_parser.h:29
parsert::source_location
source_locationt source_location
Definition: parser.h:135
cpp_parse_treet
Definition: cpp_parse_tree.h:20
cpp_parsert::cpp_parsert
cpp_parsert()
Definition: cpp_parser.h:41
cpp_parsert::asm_block_following
bool asm_block_following
Definition: cpp_parser.h:71
cpp_parsert::current_token
cpp_tokent & current_token()
Definition: cpp_parser.h:58
cpp_tokent::filename
irep_idt filename
Definition: cpp_token.h:26
cpp_parse_treet::clear
void clear()
Definition: cpp_parse_tree.cpp:19
cpp_token_buffert::current_token
cpp_tokent & current_token()
Definition: cpp_token_buffer.h:48
parsert::clear
virtual void clear()
Definition: parser.h:32
cpp_tokent::line_no
unsigned line_no
Definition: cpp_token.h:25
cpp_parsert::clear
virtual void clear() override
Definition: cpp_parser.h:33
cpp_parsert::mode
ansi_c_parsert::modet mode
Definition: cpp_parser.h:50
cpp_parsert
Definition: cpp_parser.h:27
configt
Globally accessible architectural configuration.
Definition: config.h:26
expr.h
cpp_tokent
Definition: cpp_token.h:20
cpp_parser
cpp_parsert cpp_parser
Definition: cpp_parser.cpp:16
cpp_token_buffer.h
C++ Parser: Token Buffer.
string_hash.h
string hashing
cpp_token_buffert
Definition: cpp_token_buffer.h:22
cpp_parsert::parse
virtual bool parse() override
Definition: cpp_parser.cpp:20
parsert
Definition: parser.h:24
cpp_parsert::add_location
void add_location()
Definition: cpp_parser.h:63
cpp_parse_tree.h
C++ Parser.
cpp_token_buffert::clear
void clear()
Definition: cpp_token_buffer.h:40
parser.h
Parser utilities.
cpp_parsert::recognize_wchar_t
bool recognize_wchar_t
Definition: cpp_parser.h:54
source_locationt::get_file
const irep_idt & get_file() const
Definition: source_location.h:36
cpp_parsert::parenthesis_counter
unsigned parenthesis_counter
Definition: cpp_parser.h:70
configt::ansi_ct::flavourt
flavourt
Definition: config.h:107
ansi_c_parser.h
cpp_parsert::token_buffer
cpp_token_buffert token_buffer
Definition: cpp_parser.h:56
parsert::get_line_no
unsigned get_line_no() const
Definition: parser.h:97