Domanda

Esiste un modo, in .net, per rilevare se una parola è una parola chiave in un determinato linguaggio .net?

Sto usando un generatore di codice abbastanza semplice per questo progetto e vorrei iniziare ad automatizzarlo. In questo momento faccio ognuno a mano, quindi risolvere eventuali problemi è abbastanza semplice. Tuttavia, una volta che questo inizia a verificarsi automaticamente, avrò bisogno di un modo per rilevare se una parola che devo usare come identificatore è una parola chiave. Posso ancora usarlo, ho solo bisogno di citarlo correttamente.

So che posso semplicemente citare tutto che ho generato, ma vorrei mantenere il codice generato piuttosto :)

Un esempio del tipo di cose che devo citare:

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

Soluzione

Forse stai cercando IsValidIdentifier

  

[ IsValidIdentifier ] return [s] true   solo se il valore corrisponde alle regole di   la lingua e non è in conflitto   con una parola chiave .

o CreateEscapedIdentifier

  

CreateEscapedIdentifier verifica se   l'identificatore è in conflitto con any   parole chiave riservate o in lingua e se   quindi, restituisce un nome equivalente con   codice di escape specifico della lingua   formattazione

Ad esempio:

    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)

Sembra che non sarebbe troppo difficile estendere / utilizzare questa funzione per soddisfare le tue esigenze.

Altri suggerimenti

Vedi qui . Amico, Jon Skeet è ovunque!

CodeDOM si occupa già di questo? È possibile creare il codice generato in questo modo e ottenere automaticamente il supporto per qualsiasi lingua che supporti CodeDOM.

Non credo che ci sia un modo naturale per farlo a livello di codice, ma puoi ottenere un elenco completo di parole chiave per C # qui e per VB.Net qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top