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


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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:dev_zer0 No.1

回答回数332ベストアンサー獲得回数25

ポイント40pt

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

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


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

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


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

id:mikasa_zzt231

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

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

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

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

 ポイントを進呈します。

2005/04/03 03:37:51
id:JULY No.2

回答回数966ベストアンサー獲得回数247

ポイント40pt

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


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

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

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

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


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

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

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


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

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

出すのは不可能です。


余談:

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

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

id:mikasa_zzt231

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

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

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

2005/04/03 03:39:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません