.Net-目的の識別子がキーワードかどうかを検出
-
03-07-2019 - |
質問
.netで、特定の.net言語で単語がキーワードであるかどうかを検出する方法はありますか?
このプロジェクトではかなり単純なコードジェネレーターを使用していますが、自動化を開始したいと思います。現在、私はそれぞれを手作業で行っているため、発生した問題の修正は非常に簡単です。ただし、これが自動的に開始されると、識別子として使用する必要がある単語がキーワードであるかどうかを検出する方法が必要になります。引き続き使用できます。適切に引用する必要があります。
生成したものはすべてすべて引用できることは知っていますが、生成されたコードはきれいに保ちたいです:)
引用する必要がある種類の例:
vb: Public [Class] As String = "CLASS"
c#: public String @class = "CLASS";
解決
[
IsValidIdentifier
] return [s] true 値が次の規則に適合する場合のみ 言語と競合しない キーワード付き。
CreateEscapedIdentifier
は、かどうかをテストします 識別子がanyと競合する 予約キーワードまたは言語キーワード、および したがって、同等の名前を返します 言語固有のエスケープコード フォーマット
例:
CSharpCodeProvider csProvider = new CSharpCodeProvider();
bool isValid1 = csProvider.IsValidIdentifier("class");
// returns false
string escapedId1 = csProvider.CreateEscapedIdentifier("foo");
// escapedId1 = "foo"
string escapedId2 = csProvider.CreateEscapedIdentifier("do");
// escapedId2 = "@do"
string escapedId3 = csProvider.CreateEscapedIdentifier("AndAlso");
// escapedId3 = "AndAlso" (not reserved in c#)
VBCodeProvider vbProvider = new VBCodeProvider();
string escapedId4 = vbProvider.CreateEscapedIdentifier("AndAlso");
// escapedId4 = "[AndAlso]" (reserved in VB)
ニーズを満たすためにこの機能を拡張/使用するのはそれほど難しくないようです。
所属していません StackOverflow