Документация использует literal_binds
для печати запроса q
, включая параметры:
print(q.statement.compile(compile_kwargs={"literal_binds": True}))
, упомянутый выше подход имеет оговорки, что он поддерживается только для базовых типов, таких как ints и strings, и, кроме того, если bindparam () без предварительно заданного значения используется напрямую, он также не сможет выполнить это.
Начните с языка, подобного {a^n c b^n | n >= 0}
, который будет иметь правило, которое потребляет a
для каждого b
, и наоборот:
S -> A | ε
A -> aAb | c
Затем используйте тот факт, что другой способ сказать m >= n
значит сказать m = n + k | k >= 0
. Таким образом, вы можете выразить свой язык как {a^n c b^n b^k | n >= 0, k >= 0}
, который я оставлю вам в качестве упражнения для построения.