(CommandList children: [ (C {(export)} {(Lit_VarLike 'LANG=') (C)}) (C {(ulimit)} {(-c)} {(0)}) (C {(trap)} {(SQ )} {(TSTP)}) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:save_tty) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(stty)} {(-g)})]) left_token: <Left_Backtick '`'> spids: [122 126] ) } spids: [121] ) ] spids: [121] ) (C {(trap)} {(DQ ('stty ') ($ VSub_Name '$save_tty'))} {(EXIT)}) ] op_id: Op_DAmp ) (C {(stty)} {(quit)} {(SQ <' '>)}) (C {(stty)} {(eof)} {(SQ <'?'>)}) (C {(stty)} {(-echo)}) (FuncDef name: cache_progs body: (BraceGroup children: [ (SimpleCommand words: [{(stty)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[181])] ) (SimpleCommand words: [{(date)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[188])] ) (SimpleCommand words: [{(grep)} {(.)}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/dev/null)} spids:[197])] ) (Subshell child: (Pipeline children: [(C {(echo)} {(DQ ('import time'))}) (C {(python)})] negated: False ) redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[214])] spids: [202 212] ) (SimpleCommand words: [{(bc)}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/dev/null)} spids:[221])] ) (SimpleCommand words: [{(sed)} {(SQ )}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/dev/null)} spids:[231])] ) (SimpleCommand words: [{(printf)} {(SQ <1>)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[242])] ) (SimpleCommand words: [{(/usr/bin/time)} {(false)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[251])] ) (SimpleCommand words: [{(cat)}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/dev/null)} spids:[258])] ) ] spids: [176] ) spids: [172 175] ) (C {(cache_progs)}) (AndOr children: [ (Pipeline children: [ (C {(date)} {(Lit_Other '+') (Lit_Other '%') (s.) (Lit_Other '%') (N)}) (C {(grep)} {(-qF)} {(SQ <N>)}) ] negated: False ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:use_python) op:Equal rhs:{(1)} spids:[290])] spids: [290] ) ] op_id: Op_DAmp ) (FuncDef name: now body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$use_python'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ('import time; print time.time()'))}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [323] ) ] ) (C {(python)}) ] negated: False ) ] spids: [16777215 314] ) ] else_action: [ (C {(printf)} {(DQ ('%.2f'))} { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(Lit_Other '+') (Lit_Other '%') (s.) (Lit_Other '%') (N)}) ] ) left_token: <Left_Backtick '`'> spids: [340 348] ) } ) ] spids: [331 351] ) ] spids: [300] ) spids: [296 299] ) (FuncDef name: fmt_seconds body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:seconds) op: Equal rhs: {($ VSub_Number '$1')} spids: [363] ) ] spids: [363] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mins) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(echo)} {($ VSub_Name '$seconds') (/60)}) (C {(bc)})] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [368 377] ) } spids: [367] ) ] spids: [367] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$mins'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:seconds) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} { (DQ ($ VSub_Name '$seconds') (' - (') ($ VSub_Name '$mins') ('*60)') ) } ) (C {(bc)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [402 415] ) } spids: [401] ) ] spids: [401] ) (C {(echo)} {(DQ ($ VSub_Name '$mins') (':') ($ VSub_Name '$seconds'))}) ] spids: [16777215 398] ) ] else_action: [(C {(echo)} {(DQ ($ VSub_Name '$seconds'))})] spids: [427 437] ) ] spids: [360] ) spids: [356 359] ) (FuncDef name: total body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:end) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(now)})]) left_token: <Left_Backtick '`'> spids: [450 452] ) } spids: [449] ) ] spids: [449] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:total) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$end') (' - ') ($ VSub_Name '$start'))}) (C {(bc)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [456 468] ) } spids: [455] ) ] spids: [455] ) (C {(fmt_seconds)} {($ VSub_Name '$total')}) ] spids: [446] ) spids: [442 445] ) (FuncDef name: stop body: (BraceGroup children: [ (AndOr children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$lapped'))} {(Lit_Other ']')}) (C {(lap)} {(DQ ($ VSub_Name '$laptime'))} {(DQ (display))}) ] op_id: Op_DAmp ) (C {(total)}) (C {(exit)}) ] spids: [482] ) spids: [478 481] ) (FuncDef name: lap body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:laptime) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {(sed)} {(-n)} {(SQ <'s/.*real[^0-9.]*\\(.*\\)/\\1/p'>)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [522 538] ) } spids: [521] ) ] spids: [521] ) (AndOr children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$laptime'))} {(-o)} {(DQ ($ VSub_Name '$laptime'))} {(Lit_Other '=')} {(DQ (0.00))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:laptotal) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$laptime') (Lit_Other '+') (0) ($ VSub_Name '$laptotal') } ) (C {(bc)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [572 583] ) } spids: [571] ) ] spids: [571] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(DQ (display))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lapcount) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(0) ($ VSub_Name '$lapcount') (Lit_Other '+') (1)} ) (C {(bc)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [607 618] ) } spids: [606] ) ] spids: [606] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:laptime) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(fmt_seconds)} {($ VSub_Name '$laptotal')})] ) left_token: <Left_Backtick '`'> spids: [622 626] ) } spids: [621] ) ] spids: [621] ) (C {(echo)} {($ VSub_Name '$laptime')} {(DQ ('(') ($ VSub_Name '$lapcount') (')'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lapped) op: Equal rhs: {(DQ (true))} spids: [640] ) ] spids: [640] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:laptotal) op: Equal rhs: {(DQ (0))} spids: [646] ) ] spids: [646] ) ] spids: [16777215 603] ) ] spids: [16777215 652] ) ] spids: [518] ) spids: [514 517] ) (SimpleCommand words: [{(printf)} {(DQ ('Space for lap | ? for split | Ctrl-C to stop | Space to start...'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[662])] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(trap)} {(true)} {(INT)} {(QUIT)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:laptime) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(/usr/bin/time)} {(-p)} {(cat)}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [692] ) (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [697] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [687 699] ) } spids: [686] ) ] spids: [686] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ret) op: Equal rhs: {($ VSub_QMark '$?')} spids: [702] ) ] spids: [702] ) (C {(trap)} {(SQ )} {(INT)} {(QUIT)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$ret')} {(-eq)} {(1)} {(-o)} {($ VSub_Name '$ret')} {(-eq)} {(2)} {(-o)} {($ VSub_Name '$ret')} {(-eq)} {(130)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$start'))} {(Lit_Other ']')} ) (BraceGroup children: [ (Sentence child: (SimpleCommand words: [{(echo)}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [770] ) ] ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(exit)}) terminator: <Op_Semi ';'> ) ] spids: [766] ) ] op_id: Op_DAmp ) (C {(stop)}) ] spids: [16777215 748] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$ret')} {(-eq)} {(3)} {(-o)} {($ VSub_Name '$ret')} {(-eq)} {(131)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$start'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:start) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(now)})]) left_token: <Left_Backtick '`'> spids: [827 829] ) } spids: [826] ) ] spids: [826] ) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) (SimpleCommand words: [{(echo)}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [840] ) ] ) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [16777215 823] ) ] spids: [16777215 847] ) (C {(lap)} {(DQ ($ VSub_Name '$laptime'))} {(DQ (display))}) ] spids: [783 804] ) ] else_action: [ (AndOr children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(DQ ($ VSub_Name '$start'))} {(Lit_Other ']')}) (ControlFlow token:<ControlFlow_Continue continue>) ] op_id: Op_DAmp ) (C {(total)}) (C {(lap)} {(DQ ($ VSub_Name '$laptime'))}) ] spids: [861 895] ) ] spids: [671 897] ) ) ] )