Using SymADE I found, that structural editor is rather convenient for declaration editing (declaration of types, methods, even statements) and for declarative DSLs, but it's completely unusable for expressions.
The Kiev compiler, on which SymADE was written, supports user-defined operators. It was relatively easy to solve the problem with expressions - before editing they are automatically spitted into a sequence of tokens (identifiers, operators, constants) and then edited as text (a kind of markup text, like the text in word processors or HTML editors), and converted back into the tree (using operator's priority, arity and others parameters).
I also tried to understand how this problem was solved in MPS editor, but was unable to understand how to edit the text at all, how to find right shortcuts, get into context menu (to find out how can I change current node). I think, you need to put more attention to make editor convenient and self-explained for new users. But anyway:
How did you solved the inconvenience of expression editing?