procedure ltree(stree)
local a
stree ?
if a := [tab(upto('('))] then { # start with value
move(1)
# add subtrees
while put(a,ltree(tab(bal(',)')))) do
move(1)
}
else a := [tab(0)] # leaf
return a
end