(command.CommandList children: [ (command.ShFunction name: READ body: (command.BraceGroup children: [(C {(read)} {(-u)} {(0)} {(-e)} {(-p)} {(DQ ('user> '))} {(r)})] ) ) (command.ShFunction name: EVAL body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [39] ) ] ) ] ) ) (command.ShFunction name: PRINT body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Number 1))} spids: [57] ) ] ) ] ) ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:67) cond: [(command.Sentence child:(C {(true)}) terminator:(Token id:Id.Op_Semi val:';' span_id:70))] body: (command.DoGroup children: [ (C {(READ)}) (C {(EVAL)} {(DQ (${ Id.VSub_Name r))}) (C {(PRINT)} {(DQ (${ Id.VSub_Name r))}) (C {(echo)} {(DQ (${ Id.VSub_Name r))}) ] ) ) ] )