This is very nice. I'm amused by how much effort you have to put into "Undefined."
Any plans to work on accepting text that looks more like real text programming rather than like a code tree? In a perfect world we'd be able to take a Python program or whatever and turn it into a Snap! project.
tbh the one i'm most familiar with is Pratt parsing (due to me having read and implemented (in Python) the second part of Crafting Interpreters relatively recently)
unfortunately that's doing hand-built parsers, so i'd have to make a parser every time i wanted to support converting programs in a new text language to Snap!
Right, of course it's not really universal. But all the languages that people other than you and me have heard of basically follow C syntax, so I think there's hope for a one-parser-fits-all approach for them. Maybe you'd have to provide a language-specific list of syntactic reserved words.
And of course if it's Scheme you're interested in, you don't need a parser; it's already parsed! :~)
true (split by blocks works on it), though not the syntactic sugar like `(...) (yes the backtick and comma are the only bit of syntactic sugar i remember from scheme)
There isn't much more, except regular '(...) abbreviating (quote ...). But those things get caught in the tokenizer; you need one of those even for Scheme. :~)