txlyre 1 day ago
parent
commit
46b968f925
1 changed files with 10 additions and 1 deletions
  1. 10 1
      qic.c

+ 10 - 1
qic.c

@@ -3270,9 +3270,13 @@ const char *STD[][2] = {
     "let STR_ASCII_LC = \"abcdefghijklmnopqrstuvwxyz\"\n"
     "let STR_ASCII_UC = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n"
     "let STR_DIGITS = \"0123456789\"\n"
+    "let STR_WS = \" \\t\\n\\r\\x0b\\x0c\"\n"
+    "let STR_PUNCTS = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\"\n"
     "func is_char(c): return type(c) == \"string\" && len(c) == 1\n"
     "func isalpha(c): return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')\n"
     "func isdigit(c): return c >= '0' && c <= '9'\n"
+    "func ispunct(c): return c in STR_PUNCTS\n"
+    "func isws(c): return c in STR_WS\n"
   },
 
   {"time",
@@ -3591,8 +3595,13 @@ void compile_node(buffer_t *gbuf, buffer_t *buf, list_t *ctx, table_t *ltab, sta
 
               list_push(FILES, pair);
 
+              list_t *tokens = tokenize(source);
+
               size_t pos = 0;
-              node_t *n = parse_expr(tokenize(source), &pos);
+              node_t *n = parse_expr(tokens, &pos);
+
+              if (pos != tokens->length-1)
+                COMPILE_ERROR("unconsumed input in f-expr");
 
               list_push(parts, n);
             } else buffer_append(tbuf, c);