do {
c = 10 * c + (current - '0');
nextChar();
} while (++i < 3 && isdigit(current));
if (c > UCHAR_MAX) {
<BUG>lexerror("escape sequence too large", TK_STRING);
</BUG>
}
save(c);
}

do {
c = 10 * c + (current - '0');
nextChar();
} while (++i < 3 && isdigit(current));
if (c > UCHAR_MAX) {
throw lexerror("escape sequence too large", TK_STRING);
}
save(c);
}
