.Net - Rileva se l'identificatore desiderato è una parola chiave
-
03-07-2019 - |
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";
Soluzione
Forse stai cercando
[
IsValidIdentifier
] return [s] true solo se il valore corrisponde alle regole di la lingua e non è in conflitto con una parola chiave .
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.