(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"))}) (C {(exit)} {(1)}) ] spids: [-1 174] ) ] spids: [-1 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: [-1 281] ) ] spids: [-1 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: False ) ] ) left_token: <Left_Backtick "`"> spids: [306 318] ) } spids: [305] ) ] spids: [305] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other "[")} {($ VSub_QMark "$?")} {(-ne)} {(0)} {(Lit_Other "]")}) (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$wc_lines"))} {(-eq)} {(0)} {(Lit_Other "]")} ) ] op_id: Op_DPipe ) 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: [-1 349] ) ] spids: [-1 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: [-1 377] ) ] spids: [-1 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: [-1 408] ) ] spids: [-1 421] ) (SimpleCommand words: [{(gnuplot)} {(-p)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("#!/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") ) } do_expansion: True here_end: EOF was_filled: True spids: [428] ) ] ) (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: [-1 480] ) ] spids: [-1 491] ) ] 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:[505])] spids: [503] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:range) op: Equal rhs: {(DQ ("every ::") ($ VSub_Name "$xmin"))} spids: [512] ) ] spids: [510] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:file) op:Equal rhs:{(DQ )} spids:[521])] spids: [519] ) (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: [543] ) ] spids: [543] ) ] spids: [-1 540] ) ] spids: [-1 551] ) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name t_files> bracket_op: (WholeArray op_id:Lit_At) spids: [562 567] ) ) } ] do_arg_iter: False 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: [586 592] ) } spids: [582] ) ] spids: [582] ) (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: [595] ) ] spids: [595] ) (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: [610] ) ] spids: [610] ) ] spids: [571 623] ) spids: [560 569] ) (SimpleCommand words: [{(gnuplot)} {(-p)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("#!/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") ) } do_expansion: True here_end: EOF was_filled: True spids: [630] ) ] ) (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: [-1 667] ) ] spids: [-1 678] ) ] spids: [500] ) spids: [496 499] ) (FuncDef name: do_preprocess body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:out) op:Equal spids:[692])] spids: [690] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:lines) op:Equal spids:[697])] spids: [695] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:in) op: Equal rhs: {($ VSub_Number "$1")} spids: [702] ) ] spids: [700] ) (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: [726 732] ) (DQ (-slabs-by-loss)) } spids: [725] ) ] spids: [725] ) (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_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$out"))} spids: [779] ) ] ) ] negated: False ) ] ) left_token: <Left_Backtick "`"> spids: [738 784] ) } ) (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: [-1 800] ) ] spids: [-1 810] ) (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: [821 827] ) (DQ (-slabs-by-size)) } spids: [820] ) ] spids: [820] ) (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_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$out"))} spids: [874] ) ] ) ] negated: False ) ] ) left_token: <Left_Backtick "`"> spids: [833 879] ) } ) (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: [-1 895] ) ] spids: [-1 905] ) (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: [910 916] ) (DQ (-totals)) } spids: [909] ) ] spids: [909] ) (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_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$out"))} spids: [946] ) ] ) ] negated: False ) ] ) left_token: <Left_Backtick "`"> spids: [922 951] ) } ) (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: [-1 967] ) ] spids: [-1 981] ) ] spids: [687] ) spids: [683 686] ) (FuncDef name: parse_opts body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:opt) op:Equal spids:[995])] spids: [993] ) (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: [1024] ) ] spids: [1024] ) ] spids: [1020 1021 1028 -1] ) (case_arm pat_list: [{(l)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mode) op: Equal rhs: {(slabs)} spids: [1035] ) ] spids: [1035] ) ] spids: [1031 1032 1039 -1] ) (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: True do_prefix: False do_suffix: False ) spids: [1048 1055] ) } ] ) } spids: [1046] ) ] spids: [1046] ) (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: [1060 1065] ) } spids: [1059] ) ] spids: [1059] ) (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: [1069 1074] ) } spids: [1068] ) ] spids: [1068] ) ] spids: [1042 1043 1077 -1] ) (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: True do_prefix: False do_suffix: False ) spids: [1086 1093] ) } ] ) } spids: [1084] ) ] spids: [1084] ) (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: [1098 1103] ) } spids: [1097] ) ] spids: [1097] ) (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: [1107 1112] ) } spids: [1106] ) ] spids: [1106] ) ] spids: [1080 1081 1115 -1] ) (case_arm pat_list: [{(h)}] action: [(C {(usage)}) (C {(exit)} {(0)})] spids: [1118 1119 1130 -1] ) (case_arm pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar "\\?">)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Invalid option: -") ($ VSub_Name "$OPTARG"))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [1144] ) ] ) (C {(exit)} {(1)}) ] spids: [1133 1134 1153 -1] ) (case_arm pat_list: [{(Lit_Other ":")}] action: [ (SimpleCommand words: [ {(echo)} {(DQ (-) ($ VSub_Name "$OPTARG") (" requires an argument."))} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [1168] ) ] ) (C {(exit)} {(1)}) ] spids: [1156 1157 1177 -1] ) ] spids: [1013 1017 1180] ) ] spids: [1010 1183] ) ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name "$OPTIND")} ) ] spids: [990] ) spids: [986 989] ) (FuncDef name: parse_args body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:idx) op:Equal rhs:{(0)} spids:[1203])] spids: [1201] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:p) op:Equal spids:[1209])] spids: [1207] ) (ForEach iter_name: p iter_words: [{(DQ ($ VSub_At "$@"))}] do_arg_iter: False 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: [1246] ) ] spids: [1246] ) ] spids: [1234 1235 1252 -1] ) (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: [1267] ) ] spids: [1267] ) ] spids: [1255 1256 1273 -1] ) (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: [1288] ) ] spids: [1288] ) ] spids: [1276 1277 1294 -1] ) ] spids: [1227 1231 1297] ) ] spids: [1224 1300] ) spids: [1218 1222] ) ] spids: [1198] ) spids: [1194 1197] ) (C {(parse_opts)} {(DQ ($ VSub_At "$@"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:argstart) op: Equal rhs: {($ VSub_QMark "$?")} spids: [1311] ) ] spids: [1311] ) (C {(parse_args)} { (DQ (BracedVarSub token: <VSub_At "@"> suffix_op: (Slice begin:(ArithWord w:{($ VSub_Name "$argstart")})) spids: [1317 1321] ) ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other "[")} { (BracedVarSub token: <VSub_Name files> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1329 1335] ) } {(-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: [1347 1353] ) } {(-eq)} {(0)} {(Lit_Other "]")} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ";"> ) ] action: [(C {(usage)}) (C {(exit)} {(1)})] spids: [-1 1362] ) ] spids: [-1 1372] ) (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: [1393 1398] ) ) } ] do_arg_iter: False body: (DoGroup children: [(C {(do_preprocess)} {(DQ ($ VSub_Name "$i"))})] spids: [1402 1412] ) spids: [1391 1400] ) ] spids: [1382 1383 1415 -1] ) (case_arm pat_list: [{(totals)}] action: [(C {(do_totals_plotting)})] spids: [1418 1419 1425 -1] ) (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: [1439 1444] ) ) } ] do_arg_iter: False body: (DoGroup children: [(C {(do_slabs_plotting)} {(DQ ($ VSub_Name "$i"))})] spids: [1448 1458] ) spids: [1437 1446] ) ] spids: [1428 1429 1461 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (SimpleCommand words: [{(echo)} {(DQ ("Unknown mode ") ($ VSub_Name "$mode"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1475])] ) (C {(usage)}) (C {(exit)} {(1)}) ] spids: [1464 1465 1487 -1] ) ] spids: [1375 1379 1489] ) ] )