tb Hex/byte escapes
This commit is contained in:
@ -4,6 +4,7 @@
|
|||||||
#include <ansiq/all.h>
|
#include <ansiq/all.h>
|
||||||
#include <args/args.h>
|
#include <args/args.h>
|
||||||
#include <string/string.h>
|
#include <string/string.h>
|
||||||
|
#include <string/conv.h>
|
||||||
#include <string/char.h>
|
#include <string/char.h>
|
||||||
#include <sync/spinlock.h>
|
#include <sync/spinlock.h>
|
||||||
#include <syscall/syscall.h>
|
#include <syscall/syscall.h>
|
||||||
|
@ -45,6 +45,20 @@ void tz_tokenize(Tokenizer *tz) {
|
|||||||
case '\\': c = '\\'; break;
|
case '\\': c = '\\'; break;
|
||||||
case '\'': c = '\''; break;
|
case '\'': c = '\''; break;
|
||||||
case '"': c = '"'; break;
|
case '"': c = '"'; break;
|
||||||
|
case 'x': {
|
||||||
|
if (i + 2 < len) {
|
||||||
|
char buf[3];
|
||||||
|
buf[0] = tz->str[i + 1];
|
||||||
|
buf[1] = tz->str[i + 2];
|
||||||
|
buf[2] = '\0';
|
||||||
|
|
||||||
|
char *endp;
|
||||||
|
uint8_t b = (uint8_t)string_conv_strtoul(buf, &endp, 16);
|
||||||
|
c = *(char *)&b;
|
||||||
|
|
||||||
|
i += 2;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
default: c = tz->str[i]; break;
|
default: c = tz->str[i]; break;
|
||||||
}
|
}
|
||||||
if (j + 1 < TZ_MAX_TK) {
|
if (j + 1 < TZ_MAX_TK) {
|
||||||
|
Reference in New Issue
Block a user