(CommandList children: [ (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [6 11] ) (/test.sh) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("(let ((x 2))\n") (" x)\n"))} do_expansion: True here_end: EOF was_filled: True spids: [22] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [19 27] ) } spids: [18] ) ] spids: [18] ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ("Integer :: 2"))} {(DQ (${ VSub_Name value))} {(DQ ("Basic let"))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("(let ((x (+ 1 3)))\n") (" x)\n"))} do_expansion: True here_end: EOF was_filled: True spids: [56] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [53 61] ) } spids: [52] ) ] spids: [52] ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ("Integer :: 4"))} {(DQ (${ VSub_Name value))} {(DQ ("let with expression"))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("(let ((x 2)\n") (" (y x))\n") (" y)\n"))} do_expansion: True here_end: EOF was_filled: True spids: [90] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [87 96] ) } spids: [86] ) ] spids: [86] ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ (1))} {(DQ ($ VSub_QMark "$?"))} {(DQ ("let failing to read previous values"))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(../lishp.sh)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("(let ((x 2))\n") (" x\n") (" (* 5 2))\n"))} do_expansion: True here_end: EOF was_filled: True spids: [123] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [120 129] ) } spids: [119] ) ] spids: [119] ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ("Integer :: 10"))} {(DQ (${ VSub_Name value))} {(DQ ("let returning last value"))} ) (C {(assert) (Lit_Other ":") (Lit_Other ":") (report)}) ] )