(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:min_slab_name_size) op:Equal rhs:{(11)} spids:[82])] spids: [82] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:xmin) op:Equal rhs:{(0)} spids:[85])] spids: [85] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:xmax) op:Equal rhs:{(0)} spids:[88])] spids: [88] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:width) op:Equal rhs:{(1500)} spids:[91])] spids: [91] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:height) op:Equal rhs:{(700)} spids:[94])] spids: [94] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:mode) op:Equal rhs:{(preprocess)} spids:[97])] spids: [97] ) (FuncDef name: usage body: (BraceGroup children: [ (C {(echo)} {(DQ ('Usage: [-s W,H] [-r MIN,MAX] [-t|-l] FILE1 [FILE2 ..]'))}) (C {(echo)} {(DQ ("FILEs must contain 'slabinfo -X' samples"))}) (C {(echo)} {(DQ ('-t \t\t\t- plot totals for FILE(s)'))}) (C {(echo)} {(DQ ('-l \t\t\t- plot slabs stats for FILE(s)'))}) (C {(echo)} {(DQ ('-s %d,%d\t\t- set image width and height'))}) (C {(echo)} {(DQ ('-r %d,%d\t\t- use data samples from a given range'))}) ] spids: [105] ) spids: [101 104] ) (FuncDef name: check_file_exist body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ("File '") ($ VSub_Number '$1') ("' does not exist"))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 174] ) ] spids: [16777215 191] ) ] spids: [156] ) spids: [152 155] ) (FuncDef name: do_slabs_plotting body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Number '$1')} spids: [205] ) ] spids: [203] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:out_file) op:Equal spids:[211])] spids: [209] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:range) op: Equal rhs: {(DQ ('every ::') ($ VSub_Name '$xmin'))} spids: [216] ) ] spids: [214] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:xtic) op:Equal rhs:{(DQ )} spids:[225])] spids: [223] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:xtic_rotate) op: Equal rhs: {(DQ (norotate))} spids: [232] ) ] spids: [230] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:lines) op:Equal rhs:{(2000000)} spids:[240])] spids: [238] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:wc_lines) op:Equal spids:[246])] spids: [244] ) (C {(check_file_exist)} {(DQ ($ VSub_Name '$file'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:out_file) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name '$file'))})] ) left_token: <Left_Backtick '`'> spids: [259 265] ) } spids: [258] ) ] spids: [258] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$xmax')} {(-ne)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:range) op: Equal rhs: {(DQ ($ VSub_Name '$range') ('::') ($ VSub_Name '$xmax'))} spids: [284] ) ] spids: [284] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lines) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:xmax) right: (ArithVarRef name:xmin) ) spids: [293 298] ) } spids: [292] ) ] spids: [292] ) ] spids: [16777215 281] ) ] spids: [16777215 301] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:wc_lines) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(cat)} {(DQ ($ VSub_Name '$file'))}) (C {(wc)} {(-l)})] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [306 318] ) } spids: [305] ) ] spids: [305] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')}) (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$wc_lines'))} {(-eq)} {(0)} {(Lit_Other ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:wc_lines) op: Equal rhs: {($ VSub_Name '$lines')} spids: [352] ) ] spids: [352] ) ] spids: [16777215 349] ) ] spids: [16777215 356] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$wc_lines'))} {(-lt)} {(DQ ($ VSub_Name '$lines'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lines) op: Equal rhs: {($ VSub_Name '$wc_lines')} spids: [380] ) ] spids: [380] ) ] spids: [16777215 377] ) ] spids: [16777215 384] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (ArithSubPart anode: (ArithBinary op_id: Arith_Slash left: (ArithVarRef name:width) right: (ArithVarRef name:lines) ) spids: [392 399] ) } {(-gt)} {($ VSub_Name '$min_slab_name_size')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:xtic) op: Equal rhs: {(DQ (':xtic(1)'))} spids: [411] ) ] spids: [411] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:xtic_rotate) op: Equal rhs: {(90)} spids: [417] ) ] spids: [417] ) ] spids: [16777215 408] ) ] spids: [16777215 421] ) (SimpleCommand words: [{(gnuplot)} {(-p)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 466 stdin_parts: [ ('#!/usr/bin/env gnuplot\n') ('\n') ('set terminal png enhanced size ') ($ VSub_Name '$width') (',') ($ VSub_Name '$height') (' large\n') ("set output '") ($ VSub_Name '$out_file') (".png'\n") ('set autoscale xy\n') ("set xlabel 'samples'\n") ("set ylabel 'bytes'\n") ('set style histogram columnstacked title textcolor lt -1\n') ('set style fill solid 0.15\n') ('set xtics rotate ') ($ VSub_Name '$xtic_rotate') ('\n') ('set key left above Left title reverse\n') ('\n') ('plot ') (Right_DoubleQuote '"') ($ VSub_Name '$file') (Right_DoubleQuote '"') (' ') ($ VSub_Name '$range') (' u 2') ($ VSub_Name '$xtic') (" title 'SIZE' with boxes,") ("\t'' ") ($ VSub_Name '$range') (" u 3 title 'LOSS' with boxes\n") ] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ($ VSub_Name '$out_file') (.png))})] spids: [16777215 482] ) ] spids: [16777215 493] ) ] spids: [200] ) spids: [196 199] ) (FuncDef name: do_totals_plotting body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:gnuplot_cmd) op:Equal rhs:{(DQ )} spids:[507])] spids: [505] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:range) op: Equal rhs: {(DQ ('every ::') ($ VSub_Name '$xmin'))} spids: [514] ) ] spids: [512] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:file) op:Equal rhs:{(DQ )} spids:[523])] spids: [521] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$xmax')} {(-ne)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:range) op: Equal rhs: {(DQ ($ VSub_Name '$range') ('::') ($ VSub_Name '$xmax'))} spids: [545] ) ] spids: [545] ) ] spids: [16777215 542] ) ] spids: [16777215 553] ) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name t_files> bracket_op: (WholeArray op_id:Lit_At) spids: [564 569] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (C {(check_file_exist)} {(DQ ($ VSub_Name '$i'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {(DQ ($ VSub_Name '$file')) (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name '$i'))})] ) left_token: <Left_Backtick '`'> spids: [588 594] ) } spids: [584] ) ] spids: [584] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gnuplot_cmd) op: Equal rhs: { (DQ ($ VSub_Name '$gnuplot_cmd') (" '") ($ VSub_Name '$i') ("' ") ($ VSub_Name '$range') (' using 1 title') ("\t\t\t'") ($ VSub_Name '$i') (" Memory usage' with lines,") ) } spids: [597] ) ] spids: [597] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gnuplot_cmd) op: Equal rhs: { (DQ ($ VSub_Name '$gnuplot_cmd') (" '' ") ($ VSub_Name '$range') (' using 2 title ') ("\t\t\t'") ($ VSub_Name '$i') (" Loss' with lines,") ) } spids: [612] ) ] spids: [612] ) ] spids: [573 625] ) spids: [562 571] ) (SimpleCommand words: [{(gnuplot)} {(-p)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 655 stdin_parts: [ ('#!/usr/bin/env gnuplot\n') ('\n') ('set terminal png enhanced size ') ($ VSub_Name '$width') (',') ($ VSub_Name '$height') (' large\n') ('set autoscale xy\n') ("set output '") ($ VSub_Name '$file') (".png'\n") ("set xlabel 'samples'\n") ("set ylabel 'bytes'\n") ('set key left above Left title reverse\n') ('\n') ('plot ') ($ VSub_Name '$gnuplot_cmd') ('\n') ] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ($ VSub_Name '$file') (.png))})] spids: [16777215 671] ) ] spids: [16777215 682] ) ] spids: [502] ) spids: [498 501] ) (FuncDef name: do_preprocess body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:out) op:Equal spids:[696])] spids: [694] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:lines) op:Equal spids:[701])] spids: [699] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:in) op: Equal rhs: {($ VSub_Number '$1')} spids: [706] ) ] spids: [704] ) (C {(check_file_exist)} {(DQ ($ VSub_Name '$in'))}) (C {(let)} {(Lit_VarLike 'lines=') (3)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name '$in'))})] ) left_token: <Left_Backtick '`'> spids: [730 736] ) (DQ (-slabs-by-loss)) } spids: [729] ) ] spids: [729] ) (C { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {(DQ ($ VSub_Name '$in'))}) (C {(grep)} {(-A)} {(DQ ($ VSub_Name '$lines'))} {(SQ <'Slabs sorted by loss'>)} ) (C {(egrep)} {(-iv)} {(SQ <'\\-\\-|Name|Slabs'>)}) (SimpleCommand words: [{(awk)} {(SQ <'{print $1" "$4+$2*$3" "$4}'>)}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$out'))} ) ] ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [742 788] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(do_slabs_plotting)} {(DQ ($ VSub_Name '$out'))})] spids: [16777215 804] ) ] spids: [16777215 814] ) (C {(let)} {(Lit_VarLike 'lines=') (3)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name '$in'))})] ) left_token: <Left_Backtick '`'> spids: [825 831] ) (DQ (-slabs-by-size)) } spids: [824] ) ] spids: [824] ) (C { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {(DQ ($ VSub_Name '$in'))}) (C {(grep)} {(-A)} {(DQ ($ VSub_Name '$lines'))} {(SQ <'Slabs sorted by size'>)} ) (C {(egrep)} {(-iv)} {(SQ <'\\-\\-|Name|Slabs'>)}) (SimpleCommand words: [{(awk)} {(SQ <'{print $1" "$4" "$4-$2*$3}'>)}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$out'))} ) ] ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [837 883] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(do_slabs_plotting)} {(DQ ($ VSub_Name '$out'))})] spids: [16777215 899] ) ] spids: [16777215 909] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name '$in'))})] ) left_token: <Left_Backtick '`'> spids: [914 920] ) (DQ (-totals)) } spids: [913] ) ] spids: [913] ) (C { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} {(DQ ($ VSub_Name '$in'))}) (C {(grep)} {(DQ ('Memory used'))}) (SimpleCommand words: [{(awk)} {(SQ <'{print $3" "$7}'>)}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$out'))} ) ] ) ] negated: F ) ] ) left_token: <Left_Backtick '`'> spids: [926 955] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(t_files) (Lit_Other '[') (0) (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$out') } ) (C {(do_totals_plotting)}) ] spids: [16777215 971] ) ] spids: [16777215 985] ) ] spids: [691] ) spids: [687 690] ) (FuncDef name: parse_opts body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:opt) op:Equal spids:[999])] spids: [997] ) (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (C {(getopts)} {(DQ ('tlr::s::h'))} {(opt)}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$opt')} arms: [ (case_arm pat_list: [{(t)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mode) op: Equal rhs: {(totals)} spids: [1028] ) ] spids: [1028] ) ] spids: [1024 1025 1032 16777215] ) (case_arm pat_list: [{(l)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mode) op: Equal rhs: {(slabs)} spids: [1039] ) ] spids: [1039] ) ] spids: [1035 1036 1043 16777215] ) (case_arm pat_list: [{(s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:array) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name OPTARG> suffix_op: (PatSub pat: {(',')} replace: {(' ')} do_all: T do_prefix: F do_suffix: F ) spids: [1052 1059] ) } ] ) } spids: [1050] ) ] spids: [1050] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:width) op: Equal rhs: { (BracedVarSub token: <VSub_Name array> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [1064 1069] ) } spids: [1063] ) ] spids: [1063] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:height) op: Equal rhs: { (BracedVarSub token: <VSub_Name array> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1073 1078] ) } spids: [1072] ) ] spids: [1072] ) ] spids: [1046 1047 1081 16777215] ) (case_arm pat_list: [{(r)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:array) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name OPTARG> suffix_op: (PatSub pat: {(',')} replace: {(' ')} do_all: T do_prefix: F do_suffix: F ) spids: [1090 1097] ) } ] ) } spids: [1088] ) ] spids: [1088] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:xmin) op: Equal rhs: { (BracedVarSub token: <VSub_Name array> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [1102 1107] ) } spids: [1101] ) ] spids: [1101] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:xmax) op: Equal rhs: { (BracedVarSub token: <VSub_Name array> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1111 1116] ) } spids: [1110] ) ] spids: [1110] ) ] spids: [1084 1085 1119 16777215] ) (case_arm pat_list: [{(h)}] action: [ (C {(usage)}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] spids: [1122 1123 1134 16777215] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Invalid option: -') ($ VSub_Name '$OPTARG'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [1137 1138 1157 16777215] ) (case_arm pat_list: [{(Lit_Other ':')}] action: [ (SimpleCommand words: [ {(echo)} {(DQ (-) ($ VSub_Name '$OPTARG') (' requires an argument.'))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [1160 1161 1181 16777215] ) ] spids: [1017 1021 1184] ) ] spids: [1014 1187] ) ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$OPTIND')} ) ] spids: [994] ) spids: [990 993] ) (FuncDef name: parse_args body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:idx) op:Equal rhs:{(0)} spids:[1207])] spids: [1205] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:p) op:Equal spids:[1213])] spids: [1211] ) (ForEach iter_name: p iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$mode')} arms: [ (case_arm pat_list: [{(preprocess)}] action: [ (C {(files) (Lit_Other '[') ($ VSub_Name '$idx') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$p') } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:idx) op: Equal rhs: {($ VSub_Name '$idx') (Lit_Other '+') (1)} spids: [1250] ) ] spids: [1250] ) ] spids: [1238 1239 1256 16777215] ) (case_arm pat_list: [{(totals)}] action: [ (C {(t_files) (Lit_Other '[') ($ VSub_Name '$idx') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$p') } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:idx) op: Equal rhs: {($ VSub_Name '$idx') (Lit_Other '+') (1)} spids: [1271] ) ] spids: [1271] ) ] spids: [1259 1260 1277 16777215] ) (case_arm pat_list: [{(slabs)}] action: [ (C {(files) (Lit_Other '[') ($ VSub_Name '$idx') (Lit_Other ']') (Lit_Other '=') ($ VSub_Name '$p') } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:idx) op: Equal rhs: {($ VSub_Name '$idx') (Lit_Other '+') (1)} spids: [1292] ) ] spids: [1292] ) ] spids: [1280 1281 1298 16777215] ) ] spids: [1231 1235 1301] ) ] spids: [1228 1304] ) spids: [1222 1226] ) ] spids: [1202] ) spids: [1198 1201] ) (C {(parse_opts)} {(DQ ($ VSub_At '$@'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:argstart) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1315] ) ] spids: [1315] ) (C {(parse_args)} { (DQ (BracedVarSub token: <VSub_At '@'> suffix_op: (Slice begin:(ArithWord w:{($ VSub_Name '$argstart')})) spids: [1321 1325] ) ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name files> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1333 1339] ) } {(-eq)} {(0)} {(Lit_Other ']')} ) (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name t_files> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1351 1357] ) } {(-eq)} {(0)} {(Lit_Other ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})] spids: [16777215 1366] ) ] spids: [16777215 1376] ) (Case to_match: {($ VSub_Name '$mode')} arms: [ (case_arm pat_list: [{(preprocess)}] action: [ (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name files> bracket_op: (WholeArray op_id:Lit_At) spids: [1397 1402] ) ) } ] do_arg_iter: F body: (DoGroup children: [(C {(do_preprocess)} {(DQ ($ VSub_Name '$i'))})] spids: [1406 1416] ) spids: [1395 1404] ) ] spids: [1386 1387 1419 16777215] ) (case_arm pat_list: [{(totals)}] action: [(C {(do_totals_plotting)})] spids: [1422 1423 1429 16777215] ) (case_arm pat_list: [{(slabs)}] action: [ (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name files> bracket_op: (WholeArray op_id:Lit_At) spids: [1443 1448] ) ) } ] do_arg_iter: F body: (DoGroup children: [(C {(do_slabs_plotting)} {(DQ ($ VSub_Name '$i'))})] spids: [1452 1462] ) spids: [1441 1450] ) ] spids: [1432 1433 1465 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Unknown mode ') ($ VSub_Name '$mode'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (C {(usage)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [1468 1469 1491 16777215] ) ] spids: [1379 1383 1493] ) ] )