txlyre 2 dni temu
rodzic
commit
b5dc78540f
1 zmienionych plików z 23 dodań i 0 usunięć
  1. 23 0
      qic.c

+ 23 - 0
qic.c

@@ -501,6 +501,29 @@ token_t *tokenize_string(char *source, size_t *pos) {
         continue;
 
       switch (nc) {
+        case 'x': {
+          char buf[3];
+          int k = 0;
+
+          while (k < 2) {
+            if (!source[*pos] || !strchr("0123456789abcdefABCDEF", source[*pos]))
+              break;
+
+            buffer[k++] = source[(*pos)++];
+          }
+
+          if (k != 2)
+            LEX_ERROR("malformed \\x escape sequence");
+      
+          buffer[k] = 0;
+ 
+          unsigned char c = strtol(buf, NULL, 16)
+          if (!c)
+            LEX_ERROR("malformed \\x escape sequence");
+
+          buffer_append(text, c);
+          } break;
+
         case 'n':
           buffer_appends(text, "\\n");
           break;