(command.CommandList children: [ (C {<typeset>} {<-i>} {<_Dbg_stack_size>}) (C {<typeset>} {<-i>} {<_Dbg_stack_pos>}) (C {<typeset>} {<Id.Lit_VarLike '_Dbg_frame_last_filename='> (SQ )}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_frame_last_lineno='> <0>}) (command.ShFunction name: _Dbg_frame_adjust body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 2>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<255>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'count='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'signum='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<-i>} {<retval>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_frame_int_setup>} {($ Id.VSub_DollarName '$count')}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (C {<typeset>} {<-i>} {<pos>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: <Id.Lit_ArithVarLike signum> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike count> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike pos> right: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike _Dbg_stack_size> right: <Id.Lit_ArithVarLike count> ) right: {<Id.Lit_Digits 1>} ) ) ) ] spids: [219 234] ) ] else_action: [ (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike pos> right: <Id.Lit_ArithVarLike count> ) ) ] ) ] spids: [203 216] ) ] else_action: [ (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike pos> right: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike _Dbg_stack_pos> right: (arith_expr.Binary op_id: Id.Arith_Star left: <Id.Lit_ArithVarLike count> right: <Id.Lit_ArithVarLike signum> ) ) ) ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike pos> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(SQ <'Would be beyond bottom-most (most recent) entry.'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [292 307] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: <Id.Lit_ArithVarLike pos> right: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike _Dbg_stack_size> right: {<Id.Lit_Digits 1>} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(SQ <'Would be beyond top-most (least recent) entry.'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [323 342] ) ] ) (C {<typeset>} {<-i>} {<adjusted_pos>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:adjusted_pos) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_frame_adjusted_pos>} {($ Id.VSub_DollarName '$pos')}) ) } spids: [368] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_stack_pos) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$pos')} spids: [376] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_listline) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name BASH_LINENO> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike adjusted_pos> right: {<Id.Lit_Digits 1>} ) ) ) ) } spids: [402] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_filename) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike adjusted_pos>) ) ) } spids: [415] ) ] ) (command.Sentence child: (C {<typeset>} {<filename>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_file_canonic>} {(DQ ($ Id.VSub_DollarName '$_Dbg_frame_last_filename'))} ) ) ) } spids: [431] ) ] ) (C {<_Dbg_frame_print>} {(SQ <'->'>)} {($ Id.VSub_DollarName '$_Dbg_stack_pos')} {(SQ )} {(DQ ($ Id.VSub_DollarName '$filename'))} {($ Id.VSub_DollarName '$_Dbg_listline')} {(SQ )} ) (C {<_Dbg_print_location_and_command>} {(DQ ($ Id.VSub_DollarName '$_Dbg_listline'))}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_frame_file body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 2>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'pos='> (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$_Dbg_stack_pos')} ) ) } ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'basename_only='> (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_DollarName '$_Dbg_set_basename')} ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_frame_filename) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike pos>) ) } spids: [544] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child:<Id.Lit_ArithVarLike basename_only>) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_frame_filename) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _Dbg_frame_filename> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) ) } spids: [562] ) ] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_frame_int_setup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<_Dbg_not_running>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_Number '$1')} right: {(SQ )} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_Number '$1')} right: {($ Id.VSub_DollarName '$_Dbg_signed_int_pat')} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(DQ <'Bad integer parameter: '> ($ Id.VSub_Number '$1'))}) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [608 631] ) ] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_frame_adjusted_pos body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-n>} {(SQ <-1>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [684 697] ) ] ) (C {<typeset>} {<-i>} {<pos>}) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike pos> right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub token: <Id.VSub_Name FUNCNAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } right: <Id.Lit_ArithVarLike _Dbg_stack_size> ) right: {($ Id.VSub_Number '$1')} ) ) ) (C {<echo>} {<-n>} {($ Id.VSub_DollarName '$pos')}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_frame_fn_param_str body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_is_int>} {(DQ ($ Id.VSub_DollarName '$_Dbg_next_argc'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<_Dbg_is_int>} {(DQ ($ Id.VSub_DollarName '$_Dbg_next_argv'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<3>} ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike _Dbg_next_argc> ) ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'arg_count='> <Id.Lit_ArrayLhsOpen 'BASH_ARGC['> ($ Id.VSub_DollarName '$_Dbg_next_argc') <Id.Lit_RBracket ']'> } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: <Id.Lit_ArithVarLike arg_count> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_parm_str) op: assign_op.Equal rhs: {(SQ )} spids: [877] ) ] ) ] spids: [861 874] ) ] else_action: [ (C {<typeset>} {<-i>} {<i>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_parm_str) op: assign_op.Equal rhs: { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (braced_var_sub token: <Id.VSub_Name BASH_ARGV> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$_Dbg_next_argv')} right: <Id.Lit_ArithVarLike arg_count> ) right: {<Id.Lit_Digits 1>} ) ) ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } spids: [892] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: <Id.Lit_ArithVarLike i> right: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike arg_count> right: {<Id.Lit_Digits 1>} ) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_parm_str) op: assign_op.PlusEqual rhs: { (DQ <', '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (braced_var_sub token: <Id.VSub_Name BASH_ARGV> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$_Dbg_next_argv')} right: <Id.Lit_ArithVarLike arg_count> ) right: <Id.Lit_ArithVarLike i> ) right: {<Id.Lit_Digits 1>} ) ) ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } spids: [938] ) ] ) ] ) ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike _Dbg_next_argv> right: <Id.Lit_ArithVarLike arg_count> ) ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_frame_set_fn_param body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'skip_count='> ($ Id.VSub_Number '$1')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_next_argc) op: assign_op.Equal rhs: {<1>} spids: [1014] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_next_argv) op: assign_op.Equal rhs: {<1>} spids: [1018] ) ] ) (C {<typeset>} {<-i>} {<i>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: <Id.Lit_ArithVarLike i> right: <Id.Lit_ArithVarLike skip_count> ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'arg_count='> (braced_var_sub token: <Id.VSub_Name BASH_ARGC> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) } ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike _Dbg_next_argv> right: <Id.Lit_ArithVarLike arg_count> ) ) ] ) ) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike _Dbg_next_argc> right: <Id.Lit_ArithVarLike skip_count> ) ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDMinus child: <Id.Lit_ArithVarLike _Dbg_next_argv> ) ) ] ) ) (command.ShFunction name: _Dbg_frame_prefix body: (BraceGroup children: [ (C {<typeset>} {<Id.Lit_VarLike 'prefix='> (SQ <'??'>)}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'rc='> <0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'pos='> ($ Id.VSub_Number '$1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike pos> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {<2>} spids: [1206] ) ] ) ] spids: [1190 1203] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: <Id.Lit_ArithVarLike pos> right: <Id.Lit_ArithVarLike _Dbg_stack_size> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {<3>} spids: [1226] ) ] ) ] spids: [1210 1223] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: <Id.Lit_ArithVarLike pos> right: <Id.Lit_ArithVarLike _Dbg_stack_pos> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: {(SQ <'->'>)} spids: [1248] ) ] ) ] spids: [1230 1245] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: {(SQ <'##'>)} spids: [1257] ) ] ) ] ) ] spids: [1166 1179] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {<1>} spids: [1269] ) ] ) ] ) (C {<echo>} {<-n>} {($ Id.VSub_DollarName '$prefix')}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$rc')} ) ] ) ) (command.ShFunction name: _Dbg_frame_print body: (BraceGroup children: [ (C {<typeset>} {<Id.Lit_VarLike 'prefix='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'pos='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<Id.Lit_VarLike 'fn='> ($ Id.VSub_Number '$3')}) (C {<typeset>} {<Id.Lit_VarLike 'filename='> (DQ ($ Id.VSub_Number '$4'))}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'line='> ($ Id.VSub_Number '$5')}) (C {<typeset>} {<Id.Lit_VarLike 'args='> (DQ ($ Id.VSub_Number '$6'))}) (C {<typeset>} {<Id.Lit_VarLike 'callstr='> ($ Id.VSub_DollarName '$fn')}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_DollarName '$args')}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:callstr) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$callstr') <'('> ($ Id.VSub_DollarName '$args') <')'> ) } spids: [1360] ) ] ) ] ) (C {<_Dbg_msg>} { (DQ ($ Id.VSub_DollarName '$prefix') ($ Id.VSub_DollarName '$pos') <' in file '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) ($ Id.VSub_DollarName '$filename') <'\' at line '> ($ Id.VSub_DollarName '$line') ) } ) ] ) ) ] )