String register machine (source code)

= String register machine

In a string register machine, $+_a(k,q)$ appends $a$ to register $k$; $?_a(k,p,q)$ branches according to whether its final letter is $a$; $?_\varepsilon(k,p,q)$ tests emptiness; and $-(k,p,q)$ branches to $p$ when empty, or deletes the final letter and branches to $q$ otherwise.