История изменений
Исправление www_linux_org_ru, (текущая версия) :
Перегонять код в AST и попуцтно преобразовывать <...> Изящество - парсить ничего не надо, все делает интепретатор;-)
и что — можно вытащить AST *полностью*?
я так предполагаю, что методика вытаскивания AST — это подсунуть exec-y правильный mapping object, чтобы вместо/во_время выполнения f(x,42) построилось соответствущее AST
но для этого нужно, чтобы перегружались не только функции, но и if-ы и прочие управляющие конструкции — питон это позволяет?
понятно, что если хочется всего лишь
exec "from(table1,table2).select(a,b,c).where(a=c).order_by(b)" in crafted_mapping_object
то управляющие конструкции перегружать не надо, но тогда и без AST вроде можно обойтись
Исходная версия www_linux_org_ru, :
Изящество - парсить ничего не надо, все делает интепретатор;-)
и что — можно вытащить AST *полностью*?
я так предполагаю, что методика вытаскивания AST — это подсунуть exec-y правильный mapping object, чтобы вместо/во_время выполнения f(x,42) построилось соответствущее AST
но для этого нужно, чтобы перегружались не только функции, но и if-ы и прочие управляющие конструкции — питон это позволяет?
понятно, что если хочется всего лишь
exec "from(table1,table2).select(a,b,c).where(a=c).order_by(b)" in crafted_mapping_object
то управляющие конструкции перегружать не надо, но тогда и без AST вроде можно обойтись