Я не говорю о динамическом программировании. Мое желание работать во время компиляции с постройками, как:Возможно ли работать с AST внутри D-кода?
obj.where(x => x.some_val >= 14); // <-- LINQ-style :D
Чтобы иметь возможность работать непосредственно с AST одностенного выражением функции-аргумент:
(>=)
|--(14)
+--(.)
|--(x)
+--(some_val)
Теперь я получил только идея использовать какой-то специальный класс для x-объектов со всеми операторами (например, /-
/*
/.
/...), сильно переопределенный каким-то сумасшедшим грязным способом для сбора информации об анонимной функции AST-структуры (если и только если этот класс является единственным классом, используемым в этой функции с одним выражением).
Как крошечный АСТ для одиночного значения r.
Технически это возможно?
Не то, что вы просите просто фильтр, используя лямбда ?? – DejanLekic
Вы настаиваете на решении на основе D для управления АСТ для кода D, или вас интересует решение, которое может работать с исходным кодом D, но не внедрено в D? –
@DejanLekic Фильтрация с lambda - довольно простой инструмент из стандартной библиотеки (нет, это было не то, что я искал). Жаль, вы делаете такие предположения, это значит, что мой вопрос кажется не очень умным :) –