0

タイトルが示すように、外部モジュールを使用せずに 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

編集:理想的には、リアルタイムの構文チェックに十分なパフォーマンスが得られます。

4

1 に答える 1

6

exec特に良いアイデアとは思えません。問題のスクリプトに副作用 (ファイルの作成や変更など) がある場合や、実行に時間がかかる場合はどうすればよいでしょうか?

compile関数とparserモジュールを見てください。

于 2011-07-29T12:36:25.430 に答える