# SPDX-License-Identifier: BSD-2-Clause BEGIN { # fix the symbol numbers of the special forms _symbol("quote") _symbol("atom") _symbol("eq") _symbol("car") _symbol("cdr") _symbol("cons") _symbol("cond") _symbol("label") _symbol("lambda") _symbol("not") _symbol("null") _symbol("equal") _symbol("caar") _symbol("cadr") _symbol("cdar") _symbol("cddr") # ^^ above here, we have specific cases in _eval3, because these # are expected to be the most-often-used functions. _symbol("memq") _symbol("member") _symbol("assoc") _symbol("setq") _symbol("caaar") _symbol("caadr") _symbol("cadar") _symbol("caddr") _symbol("cdaar") _symbol("cdadr") _symbol("cddar") _symbol("cdddr") _symbol("rplaca") _symbol("rplacd") _symbol("nreverse") _symbol("nconc") _symbol("append") _symbol("apply") _symbol("list-length") _symbol("print") _symbol("repr") _symbol("progn") _symbol("prog1") _symbol("macro") _symbol("expand1") _symbol("symbolp") _symbol("consp") _symbol("stringp") _symbol("eval") _symbol("%other-lispy%") _symbol("tolower") _symbol("toupper") _symbol("substr") _symbol("index") _symbol("match") _symbol("split") _symbol("sub") _symbol("gsub") _symbol("sprintf") _symbol("string-length") _symbol("strcat") _symbol("shellquote") _symbol("%string%") _symbol("<") _symbol(">") _symbol("=") _symbol("!=") _symbol("<=") _symbol(">=") _symbol("only2+") _symbol("only2*") _symbol("only2-") _symbol("only2/") _symbol("only2//") _symbol("only2%") _symbol("only2**") _symbol("atan2") _symbol("cos") _symbol("sin") _symbol("exp") _symbol("log") _symbol("sqrt") _symbol("rand") _symbol("srand") _symbol("int") _symbol("%math%") _symbol("printf") _symbol("unsafe-system") _symbol("getline") _symbol("with-ors") _symbol("with-rs") _symbol("with-fs") _symbol("with-output-to") _symbol("with-input-from") _symbol("getenv") _symbol("setenv") _symbol("fflush") _symbol("close") _symbol("load") _symbol("%io%") _symbol("as-number") _symbol("gc-dot") _symbol("gc") _symbol("dump") _symbol("dump-append") _symbol("dump-append-changing-main") _symbol("dump-dot") _symbol("cell-info") _symbol("repl") _symbol("%last-special-form%") _symbol("mapcar") _symbol("let") _symbol("foldl") _symbol("reduce") _symbol("mappend") _symbol("quasiquote") _symbol("let*") _symbol("intercalate") _symbol("string-join") _symbol("system") _symbol("+") _symbol("*") _symbol("-") _symbol("/") _symbol("//") _symbol("%") _symbol("**") _symbol("or") _symbol("and") _symbol("save-lisp-and-die") _symbol("%no-gc%") # make list of these percent symbols because _eval3 compares the # address of the operator being eval'd against them, in order to # reduce the number of if-elseif-elseif-elseif... cases if the # operator isn't one of the most common ones. _COMPARED_SYMBOLS = _cons(_symbol("%other-lispy%"), _cons(_symbol("%string%"), _cons(_symbol("%math%"), _cons(_symbol("%io%"), _cons(_symbol("%last-special-form%"), _cons(_symbol("%no-gc%"), _nil())))))) }