.Net - Определить, является ли нужный идентификатор ключевым словом - PullRequest
2 голосов
/ 05 марта 2009

Есть ли способ в .net определить, является ли слово ключевым словом в данном языке .net?

Я использую довольно простой генератор кода для этого проекта, и я хотел бы начать автоматизировать его. Прямо сейчас я делаю каждый вручную, так что исправить любые возникающие проблемы довольно легко. Однако, как только это начнет происходить автоматически, мне понадобится способ определить, является ли слово, которое мне нужно использовать в качестве идентификатора, ключевым словом. Я все еще могу использовать его, мне просто нужно правильно процитировать его.

Я знаю, что могу просто цитировать все Я генерирую, но я хотел бы сохранить сгенерированный код довольно :)

Пример того, что мне нужно процитировать:

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

Ответы [ 4 ]

7 голосов
/ 05 марта 2009

Возможно, вы ищете IsValidIdentifier

[IsValidIdentifier] return [s] true только если значение соответствует правилам язык и не конфликтует с ключевым словом .

или CreateEscapedIdentifier

CreateEscapedIdentifier тесты ли идентификатор конфликтует с любым зарезервированные или языковые ключевые слова , а если итак, возвращает эквивалентное имя с код выхода для конкретного языка Форматирование

Например:

    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)

Похоже, что это не будет слишком сложно расширить / использовать этот объект для удовлетворения ваших потребностей.

3 голосов
/ 05 марта 2009

Смотрите здесь . Чувак, Джон Скит везде!

2 голосов
/ 05 марта 2009

Разве CodeDOM уже не позаботится об этом? Вы можете создать свой сгенерированный код таким образом и автоматически получить поддержку для любого языка, который поддерживает CodeDOM.

1 голос
/ 05 марта 2009

Я не верю, что есть какой-то естественный способ сделать это программно, но вы можете получить полный список ключевых слов для C # здесь и для VB.Net здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...