(command.CommandList children: [ (command.FuncDef name: READ body: (command.BraceGroup children: [(C {(read)} {(-u)} {(0)} {(-e)} {(-p)} {(DQ ('user> '))} {(r)})] spids: [9] ) spids: [4 8] ) (command.FuncDef name: EVAL body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[39]) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [39] ) ] spids: [39] ) ] spids: [36] ) spids: [31 35] ) (command.FuncDef name: PRINT body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:r spids:[57]) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [57] ) ] spids: [57] ) ] spids: [54] ) spids: [49 53] ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (C {(READ)}) (C {(EVAL)} {(DQ (${ VSub_Name r))}) (C {(PRINT)} {(DQ (${ VSub_Name r))}) (C {(echo)} {(DQ (${ VSub_Name r))}) ] spids: [72 104] ) ) ] )