特定のCプログラムを分析し、特定のプログラムに関する情報(関数リスト、変数リストなど)を含むtxtレポートまたはhtmlレポートを生成するツールを作成するために使用できる便利なプログラミング言語を誰かに提案してもらえますか。私が構築しようとしているプログラムは doxygen に似ていますが、個人的に使用したいと思っています。
8 に答える
ctags、おそらく?
Ctags は、ソース ファイルで見つかった言語オブジェクトのインデックス (またはタグ) ファイルを生成し、テキスト エディターやその他のユーティリティでこれらの項目をすばやく簡単に見つけることができるようにします。タグは、インデックス エントリが利用可能な言語オブジェクト (または、そのオブジェクト用に作成されたインデックス エントリ) を示します。
Python と Perl はどちらも優れた文字列処理機能を備えています。
ctags のようなものを使用してプログラムを解析し、ctags ファイルを読み取って txt/html に出力するスクリプトを作成することをお勧めします。
ctags で使用されるファイル形式は、他のプログラムが読み取ることができるように明確に定義されています。ctags 自体とそれが使用するファイルの詳細については、 http://ctags.sourceforge.netを参照してください。
あなたはワームの大きな缶を開けています。これはあなたの時間を有効に使っていません。
答えに移ります。些細な分析を超えたものについて話している場合で、正確さが必要な場合は、C ソース コードを解析する必要があります。これはどの言語でも行うことができますが、ほとんどの場合、高度な文法からパーサーを生成する必要があります。そのためのツールはいくらでもあります。最新の、特に強力なパーサー ジェネレーターはANTLRです。C 用の ANTLR 文法は多数あり、扱いやすいサブセットも含まれています。
スクリプト言語を調べてください。Python または Perl をお勧めします。
Haskell には、 C コードの分析を可能にする比較的最近の言語 C プロジェクトhttp://www.sivity.net/projects/language.cがあります。
Haskell に精通している場合は、一見の価値があるかもしれません。そうでない方も、やってみると面白いかもしれません。
それがあなたが望むプログラミング言語なら、文字列処理能力で知られている何かと言います。それはperlを意味します.
ただし、言語を「知る」必要があるため、必要なタスクはかなり複雑になる可能性があります。そのため、言語の語彙的および文法的分析 (flex を考え、yacc を考える) であるコンパイラと同じ手順に従う必要があります。それらの文字列が持つ意味を本当に「知っている」。
おそらく最良の出発点は、doxygen を見て、そこで行われた作業を可能な限り再利用することです。
Lex/yacc は、パーサーの構築に適しています。