OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
TokenStream.cpp
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2// $RCSfile: TokenStream.cpp,v $
3// ------------------------------------------------------------------------
4// $Revision: 1.1.1.1 $
5// ------------------------------------------------------------------------
6// Copyright: see Copyright.readme
7// ------------------------------------------------------------------------
8//
9// Class: TokenStream
10// Abstract base class for input token streams.
11//
12// ------------------------------------------------------------------------
13// Class category: Parser
14// ------------------------------------------------------------------------
15//
16// $Date: 2000/03/27 09:32:37 $
17// $Author: fci $
18//
19// ------------------------------------------------------------------------
20
22#include <cctype>
24
25// Class TokenStream
26// ------------------------------------------------------------------------
27
28TokenStream::TokenStream(const std::string& name)
29 : stream_name(name), curr_line(0), put_back_flag(false), put_back() {}
30
32
33void TokenStream::putBack(const Token& token) {
34 if (put_back_flag) {
35 throw LogicalError("TokenStream::pushBack()", "Cannot push back two tokens.");
36 }
37
38 put_back = token;
39 put_back_flag = true;
40}
41
42int TokenStream::getLine() const { return curr_line; }
43
44const std::string& TokenStream::getName() const { return stream_name; }
Logical error exception.
bool put_back_flag
Definition TokenStream.h:59
virtual ~TokenStream()
std::string stream_name
Definition TokenStream.h:53
Token put_back
Definition TokenStream.h:60
int getLine() const
Return line number.
const std::string & getName() const
Return stream name.
void putBack(const Token &token)
Put token back to stream.
Representation of a single input token.
Definition Token.h:32