aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-09-22 12:09:09 -0400
committerGravatar Peter McGoron 2024-09-22 12:09:09 -0400
commit06d19b28679c0feb46b8b6ff917bf7aec6d27004 (patch)
tree4ae8d1a829fb959c6a6f892782e4e006e9bc4653
parentadd linked list library (diff)
miniscm: string->symbol and symbol->string
-rw-r--r--miniscm/miniscm.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/miniscm/miniscm.c b/miniscm/miniscm.c
index d2ec49f..315ed8e 100644
--- a/miniscm/miniscm.c
+++ b/miniscm/miniscm.c
@@ -1218,6 +1218,8 @@ register pointer a, b;
#define OP_STRINGREF 112
#define OP_STRINGLEN 113
#define OP_LIST2STRING 114
+#define OP_STRING2SYMBOL 115
+#define OP_SYMBOL2STRING 116
static FILE *tmpfp;
static int tok;
@@ -1783,6 +1785,16 @@ register short op;
} else {
Error_0("char->integer: argument must be char");
}
+ case OP_STRING2SYMBOL: /* string->symbol */
+ if (!isstring(car(args))) {
+ Error_0("string->symbol: argument must be string");
+ }
+ s_return(mk_symbol(strvalue(car(args))));
+ case OP_SYMBOL2STRING: /* symbol->string */
+ if (!issymbol(car(args))) {
+ Error_0("symbol->string: argument must by symbol");
+ }
+ s_return(mk_string(symname(car(args))));
default:
sprintf(strbuff, "%d is illegal operator", operator);
@@ -2529,7 +2541,9 @@ pointer (*dispatch_table[])() = {
opexe_2, /* OP_CHAR2INT */
opexe_4, /* OP_STRINGREF */
opexe_4, /* OP_STRINGLEN */
- opexe_list2string /* OP_LIST2STRING */
+ opexe_list2string, /* OP_LIST2STRING */
+ opexe_2, /* OP_STRING2SYMBOL */
+ opexe_2 /* OP_SYMBOL2STRING */
};
@@ -2692,6 +2706,8 @@ init_procs()
mk_proc(OP_STRINGREF, "string-ref");
mk_proc(OP_STRINGLEN, "string-length");
mk_proc(OP_LIST2STRING, "list->string");
+ mk_proc(OP_STRING2SYMBOL, "string->symbol");
+ mk_proc(OP_SYMBOL2STRING, "symbol->string");
}
der'>2021-07-26paired mutatorsGravatar John Cowan 1-43/+68 2021-07-26exceptionsGravatar John Cowan 1-1/+15 2021-07-26new exampleGravatar John Cowan 1-1/+4 2021-07-26updatesGravatar John Cowan 1-2/+4 2021-07-26dtd always first argumentGravatar John Cowan 1-9/+9 2021-07-26DTO to DTDGravatar John Cowan 1-55/+52 2021-07-26typoGravatar John Cowan 1-1/+1 2021-07-26switching to explicit dtosGravatar John Cowan 1-88/+102 2021-07-26errorsGravatar John Cowan 1-1/+4 2021-07-26more MN-W reviewGravatar John Cowan 1-5/+5 2021-07-26update preview linkGravatar John Cowan 1-1/+1 2021-07-26MN-W reviewGravatar John Cowan 1-6/+6 2021-07-26paired mutatorsGravatar John Cowan 1-43/+68 2021-07-25exceptionsGravatar John Cowan 1-1/+15 2021-07-25new exampleGravatar John Cowan 1-1/+4 2021-07-25updatesGravatar John Cowan 1-2/+4 2021-07-24dtd always first argumentGravatar John Cowan 1-9/+9 2021-07-23DTO to DTDGravatar John Cowan 1-55/+52 2021-07-22typoGravatar John Cowan 1-1/+1 2021-07-22switching to explicit dtosGravatar John Cowan 1-88/+102 2021-07-22errorsGravatar John Cowan 1-1/+4 2021-07-22more MN-W reviewGravatar John Cowan 1-5/+5 2021-07-20update preview linkGravatar John Cowan 1-1/+1 2021-07-20MN-W reviewGravatar John Cowan 1-6/+6 2021-07-18Fix typo.Gravatar Arthur A. Gleckler 2-4/+4 2021-07-18Add <p> around abstract.Gravatar Arthur A. Gleckler 1-2/+2 2021-07-18Publish first draft.draft-1Gravatar Arthur A. Gleckler 3-0/+114 2021-07-18Ignore trailing whitespace.Gravatar Arthur A. Gleckler 11-129/+129 2021-07-18Ignore "Dictionaries.log".Gravatar Arthur A. Gleckler 1-1/+2 2021-07-18Fix errors reported by W3C HTML Validator.Gravatar Arthur A. Gleckler 1-27/+27 2021-07-18Eliminate unnecessary redirect by using TLS/SSL.Gravatar Arthur A. Gleckler 1-1/+1