OSDN Git Service

Almost there on parsing.
authorSimon Forman <sforman@hushmail.com>
Thu, 2 Feb 2023 00:57:46 +0000 (16:57 -0800)
committerSimon Forman <sforman@hushmail.com>
Thu, 2 Feb 2023 00:57:46 +0000 (16:57 -0800)
implementations/C/parser.c

index adb3b33..0945386 100644 (file)
@@ -1,9 +1,11 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <string.h>
+#include <gc.h>
+
 
 const char *BLANKS = " \t";
-const char *TEXT = " hi there friend";
+const char *TEXT = " hi there fr[ie]nd";
 /*                  01234567890123456789
                        ^     ^
 */
@@ -22,15 +24,19 @@ trim_leading_blanks(char *str)
 int
 main(void)
 {
-       char *rest, *text;
+       char *rest, *text, *snip;
        ptrdiff_t diff;
 
         text = trim_leading_blanks((char *)TEXT);
        rest = strpbrk(text, " []");
        while (NULL != rest) {
                diff = rest - text;
-                text = rest;
                 printf("%ld\n", diff);
-                rest = strpbrk(++rest, " []");
+                snip = (char *)GC_malloc(diff + 1);
+                strncat(snip, text, diff);
+                printf("%s <%c>\n", snip, rest[0]);
+                text = ++rest;
+                rest = strpbrk(text, " []");
        }
+        printf("%s\n", text);
 }