так, я опять уперся в тупик:
есть зачаток реалиации абстрактного синтаксического дерева. Суть в том, что при операциях с определенными объектами, они могут формировать AST узлы, которые потом одним вызовом разворачиваются в конечную строку, типа так:
Сейчас я придумываю, как все эти генерируемые объекты собирать в один список с "корневыми узлами" AST, который при компиляции будет последовательно раборачиваться в филаньный код.
Есть заготовка для того, чтобы получать тело функции без необходимости ее парсинга.
Механика должна получиться следующая:
Объявляем функцию, декорированную моим классом Callable (в питоне это как два пальца обоссать) с содержанием, допустим:
И этот класс должен все генерируемые AST объекты перенаправлять в узел AST (грубо говоря, в текущую строку)
Так вот, самым очевидным решением мне сейчас кажется, сделать для выхода синглтон, который будет отслеживать текущее положение в массиве с корнями AST (грубо говоря, директивами). Но чет я боюсь, а не свяжу ли я таким образом себе руки, и не сделать ли решение с назначением выхода более "объектным"?
есть зачаток реалиации абстрактного синтаксического дерева. Суть в том, что при операциях с определенными объектами, они могут формировать AST узлы, которые потом одним вызовом разворачиваются в конечную строку, типа так:
Код:
print((var0 + 6 + 8 + var1)()) # output code: var0 + 14 + var1
Сейчас я придумываю, как все эти генерируемые объекты собирать в один список с "корневыми узлами" AST, который при компиляции будет последовательно раборачиваться в филаньный код.
Есть заготовка для того, чтобы получать тело функции без необходимости ее парсинга.
Механика должна получиться следующая:
Объявляем функцию, декорированную моим классом Callable (в питоне это как два пальца обоссать) с содержанием, допустим:
Код:
@Callable
def function()
var0 + 6 + 8 + var1
var2.assign(5+var1+10)
# output code:
```
var0 + 14 + var1
var2 := 5+var1+10
```
Так вот, самым очевидным решением мне сейчас кажется, сделать для выхода синглтон, который будет отслеживать текущее положение в массиве с корнями AST (грубо говоря, директивами). Но чет я боюсь, а не свяжу ли я таким образом себе руки, и не сделать ли решение с назначением выхода более "объектным"?