# 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") # ^^ 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("list-length") _symbol("print") _symbol("progn") _symbol("macro") _symbol("expand1") _symbol("eval") _symbol("%other-lispy%") _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("system") _symbol("tolower") _symbol("toupper") _symbol("substr") _symbol("index") _symbol("match") _symbol("split") _symbol("sub") _symbol("gsub") _symbol("printf") _symbol("sprintf") _symbol("string-length") _symbol("strcat") _symbol("getline") _symbol("with-ors") _symbol("with-rs") _symbol("with-fs") _symbol("with-output-to") _symbol("with-input-from") _symbol("fflush") _symbol("close") _symbol("gc-dot") _symbol("gc") _symbol("dump") _symbol("dump-dot") _symbol("%last-special-form%") _symbol("mapcar") _symbol("let") _symbol("foldl") _symbol("reduce") _symbol("mappend") _symbol("quasiquote") _symbol("+") _symbol("*") _symbol("-") _symbol("/") _symbol("//") _symbol("%") _symbol("**") _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("%math%"), _cons(_symbol("%last-special-form%"), _cons(_symbol("%no-gc%"), _nil())))) }