(command.CommandList children: [ (command.Simple blame_tok: <_Dbg_help_add> more_env: [] words: [ {<_Dbg_help_add>} {<watch>} {(SQ <'watch [ARITH?] EXP\n'> <'\n'> <'Set or clear a watch expression.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_alias_add> more_env: [] words: [{<_Dbg_alias_add>} {<W>} {<watch>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <_Dbg_do_watch> name: _Dbg_do_watch body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-a>} {<a>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'a='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'a='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: { (ShArrayLiteral left: <Id.Op_LParen _> words: [{($ Id.VSub_DollarName _Dbg_args)}] right: <Id.Right_ShArrayLiteral _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'first='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName first)} right: {(SQ )} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_do_watch_internal> more_env: [] words: [{<_Dbg_do_watch_internal>} {<0>}] redirects: [] do_fork: T ) ] spids: [111 126] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <_Dbg_defined> more_env: [] words: [{<_Dbg_defined>} {(DQ ($ Id.VSub_DollarName first))}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} { (DQ <'Can\'t set watch: no such variable '> ($ Id.VSub_DollarName first) <.>) } ] redirects: [] do_fork: T ) ] spids: [134 146] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<a>} {<first>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_do_watch_internal> more_env: [] words: [ {<_Dbg_do_watch_internal>} {<0>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') ($ Id.VSub_DollarName _Dbg_args) ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <_Dbg_help_add> more_env: [] words: [{<_Dbg_help_add>} {<watche>} {(SQ <'watche [EXP] -- Set or clear a watch expression.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_alias_add> more_env: [] words: [{<_Dbg_alias_add>} {<We>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <_Dbg_do_watche> name: _Dbg_do_watche body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <_Dbg_do_watch_internal> more_env: [] words: [{<_Dbg_do_watch_internal>} {<1>} {(DQ ($ Id.VSub_DollarName _Dbg_args))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_do_watch_internal> name: _Dbg_do_watch_internal body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_clear_watch> more_env: [] words: [{<_Dbg_clear_watch>}] redirects: [] do_fork: T ) ] spids: [237 250] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-i>} {<Id.Lit_VarLike 'n='> <_Dbg_watch_max> <Id.Lit_Other '+'> <Id.Lit_Other '+'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_arith['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_arith['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_arith['> name: _Dbg_watch_arith index: {($ Id.VSub_DollarName n)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_exp['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_exp['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_exp['> name: _Dbg_watch_exp index: {($ Id.VSub_DollarName n)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_val['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_val['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_val['> name: _Dbg_watch_val index: {($ Id.VSub_DollarName n)} ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_get_watch_exp_eval> more_env: [] words: [{<_Dbg_get_watch_exp_eval>} {($ Id.VSub_DollarName n)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_enable['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_enable['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_enable['> name: _Dbg_watch_enable index: {($ Id.VSub_DollarName n)} ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_count['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_count['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen '_Dbg_watch_count['> name: _Dbg_watch_count index: {($ Id.VSub_DollarName n)} ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <_Dbg_printf> more_env: [] words: [ {<_Dbg_printf>} {(SQ <'%2d: %s==%s arith: %d'>)} {($ Id.VSub_DollarName n)} { (DQ <'('> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_watch_exp> var_name: _Dbg_watch_exp bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName n)}) right: <Id.Right_DollarBrace '}'> ) <')'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_watch_val> var_name: _Dbg_watch_val bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName n)}) right: <Id.Right_DollarBrace '}'> ) } { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_watch_arith> var_name: _Dbg_watch_arith bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName n)}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )