#!/usr/bin/env bash proc READ { read -u 0 -e -p "user> " r } proc EVAL { global r := $(1) } proc PRINT { global r := $(1) } while true { READ EVAL $(r) PRINT $(r) echo $(r) } (CommandList children: [ (FuncDef name: READ body: (BraceGroup children: [(C {(read)} {(-u)} {(0)} {(-e)} {(-p)} {(DQ ("user> "))} {(r)})] spids: [9] ) spids: [4 8] ) (FuncDef name: EVAL body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [39] ) ] spids: [39] ) ] spids: [36] ) spids: [31 35] ) (FuncDef name: PRINT body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [57] ) ] spids: [57] ) ] spids: [54] ) spids: [49 53] ) (While cond: [(Sentence child:(C {(true)}) terminator:)] body: (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] ) ) ] )