📄 parser_input_stream.hpp
字号:
// released into the public domain
// by Christopher Diggins 2004
// http://www.cdiggins.com
//vc6.0 compile flag ok
#ifndef PARSER_INPUT_STREAM_HPP_INCLUDED
#define PARSER_INPUT_STREAM_HPP_INCLUDED
#include <assert.h>
namespace yard {
template < typename Elem_T, typename Iter_T = Elem_T const * >
struct ParserInputStream {
typedef Elem_T element_type;
typedef Iter_T iter_type;
ParserInputStream(Iter_T begin, Iter_T end) : mCurPos(begin), m_beginPos(begin), mEndPos(end) { }
Elem_T GetElem() {
assert(!AtEnd());
return * mCurPos;
}
void GotoNext() {
assert(!AtEnd());
++mCurPos;
}
void GotoPre() {
--mCurPos;
}
Iter_T GetPos() {
return mCurPos;
}
void SetPos(Iter_T pos) {
mCurPos = pos;
}
bool AdvancePast(Elem_T elem) {
if (AtEnd()) {
return false;
}
if (GetElem() == elem) {
GotoNext();
return true;
}
return false;
}
bool AtEnd() {
return mCurPos == mEndPos;
}
Iter_T getBeginPos() {
return m_beginPos;
}
Iter_T getEndPos() {
return mEndPos;
}
private:
const Iter_T m_beginPos;
Iter_T mCurPos;
const Iter_T mEndPos;
};
}
#endif // #ifndef PARSER_INPUT_STREAM_HPP_INCLUDED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -