-1

ファイルの読み込み時に関数/メソッドのみを折りたたむ崇高なテキストエディター (Python を使用) 用のプラグインを作成しています。これを行うには、ファイルの内容を解析し、関数ブロックを検出し、各ブロックの開始位置と終了位置を取得する必要があります (これは、API が折り畳みを行うために必要です)。最初に思いついたのは正規表現でしたが、ネストされた関数、特に c スタイルの構文では機能しないことがすぐにわかりました。

私が現在これを行っている方法は、行ごとに「{」と「}」を探し、関数定義が同じ行または「{」の上にあるかどうかを確認することです。関数定義が見つからない場合は、それが制御構造であると想定します。コメント内の括弧記号が一致しないと、このロジックが失敗するため、これは完全にはほど遠いものです。私は他のオプションを知らないので、これはおそらくこれを完全に行う間違った方法です。何か案は?

4

1 に答える 1

1

pyparsing または PLY をチェックするか、「再帰降下パーサー」を使用して独自のことを行います。

ネストされた括弧 (および中括弧 - 同じこと) は、おそらく、スタックレス パターン マッチャーが任意の深さに対して実行できない最も一般的な例です。しかし、上記の 3 つのテクノロジーはすべてうまく機能するはずです。

于 2013-04-24T03:02:25.770 に答える