(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:-1 arg_word:{(/dev/null)} spids:[181])] ) (SimpleCommand words: [{(date)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[188])] ) (SimpleCommand words: [{(grep)} {(.)}] redirects: [(Redir op_id:Redir_Less fd:-1 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:-1 arg_word:{(/dev/null)} spids:[221])] ) (SimpleCommand words: [{(sed)} {(SQ )}] redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[231])] ) (SimpleCommand words: [{(printf)} {(SQ <1>)}] redirects: [(Redir op_id:Redir_Great fd:-1 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:-1 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: [-1 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: [-1 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: [-1 603] ) ] spids: [-1 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:-1 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: -1 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: -1 arg_word: {(2)} spids: [770] ) ] ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(exit)}) terminator: <Op_Semi ";"> ) ] spids: [766] ) ] op_id: Op_DAmp ) (C {(stop)}) ] spids: [-1 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: -1 arg_word: {(2)} spids: [840] ) ] ) (ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [-1 823] ) ] spids: [-1 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] ) ) ] )