--- /dev/null
+
+#include <deque>
+
+#include "TToken.hh"
+
+class TLexerPush
+{
+public:
+ TLexerPush(void);
+
+ void push(TChar);
+ TToken pop(void);
+ TToken front(void) const;
+ bool ambiguous(void) const;
+ bool pending(void) const;
+ bool empty(void) const;
+
+ class EmptyBuffer { };
+
+private:
+ enum State
+ {
+ ACCEPT,
+ ESCAPE,
+ CONTROL,
+ IGNORE_SPACE
+ };
+
+ State state;
+ std::deque<TToken> tokens;
+};