Remember this project I made a while ago? Yeah, so the new functionality of the Snap! Block AST has got me making compilers in Snap! The very small interpreter was made into this:
They mean SPLIT BY BLOCKS and JOIN of a block list.
What we have is actually not an AST because its subtrees don't have nonterminal symbols as their heads. The lists should be something like (SCRIPT ...) where each instr is something like (INSTR ...), each command is (COMMAND ) and each input is (EXPR ...) V (VARIABLE ) V (CONSTANT ).
But I'm having trouble reading the code, because the CODE block's definition is long and hairy. I wonder if you could have subprocedures named after the command characters, such as a ~ block, a ! block, and so on. Then you can use the JOIN block to turn a block name into a block (in a tree). That would make COMP much shorter because there wouldn't be a zillion IFs in it! Instead there'd just be one RUN block whose input would be JOIN INPUT LIST: (ITEM 1 OF list) ...