[1] https://www.jetbrains.com/idea/docs/ssr.pdf [2] https://www.youtube.com/watch?v=YeGPO-UHTbs [3] https://www.jetbrains.com/help/idea/structural-search-and-re... [4] https://www.jetbrains.com/help/go/structural-search-and-repl... [5] https://www.jetbrains.com/help/pycharm/structural-search-and...
The thing is, people seem to be under this weird assumption that you write embedding languages directly, and thus that embedding languages are hard to use.
The thing about embedding languages is that you aren't meant to see the embedded form!!! HTML is an embedding language, and I'm editing it right now (to write this post) without ever seeing a single HTML tag. I can see HTML of course if I want to by opening devtools, but the real power of an embedding language is that it can serve as a backend to a GUI because there's no state that you could create in the GUI that can't be represented in the embedding language
- You get the simplicity of "direct code search". You just write the syntax you want to find.
- You get the full power of "code with holes", e.g. to be able to distinguish between matching a body with no children and a body with arbitrary children
- You get the full precision of an embedded language. There are no technical limitations on this technique and what programming languages it is readily compatible with.