Из вашего кода:
s = "if 5:\n"
check_syntax(s)
if 5:\n
- недопустимый синтаксис, поскольку он не является полным оператором if
. Вам необходимо предоставить набор (код для выполнения), если выражение True
. Например:
>>> if 5:
...
File "<stdin>", line 2
^
IndentationError: expected an indented block
>>> compile('if 5:\n', '<string>', 'exec')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
if 5:
^
SyntaxError: unexpected EOF while parsing
>>> compile('if 5:\n print 5', '<string>', 'exec')
<code object <module> at 0xb7f60530, file "<string>", line 2>