CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
cpp_token_buffer.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: C++ Parser: Token Buffer
4
5Author: Daniel Kroening, kroening@cs.cmu.edu
6
7\*******************************************************************/
8
11
12#ifndef CPROVER_CPP_CPP_TOKEN_BUFFER_H
13#define CPROVER_CPP_CPP_TOKEN_BUFFER_H
14
15#include <util/config.h>
16#include <util/invariant.h>
17
19
20#include "cpp_token.h"
21
22#include <list>
23
25{
26public:
27 explicit cpp_token_buffert(message_handlert &message_handler)
28 : ansi_c_parser(message_handler), current_pos(0)
29 {
30 // We use the ANSI-C scanner
31 ansi_c_parser.cpp98 = true;
39 }
40
41 typedef unsigned int post;
42
43 int LookAhead(unsigned offset);
44 int get_token(cpp_tokent &token);
45 int get_token();
46 int LookAhead(unsigned offset, cpp_tokent &token);
47
48 post Save();
49 void Restore(post pos);
50 void Replace(const cpp_tokent &token);
51 void Insert(const cpp_tokent &token);
52
53 void clear()
54 {
55 tokens.clear();
58 }
59
60 // the token that is currently being read from the file
62 {
63 PRECONDITION(!tokens.empty());
64 return tokens.back();
65 }
66
68
69protected:
70 typedef std::list<cpp_tokent> tokenst;
72
73 std::vector<tokenst::iterator> token_vector;
74
76
78
79 // get another token from lexer
80 void read_token();
81};
82
83#endif // CPROVER_CPP_CPP_TOKEN_BUFFER_H
void ansi_c_scanner_init(ansi_c_parsert &)
configt config
Definition config.cpp:25
virtual void clear()
Reset the abstract state.
Definition ai.h:265
bool ts_18661_3_Floatn_types
struct configt::cppt cpp
struct configt::ansi_ct ansi_c
int LookAhead(unsigned offset)
ansi_c_parsert ansi_c_parser
cpp_token_buffert(message_handlert &message_handler)
std::list< cpp_tokent > tokenst
void Replace(const cpp_tokent &token)
std::vector< tokenst::iterator > token_vector
cpp_tokent & current_token()
void Insert(const cpp_tokent &token)
C++ Parser: Token.
literalt pos(literalt a)
Definition literal.h:194
#define PRECONDITION(CONDITION)
Definition invariant.h:463