正規表現を用いて関数名と
定義されている変数名を
取り出す方法を教えてください。
残念ながら私の知る限り正規表現で関数名、変数名を取得することはできません
yacc/lexなどを使用して構文解析をしない限り無理だと思われます。
しかし、doxygenというフリーのツールを使えば、関数名とグローバル/static変数をhtml形式などに出力することは出来ます
(このツールでも内部変数は取り出せません)
あくまで正規表現のみで取り出したいと望まれているならポイントはいりません
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を紹介頂き
ありがとうございました!
●ありがとうございます。
このツールはオープンソースなので
中身を読んで勉強しようと思います。
有用な情報でしたので、締め切り後に
ポイントを進呈します。