(CommandList children: [ (FuncDef name: Usage body: (BraceGroup children: [ (SimpleCommand words: [ {(echo)} { (DQ ('Usage: ') (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Number '$0')})]) left_token: <Left_Backtick '`'> spids: [24 28] ) (' mon|tue|... [next]|week|last') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[32])] ) (C {(exit)} {(1)}) ] spids: [17] ) spids: [12 16] ) (AndOr children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-eq)} {(DQ (0))} {(Lit_Other ']')}) (C {(Usage)}) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:day) op:Equal rhs:{($ VSub_Number '$1')} spids:[62])] spids: [62] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:which) op:Equal rhs:{($ VSub_Number '$2')} spids:[65])] spids: [65] ) (AndOr children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$which'))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:which) op:Equal rhs:{(next)} spids:[80])] spids: [80] ) ] op_id: Op_DAmp ) (Case to_match: {($ VSub_Name '$which')} arms: [ (case_arm pat_list: [{(week)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (D)})] ) left_token: <Left_Backtick '`'> spids: [98 104] ) } {(Lit_Other '=')} { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(--date) (Lit_Other '=') (DQ ('next ') ($ VSub_Name '$day'))} {(Lit_Other '+') (Lit_Other '%') (D)} ) ] ) left_token: <Left_Backtick '`'> spids: [108 121] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:weeks) op: Equal rhs: {(Lit_Other '+') (2)} spids: [129] ) ] spids: [129] ) ] spids: [16777215 126] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:weeks) op: Equal rhs: {(Lit_Other '+') (1)} spids: [140] ) ] spids: [140] ) ] spids: [137 145] ) ] spids: [90 91 147 16777215] ) (case_arm pat_list: [{(last)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:weeks) op:Equal rhs:{(-1)} spids:[153])] spids: [153] ) ] spids: [149 150 155 16777215] ) (case_arm pat_list: [{(next)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (D)})] ) left_token: <Left_Backtick '`'> spids: [165 171] ) } {(Lit_Other '=')} { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(--date) (Lit_Other '=') (DQ ('next ') ($ VSub_Name '$day'))} {(Lit_Other '+') (Lit_Other '%') (D)} ) ] ) left_token: <Left_Backtick '`'> spids: [175 188] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:weeks) op: Equal rhs: {(Lit_Other '+') (1)} spids: [196] ) ] spids: [196] ) ] spids: [16777215 193] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:weeks) op: Equal rhs: {(Lit_Other '+') (0)} spids: [207] ) ] spids: [207] ) ] spids: [204 212] ) ] spids: [157 158 214 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(Usage)})] spids: [216 217 221 16777215] ) ] spids: [84 88 223] ) (C {(date)} {(--date) (Lit_Other '=') (DQ ($ VSub_Name '$day') (' ') ($ VSub_Name '$weeks') (' weeks'))} {(Lit_Other '+') (Lit_Other '%') (x)} ) ] )