(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/stdin)} spids:[5])] ) ] ) left_token: <Left_CommandSub "$("> spids: [4 7] ) } spids: [3] ) (assign_pair lhs: (LhsName name:oldlang) op: Equal rhs: {($ VSub_Name "$LANG")} spids: [9] ) (assign_pair lhs:(LhsName name:LANG) op:Equal rhs:{(C)} spids:[12]) ] spids: [3] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:str) op: Equal rhs: {(SQ <"(\"(\\\\.|[^\\\\\"])*\")">)} spids: [15] ) ] spids: [15] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:num) op: Equal rhs: { (DQ ("(-?(0|[1-9][0-9]*)(") (EscapedLiteralPart token:<Lit_EscapedChar "\\.">) ("[0-9]+)?([eE][+-]?[0-9]+)?)") ) } spids: [23] ) ] spids: [23] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:val) op: Equal rhs: {(DQ ("((str|num|obj|arr)[a-j]+|true|false|null)"))} spids: [30] ) ] spids: [30] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arr) op: Equal rhs: { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\[">) ("(") ($ VSub_Name "$val") ("(,") ($ VSub_Name "$val") (")*)?]") ) } spids: [35] ) ] spids: [35] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:obj) op: Equal rhs: { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\{">) ("(str[a-j]+:") ($ VSub_Name "$val") ("(,str[a-j]+:") ($ VSub_Name "$val") (")*)?}") ) } spids: [45] ) ] spids: [45] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tr) op: Equal rhs: { (ArrayLiteralPart words: [ {(Lit_LBrace "{") (a..j) (Lit_RBrace "}") (Lit_LBrace "{") (a..j) (Lit_RBrace "}") (Lit_LBrace "{") (a..j) (Lit_RBrace "}") } ] ) } spids: [55] ) ] spids: [55] ) (Assignment keyword: Assign_Declare flags: ["'-n'"] pairs: [(assign_pair lhs:(LhsName name:match) op:Equal spids:[75])] spids: [71] ) (FuncDef name: push body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_Declare flags: ["'-gn'"] pairs: [ (assign_pair lhs: (LhsName name:list) op: Equal rhs: {(${ VSub_Name type) (_list)} spids: [89] ) ] spids: [85] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:list) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [99 104] ) ) } ] ) } spids: [96] ) ] spids: [96] ) terminator: <Op_Semi ";"> ) ] spids: [83] ) spids: [78 82] ) (FuncDef name: match body: (ForEach iter_name: match iter_words: [{(str)} {(num)} {(obj)} {(arr)}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (BracedVarSub token: <VSub_Name match> prefix_op: VSub_Bang spids: [140 143] ) } right: {(str)} ) right: (LogicalNot child: (BoolBinary op_id: BoolBinary_ne left: {(i) (Lit_Other "+") (Lit_Other "+")} right: {(0)} ) ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (BracedVarSub token: <VSub_Name json> suffix_op: (PatSub pat: {("[") (SQ <" "> <Lit_EscapedChar "\\t"> <Lit_EscapedChar "\\n"> <Lit_EscapedChar "\\r"> ) ("]") } do_all: True do_prefix: False do_suffix: False ) spids: [166 178] ) } spids: [165] ) ] spids: [165] ) ] op_id: Op_DAmp ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Name "$json")} right: {($ VSub_Name "$match") ("(") (.) (Lit_Other "*") (")")} ) ) (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: { (BracedVarSub token: <VSub_Name match> prefix_op: VSub_Bang spids: [200 203] ) } spids: [199] ) ] spids: [199] ) terminator: <Op_Semi ";"> ) (Sentence child: (ControlFlow token:<ControlFlow_Return return>) terminator: <Op_Semi ";"> ) ] spids: [197] ) ] op_id: Op_DAmp ) ] spids: [132 212] ) spids: [122 130] ) spids: [111 115] ) (While cond: [(Sentence child:(C {(match)}) terminator:<Op_Semi ";">)] body: (DoGroup children: [ (C {(push)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (BracedVarSub token: <VSub_Name json> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(DQ ($ VSub_Name "$BASH_REMATCH"))} ) spids: [229 235] ) ($ VSub_Name "$type") (BracedVarSub token: <VSub_Name tr> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name list> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [240 246] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [237 250] ) (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr: (ArithUnary op_id: Node_UnaryMinus child: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [251 257] ) } spids: [228] ) ] spids: [228] ) ] spids: [220 259] ) ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Name "$json")} right: {(Lit_Other "^") ($ VSub_Name "$val") (Lit_Other "$")} ) ) (C {(exit)}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_Declare flags: ["'-A'"] pairs: [(assign_pair lhs:(LhsName name:rt) op:Equal spids:[290])] spids: [286] ) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token:<VSub_Name tr> bracket_op:(WholeArray op_id:Lit_At) spids:[305310])) } ] do_arg_iter: False body: (DoGroup children: [ (Sentence child: (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsIndexedName name:rt index:(ArithWord w:{($ VSub_Name "$i")})) right: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:j)) ) ) terminator: <Op_Semi ";"> ) ] spids: [314 328] ) spids: [303 312] ) (Sentence child:(C {(set)} {(-f)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LANG) op: Equal rhs: {($ VSub_Name "$oldlang")} spids: [335] ) (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(Lit_Other ":") (Lit_Comma ",")} spids: [338] ) (assign_pair lhs: (LhsName name:regex) op: Equal rhs: {(SQ <"(\\\\[nftrb]|\\\\\\\\|\\\\u[a-f0-9]{4})">)} spids: [342] ) ] spids: [335] ) (C {(shopt)} {(-s)} {(nocasematch)}) (FuncDef name: print body: (Case to_match: {($ VSub_Number "$1")} arms: [ (case_arm pat_list: [{(null)} {(true)} {(false)}] action: [(C {(printf)} {(DQ ($ VSub_Number "$1"))})] spids: [366 371 379 -1] ) (case_arm pat_list: [{(str) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tmp) op: Equal rhs: { (BracedVarSub token: <VSub_Name str_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)})) spids: [392 396] ) } ) ) ) spids: [387 399] ) } spids: [386] ) ] spids: [386] ) (While cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Name "$tmp")} right: {($ VSub_Name "$regex") ("(") (.) (Lit_Other "*") (")")} ) ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (C {(printf)} {(Lit_Other "%") (s)} { (DQ (BracedVarSub token: <VSub_Name tmp> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: {(DQ ($ VSub_Name "$BASH_REMATCH"))} ) spids: [428 434] ) ) } ) (Case to_match: { (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [440 445] ) } arms: [ (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u0008)}] action: [(C {(printf)} {(SQ <"\\\\b">)})] spids: [450 452 460 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u0009)}] action: [(C {(printf)} {(SQ <"\\\\t">)})] spids: [462 464 472 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u000a)}] action: [(C {(printf)} {(SQ <"\\\\n">)})] spids: [475 477 485 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u000c)}] action: [(C {(printf)} {(SQ <"\\\\f">)})] spids: [487 489 497 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u000d)}] action: [(C {(printf)} {(SQ <"\\\\r">)})] spids: [500 502 510 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u0022)}] action: [(C {(printf)} {(SQ <"\\\\\"">)})] spids: [512 514 522 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u005c)}] action: [(C {(printf)} {(SQ <"\\\\\\\\">)})] spids: [525 527 535 -1] ) (case_arm pat_list: [ {(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (EscapedLiteralPart token: <Lit_EscapedChar "\\\\"> ) } {(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (Lit_Other "[") (nftrb) (Lit_Other "]") } {(EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) (u00) (Lit_Other "[") (01) (Lit_Other "]") (Lit_Other "?") } ] action: [ (C {(printf)} {(Lit_Other "%") (s)} { (DQ (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [560 565] ) ) } ) ] spids: [538 552 568 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(printf)} {(Lit_Other "%") (b)} { (DQ (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [580 585] ) ) } ) ] spids: [571 572 -1 589] ) ] spids: [438 447 589] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tmp) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)})) spids: [593 598] ) } spids: [592] ) ] spids: [592] ) ] spids: [419 601] ) ) (C {(printf)} {(Lit_Other "%") (s)} {(DQ ($ VSub_Name "$tmp"))}) ] spids: [382 384 613 -1] ) (case_arm pat_list: [{(num) (Lit_Other "*")}] action: [ (C {(printf)} {(Lit_Other "%") (s)} { (DQ (BracedVarSub token: <VSub_Name num_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)})) spids: [634 638] ) } ) ) ) spids: [629 641] ) ) } ) ] spids: [619 621 644 -1] ) (case_arm pat_list: [{(arr) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:array) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name arr_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 3)}) ) spids: [660 664] ) } ) ) ) spids: [655 667] ) } ] ) } spids: [653] ) ] spids: [651] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithUnary op_id: Arith_Bang child: (ArithWord w: { (BracedVarSub token: <VSub_Name array> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [675 681] ) } ) ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(printf)} {(DQ ("[]"))})] spids: [-1 686] ) ] else_action: [ (Sentence child: (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:indent) right: (ArithWord w:{(Lit_Digits 2)}) ) ) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ ("[") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))}) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w: { (BracedVarSub token: <VSub_Name array> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [717 723] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (Sentence child: (C {(printf)} {(DQ ("%*s"))} {(DQ ($ VSub_Name "$indent"))}) terminator: <Op_Semi ";"> ) (Sentence child: (C {(print)} {(DQ ($ VSub_Name "$array"))}) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ (",") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:array) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name array> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 1)})) spids: [762 769] ) ) } ] ) } spids: [759] ) ] spids: [759] ) ] spids: [730 774] ) ) (Sentence child: (C {(printf)} {(DQ ("%*s"))} {(DQ ($ VSub_Name "$indent"))}) terminator: <Op_Semi ";"> ) (C {(print)} {(DQ ($ VSub_Name "$array"))}) (C {(printf)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ("%*s]"))} { (DQ (ArithSubPart anode: (BinaryAssign op_id: Arith_MinusEqual left: (LhsName name:indent) right: (ArithWord w:{(Lit_Digits 2)}) ) spids: [803 808] ) ) } ) ] spids: [695 812] ) ] spids: [647 649 814 -1] ) (case_arm pat_list: [{(obj) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name obj_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 3)}) ) spids: [830 834] ) } ) ) ) spids: [825 837] ) } ] ) } spids: [823] ) ] spids: [821] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithUnary op_id: Arith_Bang child: (ArithWord w: { (BracedVarSub token: <VSub_Name object> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [845 851] ) } ) ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(printf)} {(DQ ("{}"))})] spids: [-1 856] ) ] else_action: [ (Sentence child: (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:indent) right: (ArithWord w:{(Lit_Digits 2)}) ) ) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ ("{") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))}) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w: { (BracedVarSub token: <VSub_Name object> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [887 893] ) } ) right: (ArithWord w:{(Lit_Digits 2)}) ) ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (Sentence child: (C {(printf)} {(DQ ("%*s"))} {(DQ ($ VSub_Name "$indent"))}) terminator: <Op_Semi ";"> ) (Sentence child: (C {(print)} {(DQ ($ VSub_Name "$object"))}) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ (": "))}) (Sentence child: (C {(print)} { (DQ (BracedVarSub token: <VSub_Name object> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [931 936] ) ) } ) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ (",") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name object> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)})) spids: [951 958] ) ) } ] ) } spids: [948] ) ] spids: [948] ) ] spids: [900 963] ) ) (Sentence child: (C {(printf)} {(DQ ("%*s"))} {(DQ ($ VSub_Name "$indent"))}) terminator: <Op_Semi ";"> ) (Sentence child: (C {(print)} {(DQ ($ VSub_Name "$object"))}) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ (": "))}) (Sentence child: (C {(print)} { (DQ (BracedVarSub token: <VSub_Name object> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [994 999] ) ) } ) terminator: <Op_Semi ";"> ) (C {(printf)} {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))}) (C {(printf)} {(DQ ("%*s}"))} { (DQ (ArithSubPart anode: (BinaryAssign op_id: Arith_MinusEqual left: (LhsName name:indent) right: (ArithWord w:{(Lit_Digits 2)}) ) spids: [1017 1022] ) ) } ) ] spids: [865 1026] ) ] spids: [817 819 1028 -1] ) ] spids: [359 363 1031] ) spids: [353 357] ) (ForEach iter_name: arg do_arg_iter: True body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$arg")} arms: [ (case_arm pat_list: [{(obj) (Lit_Other "*")}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {($ VSub_Name "$json")} right: {(obj) (Lit_Other "*")} ) ) (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: {(null)} spids: [1073] ) ] spids: [1073] ) terminator: <Op_Semi ";"> ) (Sentence child: (ControlFlow token:<ControlFlow_Break break>) terminator: <Op_Semi ";"> ) ] spids: [1071] ) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (BracedVarSub token: <VSub_Name obj_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Name json> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 3)}) ) spids: [1089 1093] ) } ) ) ) spids: [1084 1096] ) } spids: [1083] ) (assign_pair lhs: (LhsName name:object) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$json")}])} spids: [1098] ) ] spids: [1083] ) (While cond: [ (Sentence child: (DParen child: (ArithWord w: { (BracedVarSub token: <VSub_Name object> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1107 1113] ) } ) ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: { (BracedVarSub token: <VSub_Name str_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Name object> suffix_op: (Slice begin: (ArithWord w: {(Lit_Digits 3)} ) ) spids: [1130 1134] ) } ) ) ) spids: [1125 1137] ) } right: { (DQ (BracedVarSub token: <VSub_Name arg> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 5)}) ) spids: [1142 1146] ) ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (BracedVarSub token: <VSub_Name object> bracket_op: (ArrayIndex expr: (ArithWord w:{(Lit_Digits 1)}) ) spids: [1156 1161] ) } spids: [1155] ) ] spids: [1155] ) (ControlFlow token: <ControlFlow_Continue continue> arg_word: {(2)} ) ] spids: [-1 1152] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name object> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 2)}) ) spids: [1174 1181] ) ) } ] ) } spids: [1171] ) ] spids: [1171] ) ] spids: [1169 1186] ) ] spids: [1118 1189] ) ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: {(null)} spids: [1192] ) ] spids: [1192] ) terminator: <Op_Semi ";"> ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [1054 1056 1198 -1] ) (case_arm pat_list: [{(arr) (Lit_Other "*")}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {($ VSub_Name "$json")} right: {(arr) (Lit_Other "*")} ) ) (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: {(null)} spids: [1220] ) ] spids: [1220] ) terminator: <Op_Semi ";"> ) (Sentence child: (ControlFlow token:<ControlFlow_Break break>) terminator: <Op_Semi ";"> ) ] spids: [1218] ) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (BracedVarSub token: <VSub_Name arr_list> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:rt) right: (ArithWord w: { (BracedVarSub token: <VSub_Name json> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 3)}) ) spids: [1236 1240] ) } ) ) ) spids: [1231 1243] ) } spids: [1230] ) (assign_pair lhs: (LhsName name:array) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$json")}])} spids: [1245] ) ] spids: [1230] ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_GreatEqual left: (ArithWord w: { (BracedVarSub token: <VSub_Name array> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1252 1258] ) } ) right: (ArithWord w: { (BracedVarSub token: <VSub_Name arg> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 5)})) spids: [1262 1266] ) } ) ) ) (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: {(null)} spids: [1275] ) ] spids: [1275] ) terminator: <Op_Semi ";"> ) (Sentence child: (ControlFlow token:<ControlFlow_Break break>) terminator: <Op_Semi ";"> ) ] spids: [1273] ) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:json) op: Equal rhs: { (BracedVarSub token: <VSub_Name array> bracket_op: (ArrayIndex expr: (ArithWord w: { (BracedVarSub token: <VSub_Name arg> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 5)})) spids: [1289 1293] ) } ) ) spids: [1286 1295] ) } spids: [1285] ) ] spids: [1285] ) ] spids: [1201 1203 1297 -1] ) ] spids: [1047 1051 1300] ) ] spids: [1041 1302] ) spids: [-1 -1] ) (Sentence child:(C {(print)} {(DQ ($ VSub_Name "$json"))}) terminator:<Op_Semi ";">) (C {(echo)}) ] )