(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:MY_OCAML_BUILD) op: Equal rhs: {(DQ ('-o myocamlbuild'))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$REASON_BUILD_DIR'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REASON_BUILD_DIR) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(ocamlfind)} {(query)} {(reason)})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$REASON_BUILD_DIR'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ("Couldn't find Reason"))}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (C {(eval)} {(Lit_VarLike 'REASON_BUILD_DIR=') ($ VSub_DollarName '$REASON_BUILD_DIR')}) (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_At '@'> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithUnary op_id: Node_UnaryMinus child: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) ) ) } right: {(DQ (${ VSub_Name MY_OCAML_BUILD))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:UNIXIDX) op:Equal rhs:{(-1)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:i) op:Equal rhs:{(1)})] ) (command.ForEach iter_name: var iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_DollarName '$var')} right: {(DQ (unix.cmxa))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_ne left: {($ VSub_DollarName '$UNIXIDX')} right: {(-1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(set)} {(--)} { (DQ (word_part.BracedVarSub token: <VSub_At '@'> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 1)}) length: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithVarRef token: <Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) ) ) } { (DQ (word_part.BracedVarSub token: <VSub_At '@'> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithVarRef token: <Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) ) ) } ) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:UNIXIDX) op: Equal rhs: {($ VSub_DollarName '$i')} ) ] ) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:i) op: Equal rhs: {($ VSub_DollarName '$i') (Lit_Other '+') (1)} ) ] ) ] ) ) (C {(set)} {(--)} { (DQ (word_part.BracedVarSub token: <VSub_At '@'> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 1)}) length: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) ) ) } {(DQ ($ VSub_DollarName '$REASON_BUILD_DIR') (/reasonbuild.cmx))} { (DQ (word_part.BracedVarSub token: <VSub_At '@'> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithUnary op_id: Node_UnaryMinus child: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) ) ) } ) ] ) ] ) ] )