S-выражения представляют дерево, а не наоборот.Ваш пример, отформатированный с помощью новых строк:
(f 1
(g 2)
3)
Это представляет следующее дерево доводов:
+---+---+ +---+---+ +---+---+ +---+---+
--->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL|
+---+---+ +---+---+ + ¦ +---+ +---+---+
v
+---+---+ +---+---+
| g | ----->| 2 |NIL|
+---+---+ +---+---+
Это в то же время фактическое абстрактное синтаксическое дерево программы - то, что компилируетсядля других языковых семейств нужно строить из сложных правил.
Для редактирования скобки - это все, что вам и вашему редактору нужно работать на уровне дерева.В Emacs это paredit-mode , но я думаю, что другие редакторы имеют аналогичные утилиты или плагины.