--- /dev/null
+
+#include "TCharStream.hh"
+#include "TCharStreamString.hh"
+
+TToken
+TLexerPull::pop(TCharStream& stream)
+{
+ if (stream.more())
+ {
+ TChar ch = stream.next();
+ if (ch == '\\')
+ {
+ if (stream.more())
+ {
+ if (isUnicodeAlpha(stream.look()))
+ {
+ TString s;
+ while (stream.more() && isUnicodeAlpha(stream.look()))
+ s.push_back(stream.next());
+ TToken res(TToken::CONTROL, s);
+ while (stream.more() && isUnicodeSpace(stream.look()))
+ stream.next();
+ return res;
+ }
+ else
+ return TToken(TToken::CONTROL, TString(1, stream.next()));
+ }
+ else
+ return TToken(TToken::INVALID_CHAR, TString(1, ch));
+ }
+ else return TToken(ch);
+ }
+ else return TToken(TToken::END_OF_BUFFER);
+}
+