2009-03-05 5 views
2

Existe-t-il un moyen, dans .net, de détecter si un mot est un mot-clé dans une langue .net donnée? J'utilise un générateur de code assez simple pour ce projet, et je voudrais commencer à l'automatiser. En ce moment, je fais chacun à la main, donc la résolution des problèmes qui se posent est assez facile. Cependant, une fois que cela commence automatiquement, je vais avoir besoin d'un moyen de détecter si un mot que je dois utiliser comme identifiant est un mot-clé. Je peux toujours l'utiliser, j'ai juste besoin de le citer correctement..Net - Détecter si l'identificateur désiré est un mot-clé

Je sais que je peux simplement citer tout je produis, mais je voudrais garder le code généré assez :)

Un exemple du genre de choses que je dois citer:

vb: Public [Class] As String = "CLASS" 
c#: public String @class = "CLASS"; 

Répondre

7

Peut-être que vous cherchez IsValidIdentifier

[IsValidIdentifier] retour [s] vrai que si la valeur correspond aux règles de la langue et ne sont pas en conflit avec un mot-clé .

ou CreateEscapedIdentifier

CreateEscapedIdentifier essais si les conflits d'identification avec tout mots-clés réservés ou langue, et si ainsi, retourne un nom équivalent code d'échappement spécifique à la langue formatage

Par exemple e:

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) 

On dirait qu'il ne serait pas trop difficile d'étendre/utiliser cette installation pour répondre à vos besoins.

1

Je ne crois pas qu'il existe un moyen naturel de faire cela par programme, mais vous pouvez obtenir une liste complète des mots-clés pour C# here, et pour VB.Net here.

2

Est-ce que CodeDOM ne s'en occupe pas déjà? Vous pouvez construire votre code généré de cette façon et obtenir automatiquement un support pour tout langage supportant CodeDOM.

Questions connexes