Начну, пожалуй, со своей идеи. Чтобы обеспечить богатство инструментария, машинная работа с исходниками должна быть как можно более простой, а значит язык должен иметь как можно более простой синтаксис, чтобы написать его парсер мог любой джуниор. В идеале - сами исходные коды должны быть ни чем имым, как сериализованное абстрактное синтаксическое дерево. Апофеозом этой идеи является Лисп, где есть только "атомы" и их "списки". Семантика определяется именем атома и контекстом его использования. К сожалению, плоские списки имеют довольно слабую читаемость.
Типичный код на Лиспе:
(defun fibonacci (n)
(loop repeat n
for a = 0 then b
and for b = 1 then (+ a b)
finally (return b)))
Даже в нём, как правило первый элемент имеет особое значение, определяющее семантику остальных элементов. В обилии скобочек легко запутаться. Гораздо лучше было бы воспользоваться синтаксисом со значимыми отступами, что значительно улучшило бы читаемость. Например, всё дерево можно представить в виде типизированных узлов, которые могут содержать списки других узлов. Вложенные узлы помещаются на отдельных строках с большим отступом.
Например:
test
name \define and use custom macro with arguments
case jack
inherit
let body cut-head cut-tail from
tree body
one
two
three
four
case
two
three