(CommandList children: [ (C {(.)} {(validint)}) (FuncDef name: validfloat body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fvalue) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [48] ) ] spids: [48] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$fvalue')}) (C {(sed)} {(SQ <'s/[^.]//g'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [67 79] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:decimalPart) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$fvalue')}) (C {(cut)} {(-d.)} {(-f1)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [95 107] ) ) } spids: [93] ) ] spids: [93] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fractionalPart) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name fvalue> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('*') (EscapedLiteralPart token:<Lit_EscapedChar '\\.'>)} ) spids: [118 123] ) ) } spids: [116] ) ] spids: [116] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {($ VSub_Name '$decimalPart')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(validint)} {(DQ ($ VSub_Name '$decimalPart'))} {(DQ )} {(DQ )}) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 180] ) ] spids: [16777215 188] ) ] spids: [16777215 151] ) ] spids: [16777215 192] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name fractionalPart> suffix_op: (StringUnary op_id: VOp1_Percent arg_word: { (BracedVarSub token: <VSub_Name fractionalPart> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('?')} ) spids: [216 220] ) } ) spids: [213 221] ) ) } {(Lit_Other '=')} {(DQ (-))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("Invalid floating-point number: '-' not allowed ") (' after decimal point') ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 234] ) ] spids: [16777215 257] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$fractionalPart'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(validint)} {(DQ ($ VSub_Name '$fractionalPart'))} {(DQ (0))} {(DQ )} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 306] ) ] spids: [16777215 314] ) ] spids: [16777215 279] ) ] spids: [16777215 317] ) ] spids: [16777215 85] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$fvalue'))} {(Lit_Other '=')} {(DQ (-))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (SimpleCommand words: [{(echo)} {(DQ ('Invalid floating-point format.'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) terminator: <Op_Semi ';'> ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 346] ) ] spids: [16777215 365] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [(C {(validint)} {(DQ ($ VSub_Name '$fvalue'))} {(DQ )} {(DQ )})] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [16777215 395] ) ] spids: [16777215 403] ) ] spids: [320 406] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [45] ) spids: [41 44] ) ] )