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));
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:
buffer.push_back(ch);
state = MACRO;
}
+ else if (ch == '\b')
+ {
+ state = ACCEPT;
+ }
else
{
parser.push(TToken(TToken::CONTROL, 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
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: