In Tcl, a control structure is basically just another command. This is one possible implementation of a do ... while / do ... until control structure.
proc do {body keyword expression} {
uplevel 1 $body
switch $keyword {
while {uplevel 1 [list while $expression $body]}
u...