]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/mathml_editor/src/TLexerPull.cc
Initial revision
[helm.git] / helm / DEVEL / mathml_editor / src / TLexerPull.cc
1
2 #include "TCharStream.hh"
3 #include "TCharStreamString.hh"
4
5 TToken
6 TLexerPull::pop(TCharStream& stream)
7 {
8   if (stream.more())
9     {
10       TChar ch = stream.next();
11       if (ch == '\\')
12         {
13           if (stream.more())
14             {
15               if (isUnicodeAlpha(stream.look()))
16                 {
17                   TString s;
18                   while (stream.more() && isUnicodeAlpha(stream.look()))
19                     s.push_back(stream.next());
20                   TToken res(TToken::CONTROL, s);
21                   while (stream.more() && isUnicodeSpace(stream.look()))
22                     stream.next();
23                   return res;
24                 }
25               else
26                 return TToken(TToken::CONTROL, TString(1, stream.next()));
27             }
28           else
29             return TToken(TToken::INVALID_CHAR, TString(1, ch));
30         }
31       else return TToken(ch);
32     }
33   else return TToken(TToken::END_OF_BUFFER);
34 }
35