From faab24e5a6766880c7e4a33433cb4146e3f8a302 Mon Sep 17 00:00:00 2001
From: Aleksey Veresov <aleksey@veresov.pro>
Date: Sun, 3 Jan 2021 00:42:59 +0300
Subject: Translator added.

---
 examples/translator.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 examples/translator.c

diff --git a/examples/translator.c b/examples/translator.c
new file mode 100644
index 0000000..448d052
--- /dev/null
+++ b/examples/translator.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <ctype.h>
+
+
+void readlist()
+{
+    int first = 1;
+    int c = getchar();
+    while (c != EOF && c != ']') {
+        if (c == '[') {
+            if (first) first = 0;
+            else putchar(',');
+            printf("csx_list(");
+            readlist();
+            printf("0)");
+            c = getchar();
+        } else if (isdigit(c)) {
+            if (first) first = 0;
+            else putchar(',');
+            printf("csx_num(");
+            putchar(c);
+            c = getchar();
+            while (c != EOF && isdigit(c)) {
+                putchar(c);
+                c = getchar();
+            }
+            printf(")");
+        } else if (isspace(c)) {
+            while (isspace(c = getchar()));
+        } else {
+            if (first) first = 0;
+            else putchar(',');
+            printf("csx_name(\"");
+            while (c != EOF && !isspace(c) && c != '[' && c != ']') {
+                if (c == '"' || c == '\\') putchar('\\');
+                putchar(c);
+                c = getchar();
+            }
+            printf("\")");
+        }
+    }
+    if (!first) putchar(',');
+}
+
+int main()
+{
+    puts("#include <csx.h>");
+    puts("int main()");
+    puts("{");
+    printf("csx_eval(csx_list(csx_name(\"do\"),");
+    readlist();
+    puts("0));");
+    puts("return 0;");
+    puts("}");
+    return 0;
+}
-- 
cgit v1.2.3