LINUX.ORG.RU

История изменений

Исправление 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 вроде можно обойтись