(command.CommandList children: [ (C {(typeset)} {(-a)} {(_Dbg_keep)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_keep) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('> words:[{(SQ <keep>)} {(SQ <del>)}])} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_line)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_line) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_brkpt_count=') (0)}) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_file)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_enable)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_enable) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_counts)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_counts) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_onetime)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_onetime) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_cond)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_cond) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_brkpt_max=') (0)}) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-A)} {(_Dbg_brkpt_file2linenos)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2linenos) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(typeset)} {(-A)} {(_Dbg_brkpt_file2brkpt)}) terminator: <Op_Semi ';'> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2brkpt) op: Equal rhs: {(sh_array_literal left:<Op_LParen '('>)} ) ] ) ] ) (C {(typeset)} {(-a)} {(Lit_VarLike '_Dbg_watch_exp=') (sh_array_literal left:<Op_LParen '('>)}) (C {(typeset)} {(-a)} {(Lit_VarLike '_Dbg_watch_val=') (sh_array_literal left:<Op_LParen '('>)}) (C {(typeset)} {(-ai)} {(Lit_VarLike '_Dbg_watch_arith=') (sh_array_literal left:<Op_LParen '('>)}) (C {(typeset)} {(-ai)} {(Lit_VarLike '_Dbg_watch_count=') (sh_array_literal left:<Op_LParen '('>)}) (C {(typeset)} {(-ai)} {(Lit_VarLike '_Dbg_watch_enable=') (sh_array_literal left:<Op_LParen '('>)}) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_watch_max=') (0)}) (C {(typeset)} {(Lit_VarLike '_Dbg_watch_pat=') (DQ (${ VSub_Name int_pat) ('[wW]'))}) (command.ShFunction name: _Dbg_save_breakpoints body: (command.BraceGroup children: [ (C {(typeset)} {(file)}) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_line)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_file)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_cond)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_count)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_enable)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_onetime)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_max)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_file2linenos)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_brkpt_file2brkpt)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) ] ) ) (command.ShFunction name: _Dbg_save_watchpoints body: (command.BraceGroup children: [ (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_watch_exp)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_watch_val)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_watch_arith)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_watch_count)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_watch_enable)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) (command.Simple words: [{(typeset)} {(-p)} {(_Dbg_watch_max)}] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_statefile')} ) ] ) ] ) ) (command.ShFunction name: _Dbg_enable_disable body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_LessEqual left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_errmsg)} { (DQ ('_Dbg_enable_disable error - need at least 2 args, got ') ($ VSub_Pound '$#') ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')}) (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')}) (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>) (C {(shift)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(SQ <display>)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)}) (C {(typeset)} {(Lit_VarLike 'to_go=') (DQ ($ VSub_At '$@'))}) (C {(typeset)} {(i)}) (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))}) (command.ForEach iter_name: i iter_words: [{($ VSub_DollarName '$to_go')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{($ VSub_DollarName '$int_pat')}] action: [ (C {(_Dbg_enable_disable_display)} {($ VSub_DollarName '$on')} {($ VSub_DollarName '$en_dis')} {($ VSub_DollarName '$i')} ) ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (C {(_Dbg_errmsg)} { (DQ ('Invalid entry number skipped: ') ($ VSub_DollarName '$i') ) } ) ] ) ] ) ] ) ) (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(SQ <action>)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)}) (C {(typeset)} {(Lit_VarLike 'to_go=') (DQ ($ VSub_At '$@'))}) (C {(typeset)} {(i)}) (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))}) (command.ForEach iter_name: i iter_words: [{($ VSub_DollarName '$to_go')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{($ VSub_DollarName '$int_pat')}] action: [ (C {(_Dbg_enable_disable_action)} {($ VSub_DollarName '$on')} {($ VSub_DollarName '$en_dis')} {($ VSub_DollarName '$i')} ) ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (C {(_Dbg_errmsg)} { (DQ ('Invalid entry number skipped: ') ($ VSub_DollarName '$i') ) } ) ] ) ] ) ] ) ) (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) (command.Sentence child:(C {(typeset)} {(to_go)}) terminator:<Op_Semi ';'>) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:to_go) op: Equal rhs: {(DQ ($ VSub_At '$@'))} ) ] ) (C {(typeset)} {(i)}) (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))}) (command.ForEach iter_name: i iter_words: [{($ VSub_DollarName '$to_go')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{($ VSub_DollarName '$_Dbg_watch_pat')}] action: [ (C {(_Dbg_enable_disable_watch)} {($ VSub_DollarName '$on')} {($ VSub_DollarName '$en_dis')} { (braced_var_sub token: <VSub_Name del> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 0)}) length: (arith_expr.Binary op_id: Arith_Minus left: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name del> prefix_op: VSub_Pound ) } ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) ) } ) ] ) (case_arm pat_list: [{($ VSub_DollarName '$int_pat')}] action: [ (C {(_Dbg_enable_disable_brkpt)} {($ VSub_DollarName '$on')} {($ VSub_DollarName '$en_dis')} {($ VSub_DollarName '$i')} ) ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (C {(_Dbg_errmsg)} {(DQ ('Invalid entry number skipped: ') ($ VSub_DollarName '$i'))} ) ] ) ] ) ] ) ) (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))}) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) ) (command.ShFunction name: _Dbg_print_brkpt_count body: (command.BraceGroup children: [ (command.Sentence child:(C {(typeset)} {(-i)} {(i)}) terminator:<Op_Semi ';'>) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{($ VSub_Number '$1')})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_NEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_brkpt_counts>) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_counts> ) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_printf)} {(DQ (Lit_Other '\\') ('tbreakpoint already hit 1 time'))} ) ] ) ] else_action: [ (C {(_Dbg_printf)} {(DQ (Lit_Other '\\') ('tbreakpoint already hit %d times'))} { (braced_var_sub token: <VSub_Name _Dbg_brkpt_counts> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) } ) ] ) ] ) ] ) ] ) ) (command.ShFunction name: _Dbg_clear_all_brkpt body: (command.BraceGroup children: [ (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_file2linenos=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_file2brkpt=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_line=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_cond=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_file=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_enable=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_counts=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_onetime=()'))}) (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_count=0'))}) ] ) ) (command.ShFunction name: _Dbg_set_brkpt body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_DPipe left: (arith_expr.Binary op_id: Arith_Less left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) right: (arith_expr.Binary op_id: Arith_Great left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (C {(typeset)} {(source_file)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:source_file) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(_Dbg_expand_filename)} {(DQ ($ VSub_Number '$1'))})] ) ) } ) ] ) (C {(typeset)} {(-ri)} {(Lit_VarLike 'lineno=') ($ VSub_Number '$2')}) (C {(typeset)} {(-ri)} {(Lit_VarLike 'is_temp=') ($ VSub_Number '$3')}) (C {(typeset)} {(-r)} {(Lit_VarLike 'condition=') (braced_var_sub token: <VSub_Number 4> suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(1)}) ) } ) (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:_Dbg_brkpt_max) ) ) (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:_Dbg_brkpt_count) ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_line index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')}) ) op: Equal rhs: {($ VSub_DollarName '$lineno')} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_file index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')}) ) op: Equal rhs: {(DQ ($ VSub_DollarName '$source_file'))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_cond index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')}) ) op: Equal rhs: {(DQ ($ VSub_DollarName '$condition'))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_onetime index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')}) ) op: Equal rhs: {($ VSub_DollarName '$is_temp')} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_counts index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')}) ) op: Equal rhs: {(0)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_enable index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')}) ) op: Equal rhs: {(1)} ) ] ) (C {(typeset)} {(dq_source_file)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dq_source_file) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(_Dbg_esc_dq)} {(DQ ($ VSub_DollarName '$source_file'))})] ) ) } ) ] ) (C {(typeset)} {(Lit_VarLike 'dq_condition=') (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(_Dbg_esc_dq)} {(DQ ($ VSub_DollarName '$condition'))})] ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts) op: Equal rhs: {(DQ ($ VSub_DollarName '$_Dbg_old_set_opts') (' -o functrace'))} ) ] ) (C {(_Dbg_write_journal_eval)} {(DQ ("_Dbg_old_set_opts='") ($ VSub_DollarName '$_Dbg_old_set_opts') ("'"))} ) (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_line[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') ($ VSub_DollarName '$lineno') ) } ) (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_file[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$dq_source_file') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) (C {(_Dbg_write_journal)} { (DQ ('_Dbg_brkpt_cond[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$dq_condition') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) (C {(_Dbg_write_journal)} { (DQ ('_Dbg_brkpt_onetime[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') ($ VSub_DollarName '$is_temp') ) } ) (C {(_Dbg_write_journal)} { (DQ ('_Dbg_brkpt_counts[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (0) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) (C {(_Dbg_write_journal)} {(DQ ('_Dbg_brkpt_enable[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=1'))} ) (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_file2linenos[') ($ VSub_DollarName '$source_file') (']+=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_DollarName '$lineno') (' ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_file2brkpt[') ($ VSub_DollarName '$source_file') (']+=') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_DollarName '$_Dbg_brkpt_max') (' ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:source_file) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(_Dbg_adjust_filename)} {(DQ ($ VSub_DollarName '$source_file'))}) ] ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.VarRef token:<Lit_ArithVarLike is_temp>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_msg)} { (DQ ('Breakpoint ') ($ VSub_DollarName '$_Dbg_brkpt_max') (' set in file ') (${ VSub_Name source_file) (', line ') ($ VSub_DollarName '$lineno') (.) ) } ) ] ) ] else_action: [ (C {(_Dbg_msg)} { (DQ ('One-time breakpoint ') ($ VSub_DollarName '$_Dbg_brkpt_max') (' set in file ') (${ VSub_Name source_file) (', line ') ($ VSub_DollarName '$lineno') (.) ) } ) ] ) (C {(_Dbg_write_journal)} {(DQ ('_Dbg_brkpt_max=') ($ VSub_DollarName '$_Dbg_brkpt_max'))}) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) ) (command.ShFunction name: _Dbg_unset_brkpt_arrays body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_NEqual left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (C {(typeset)} {(-i)} {(Lit_VarLike 'del=') ($ VSub_Number '$1')}) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_brkpt_line[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_brkpt_counts[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_brkpt_file[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_brkpt_enable[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_brkpt_cond[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_brkpt_onetime[') ($ VSub_DollarName '$del') (']'))} ) (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDMinus child: (sh_lhs_expr.Name name:_Dbg_brkpt_count) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) ) (command.ShFunction name: _Dbg_unset_brkpt body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_NEqual left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (C {(typeset)} {(Lit_VarLike 'filename=') ($ VSub_Number '$1')}) (C {(typeset)} {(-i)} {(Lit_VarLike 'lineno=') ($ VSub_Number '$2')}) (C {(typeset)} {(-i)} {(Lit_VarLike 'found=') (0)}) (C {(typeset)} {(fullname)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullname) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(_Dbg_expand_filename)} {(DQ ($ VSub_DollarName '$filename'))}) ] ) ) } ) ] ) (C {(typeset)} {(-a)} {(linenos)}) (C {(eval)} { (DQ ('linenos=(') (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2linenos> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$fullname')}) ) ) (')') ) } ) (C {(typeset)} {(-a)} {(brkpt_nos)}) (C {(eval)} { (DQ ('brkpt_nos=(') (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$fullname')}) ) ) (')') ) } ) (C {(typeset)} {(-i)} {(i)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Arith_LessEqual left: (arith_expr.VarRef token:<Lit_ArithVarLike i>) right: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name linenos> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) ) update: (arith_expr.UnaryAssign op_id:Node_PostDPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike linenos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) right: (arith_expr.VarRef token:<Lit_ArithVarLike lineno>) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(typeset)} {(-i)} {(brkpt_num)}) (command.DParen child: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:brkpt_num) right: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike brkpt_nos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) ) ) (C {(_Dbg_unset_brkpt_arrays)} {($ VSub_DollarName '$brkpt_num')}) (C {(unset)} {(Lit_ArrayLhsOpen 'linenos[') (i) (Lit_RBracket ']')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_file2linenos index: (arith_expr.ArithWord w:{($ VSub_DollarName '$fullname')}) ) op: Equal rhs: { (braced_var_sub token: <VSub_Name linenos> bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) ] ) (C {(typeset)} {(-a)} {(brkpt_nos)}) (C {(eval)} { (DQ ('brkpt_nos=(') (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$filename')} ) ) ) (')') ) } ) (C {(unset)} {(Lit_ArrayLhsOpen 'brkpt_nos[') ($ VSub_DollarName '$i') (Lit_RBracket ']') } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_file2brkpt index: (arith_expr.ArithWord w:{($ VSub_DollarName '$filename')}) ) op: Equal rhs: { (braced_var_sub token: <VSub_Name brkpt_nos> bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:found) ) ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.VarRef token:<Lit_ArithVarLike found>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(_Dbg_file_canonic)} {(DQ ($ VSub_DollarName '$filename'))}) ] ) ) } ) ] ) (C {(_Dbg_errmsg)} { (DQ ('No breakpoint found at ') ($ VSub_DollarName '$filename') (', line ') (${ VSub_Name lineno) (.) ) } ) ] ) ] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$found')} ) ] ) ) (command.ShFunction name: _Dbg_delete_brkpt_entry body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (C {(typeset)} {(-r)} {(Lit_VarLike 'del=') (DQ ($ VSub_Number '$1'))}) (C {(typeset)} {(-i)} {(i)}) (C {(typeset)} {(-i)} {(Lit_VarLike 'found=') (0)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_z child: { (braced_var_sub token: <VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')}) ) ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ('No breakpoint number ') ($ VSub_DollarName '$del') (.))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(typeset)} {(Lit_VarLike 'source_file=') (braced_var_sub token: <VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')}) ) ) } ) (C {(typeset)} {(-i)} {(Lit_VarLike 'lineno=') (braced_var_sub token: <VSub_Name _Dbg_brkpt_line> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')}) ) ) } ) (C {(typeset)} {(-i)} {(try)}) (C {(typeset)} {(Lit_VarLike 'new_lineno_val=') (SQ )}) (C {(typeset)} {(Lit_VarLike 'new_brkpt_nos=') (SQ )}) (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') (-1)}) (C {(typeset)} {(-a)} {(brkpt_nos)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:brkpt_nos) op: Equal rhs: { (sh_array_literal left: <Op_LParen '('> words: [ { (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$source_file')}) ) ) } ] ) } ) ] ) (command.ForEach iter_name: try iter_words: [ { (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2linenos> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$source_file')}) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike brkpt_nos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) right: (arith_expr.VarRef token:<Lit_ArithVarLike del>) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_NEqual left: (arith_expr.VarRef token:<Lit_ArithVarLike try>) right: (arith_expr.VarRef token: <Lit_ArithVarLike lineno> ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_errmsg)} {(SQ <'internal brkpt structure inconsistency'>)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(_Dbg_unset_brkpt_arrays)} {($ VSub_DollarName '$del')}) (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:found) ) ) ] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_lineno_val) op: PlusEqual rhs: {(DQ (' ') ($ VSub_DollarName '$try') (' '))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_brkpt_nos) op: PlusEqual rhs: { (DQ (' ') (braced_var_sub token: <VSub_Name brkpt_nos> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) (' ') ) } ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_Great left: (arith_expr.VarRef token:<Lit_ArithVarLike found>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name new_lineno_val> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_write_journal_eval)} { (DQ ("unset '_Dbg_brkpt_file2linenos[") ($ VSub_DollarName '$source_file') ("]'") ) } ) (C {(_Dbg_write_journal_eval)} { (DQ ("unset '_Dbg_brkpt_file2brkpt[") ($ VSub_DollarName '$source_file') ("]'") ) } ) ] ) ] else_action: [ (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_file2linenos[') ($ VSub_DollarName '$source_file') (']=') (word_part.EscapedLiteral token: <Lit_EscapedChar '\\"'> ) (${ VSub_Name new_lineno_val) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_file2brkpt[') ($ VSub_DollarName '$source_file') (']=') (word_part.EscapedLiteral token: <Lit_EscapedChar '\\"'> ) ($ VSub_DollarName '$new_brkpt_nos') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) ) (command.ShFunction name: _Dbg_enable_disable_action body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_NEqual left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')}) (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')}) (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$3')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_n child: { (DQ (braced_var_sub token: <VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: { (braced_var_sub token: <VSub_Name _Dbg_action_enable> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) } right: {($ VSub_DollarName '$on')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_errmsg)} { (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (' already ') (${ VSub_Name en_dis) (', so nothing done.') ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] else_action: [ (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_enable[') ($ VSub_DollarName '$i') (']=') ($ VSub_DollarName '$on') ) } ) (C {(_Dbg_msg)} { (DQ ('Action entry ') ($ VSub_DollarName '$i') (' ') ($ VSub_DollarName '$en_dis') (.) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) ] else_action: [ (C {(_Dbg_errmsg)} { (DQ ('Action entry ') ($ VSub_DollarName '$i') (" doesn't exist, so nothing done.")) } ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) ] ) ) (command.ShFunction name: _Dbg_enable_disable_brkpt body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_NEqual left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')}) (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')}) (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$3')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_n child: { (DQ (braced_var_sub token: <VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: { (braced_var_sub token: <VSub_Name _Dbg_brkpt_enable> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) } right: {($ VSub_DollarName '$on')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_errmsg)} { (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (' already ') (${ VSub_Name en_dis) (', so nothing done.') ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] else_action: [ (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_brkpt_enable[') ($ VSub_DollarName '$i') (']=') ($ VSub_DollarName '$on') ) } ) (C {(_Dbg_msg)} { (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (' ') ($ VSub_DollarName '$en_dis') (.) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) ] else_action: [ (C {(_Dbg_errmsg)} { (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (" doesn't exist, so nothing done.") ) } ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) ] ) ) (command.ShFunction name: _Dbg_get_watch_exp_eval body: (command.BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$1')}) (C {(typeset)} {(new_val)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(eval)} {(echo)} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) } ) ] ) ) } right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:new_val) op:Equal rhs:{(SQ )})] ) ] ) (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_watch_arith>) right: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(.)} {(${ VSub_Name _Dbg_libdir) (/dbg-set-d-vars.inc)}) (C {(eval)} {(let)} {(Lit_VarLike 'new_val=') (word_part.EscapedLiteral token: <Lit_EscapedChar '\\"'> ) (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) } ) ] ) ] else_action: [ (C {(.)} {(${ VSub_Name _Dbg_libdir) (/dbg-set-d-vars.inc)}) (C {(eval)} {(Lit_VarLike 'new_val=') (DQ (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) ) } ) ] ) (C {(echo)} {($ VSub_DollarName '$new_val')}) ] ) ) (command.ShFunction name: _Dbg_enable_disable_watch body: (command.BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')}) (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')}) (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$3')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: { (braced_var_sub token: <VSub_Name _Dbg_watch_enable> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) } right: {($ VSub_DollarName '$on')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_msg)} { (DQ ('Watchpoint entry ') ($ VSub_DollarName '$i') (' already ') ($ VSub_DollarName '$en_dis') (' so nothing done.') ) } ) ] ) ] else_action: [ (C {(_Dbg_write_journal_eval)} { (DQ ('_Dbg_watch_enable[') ($ VSub_DollarName '$i') (']=') ($ VSub_DollarName '$on') ) } ) (C {(_Dbg_msg)} { (DQ ('Watchpoint entry ') ($ VSub_DollarName '$i') (' ') ($ VSub_DollarName '$en_dis') (.) ) } ) ] ) ] ) ] else_action: [ (C {(_Dbg_msg)} { (DQ ('Watchpoint entry ') ($ VSub_DollarName '$i') (" doesn't exist so nothing done.") ) } ) ] ) ] ) ) (command.ShFunction name: _Dbg_list_watch body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} { (braced_var_sub token: <VSub_Name _Dbg_watch_exp> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } {(KW_Bang '!') (Lit_Equals '=')} {(0)} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(typeset)} {(Lit_VarLike 'i=') (0)} {(j)}) (C {(_Dbg_section)} {(DQ ('Num Type Enb Expression'))}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Arith_Less left: (arith_expr.VarRef token:<Lit_ArithVarLike i>) right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_watch_max>) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_printf)} {(SQ <'%-3d watchpoint %-4s %s'>)} {($ VSub_DollarName '$i')} { (braced_var_sub token: <VSub_Name _Dbg_yn> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name _Dbg_watch_enable> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) } ) ) ) } { (DQ (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) ) } ) (C {(_Dbg_print_brkpt_count)} { (braced_var_sub token: <VSub_Name _Dbg_watch_count> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) ) } ) ] ) ] ) ] ) ) ] ) ] else_action: [(C {(_Dbg_msg)} {(DQ ('No watch expressions have been set.'))})] ) ] ) ) (command.ShFunction name: _Dbg_delete_watch_entry body: (command.BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike 'del=') ($ VSub_Number '$1')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')}) ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_watch_exp[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_watch_val[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_watch_enable[') ($ VSub_DollarName '$del') (']'))} ) (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_watch_count[') ($ VSub_DollarName '$del') (']'))} ) ] ) ] else_action: [ (C {(_Dbg_msg)} { (DQ ('Watchpoint entry ') ($ VSub_DollarName '$del') (" doesn't exist so nothing done.") ) } ) ] ) ] ) ) (command.ShFunction name: _Dbg_clear_watch body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_Less left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')}) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(typeset)} {(Lit_VarLike '_Dbg_prompt_output=') (braced_var_sub token: <VSub_Name _Dbg_tty> suffix_op: (suffix_op.Unary op_id: VTest_ColonHyphen arg_word: {(Lit_Slash /) (dev) (Lit_Slash /) (null)} ) ) } ) (command.Simple words: [ {(read)} {($ VSub_DollarName '$_Dbg_edit')} {(-p)} {(DQ ('Delete all watchpoints? (y/n): '))} ] redirects: [ (redir.Redir op: <Redir_LessAnd '<&'> fd: 16777215 arg_word: {($ VSub_DollarName '$_Dbg_input_desc')} ) (redir.Redir op: <Redir_DGreat '2>>'> fd: 2 arg_word: {($ VSub_DollarName '$_Dbg_prompt_output')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$REPLY')} right: {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_write_journal_eval)} {(unset)} {(Lit_ArrayLhsOpen '_Dbg_watch_exp[') (Lit_Other '@') (Lit_RBracket ']')} ) (C {(_Dbg_write_journal_eval)} {(unset)} {(Lit_ArrayLhsOpen '_Dbg_watch_val[') (Lit_Other '@') (Lit_RBracket ']')} ) (C {(_Dbg_write_journal_eval)} {(unset)} {(Lit_ArrayLhsOpen '_Dbg_watch_enable[') (Lit_Other '@') (Lit_RBracket ']') } ) (C {(_Dbg_write_journal_eval)} {(unset)} {(Lit_ArrayLhsOpen '_Dbg_watch_count[') (Lit_Other '@') (Lit_RBracket ']') } ) (C {(_Dbg_msg)} {(DQ ('All Watchpoints have been cleared'))}) ] ) ] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {($ VSub_DollarName '$int_pat')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_write_journal_eval)} {(DQ ('unset _Dbg_watch_exp[') ($ VSub_Number '$1') (']'))} ) (C {(_msg)} {(DQ ('Watchpoint ') ($ VSub_DollarName '$i') (' has been cleared'))}) ] ) ] else_action: [ (C {(_Dbg_list_watch)}) (C {(_basdhb_msg)} {(DQ ('Please specify a numeric watchpoint number'))}) ] ) (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))}) ] ) ) ] )