Chcę zhackować z interpreterem Pythona i spróbować utworzyć małe DSL. Czy istnieje jakiś moduł, w którym mogę zrobić coś w rodzaju tego kodu teoretycznego (podobnie jak drzewa wyrażeń LINQ)?Czy jest jakiś sposób programowo wygenerować kod bajtowy Pythona?
expression_tree = Function(
Print(
String('Hello world!')
)
)
compile_to_bytecode(expression_tree)
A może po prostu łatwiej byłoby po prostu wygenerować kod źródłowy Pythona? Czy można to ułatwić, używając C, SWIG lub Cython?
Biorąc pod uwagę ogromną siłę wyrazu języków OO (Python w szczególności) DSL jest dość głupie. Po prostu napisz Python. Jeśli podajesz dobre definicje klas, masz "podobny do DSL" Python i nie potrzebujesz tego. –