ICGJDX2EHUCWPATWZRMDCSSTRXGSPW5M4NGU5MAFG6R7QDUC5KPQC
TL7YNDX4E2KDNU4QPONKD7LPGY3DEO77XMUQ75OLOH2BGEW4IBQQC
KBD2A5MUJHKGV4JD6MLJXTKNAYZ5D44LX5WRB2ZXX5YCWBODWR3AC
UW27LKXM2BJ77FQLTY4WPKDSSWI2RFNFRJ7CB4U3TS7KYVIV72LQC
FHACYEOV7BG6PMCH2JL37C63CGQBIDVRBMCHCBJKXESV6NUL4T3AC
TN5RCIH3OI5AW756GICACN24TBABGLNDQ7LZJTUYHXYVW3ARGBBQC
7SNXCC5KSDXU3MBJT2FBEPAISWPY62DHPC2RLEYXC2WVTWX5TKKQC
JNVQOJXCBGPCN3XT2GAAGZ2ZOIUVGRB6WCRWOPI6RPJDDWL2KGKAC
2CXQ53RHKGIT5KR7VHOVRVHCD5MK4V2J3AJDQ3CNSJLHJXXA4GXQC
echo "$@" | ${TEST_AWK:-awk} -v PROMPT= -v LOG_LEVEL=$LOG_LEVEL -f glotawk
# importantly, awk is the last thing in this pipeline so we can see
# its exitcode
echo "$@" | lisp_with_input
lisp_eval_should_be '(string-length ".\\a.\\b.\\f.\\n.\\r.\\t.\\v.\\\\.\\".")' '19' 'string read backslash escapes'
lisp_eval_should_be_tricky_output '(mapcar (lambda (x) (substr ".\\a.\\b.\\f.\\n.\\r.\\t.\\v.\\\\.\\"." x 1)) '\''(2 4 6 8 10 12 14 16 18))' ' 28 22 5c 61 22 20 22 5c 62 22 20 22 5c 66 22 20 22 5c 6e 22 20 22 5c 72 22 20 22 5c 74 22 20 22 5c 76 22 20 22 5c 5c 22 20 22 5c 22 22 29 0a' 'string print backslash escapes'
lisp_eval_should_be_tricky_output ' "\\\\.\\\\\\\\.\\\\\\\\\\\\\\\\.\\n"' ' 22 5c 5c 2e 5c 5c 5c 5c 2e 5c 5c 5c 5c 5c 5c 5c 5c 2e 5c 6e 22 0a' 'backslash-escaped backslashes'
lisp_eval_should_be '(string-length "\\\\.\\\\\\\\.\\\\\\\\\\\\\\\\.\\n")' '11' 'backslash-escaped backslashes 2'
lisp_eval_should_be_tricky_tricky 'KHN0cmluZy1sZW5ndGggIi5cYS5cYi5cZi5cbi5cci5cdC5cdi5cXC5cIi4iKQ==' 'MTkK' 'string read backslash escapes'
#lisp_eval_should_be '(mapcar (lambda (x) (substr ".\a.\b.\f.\n.\r.\t.\v.\\.\"." x 1)) '\''(2 4 6 8 10 12 14 16 18))' '("\a" "\b" "\f" "\n" "\r" "\t" "\v" "\\" "\"")'
lisp_eval_should_be_tricky_tricky 'KG1hcGNhciAobGFtYmRhICh4KSAoc3Vic3RyICIuXGEuXGIuXGYuXG4uXHIuXHQuXHYuXFwuXCIu
IiB4IDEpKSAocXVvdGUgKDIgNCA2IDggMTAgMTIgMTQgMTYgMTgpKSk=' \
'KCJcYSIgIlxiIiAiXGYiICJcbiIgIlxyIiAiXHQiICJcdiIgIlxcIiAiXCIiKQo=' \
'printing backslash escapes'
#lisp_eval_should_be '"\\.\\\\.\\\\\\\\.\n"' '"\\.\\\\.\\\\\\\\.\n"
# ' 'backslash-escaped backslashes'
lisp_eval_should_be_tricky_tricky 'IlxcLlxcXFwuXFxcXFxcXFwuXG4i' 'IlxcLlxcXFwuXFxcXFxcXFwuXG4iCg==' 'backslash-escaped backslashes'
#lisp_eval_should_be '(string-length "\\.\\\\.\\\\\\\\.\n")' '11' 'backslash-escaped backslashes 2'
lisp_eval_should_be_tricky_tricky 'KHN0cmluZy1sZW5ndGggIlxcLlxcXFwuXFxcXFxcXFwuXG4iKQ==' 'MTEK' 'backslash-escaped backslashes 2'
} else if(match(input, /^;[^\n]*/)) # comment
_push_token(substr(input, 1, RLENGTH), tokens, where)
else if(match(input, /^[^][ ('"`,;)@]+/)) # non-special chars
} else if(match(input, /^;[^\n]*$/)) { # comment
# don't push any tokens at all: it's difficult to pick
# out comment tokens when reading, but easy here
#
# _push_token(substr(input, 1, RLENGTH), tokens, where)
} else if(match(input, /^[^][ ('"`,;)@]+/)) # non-special chars