From faab24e5a6766880c7e4a33433cb4146e3f8a302 Mon Sep 17 00:00:00 2001 From: Aleksey Veresov 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 (limited to '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 +#include + + +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 "); + 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