KBD2A5MUJHKGV4JD6MLJXTKNAYZ5D44LX5WRB2ZXX5YCWBODWR3AC HDINGIHXRIQBDEWVYCC26V5JBRXTK6FOG2E3VD6RDSU44EQIHSAQC TN5RCIH3OI5AW756GICACN24TBABGLNDQ7LZJTUYHXYVW3ARGBBQC YU2N2HEPNDEB65LGBWESEHNZNCZ63H3MGT4R7VLX4KMZHFYC4SIAC 2CXQ53RHKGIT5KR7VHOVRVHCD5MK4V2J3AJDQ3CNSJLHJXXA4GXQC UW27LKXM2BJ77FQLTY4WPKDSSWI2RFNFRJ7CB4U3TS7KYVIV72LQC JNVQOJXCBGPCN3XT2GAAGZ2ZOIUVGRB6WCRWOPI6RPJDDWL2KGKAC A56GZW6HLIZQ6NX47XFPEPPGLZAA725KNYST7VK2MMK3DCCIXAXAC NBEO3TPNOUG7MRFYRSDDFB5TQKTEDL6GHHFQVOB5MXVPIBKFNZKAC 5XO7IKBGCVXGVWMDJDE5MELS4FWRITKAU6NNV36NQ4TOZRR7UQ7QC JDZASPALXSFZOL3MXCKBPX74CUD3W743ZJ6W2422FIJ7NJOD67ZAC OUNA3ZMTTISFWX3HHIJ46WTYQJBX4OFSNU4SU3GOJMBLLHQDFT7AC GOXQFKWDQUYUH3XLJSAUL5LPNQ46NDO3ZGFJNVTECB4ARGZ4DW3QC I3MID22EURRK26C4JZ2U5FBEZ57GZVMBT44KFKTU4BBYXKLILWRAC A2JAXDJWT2FAKADYOY6QOQ7LQRMTTCDIOYT7STSESVHLZQEQJBMAC MPN7OJSZD5CS5N7WWS3ZSOYE7ZRCABIBHZDMHVS6IT25EO2INK7AC 6WM2DD32XSC2HFLOXBDPFCU6BI2BD5ZYFGBIEIVEQOKWRCNTXROQC FITNBSMMJCQIFJGUMVSZYHJM4OSBXEZO5YWYEJ4CXGMFPBSIT5WAC # the reason to keep lists of parser state is so we can have forms# that span lines, rather than requiring each line of input to be# a complete form.tokenize($0)read_forms_into(_TO_EVAL)
# the reason to keep global arrays of parser state (_TOKENS,# _TO_EVAL) is so we can have forms that span lines, rather than# requiring each line of input to be a complete form.tokenize($0, _TOKENS, _WHERE, _INSIDE_STRING)read_forms_into(_TO_EVAL, _TOKENS, _WHERE, _INSIDE_STRING)
return _nil()}}function _load(fn, my_tokens, my_where, my_inside_string, my_to_eval) {# arraysdelete my_tokensdelete my_wheredelete my_inside_stringdelete my_to_evalif(_TYPE[fn] == "s") {# eval_read_str appears to work with multiple forms, but not# partial forms across calls. scarcely surprising.while((getline < _STRING[fn]) > 0) {tokenize($0, my_tokens, my_where, my_inside_string)read_forms_into(my_to_eval, my_tokens, my_where, my_inside_string)_just_eval_all(my_to_eval) # may not contain anythingdelete my_to_eval}_incomplete_parse_at_end(my_tokens, my_where, my_inside_string)close(fn)return _true()} else {logg_err("_load", "filename to load from should be a string")