(CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$0")} right: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [82 87] ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dirname) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [97 105] ) } spids: [96] ) ] spids: [96] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$dirname")} right: {($ VSub_Number "$0")} ) ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_dir) op: Equal rhs: {(SQ <../..>)} spids: [120] ) ] spids: [120] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_dir) op: Equal rhs: {(${ VSub_Name dirname) (/../..)} spids: [127] ) ] spids: [127] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (C {(source)} {(${ VSub_Name top_dir) (/lib/help.sh)}) ] spids: [-1 93] ) ] spids: [-1 141] ) (C {(_Dbg_help_add_sub)} {(info)} {(args)} { (DQ ("**info args** [*frame-num*]\n") ("\n") ("Show argument variables of the current stack frame.\n") ("\n") ("The default value is 0, the most recent frame.\n") ("\n") ("See also:\n") ("---------\n") ("\n") ("**backtrace**.") ) } {(1)} ) (FuncDef name: _Dbg_do_info_args body: (BraceGroup children: [ (C {(typeset)} {(-r)} {(Lit_VarLike "frame_start=") (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [180 184] ) } ) (C {(eval)} {(DQ ($ VSub_Name "$_seteglob"))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$frame_start")} right: {($ VSub_Name "$int_pat")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("Bad integer parameter: ") ($ VSub_Name "$frame_start"))}) (C {(eval)} {(DQ ($ VSub_Name "$_resteglob"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 209] ) ] spids: [-1 232] ) (C {(typeset)} {(-i)} {(Lit_VarLike "i=") ($ VSub_Name "$frame_start")}) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_GreatEqual left: (ArithVarRef name:i) right: (ArithVarRef name:_Dbg_stack_size) ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] op_id: Op_DAmp ) (C {(typeset)} {(-i)} {(adjusted_pos)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:adjusted_pos) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_frame_adjusted_pos)} {($ VSub_Name "$frame_start")})] ) left_token: <Left_CommandSub "$("> spids: [290 294] ) } spids: [289] ) ] spids: [289] ) (C {(typeset)} {(-i)} {(Lit_VarLike "arg_count=") (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$adjusted_pos")})) spids: [302 307] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{(Lit_Digits 0)}) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGC> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [335 341] ) } ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(typeset)} {(-i)} {(q)}) (C {(typeset)} {(-i)} {(Lit_VarLike "r=") (0)}) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:q) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:q) right: (ArithVarRef name:adjusted_pos) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:q)) body: (DoGroup children: [ (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:r) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:r) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name "$q")}) ) spids: [403 408] ) } ) ) ) ) ] spids: [390 414] ) ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:r)) ) (C {(typeset)} {(-i)} {(s)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:arg_count) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(_Dbg_msg)} {(DQ ("Argument count is 0 for this call."))})] spids: [-1 452] ) ] else_action: [ (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:s) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:s) right: (ArithVarRef name:arg_count) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:s)) body: (DoGroup children: [ (C {(_Dbg_printf)} {(DQ (Lit_Other "$") ("%d = %s"))} {($ VSub_Name "$s")} { (DQ (BracedVarSub token: <VSub_Name BASH_ARGV> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$r")})) spids: [503 508] ) ) } ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:r)) ) ] spids: [490 519] ) ) ] spids: [462 522] ) ] spids: [-1 348] ) ] spids: [-1 525] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [171] ) spids: [167 170] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$0")} right: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [546 551] ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_libdir) op: Equal rhs: {(${ VSub_Name top_dir)} spids: [564] ) ] spids: [564] ) (ForEach iter_name: _Dbg_file iter_words: [{(pre)} {(vars)}] do_arg_iter: False body: (DoGroup children: [ (C {(source)} {(${ VSub_Name top_dir) (/init/) (${ VSub_Name _Dbg_file) (.sh)}) ] spids: [582 597] ) spids: [575 580] ) (ForEach iter_name: _Dbg_file iter_words: [{(frame)} {(msg)} {(file)} {(journal)} {(save-restore)} {(alias)}] do_arg_iter: False body: (DoGroup children: [ (C {(source)} {(${ VSub_Name top_dir) (/lib/) (${ VSub_Name _Dbg_file) (.sh)}) ] spids: [620 635] ) spids: [605 618] ) (C {(source)} {(${ VSub_Name top_dir) (/command/help.sh)}) (C {(_Dbg_set_debugger_entry)}) (FuncDef name: _Dbg_frame_adjusted_pos body: (BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike "i=") (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [661 665] ) } ) (C {(echo)} {(-n)} {($ VSub_Name "$i")}) ] spids: [653] ) spids: [649 652] ) ] spids: [-1 557] ) ] spids: [-1 689] ) ] )