(command.CommandList children: [ (command.FuncDef name: READ body: (command.BraceGroup children: [(C {(read)} {(-u)} {(0)} {(-e)} {(-p)} {(DQ ('user> '))} {(r)})] ) ) (command.FuncDef name: EVAL body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:r) op:Equal rhs:{(DQ (${ VSub_Number 1))})] ) ] ) ) (command.FuncDef name: PRINT body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:r) op:Equal rhs:{(DQ (${ VSub_Number 1))})] ) ] ) ) (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))}) ] ) ) ] )