I am writing some sort of simple web-interpreter for vk.com . I look for messages, check if they are valid Python code, and then I want to execute that code, and return any stdout to code sender. I have implemented anything but code checker.
import ast
def is_valid(code):
try:
ast.parse(code)
except SyntaxError:
print('Input isnt code.')
return False
print('Code is ok.')
return True
is_valid() always return True regardless of what comes in. Im really confused...
1 Answer 1
Keep in mind, the difference between a runtime error and a parser error is significant in your case and example. The statement:
test
is valid code. Even though this statement will throw a NameError when the Python VM executes the code, the parser will not know that it actually wasn't assigned a value before the statement is parsed, so that's why it's a runtime error, and not a syntax error.
6 Comments
NameError thenx + 1 valid code?x is not defined? Or if x is a string?
True.