(command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name __mal_printer_included__))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:__mal_printer_included spids:[27]) op: Equal rhs: {(true)} spids: [27] ) ] spids: [27] ) (C {(source)} { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(dirname)} {($ VSub_Number '$0')})]) left_token: <Left_CommandSub '$('> spids: [33 37] ) (/types.sh) } ) (command.FuncDef name: _pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:print_readably spids:[51]) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [51] ) ] spids: [49] ) (command.Sentence child: (C {(_obj_type)} {(DQ (${ VSub_Number 1))}) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ot spids:[70]) op: Equal rhs: {(DQ (${ VSub_Name r))} spids: [70] ) ] spids: [68] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_z child: {(DQ (${ VSub_Name ot))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_error)} {(DQ ("_pr_str failed on '") (${ VSub_Number 1) ("'"))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[107]) op: Equal rhs: {(DQ ('<') (${ VSub_Number 1) ('>'))} spids: [107] ) ] spids: [107] ) ] spids: [16777215 93] ) ] else_action: [ (C {(eval)} {(${ VSub_Name ot) (_pr_str)} {(DQ (${ VSub_Number 1))} {(DQ (${ VSub_Name print_readably))} ) ] spids: [117 140] ) ] spids: [46] ) spids: [41 45] ) (command.FuncDef name: nil_pr_str body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[152]) op: Equal rhs: {(DQ (nil))} spids: [152] ) ] spids: [152] ) terminator: <Op_Semi ';'> ) ] spids: [150] ) spids: [145 149] ) (command.FuncDef name: true_pr_str body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[167]) op: Equal rhs: {(DQ (true))} spids: [167] ) ] spids: [167] ) terminator: <Op_Semi ';'> ) ] spids: [165] ) spids: [160 164] ) (command.FuncDef name: false_pr_str body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[182]) op: Equal rhs: {(DQ (false))} spids: [182] ) ] spids: [182] ) terminator: <Op_Semi ';'> ) ] spids: [180] ) spids: [175 179] ) (command.FuncDef name: number_pr_str body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[198]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [200 209] ) ) } spids: [198] ) ] spids: [198] ) terminator: <Op_Semi ';'> ) ] spids: [196] ) spids: [191 195] ) (command.FuncDef name: symbol_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[224]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [226 235] ) ) } spids: [224] ) ] spids: [224] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[239]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name r> suffix_op: (suffix_op.PatSub pat: {(__STAR__)} replace: {('*')} replace_mode: Lit_Slash spids: [243] ) spids: [241 248] ) ) } spids: [239] ) ] spids: [239] ) ] spids: [221] ) spids: [216 220] ) (command.FuncDef name: keyword_pr_str body: (command.BraceGroup children: [(C {(string_pr_str)} {(DQ (${ VSub_Number 1))})] spids: [259] ) spids: [254 258] ) (command.FuncDef name: _raw_string_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:s spids:[283]) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [283] ) ] spids: [281] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:print_readably spids:[293]) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [293] ) ] spids: [291] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobEqual left: { (DQ (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [306 312] ) ) } right: {(DQ (${ VSub_Name __keyw))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[329]) op: Equal rhs: { (DQ (':') (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [332 336] ) ) } spids: [329] ) ] spids: [329] ) ] spids: [16777215 326] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobEqual left: { (DQ (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) spids: [345 351] ) ) } right: {(DQ (${ VSub_Name __keyw))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[368]) op: Equal rhs: { (DQ (':') (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) spids: [371 375] ) ) } spids: [368] ) ] spids: [368] ) ] spids: [340 365] ) (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name print_readably))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (yes))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:s spids:[402]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) } replace: { (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) } replace_mode: Lit_Slash spids: [406] ) spids: [404 412] ) ) } spids: [402] ) ] spids: [402] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:s spids:[416]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.PatSub pat: { (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) } replace: { (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) } replace_mode: Lit_Slash spids: [420] ) spids: [418 426] ) ) } spids: [416] ) ] spids: [416] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[430]) op: Equal rhs: { (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (word_part.BracedVarSub token: <VSub_Name s> suffix_op: (suffix_op.PatSub pat: {(Lit_Other '$') ("'") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\n'> ) ("'") } replace: { (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (n) } replace_mode: Lit_Slash spids: [435] ) spids: [433 444] ) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } spids: [430] ) ] spids: [430] ) ] spids: [379 399] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[452]) op: Equal rhs: {(DQ (${ VSub_Name s))} spids: [452] ) ] spids: [452] ) ] spids: [449 460] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[463]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name r> suffix_op: (suffix_op.PatSub pat: {(__STAR__)} replace: {(Lit_Other '$') ("'*'")} replace_mode: Lit_Slash spids: [467] ) spids: [465 473] ) ) } spids: [463] ) ] spids: [463] ) ] spids: [278] ) spids: [273 277] ) (command.FuncDef name: string_pr_str body: (command.BraceGroup children: [ (C {(_raw_string_pr_str)} { (DQ (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [490 499] ) ) } {(DQ (${ VSub_Number 2))} ) ] spids: [484] ) spids: [479 483] ) (command.FuncDef name: function_pr_str body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[518]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [520 529] ) ) } spids: [518] ) ] spids: [518] ) terminator: <Op_Semi ';'> ) ] spids: [516] ) spids: [511 515] ) (command.FuncDef name: bash_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[544]) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(Assign_Declare declare)} {(-f)} {(-p)} {(${ VSub_Number 1)}) ] ) left_token: <Left_CommandSub '$('> spids: [546 556] ) ) } spids: [544] ) ] spids: [544] ) ] spids: [541] ) spids: [536 540] ) (command.FuncDef name: hash_map_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:print_readably spids:[572]) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [572] ) ] spids: [570] ) (command.Sentence child: (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[582]) op: Equal rhs: {(DQ )} spids: [582] ) ] spids: [580] ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:val spids:[589]) op: Equal rhs: {(DQ )} spids: [589] ) ] spids: [587] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:hm spids:[596]) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [598 607] ) ) } spids: [596] ) ] spids: [594] ) (C {(eval)} {(Assign_Local local)} {(Lit_VarLike 'keys=') (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{!') (${ VSub_Name hm) ('[@]}') ) } ) (command.ForEach iter_name: key iter_words: [{(${ VSub_Name keys)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(_raw_string_pr_str)} {(DQ (${ VSub_Name key))} {(DQ (${ VSub_Name print_readably))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[655]) op: Equal rhs: {(DQ (${ VSub_Name res) (' ') (${ VSub_Name r))} spids: [655] ) ] spids: [655] ) (C {(eval)} {(Lit_VarLike 'val=') (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{') (${ VSub_Name hm) ('[') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (${ VSub_Name key) (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (']}') ) } ) (C {(_pr_str)} {(DQ (${ VSub_Name val))} {(DQ (${ VSub_Name print_readably))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[701]) op: Equal rhs: {(DQ (${ VSub_Name res) (' ') (${ VSub_Name r))} spids: [701] ) ] spids: [701] ) ] spids: [637 713] ) spids: [631 635] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[716]) op: Equal rhs: { (DQ ('{') (word_part.BracedVarSub token: <VSub_Name res> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [719 723] ) ('}') ) } spids: [716] ) ] spids: [716] ) ] spids: [567] ) spids: [562 566] ) (command.FuncDef name: vector_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:print_readably spids:[740]) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [740] ) ] spids: [738] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[750]) op: Equal rhs: {(DQ )} spids: [750] ) ] spids: [748] ) (command.ForEach iter_name: elem iter_words: [ { (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [761 770] ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(_pr_str)} {(DQ (${ VSub_Name elem))} {(DQ (${ VSub_Name print_readably))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[791]) op: Equal rhs: {(DQ (${ VSub_Name res) (' ') (${ VSub_Name r))} spids: [791] ) ] spids: [791] ) ] spids: [773 803] ) spids: [760 771] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[806]) op: Equal rhs: { (DQ ('[') (word_part.BracedVarSub token: <VSub_Name res> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [809 813] ) (']') ) } spids: [806] ) ] spids: [806] ) ] spids: [735] ) spids: [730 734] ) (command.FuncDef name: list_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:print_readably spids:[830]) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [830] ) ] spids: [828] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[840]) op: Equal rhs: {(DQ )} spids: [840] ) ] spids: [838] ) (command.ForEach iter_name: elem iter_words: [ { (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [851 860] ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(_pr_str)} {(DQ (${ VSub_Name elem))} {(DQ (${ VSub_Name print_readably))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:res spids:[881]) op: Equal rhs: {(DQ (${ VSub_Name res) (' ') (${ VSub_Name r))} spids: [881] ) ] spids: [881] ) ] spids: [863 893] ) spids: [850 861] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[896]) op: Equal rhs: { (DQ ('(') (word_part.BracedVarSub token: <VSub_Name res> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [899 903] ) (')') ) } spids: [896] ) ] spids: [896] ) ] spids: [825] ) spids: [820 824] ) (command.FuncDef name: atom_pr_str body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:print_readably spids:[920]) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [920] ) ] spids: [918] ) (C {(_pr_str)} { (DQ (word_part.BracedVarSub token: <VSub_Name ANON> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(DQ (${ VSub_Number 1))}) ) spids: [931 940] ) ) } {(DQ (${ VSub_Name print_readably))} ) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[950]) op: Equal rhs: {(DQ ('(atom ') (${ VSub_Name r) (')'))} spids: [950] ) ] spids: [950] ) terminator: <Op_Semi ';'> ) ] spids: [915] ) spids: [910 914] ) ] spids: [16777215 25] ) ] spids: [16777215 963] )