質問

.netで、特定の.net言語で単語がキーワードであるかどうかを検出する方法はありますか?

このプロジェクトではかなり単純なコードジェネレーターを使用していますが、自動化を開始したいと思います。現在、私はそれぞれを手作業で行っているため、発生した問題の修正は非常に簡単です。ただし、これが自動的に開始されると、識別子として使用する必要がある単語がキーワードであるかどうかを検出する方法が必要になります。引き続き使用できます。適切に引用する必要があります。

生成したものはすべてすべて引用できることは知っていますが、生成されたコードはきれいに保ちたいです:)

引用する必要がある種類の例:

vb:  Public [Class] As String = "CLASS"
c#:  public String @class = "CLASS";
役に立ちましたか?

解決

IsValidIdentifier

  

[ IsValidIdentifier ] return [s] true   値が次の規則に適合する場合のみ   言語と競合しない   キーワード付き

または CreateEscapedIdentifier

  

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)

ニーズを満たすためにこの機能を拡張/使用するのはそれほど難しくないようです。

他のヒント

こちらをご覧ください。男、ジョン・スキートはどこにでもいる!

CodeDOM はすでにこれを処理していませんか?生成されたコードをそのように構築し、CodeDOMをサポートするすべての言語のサポートを自動的に取得できます。

これをプログラムで行う自然な方法はないと思いますが、C#のキーワードの完全なリストを取得できますこちら、およびVB.Netの場合こちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top