0

私はCファイルで渡されます。Cファイルには、ローカル変数を含む関数が含まれています。任意のCファイルが与えられた場合、特定のメソッド(ユーザーが指定)内でローカル変数を見つけてグローバルにする必要があります。(グローバル変数のみを処理できる別のアプリケーションの仕様)...

これを行う最も簡単な方法は何ですか?シェルスクリプトを使用するのでしょうか、それともCで直接実行するのでしょうか。正規表現を使用する必要がありますか?私はこれを間違った方法で行うことを考えていますか?

どんな助けでもいただければ幸いです

4

2 に答える 2

1

変数の特定のコンテキストを探しています。この場合、コンテキストは関数内で宣言されたローカル変数です。正規表現を使用して関数定義を引き出すことができますが、ある種のトークンパーサーの方がはるかに優れています。

Cの簡略化された文法を使用すると、関数文字列自体を取得でき、そこからローカル変数自体を見つけることができます。

ただし、渡されるCコードが特定の形式である場合、IEローカル変数は関数定義の最上位にあり、単純な正規表現を使用できます。

于 2012-07-17T19:32:44.863 に答える
1

C99では、変数を関数全体、ブロック内などで宣言できるため、変数を識別するタスクは複雑です。yaccやflexなどのレクサー/パーサーを利用してCソースファイルをトークン化し、生成された構造から変数宣言を引き出すことができる場合があります。この汎用を作成することは、多くの作業になる可能性があります。

于 2012-07-17T20:10:49.423 に答える