人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語のソースがあります。

正規表現を用いて関数名と
定義されている変数名を
取り出す方法を教えてください。

●質問者: mikasa_zzt231
●カテゴリ:コンピュータ
✍キーワード:C言語 ソース 変数 定義 正規表現
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● dev_zer0
●40ポイント

http://www.fides.dti.ne.jp/~oka-t/doxygen-manual/html/

残念ながら私の知る限り正規表現で関数名、変数名を取得することはできません

yacc/lexなどを使用して構文解析をしない限り無理だと思われます。


しかし、doxygenというフリーのツールを使えば、関数名とグローバル/static変数をhtml形式などに出力することは出来ます

(このツールでも内部変数は取り出せません)


あくまで正規表現のみで取り出したいと望まれているならポイントはいりません

◎質問者からの返答

●ありがとうございます。

このツールはオープンソースなので

中身を読んで勉強しようと思います。

有用な情報でしたので、締め切り後に

ポイントを進呈します。


2 ● JULY
●40ポイント

http://ja.wikipedia.org/wiki/%E6%96%87%E8%84%88%E8%87%AA%E7%94%B...

文脈自由文法 - Wikipedia

1番目の回答で正解なのですが、理論的な補足をします。


現在、一般に使われているプログラミング言語は「文脈自由文法」に

属するシンタックスを持っています。

http://hwb.ecc.u-tokyo.ac.jp/current/CDD1B8ECBDB82FCDADB8C2BEF5C...

有限状態オートマトン (HWB)

それに対して、正規表現は「有限状態オートマトン」と呼ばれる

シンタックスを持っています。


後者に比べて前者の方が、シンタックスとして高い自由度を

持っているので、正規表現を使って C のソースから任意の

要素を正確に取り出すことが出来ない、ということになります。


ま、ある程度、誤りに目をつぶって、「関数名っぽいもの」を

取り出すことはできると思いますが、正規表現だけで正確に取り

出すのは不可能です。


余談:

えらそうなことを書いていますが、「有限状態オートマトン」の話は

理解しているつもりですが、「文脈自由文法」は言葉しか知らない(^^;。

◎質問者からの返答

いろいろ考え方があるんですね。

詳しく説明の載っているURLを紹介頂き

ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ