タイトルが示すように、外部モジュールを使用せずに Python ソースの構文エラーをチェックするより良い方法はありますか?
つまり、より Pythonic スタイルまたはよりパフォーマンスの高い方法の意味で。
def CheckSyntax(source, raw = False):
lines = source.count("\n")
source += "\nThis is a SyntaxError" # add a syntax error to source, it shouldn't be executed at all
try:
exec source in {}, {}
except SyntaxError, e:
if e.lineno != lines + 2:
if raw:
return e
else:
return e.lineno, e.offset, e.text
編集:理想的には、リアルタイムの構文チェックに十分なパフォーマンスが得られます。