OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
MacroStream.cpp
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2// $RCSfile: MacroStream.cpp,v $
3// ------------------------------------------------------------------------
4// $Revision: 1.1.1.1 $
5// ------------------------------------------------------------------------
6// Copyright: see Copyright.readme
7// ------------------------------------------------------------------------
8//
9// Class: MacroStream
10// Implements an input buffer for reading tokens from a token list.
11// This string is intended for storing OPAL-9 macros.
12//
13// ------------------------------------------------------------------------
14//
15// $Date: 2000/03/27 09:33:43 $
16// $Author: Andreas Adelmann $
17//
18// ------------------------------------------------------------------------
19
21#include "OpalParser/Token.h"
22
23// Class MacroStream
24// ------------------------------------------------------------------------
25
26MacroStream::MacroStream(const std::string& macName)
27 : TokenStream(macName), body(), curr(body.begin()) {}
28
30
31void MacroStream::append(Token& token) { body.push_back(token); }
32
34 if (put_back_flag) {
35 put_back_flag = false;
36 return put_back;
37 } else if (curr == body.end()) {
38 return Token(stream_name, 1, Token::IS_EOF, "End of macro");
39 } else {
40 return *curr++;
41 }
42}
43
45 curr = body.begin();
46 put_back_flag = false;
47}
TokenList::iterator curr
Definition MacroStream.h:56
virtual ~MacroStream()
void append(Token &)
Append a token to the stream.
void start()
Reset stream to start.
TokenList body
Definition MacroStream.h:55
virtual Token readToken()
Read a token from the stream.
Abstract interface for a stream of input tokens.
Definition TokenStream.h:30
bool put_back_flag
Definition TokenStream.h:59
std::string stream_name
Definition TokenStream.h:53
Token put_back
Definition TokenStream.h:60
Representation of a single input token.
Definition Token.h:32
@ IS_EOF
Definition Token.h:35