1

私は GEdit の構文強調表示をいじっています。Visual Studio がユーザー作成型を強調表示する方法が気に入っています。C/C++ でユーザーが作成した型 (typedef/classes など) に対してこれを行いたいと思います。例 (C):

typedef struct Node *pNode;

C++ での例:

class BigNumber 
{ 
    // Class stuff here.
};

(keywords) とはNode異なり、まったく強調表示されていない方法を参照してください。それを検出する正規表現を作成し、現在のドキュメント全体ですべての出現箇所を強調表示するにはどうすればよいですか?typedef struct*pNodeNodeBigNumber

4

1 に答える 1

3

正規表現は良い結果をもたらしますが、完璧な結果をもたらすことはありません。

ほとんどの正規表現エンジンは、再帰の概念をサポートしていません。つまり、カウントが必要な式 (中かっこ、括弧など) には一致しません。これは、信頼できる方法で関数ポインターを指す typedef を一致させることができないことを意味します。

完全な一致を取得するには、パーサーを作成する必要があります。

より良いアプローチは、最も関心のあるシナリオを選択し、それらの特定のシナリオを対象とする正規表現を作成することだと思います。

たとえば、単一の名前を指し、ポインターを持つ場合と持たない場合がある構造体の typedef に一致する正規表現を次に示します。

"^\s*typedef\s+struct\s+\w+\s+((\*?\s*)\w+)\s*;\s*$"
于 2009-07-16T18:49:46.510 に答える