(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: [69 74] ) } ) ) 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: [84 92] ) } spids: [83] ) ] spids: [83] ) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$dirname')} right: {($ VSub_Number '$0')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_dir) op: Equal rhs: {(SQ <..>)} spids: [107] ) ] spids: [107] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_dir) op: Equal rhs: {(${ VSub_Name dirname) (/..)} spids: [114] ) ] spids: [114] ) ] ) (ForEach iter_name: file iter_words: [{(help)} {(alias)}] do_arg_iter: F body: (DoGroup children: [ (Sentence child: (C {(source)} {($ VSub_Name '$top_dir') (/lib/) (${ VSub_Name file) (.sh)}) terminator: <Op_Semi ';'> ) ] spids: [133 145] ) spids: [126 131] ) ] spids: [16777215 80] ) ] spids: [16777215 147] ) (C {(_Dbg_help_add)} {(help)} { (SQ <'**help** [*command* [*subcommand* ..]]\n'> <'\n'> <'If no arguments are given, print a list of command names.\n'> <'With a command name give help for that command. For many commands\n'> <'you can get further detailed help by listing the subcommand name.\n'> <'\n'> <'Examples:\n'> <'---------\n'> <'\n'> <' help\n'> <' help up\n'> <' help set\n'> <' help set args'> ) } {(1)} {(_Dbg_complete_help)} ) (FuncDef name: _Dbg_complete_help body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_Typeset flags: [-a] pairs: [(assign_pair lhs:(LhsName name:words) op:Equal spids:[187])] spids: [183] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(SQ <' '>)} spids: [191] ) (assign_pair lhs: (LhsName name:words) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$COMP_LINE')}])} spids: [196] ) ] spids: [191] ) (Assignment keyword: Assign_Typeset pairs: [(assign_pair lhs:(LhsName name:subcmds) op:Equal spids:[206])] spids: [204] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subcmds) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name _Dbg_command_help> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [211 217] ) ) } spids: [209] ) ] spids: [209] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w: { (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [225 231] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$subcmds')}])} spids: [244] ) ] spids: [244] ) ] spids: [16777215 241] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w: { (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [256 262] ) } ) right: (ArithWord w:{(Lit_Digits 2)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Typeset pairs: [ (assign_pair lhs: (LhsName name:commands) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name _Dbg_command_help> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [280 286] ) ) } spids: [278] ) ] spids: [276] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$subcmds'))} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithWord w:{(Lit_Digits 1)}) ) spids: [303 308] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [293 310] ) } ] ) } spids: [290] ) ] spids: [290] ) ] spids: [252 273] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: {(ArrayLiteralPart)} spids: [318] ) ] spids: [318] ) ] spids: [315 323] ) ] spids: [180] ) spids: [176 179] ) (FuncDef name: _Dbg_do_help body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$_Dbg_args'))} right: {(SQ <'*'>)} ) ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_Dbg_args) op:Equal rhs:{(SQ )} spids:[368])] spids: [368] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(SQ )} right: {($ VSub_Name '$_Dbg_args')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_help_sort_command_names)}) (C {(_Dbg_section)} {(SQ <'Available commands:'>)}) (Assignment keyword: Assign_Typeset flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:list) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name _Dbg_sorted_command_names> bracket_op: (WholeArray op_id:Lit_At) spids: [409 414] ) ) } ] ) } spids: [406] ) ] spids: [402] ) (C {(_Dbg_list_columns)}) (C {(_Dbg_msg)} {(SQ )}) (C {(_Dbg_msg)} {(SQ <'Readline command line editing (emacs/vi mode) is available.'>)} ) (C {(_Dbg_msg)} {(SQ <'Type "help" followed by command name for full documentation.'>)} ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [16777215 389] ) ] else_action: [ (Assignment keyword: Assign_Typeset pairs: [ (assign_pair lhs: (LhsName name:dbg_cmd) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [452] ) ] spids: [450] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_n child: { (BracedVarSub token: <VSub_Name _Dbg_command_help> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$dbg_cmd')}) ) spids: [464 469] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_msg_rst)} { (DQ (BracedVarSub token: <VSub_Name _Dbg_command_help> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$dbg_cmd')})) spids: [481 486] ) ) } ) ] spids: [16777215 475] ) ] else_action: [ (C {(_Dbg_alias_expand)} {($ VSub_Name '$dbg_cmd')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dbg_cmd) op: Equal rhs: {(DQ ($ VSub_Name '$expanded_alias'))} spids: [498] ) ] spids: [498] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_n child: { (BracedVarSub token: <VSub_Name _Dbg_command_help> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$dbg_cmd')}) ) spids: [510 515] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_msg_rst)} { (DQ (BracedVarSub token: <VSub_Name _Dbg_command_help> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$dbg_cmd')}) ) spids: [527 532] ) ) } ) ] spids: [16777215 521] ) ] else_action: [ (Case to_match: {($ VSub_Name '$dbg_cmd')} arms: [ (case_arm pat_list: [{(i)} {(KW_In in)} {(inf)} {(info)}] action: [ (C {(_Dbg_info_help)} {($ VSub_Number '$2')}) (ControlFlow token: <ControlFlow_Return return> ) ] spids: [546 560 571 16777215] ) (case_arm pat_list: [{(sh)} {(sho)} {(show)}] action: [(C {(_Dbg_help_show)} {($ VSub_Number '$2')})] spids: [574 584 592 16777215] ) (case_arm pat_list: [{(se)} {(set)}] action: [(C {(_Dbg_help_set)} {($ VSub_Number '$2')})] spids: [595 601 609 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_Typeset flags: [-i] pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: {(0)} spids: [625] ) ] spids: [621] ) (Assignment keyword: Assign_Typeset pairs: [ (assign_pair lhs: (LhsName name:found_cmd) op: Equal spids: [631] ) ] spids: [629] ) (Sentence child: (Assignment keyword: Assign_Typeset pairs: [ (assign_pair lhs: (LhsName name:list) op: Equal spids: [636] ) ] spids: [634] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:list) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name _Dbg_command_help> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [641 647] ) ) } spids: [639] ) ] spids: [639] ) (ForEach iter_name: try iter_words: [{($ VSub_Name '$list')}] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Name '$try')} right: {(Lit_Other '^') ($ VSub_Name '$dbg_cmd') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:found_cmd) op: Equal rhs: {($ VSub_Name '$try')} spids: [682] ) ] spids: [682] ) (DParen child: (UnaryAssign op_id: Node_PostDPlus child: (LhsName name:count) ) ) ] spids: [16777215 679] ) ] spids: [16777215 693] ) ] spids: [661 696] ) spids: [656 659] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:found) right: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:count) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:found)) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_msg)} { (DQ (BracedVarSub token: <VSub_Name _Dbg_command_help> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$found_cmd')}) ) spids: [725 730] ) ) } ) ] spids: [16777215 719] ) ] else_action: [ (C {(_Dbg_errmsg)} { (DQ ('Undefined command: ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$dbg_cmd') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('. Try ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (help) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (.) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [734 757] ) ] spids: [612 614 760 16777215] ) ] spids: [539 543 763] ) ] spids: [536 766] ) ] spids: [490 769] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:aliases_found) op: Equal rhs: {(SQ )} spids: [772] ) ] spids: [772] ) (C {(_Dbg_alias_find_aliased)} {(DQ ($ VSub_Name '$dbg_cmd'))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_n child: {($ VSub_Name '$aliases_found')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_msg)} {(SQ )}) (C {(_Dbg_msg)} { (DQ ('Aliases for ') ($ VSub_Name '$dbg_cmd') (': ') ($ VSub_Name '$aliases_found') ) } ) ] spids: [16777215 796] ) ] spids: [16777215 815] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(2)}) ] spids: [447 823] ) ] spids: [335] ) spids: [331 334] ) (C {(_Dbg_alias_add)} {(SQ <h>)} {(help)}) (C {(_Dbg_alias_add)} {(SQ <'?'>)} {(help)}) (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: [856 861] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (ForEach iter_name: file iter_words: [{(sort)} {(columnize)} {(list)} {(msg)}] do_arg_iter: F body: (DoGroup children: [ (Sentence child: (C {(source)} {($ VSub_Name '$top_dir') (/lib/) (${ VSub_Name file) (.sh)}) terminator: <Op_Semi ';'> ) ] spids: [886 900] ) spids: [875 884] ) (C {(_Dbg_do_help)}) (C {(echo)} {(SQ <--->)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_args) op: Equal rhs: {(SQ <help>)} spids: [921] ) ] spids: [921] ) (C {(_Dbg_do_help)} {(help)}) ] spids: [16777215 867] ) ] spids: [16777215 931] ) ] )