0

私はファイルを解析.hしており、ハンガリー語で表記されていないすべての変数を見つけて、それらに相当するハンガリー.cpp語で置き換える必要があります。「えっ、どうして!?」あなたが尋ねる?私の雇用主はハンガリー語の表記法を要求しています」と nuff は言いました。

とりあえず対処しましょうints

これらのケースのいずれかを考えると...

int row;      // no hungarian prefix
int nrow(9);  // incorrect capitalization
int number;   // hmm...
int nnumber = getValue(); // uh oh!

それらは次のように変更する必要があります。

int nRow;
int nRow(9);    // obviously ctor args and assignments shouldn't change
int nNumber;
int nNumber = getValue();

理想的には、 1行の呼び出しを1つだけ狙っています。s///

追加の課題として、誰かが「型チェック」の後にこの変数のすべてのインスタンスを変更する何かを手に入れることができれば、intブラウニーポイントを獲得できます。

これが私がこれまでに持っているものです:

s/(int\s+)(?!n)(\w+)/$1n\u$2/g;

int nrowこれは、またはのようなものとは一致しませんint number

前もって感謝します!

4

1 に答える 1

8

いいえ。

より明確に言えば、正規表現を使用してプログラムをコンパイルしようとしています。これはそのようには機能しません

たとえば、1行はすでに関数パラメーターを忘れており、ユーザー定義型(struct、enum)を解析できません。言うまでもなく、.cppはC++の提案クラスを提案します。

また、メソッド/関数/インラインコメントはどうなりますか?

私のアドバイスは、どこかで文法コンパイラを見つけて、それにc ++文法を渡すことです。したがって、すべての定義について、ファイルに書き留められた値とタイプを取得します。その後、正規表現を楽しむことができます。後で自動的に置き換えるために、各変数が使用されるたびに書き込みを試みることもできます。

それでも、単純な正規表現よりもはるかに複雑ですが、その単純な正規表現は非常に失敗するため、最終的には手動でコードを変更することになります。

ポジティブなメモとして、多分あなたが上司にチャネがいくらかかるかを言うとき、多分彼はそれについてもっとよく考えるでしょう。

于 2011-08-02T21:25:18.160 に答える