(CommandList children: [ (C {(typeset)} {(-i)} {(_Dbg_stack_size)}) (C {(typeset)} {(-i)} {(_Dbg_stack_pos)}) (C {(typeset)} {(Lit_VarLike "_Dbg_frame_last_filename=") (SQ )}) (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_frame_last_lineno=") (0)}) (FuncDef name: _Dbg_frame_adjust body: (BraceGroup children: [ (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 2)}) ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(255)}) ] op_id: Op_DAmp ) (C {(typeset)} {(-i)} {(Lit_VarLike "count=") ($ VSub_Number "$1")}) (C {(typeset)} {(-i)} {(Lit_VarLike "signum=") ($ VSub_Number "$2")}) (C {(typeset)} {(-i)} {(retval)}) (AndOr children: [ (C {(_Dbg_frame_int_setup)} {($ VSub_Name "$count")}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] op_id: Op_DPipe ) (C {(typeset)} {(-i)} {(pos)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:signum) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:count) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:pos) right: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:_Dbg_stack_size) right: (ArithVarRef name:count) ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ] spids: [-1 234] ) ] else_action: [ (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:pos) right: (ArithVarRef name:count) ) ) ] spids: [255 268] ) ] spids: [-1 216] ) ] else_action: [ (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:pos) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:_Dbg_stack_pos) right: (ArithBinary op_id: Arith_Star left: (ArithVarRef name:count) right: (ArithVarRef name:signum) ) ) ) ) ] spids: [271 288] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:pos) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(SQ <"Would be beyond bottom-most (most recent) entry.">)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 307] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_GreatEqual left: (ArithVarRef name:pos) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:_Dbg_stack_size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(SQ <"Would be beyond top-most (least recent) entry.">)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [323 342] ) ] spids: [-1 357] ) (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 "$pos")})] ) left_token: <Left_CommandSub "$("> spids: [369 373] ) } spids: [368] ) ] spids: [368] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_stack_pos) op: Equal rhs: {($ VSub_Name "$pos")} spids: [376] ) ] spids: [376] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_listline) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:adjusted_pos) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [404 411] ) ) } spids: [402] ) ] spids: [402] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_frame_last_filename) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithVarRef name:adjusted_pos)) spids: [417 422] ) ) } spids: [415] ) ] spids: [415] ) (Sentence child:(C {(typeset)} {(filename)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(_Dbg_file_canonic)} {(DQ ($ VSub_Name "$_Dbg_frame_last_filename"))} ) ] ) left_token: <Left_CommandSub "$("> spids: [433 439] ) ) } spids: [431] ) ] spids: [431] ) (C {(_Dbg_frame_print)} {(SQ <"->">)} {($ VSub_Name "$_Dbg_stack_pos")} {(SQ )} {(DQ ($ VSub_Name "$filename"))} {($ VSub_Name "$_Dbg_listline")} {(SQ )} ) (C {(_Dbg_print_location_and_command)} {(DQ ($ VSub_Name "$_Dbg_listline"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [140] ) spids: [136 139] ) (FuncDef name: _Dbg_frame_file body: (BraceGroup children: [ (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 2)}) ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] op_id: Op_DAmp ) (C {(typeset)} {(-i)} {(Lit_VarLike "pos=") (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {($ VSub_Name "$_Dbg_stack_pos")} ) spids: [525 529] ) } ) (C {(typeset)} {(-i)} {(Lit_VarLike "basename_only=") (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {($ VSub_Name "$_Dbg_set_basename")} ) spids: [537 541] ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_frame_filename) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithVarRef name:pos)) spids: [545 550] ) } spids: [544] ) ] spids: [544] ) (AndOr children: [ (DParen child:(ArithVarRef name:basename_only)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_frame_filename) op: Equal rhs: { (BracedVarSub token: <VSub_Name _Dbg_frame_filename> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*") (Lit_Slash /)}) spids: [563 568] ) } spids: [562] ) ] spids: [562] ) ] op_id: Op_DAmp ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [497] ) spids: [493 496] ) (FuncDef name: _Dbg_frame_int_setup body: (BraceGroup children: [ (AndOr children: [ (C {(_Dbg_not_running)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] op_id: Op_DAmp ) (C {(eval)} {(DQ ($ VSub_Name "$_seteglob"))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Number "$1")} right: {(SQ )} ) right: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Number "$1")} right: {($ VSub_Name "$_Dbg_signed_int_pat")} ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("Bad integer parameter: ") ($ VSub_Number "$1"))}) (C {(eval)} {(DQ ($ VSub_Name "$_resteglob"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 631] ) ] spids: [-1 654] ) (C {(eval)} {(DQ ($ VSub_Name "$_resteglob"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [588] ) spids: [584 587] ) (FuncDef name: _Dbg_frame_adjusted_pos body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(SQ <-1>)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 697] ) ] spids: [-1 714] ) (C {(typeset)} {(-i)} {(pos)}) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:pos) right: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [727 733] ) } ) right: (ArithVarRef name:_Dbg_stack_size) ) right: (ArithWord w:{($ VSub_Number "$1")}) ) ) ) (C {(echo)} {(-n)} {($ VSub_Name "$pos")}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [681] ) spids: [677 680] ) (FuncDef name: _Dbg_frame_fn_param_str body: (BraceGroup children: [ (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(_Dbg_is_int)} {(DQ ($ VSub_Name "$_Dbg_next_argc"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(_Dbg_is_int)} {(DQ ($ VSub_Name "$_Dbg_next_argv"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(3)}) ] op_id: Op_DPipe ) (DParen child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:_Dbg_next_argc)) ) (C {(typeset)} {(-i)} {(Lit_VarLike "arg_count=") (BASH_ARGC) (Lit_Other "[") ($ VSub_Name "$_Dbg_next_argc") (Lit_Other "]") } ) (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: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_parm_str) op: Equal rhs: {(SQ )} spids: [878] ) ] spids: [878] ) ] spids: [-1 875] ) ] else_action: [ (C {(typeset)} {(-i)} {(i)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_parm_str) op: Equal rhs: { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (BracedVarSub token: <VSub_Name BASH_ARGV> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$_Dbg_next_argv")}) right: (ArithVarRef name:arg_count) ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [896 905] ) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } spids: [893] ) ] spids: [893] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:arg_count) right: (ArithWord w:{(Lit_Digits 1)}) ) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_parm_str) op: PlusEqual rhs: { (DQ (", ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (BracedVarSub token: <VSub_Name BASH_ARGV> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Plus left: (ArithWord w: {($ VSub_Name "$_Dbg_next_argv")} ) right: (ArithVarRef name:arg_count) ) right: (ArithVarRef name:i) ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [943 954] ) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } spids: [939] ) ] spids: [939] ) ] spids: [936 959] ) ) (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:_Dbg_next_argv) right: (ArithVarRef name:arg_count) ) ) ] spids: [883 970] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [782] ) spids: [778 781] ) (FuncDef name: _Dbg_frame_set_fn_param body: (BraceGroup children: [ (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(typeset)} {(-i)} {(Lit_VarLike "skip_count=") ($ VSub_Number "$1")}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_Dbg_next_argc) op:Equal rhs:{(1)} spids:[1015])] spids: [1015] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_Dbg_next_argv) op:Equal rhs:{(1)} spids:[1019])] spids: [1019] ) (C {(typeset)} {(-i)} {(i)}) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:skip_count) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike "arg_count=") (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$i")})) spids: [1063 1068] ) } ) (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:_Dbg_next_argv) right: (ArithVarRef name:arg_count) ) ) ] spids: [1055 1079] ) ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:_Dbg_next_argc) right: (ArithVarRef name:skip_count) ) ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:_Dbg_next_argv)) ) ] spids: [984] ) spids: [980 983] ) (FuncDef name: _Dbg_frame_prefix body: (BraceGroup children: [ (C {(typeset)} {(Lit_VarLike "prefix=") (SQ <"??">)}) (C {(typeset)} {(-i)} {(Lit_VarLike "rc=") (0)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(typeset)} {(-i)} {(Lit_VarLike "pos=") ($ VSub_Number "$1")}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:pos) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rc) op: Equal rhs: {(2)} spids: [1207] ) ] spids: [1207] ) ] spids: [-1 1204] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_GreatEqual left: (ArithVarRef name:pos) right: (ArithVarRef name:_Dbg_stack_size) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rc) op: Equal rhs: {(3)} spids: [1227] ) ] spids: [1227] ) ] spids: [1211 1224] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:pos) right: (ArithVarRef name:_Dbg_stack_pos) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: {(SQ <"->">)} spids: [1249] ) ] spids: [1249] ) ] spids: [1231 1246] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: {(SQ <"##">)} spids: [1258] ) ] spids: [1258] ) ] spids: [1255 1264] ) ] spids: [-1 1180] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(1)} spids:[1270])] spids: [1270] ) ] spids: [1267 1274] ) (C {(echo)} {(-n)} {($ VSub_Name "$prefix")}) (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_Name "$rc")}) ] spids: [1148] ) spids: [1144 1147] ) (FuncDef name: _Dbg_frame_print body: (BraceGroup children: [ (C {(typeset)} {(Lit_VarLike "prefix=") ($ VSub_Number "$1")}) (C {(typeset)} {(-i)} {(Lit_VarLike "pos=") ($ VSub_Number "$2")}) (C {(typeset)} {(Lit_VarLike "fn=") ($ VSub_Number "$3")}) (C {(typeset)} {(Lit_VarLike "filename=") (DQ ($ VSub_Number "$4"))}) (C {(typeset)} {(-i)} {(Lit_VarLike "line=") ($ VSub_Number "$5")}) (C {(typeset)} {(Lit_VarLike "args=") (DQ ($ VSub_Number "$6"))}) (C {(typeset)} {(Lit_VarLike "callstr=") ($ VSub_Name "$fn")}) (AndOr children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name "$args")}) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:callstr) op: Equal rhs: {(DQ ($ VSub_Name "$callstr") ("(") ($ VSub_Name "$args") (")"))} spids: [1361] ) ] spids: [1361] ) ] op_id: Op_DAmp ) (C {(_Dbg_msg)} { (DQ ($ VSub_Name "$prefix") ($ VSub_Name "$pos") (" in file ") (EscapedLiteralPart token:<Lit_EscapedChar "\\`">) ($ VSub_Name "$filename") ("' at line ") ($ VSub_Name "$line") ) } ) ] spids: [1298] ) spids: [1294 1297] ) ] )