(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {<.> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$PATH')} spids: [7] ) ] ) (command.ShFunction name: exceedsDaysInMonth body: (BraceGroup children: [ (command.Case to_match: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number '$1')}) (C {<tr>} {(SQ <'[:upper:]'>)} {(SQ <'[:lower:]'>)}) ] negated: F ) ) } arms: [ (case_arm pat_list: [{<jan> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [59] ) ] ) ] spids: [54 57 62 -1] ) (case_arm pat_list: [{<feb> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<28>} spids: [69] ) ] ) ] spids: [64 67 72 -1] ) (case_arm pat_list: [{<mar> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [80] ) ] ) ] spids: [75 78 83 -1] ) (case_arm pat_list: [{<apr> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<30>} spids: [90] ) ] ) ] spids: [85 88 93 -1] ) (case_arm pat_list: [{<may> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [101] ) ] ) ] spids: [96 99 104 -1] ) (case_arm pat_list: [{<jun> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<30>} spids: [111] ) ] ) ] spids: [106 109 114 -1] ) (case_arm pat_list: [{<jul> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [122] ) ] ) ] spids: [117 120 125 -1] ) (case_arm pat_list: [{<aug> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [132] ) ] ) ] spids: [127 130 135 -1] ) (case_arm pat_list: [{<sep> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<30>} spids: [143] ) ] ) ] spids: [138 141 146 -1] ) (case_arm pat_list: [{<oct> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [153] ) ] ) ] spids: [148 151 156 -1] ) (case_arm pat_list: [{<nov> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<30>} spids: [164] ) ] ) ] spids: [159 162 167 -1] ) (case_arm pat_list: [{<dec> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:days) op: assign_op.Equal rhs: {<31>} spids: [174] ) ] ) ] spids: [169 172 177 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Sentence child: (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_Number '$0') <': Unknown month name '> ($ Id.VSub_Number '$1') ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [180 182 -1 201] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<-lt>} {<1>} {<-o>} {($ Id.VSub_Number '$2')} {<-gt>} {($ Id.VSub_DollarName '$days')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})] spids: [204 226] ) ] else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] ) ] ) ) (command.ShFunction name: isLeapYear body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:year) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [292] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Percent left: <Id.Lit_ArithVarLike year> right: {<Id.Lit_Digits 4>} ) ) ) } {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})] spids: [296 319] ) (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Percent left: <Id.Lit_ArithVarLike year> right: {<Id.Lit_Digits 400>} ) ) ) } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [330 353] ) (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Percent left: <Id.Lit_ArithVarLike year> right: {<Id.Lit_Digits 100>} ) ) ) } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})] spids: [364 387] ) ] else_action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] ) ] ) ) ] )