From 2bfb79be604c68b7684b515f3be3388fecfcf1f4 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Fri, 2 Jul 2021 16:59:56 +0000 Subject: Remove strings, and add a (currently not changable) flag 'double_quotes' which defines how double quoted strings are stored. --- misc.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'misc.c') diff --git a/misc.c b/misc.c index 1f908f9..02a5bca 100644 --- a/misc.c +++ b/misc.c @@ -94,7 +94,40 @@ mknumber(int type, vlong ival, double dval) Term * mkstring(Rune *text) { - Term *t = mkterm(StringTerm); - t->text = text; + Term *t = nil; + Rune *r; + + switch(flagdoublequotes){ + case DoubleQuotesChars: + for(r = text; *r != '\0'; r++){ + Rune *chtext = runesmprint("%C", *r); + Term *ch = mkatom(chtext); + t = appendterm(t, ch); + } + t = mklist(t); + break; + case DoubleQuotesCodes: + for(r = text; *r != '\0'; r++){ + Term *code = mknumber(NumberInt, *r, 0); + t = appendterm(t, code); + } + t = mklist(t); + break; + break; + case DoubleQuotesAtom: + t = mkatom(text); + } return t; } + +Term * +mklist(Term *elems) +{ + if(elems == nil) + return mkatom(L"[]"); + else{ + Term *t = copyterm(elems, nil); + t->next = mklist(elems->next); + return mkcompound(L".", 2, t); + } +} -- cgit v1.2.3