(CommandList children: [ (FuncDef name: throw body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Star '$*'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[17])] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [8] ) spids: [4 7] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BRIEF) op:Equal rhs:{(0)} spids:[28])] spids: [28] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LEAFONLY) op:Equal rhs:{(0)} spids:[31])] spids: [31] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:PRUNE) op:Equal rhs:{(0)} spids:[34])] spids: [34] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NO_HEAD) op:Equal rhs:{(0)} spids:[37])] spids: [37] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NORMALIZE_SOLIDUS) op:Equal rhs:{(0)} spids:[40])] spids: [40] ) (FuncDef name: usage body: (BraceGroup children: [ (C {(echo)}) (C {(echo)} {(DQ ('Usage: JSON.sh [-b] [-l] [-p] [-s] [-h]'))}) (C {(echo)}) (C {(echo)} {(DQ ('-p - Prune empty. Exclude fields with empty values.'))}) (C {(echo)} {(DQ ('-l - Leaf only. Only show leaf nodes, which stops data duplication.'))}) (C {(echo)} {(DQ ("-b - Brief. Combines 'Leaf only' and 'Prune empty' options."))}) (C {(echo)} { (DQ ('-n - No-head. Do not show nodes that have no path (lines that start with []).')) } ) (C {(echo)} {(DQ ('-s - Remove escaping of the solidus symbol (straight slash).'))}) (C {(echo)} {(DQ ('-h - This help text.'))}) (C {(echo)}) ] spids: [48] ) spids: [44 47] ) (FuncDef name: parse_options body: (BraceGroup children: [ (C {(set)} {(--)} {(DQ ($ VSub_At '$@'))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:ARGN) op: Equal rhs: {($ VSub_Pound '$#')} spids: [129] ) ] spids: [127] ) (While cond: [(C {(Lit_Other '[')} {(DQ ($ VSub_Name '$ARGN'))} {(-ne)} {(0)} {(Lit_Other ']')})] body: (DoGroup children: [ (Case to_match: {($ VSub_Number '$1')} arms: [ (case_arm pat_list: [{(-h)}] action: [ (C {(usage)}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] spids: [158 159 169 16777215] ) (case_arm pat_list: [{(-b)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BRIEF) op: Equal rhs: {(1)} spids: [175] ) ] spids: [175] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LEAFONLY) op: Equal rhs: {(1)} spids: [179] ) ] spids: [179] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRUNE) op: Equal rhs: {(1)} spids: [183] ) ] spids: [183] ) ] spids: [172 173 187 16777215] ) (case_arm pat_list: [{(-l)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LEAFONLY) op: Equal rhs: {(1)} spids: [193] ) ] spids: [193] ) ] spids: [190 191 197 16777215] ) (case_arm pat_list: [{(-p)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PRUNE) op: Equal rhs: {(1)} spids: [203] ) ] spids: [203] ) ] spids: [200 201 207 16777215] ) (case_arm pat_list: [{(-n)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NO_HEAD) op: Equal rhs: {(1)} spids: [213] ) ] spids: [213] ) ] spids: [210 211 217 16777215] ) (case_arm pat_list: [{(-s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NORMALIZE_SOLIDUS) op: Equal rhs: {(1)} spids: [223] ) ] spids: [223] ) ] spids: [220 221 227 16777215] ) (case_arm pat_list: [{(Lit_Other '?') (Lit_Other '*')}] action: [ (C {(echo)} {(DQ ('ERROR: Unknown option.'))}) (C {(usage)}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] spids: [230 232 249 16777215] ) ] spids: [151 155 252] ) (C {(shift)} {(1)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ARGN) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:ARGN) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [261 266] ) } spids: [260] ) ] spids: [260] ) ] spids: [148 269] ) ) ] spids: [115] ) spids: [111 114] ) (FuncDef name: awk_egrep body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:pattern_string) op: Equal rhs: {($ VSub_Number '$1')} spids: [284] ) ] spids: [282] ) (C {(gawk)} { (SQ <'{\n'> <' while ($0) {\n'> <' start=match($0, pattern);\n'> <' token=substr($0, start, RLENGTH);\n'> <' print token;\n'> <' $0=substr($0, start+RLENGTH);\n'> <' }\n'> <' }'> ) } {(Lit_VarLike 'pattern=') (DQ ($ VSub_Name '$pattern_string'))} ) ] spids: [279] ) spids: [274 278] ) (FuncDef name: tokenize body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:GREP) op:Equal spids:[320])] spids: [318] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:ESCAPE) op:Equal spids:[325])] spids: [323] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:CHAR) op:Equal spids:[330])] spids: [328] ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(echo)} {(DQ ('test string'))}) (SimpleCommand words: [{(egrep)} {(-ao)} {(--color) (Lit_Other '=') (never)} {(DQ (test))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [356] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [359] ) ] ) ] negated: F ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GREP) op: Equal rhs: {(SQ <'egrep -ao --color=never'>)} spids: [366] ) ] spids: [366] ) ] spids: [16777215 363] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GREP) op: Equal rhs: {(SQ <'egrep -ao'>)} spids: [375] ) ] spids: [375] ) ] spids: [372 381] ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(echo)} {(DQ ('test string'))}) (SimpleCommand words: [{(egrep)} {(-o)} {(DQ (test))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [403] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [406] ) ] ) ] negated: F ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ESCAPE) op: Equal rhs: {(SQ <'(\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})'>)} spids: [413] ) ] spids: [413] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHAR) op: Equal rhs: {(SQ <'[^[:cntrl:]"\\\\]'>)} spids: [419] ) ] spids: [419] ) ] spids: [16777215 410] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GREP) op: Equal rhs: {(awk_egrep)} spids: [428] ) ] spids: [428] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ESCAPE) op: Equal rhs: {(SQ <'(\\\\\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})'>)} spids: [432] ) ] spids: [432] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHAR) op: Equal rhs: {(SQ <'[^[:cntrl:]"\\\\\\\\]'>)} spids: [438] ) ] spids: [438] ) ] spids: [425 444] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:STRING) op: Equal rhs: { (DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$CHAR') ('*(') ($ VSub_Name '$ESCAPE') ($ VSub_Name '$CHAR') ('*)*') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } spids: [450] ) ] spids: [448] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:NUMBER) op: Equal rhs: {(SQ <'-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?'>)} spids: [464] ) ] spids: [462] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:KEYWORD) op: Equal rhs: {(SQ <'null|false|true'>)} spids: [472] ) ] spids: [470] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:SPACE) op: Equal rhs: {(SQ <'[[:space:]]+'>)} spids: [480] ) ] spids: [478] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:is_wordsplit_disabled) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [{(unsetopt)}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [497] ) ] ) (C {(grep)} {(-c)} {(SQ <'^shwordsplit$'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [494 509] ) } spids: [493] ) ] spids: [491] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$is_wordsplit_disabled')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(Sentence child:(C {(setopt)} {(shwordsplit)}) terminator:<Op_Semi ';'>)] spids: [16777215 526] ) ] spids: [16777215 533] ) (Pipeline children: [ (C {($ VSub_Name '$GREP')} { (DQ ($ VSub_Name '$STRING') ('|') ($ VSub_Name '$NUMBER') ('|') ($ VSub_Name '$KEYWORD') ('|') ($ VSub_Name '$SPACE') ('|.') ) } ) (C {(egrep)} {(-v)} {(DQ ('^') ($ VSub_Name '$SPACE') (Lit_Other '$'))}) ] negated: F ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$is_wordsplit_disabled')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(Sentence child:(C {(unsetopt)} {(shwordsplit)}) terminator:<Op_Semi ';'>)] spids: [16777215 576] ) ] spids: [16777215 583] ) ] spids: [315] ) spids: [310 314] ) (FuncDef name: parse_array body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:index) op:Equal rhs:{(0)} spids:[598])] spids: [596] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:ary) op:Equal rhs:{(SQ )} spids:[604])] spids: [602] ) (C {(read)} {(-r)} {(token)}) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list:[{(SQ <']'>)}] spids:[626 628 630 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (While cond: [(C {(Lit_Other ':')})] body: (DoGroup children: [ (C {(parse_value)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Name '$index'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:index) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:index) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [657 662] ) } spids: [656] ) ] spids: [656] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ary) op: Equal rhs: {(DQ ($ VSub_Name '$ary')) (DQ ($ VSub_Name '$value'))} spids: [665] ) ] spids: [665] ) (C {(read)} {(-r)} {(token)}) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list: [{(SQ <']'>)}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [692 694 698 16777215] ) (case_arm pat_list: [{(SQ <','>)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ary) op: Equal rhs: {(DQ ($ VSub_Name '$ary') (','))} spids: [706] ) ] spids: [706] ) ] spids: [702 704 712 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(throw)} { (DQ ('EXPECTED , or ] GOT ') (BracedVarSub token: <VSub_Name token> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(EOF)} ) spids: [722 726] ) ) } ) ] spids: [715 716 729 16777215] ) ] spids: [682 688 732] ) (C {(read)} {(-r)} {(token)}) ] spids: [642 742] ) ) ] spids: [633 634 745 16777215] ) ] spids: [616 622 748] ) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$BRIEF'))} {(-eq)} {(0)} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(printf)} {(SQ <'[%s]'>)} {(DQ ($ VSub_Name '$ary'))})] ) left_token: <Left_CommandSub '$('> spids: [766 776] ) } spids: [765] ) ] spids: [765] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(EmptyPart)} spids: [780] ) ] spids: [780] ) ] ) (C {(Lit_Other ':')}) ] spids: [593] ) spids: [588 592] ) (FuncDef name: parse_object body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:key) op:Equal spids:[798])] spids: [796] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:obj) op:Equal rhs:{(SQ )} spids:[803])] spids: [801] ) (C {(read)} {(-r)} {(token)}) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list:[{(SQ <'}'>)}] spids:[825 827 829 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (While cond: [(C {(Lit_Other ':')})] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list: [{(SQ <'"'>) (Lit_Other '*') (SQ <'"'>)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:key) op: Equal rhs: {($ VSub_Name '$token')} spids: [862] ) ] spids: [862] ) ] spids: [854 860 865 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(throw)} { (DQ ('EXPECTED string GOT ') (BracedVarSub token: <VSub_Name token> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(EOF)} ) spids: [875 879] ) ) } ) ] spids: [868 869 882 16777215] ) ] spids: [844 850 885] ) (C {(read)} {(-r)} {(token)}) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list: [{(SQ <':'>)}] spids: [905 907 909 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(throw)} { (DQ ('EXPECTED : GOT ') (BracedVarSub token: <VSub_Name token> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(EOF)} ) spids: [919 923] ) ) } ) ] spids: [912 913 926 16777215] ) ] spids: [895 901 929] ) (C {(read)} {(-r)} {(token)}) (C {(parse_value)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Name '$key'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:obj) op: Equal rhs: { (DQ ($ VSub_Name '$obj') ($ VSub_Name '$key') (':') ($ VSub_Name '$value') ) } spids: [950] ) ] spids: [950] ) (C {(read)} {(-r)} {(token)}) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list: [{(SQ <'}'>)}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [977 979 983 16777215] ) (case_arm pat_list: [{(SQ <','>)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:obj) op: Equal rhs: {(DQ ($ VSub_Name '$obj') (','))} spids: [991] ) ] spids: [991] ) ] spids: [987 989 997 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(throw)} { (DQ ('EXPECTED , or } GOT ') (BracedVarSub token: <VSub_Name token> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(EOF)} ) spids: [1007 1011] ) ) } ) ] spids: [1000 1001 1014 16777215] ) ] spids: [967 973 1017] ) (C {(read)} {(-r)} {(token)}) ] spids: [841 1027] ) ) ] spids: [832 833 1030 16777215] ) ] spids: [815 821 1033] ) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$BRIEF'))} {(-eq)} {(0)} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(printf)} {(SQ <'{%s}'>)} {(DQ ($ VSub_Name '$obj'))})] ) left_token: <Left_CommandSub '$('> spids: [1051 1061] ) } spids: [1050] ) ] spids: [1050] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(EmptyPart)} spids: [1065] ) ] spids: [1065] ) ] ) (C {(Lit_Other ':')}) ] spids: [793] ) spids: [788 792] ) (FuncDef name: parse_value body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:jpath) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {($ VSub_Number '$1') (',')} ) spids: [1085 1090] ) ($ VSub_Number '$2') ) } spids: [1083] ) (assign_pair lhs: (LhsName name:isleaf) op: Equal rhs: {(0)} spids: [1094] ) (assign_pair lhs: (LhsName name:isempty) op: Equal rhs: {(0)} spids: [1097] ) (assign_pair lhs: (LhsName name:print) op: Equal rhs: {(0)} spids: [1100] ) ] spids: [1081] ) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list: [{(SQ <'{'>)}] action: [(C {(parse_object)} {(DQ ($ VSub_Name '$jpath'))})] spids: [1114 1116 1124 16777215] ) (case_arm pat_list: [{(SQ <'['>)}] action: [(C {(parse_array)} {(DQ ($ VSub_Name '$jpath'))})] spids: [1128 1130 1138 16777215] ) (case_arm pat_list: [{(SQ )} {(Lit_Other '[') (KW_Bang '!') (0-9) (Lit_Other ']')}] action: [ (C {(throw)} { (DQ ('EXPECTED value GOT ') (BracedVarSub token: <VSub_Name token> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EOF)}) spids: [1158 1162] ) ) } ) ] spids: [16777215 1152 1165 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {($ VSub_Name '$token')} spids: [1171] ) ] spids: [1171] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NORMALIZE_SOLIDUS'))} {(-eq)} {(1)} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$value'))}) (C {(sed)} {(SQ <'s#\\\\/#/#g'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [1194 1208] ) } spids: [1193] ) ] spids: [1193] ) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:isleaf) op:Equal rhs:{(1)} spids:[1211])] spids: [1211] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$value'))} {(Lit_Other '=')} {(SQ <'""'>)} {(Lit_Other ']')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:isempty) op: Equal rhs: {(1)} spids: [1231] ) ] spids: [1231] ) ] ) ] spids: [1168 1169 1235 16777215] ) ] spids: [1104 1110 1238] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$value'))} {(Lit_Other '=')} {(SQ )} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$NO_HEAD'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$jpath'))} {(Lit_Other ']')}) (ControlFlow token:<ControlFlow_Return return>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$LEAFONLY'))} {(-eq)} {(0)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$PRUNE'))} {(-eq)} {(0)} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:print) op:Equal rhs:{(1)} spids:[1317])] spids: [1317] ) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$LEAFONLY'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$isleaf'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {($ VSub_Name '$PRUNE')} {(-eq)} {(0)} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:print) op:Equal rhs:{(1)} spids:[1361])] spids: [1361] ) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$LEAFONLY'))} {(-eq)} {(0)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$PRUNE'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$isempty'))} {(-eq)} {(0)} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:print) op:Equal rhs:{(1)} spids:[1407])] spids: [1407] ) ] ) (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$LEAFONLY'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$isleaf'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {($ VSub_Name '$PRUNE')} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {($ VSub_Name '$isempty')} {(-eq)} {(0)} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:print) op:Equal rhs:{(1)} spids:[1465])] spids: [1465] ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$print'))} {(-eq)} {(1)} {(Lit_Other ']')}) (C {(printf)} {(DQ ('[%s]') (Lit_Other '\\') ('t%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Name '$jpath'))} {(DQ ($ VSub_Name '$value'))} ) ] ) (C {(Lit_Other ':')}) ] spids: [1078] ) spids: [1073 1077] ) (FuncDef name: parse body: (BraceGroup children: [ (C {(read)} {(-r)} {(token)}) (C {(parse_value)}) (C {(read)} {(-r)} {(token)}) (Case to_match: {(DQ ($ VSub_Name '$token'))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[16777215 1543 1545 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(throw)} {(DQ ('EXPECTED EOF GOT ') ($ VSub_Name '$token'))})] spids: [1548 1549 1558 16777215] ) ] spids: [1532 1538 1561] ) ] spids: [1512] ) spids: [1507 1511] ) (If arms: [ (if_arm cond: [ (Sentence child: (Subshell child: (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$0'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$BASH_SOURCE'))} {(Lit_Other ']')} ) (Pipeline children: [ (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$BASH_SOURCE'))} {(Lit_Other ']')} ) ] negated: T ) ] ) spids: [1568 1596] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(parse_options)} {(DQ ($ VSub_At '$@'))}) (Pipeline children:[(C {(tokenize)}) (C {(parse)})] negated:F) ] spids: [16777215 1599] ) ] spids: [16777215 1615] ) ] )