Scratch is really just a visual representation of a programming language's AST. It's like programming in LISP but using drag-and-drop blocks as opposed to parentheses. And the more general your programming language becomes, the more uniform the corresponding graphical representation as well - you get no help from the "block shapes" encoding different AST forms, everything turns into a soup of equally-shaped blocks where "anything goes". So, pretty much the same as LISP with its soup of parentheses.