S-expressions give us that natural syntax for expressing nested hierarchical trees, and once our program is written as trees, it becomes tempting to let those trees rewrite themselves, a path that leads naturally to macros making syntax expand into more syntax. Such is the Lisp deal.
What if we went the other way around?