X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fmathml_editor%2Fsrc%2FTPushLexer.cc;h=4b24523da5e494c01ac2202bfbea438063fbf996;hb=e290ab0a049ec2babedc3cb0ff802c430ed8ee7c;hp=b943877870c0400a8c42f94d469feab5fbe8f4f2;hpb=6a72ec9c2e81e6558a0163877129cc6227948e3e;p=helm.git diff --git a/helm/DEVEL/mathml_editor/src/TPushLexer.cc b/helm/DEVEL/mathml_editor/src/TPushLexer.cc index b94387787..4b24523da 100644 --- a/helm/DEVEL/mathml_editor/src/TPushLexer.cc +++ b/helm/DEVEL/mathml_editor/src/TPushLexer.cc @@ -31,7 +31,7 @@ TPushLexer::transaction(char ch, State newState) case '\t': case ' ': parser.push(TToken(TToken::SPACE, ch)); break; case '~': parser.push(TToken(TToken::ACTIVE, ch)); break; - case '%': parser.push(TToken(TToken::COMMENT)); break; + case '%': parser.push(TToken(TToken::COMMENT)); break; default: if (isalpha(ch)) parser.push(TToken(TToken::LETTER, ch)); else if (isdigit(ch)) parser.push(TToken(TToken::DIGIT, ch)); @@ -49,6 +49,7 @@ TPushLexer::push(char ch) case ACCEPT: if (ch == '\\') state = ESCAPE; else if (ch == '#') state = PARAMETER; + else if (ch == '\b') parser.push(TToken(TToken::GDELETE)); else transaction(ch, ACCEPT); break; case ESCAPE: @@ -57,6 +58,10 @@ TPushLexer::push(char ch) buffer.push_back(ch); state = MACRO; } + else if (ch == '\b') + { + state = ACCEPT; + } else { parser.push(TToken(TToken::CONTROL, ch)); @@ -76,6 +81,11 @@ TPushLexer::push(char ch) buffer.erase(); state = PARAMETER; } + else if (ch == '\b') + { + buffer.erase(buffer.length() - 1, 1); + if (buffer.length() == 0) state = ESCAPE; + } else if (isalpha(ch)) buffer.push_back(ch); else @@ -90,6 +100,7 @@ TPushLexer::push(char ch) if (ch == '\\') state = ESCAPE; else if (ch == '#') state = PARAMETER; else if (isspace(ch)) ; + else if (ch == '\b') parser.push(TToken(TToken::GDELETE)); else transaction(ch, ACCEPT); break; case PARAMETER: