2011-12-03 14 views
1

カーネルソースツリーの特定のサブシステム(例えばmmと言う)から関数定義をgrepする方法が必要です。私の元々の考えは、正規表現 ")\ n {"を検索することでした。これは、慣例によりLinuxカーネル関数の出発点です。Linuxカーネルソースツリーの関数定義を再帰的に見つける

悲しいことに、私は改行文字がgrepの区切り文字として使用されていることを知っていましたので、正規表現では使用できません。

誰かが回避策や他の有用なコマンドを持っていますか?

ありがとうございます!

+0

[OK]をパーサーを使用してに探し

は、私はちょうどそれを考え直しとされ、リストのみの関数の定義を行い、正規表現を与えました。 すべての関数定義の後に "\ n"が続き、関数呼び出しのように ")"が他の文字またはセミコロンのいずれかの後に続くため、前述の正規表現は他のすべてをフィルタリングします。 誰かに考えを入れてくれてありがとう! – Spap

+0

ctagsは大量のソースコードを解析するのに便利なコマンドです。 – osgx

答えて

0

もう1つの方法は、GCCコンパイラをカスタマイズして、必要なものを検索することです。特に

が、最近のGCC(つまり、バージョン4.6である)、またはGCC MELTで符号化された拡張子を持つプラグイン(Cでコーディングされた)を用いて拡張することができる(MELTは拡張する高レベルのドメイン固有言語でありますGCC)。

0

正直なところ、あなたがしようとしているのは解析であり、正規表現は間違ったアプローチです。確かに、 は時間の99%を稼働するものを得るかもしれませんが、奇妙で予期しない方法で失敗するでしょう。 「)$」:

関連する問題