(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:counter) op: assign_op.Equal rhs: {<2>} spids: [14] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remainder) op: assign_op.Equal rhs: {<1>} spids: [17] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Simple words: [{<echo>} {(DQ <'Usage: isprime NUMBER'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [21 35] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:number) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [55] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$number')} {<-lt>} {<2>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (C {<echo>} {(DQ <'No, '> ($ Id.VSub_DollarName '$number') <' is not a prime'>)}) terminator: <Id.Op_Semi _> ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [63 77] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$counter')} {<-le>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$number')} {<'/'>} {<2>}) ) } {<-a>} {($ Id.VSub_DollarName '$remainder')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remainder) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$number')} {<Id.Lit_Other '%'>} {($ Id.VSub_DollarName '$counter')} ) ) } spids: [132] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:counter) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$counter')} {<Id.Lit_Other '+'>} {<1>}) ) } spids: [151] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$remainder')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [(C {<echo>} {(DQ <'No, '> ($ Id.VSub_DollarName '$number') <' is not a prime'>)})] spids: [165 179] ) ] else_action: [(C {<echo>} {(DQ <'Yes, '> ($ Id.VSub_DollarName '$number') <' is a prime'>)})] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )