X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=helm%2FDEVEL%2Fmathml_editor%2Fsrc%2FTLexerPull.cc;fp=helm%2FDEVEL%2Fmathml_editor%2Fsrc%2FTLexerPull.cc;h=0eb3a3c5aea79b6a23bb7ed0aab39088a2977769;hp=0000000000000000000000000000000000000000;hb=89262281b6e83bd2321150f81f1a0583645eb0c8;hpb=b1fb6b8e1767d775bc452303629e95941d142bea diff --git a/helm/DEVEL/mathml_editor/src/TLexerPull.cc b/helm/DEVEL/mathml_editor/src/TLexerPull.cc new file mode 100644 index 000000000..0eb3a3c5a --- /dev/null +++ b/helm/DEVEL/mathml_editor/src/TLexerPull.cc @@ -0,0 +1,35 @@ + +#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); +} +