This is a good counterexample to "syntax is not sufficient for semantics". It is sufficient when there is no distinction between data and code. Code can reflect on itself as data. Like bootstrapped autocompilers, Godel's Arithmetization or neural nets. In all cases syntax is both data and behavior, it is deep, self reflective and self generative.
> This is a good counterexample to "syntax is not sufficient for semantics"
Perhaps I'm misunderstanding. At the top of https://treecalcul.us/specification/ it shows 5 lines of small-step semantics. If you threw these away, could you recover them from the syntax?