(FuncDef name: nicenumber body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:integer) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-d.)} {(-f1)})] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [37 49] ) } spids: [36] ) ] spids: [36] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:decimal) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(echo)} {($ VSub_Number '$1')}) (C {(cut)} {(-d.)} {(-f2)})] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [56 68] ) } spids: [55] ) ] spids: [55] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$decimal'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name DD> suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(" '.'")}) spids: [106 110] ) ($ VSub_Name '$decimal') ) } spids: [104] ) ] spids: [104] ) ] spids: [16777215 97] ) ] spids: [16777215 115] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:thousands) op: Equal rhs: {($ VSub_Name '$integer')} spids: [119] ) ] spids: [119] ) (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$thousands')} {(-gt)} {(999)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:remainder) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Percent left: (ArithWord w:{($ VSub_Name '$thousands')}) right: (ArithWord w:{(Lit_Digits 1000)}) ) spids: [141 148] ) } spids: [140] ) ] spids: [140] ) (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name remainder> prefix_op: VSub_Pound spids: [164 167] ) } {(-lt)} {(3)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:remainder) op: Equal rhs: {(DQ (0) ($ VSub_Name '$remainder'))} spids: [183] ) ] spids: [183] ) ] spids: [177 190] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name TD> suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(DQ (','))}) spids: [196 202] ) (${ VSub_Name remainder) (${ VSub_Name result) ) } spids: [194] ) ] spids: [194] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:thousands) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Slash left: (ArithWord w:{($ VSub_Name '$thousands')}) right: (ArithWord w:{(Lit_Digits 1000)}) ) spids: [216 223] ) } spids: [215] ) ] spids: [215] ) ] spids: [137 229] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:nicenum) op: Equal rhs: {(DQ (${ VSub_Name thousands) (${ VSub_Name result))} spids: [233] ) ] spids: [233] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Number '$2')} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {($ VSub_Name '$nicenum')})] spids: [16777215 258] ) ] spids: [16777215 266] ) ] spids: [20] ) spids: [16 19] )