(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: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 28 stdin_parts: [('(let* ((x 2))\n') (' x)\n')] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [19 29] ) } 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: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 65 stdin_parts: [('(let* ((x 2)\n') (' (y x))\n') (' y)\n')] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [55 66] ) } spids: [54] ) ] spids: [54] ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 2'))} {(DQ (${ VSub_Name value))} {(DQ ('let* reading 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: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 102 stdin_parts: [('(let* ((x 2))\n') (' x\n') (' (* 5 x))\n')] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [92 103] ) } spids: [91] ) ] spids: [91] ) (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)}) ] )