libjson: handle unicode escapes
This commit is contained in:
parent
2dc7e311f4
commit
b1bc8b5c2b
|
@ -52,6 +52,8 @@ lex(Lex *l)
|
||||||
{
|
{
|
||||||
Rune r;
|
Rune r;
|
||||||
char *t;
|
char *t;
|
||||||
|
int i;
|
||||||
|
char c;
|
||||||
|
|
||||||
for(;;){
|
for(;;){
|
||||||
r = peekch(l);
|
r = peekch(l);
|
||||||
|
@ -117,6 +119,19 @@ lex(Lex *l)
|
||||||
case 'r':
|
case 'r':
|
||||||
r = '\r';
|
r = '\r';
|
||||||
break;
|
break;
|
||||||
|
case 'u':
|
||||||
|
r = 0;
|
||||||
|
for(i = 0; i < 4; i++){
|
||||||
|
if(!isxdigit(peekch(l)))
|
||||||
|
break;
|
||||||
|
|
||||||
|
c = getch(l);
|
||||||
|
r *= 16;
|
||||||
|
if(c > '0' && c < '9') r += c - '0';
|
||||||
|
else if(c > 'a' && c < 'f') r += c - 'a' + 10;
|
||||||
|
else if(c > 'A' && c < 'F') r += c - 'A' + 10;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
r = '\t';
|
r = '\t';
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue