문제

.NET에는 단어가 주어진 .NET 언어의 키워드인지 감지하는 방법이 있습니까?

이 프로젝트에 상당히 간단한 코드 생성기를 사용하고 있으며 자동화를 시작하고 싶습니다. 지금은 각각을 손으로 수행하므로 발생하는 문제를 해결하는 것이 매우 쉽습니다. 그러나이 작업이 자동으로 시작되면 식별자로 사용 해야하는 단어가 키워드인지 여부를 감지하는 방법이 필요합니다. 나는 여전히 그것을 사용할 수 있습니다. 단지 그것을 올바르게 인용하면됩니다.

나는 단순히 인용 할 수 있다는 것을 안다 모든 것 생성하지만 생성 된 코드를 예쁘게 유지하고 싶습니다 :)

내가 인용해야 할 것들의 예 :

vb:  Public [Class] As String = "CLASS"
c#:  public String @class = "CLASS";
도움이 되었습니까?

해결책

아마도 당신은 찾고 있습니다 IsValidIdentifier

[IsValidIdentifier] 값이 언어의 규칙에 맞는 경우에만 [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)

귀하의 요구를 충족시키기 위해이 시설을 확장/사용하는 것이 너무 어렵지 않은 것 같습니다.

다른 팁

여기를 봐. Man, Jon Skeet은 어디에나 있습니다!

그렇지 않습니다 코드 이미 이것을 돌봐? 생성 된 코드를 그러한 방식으로 구축하고 코드데도를 지원하는 모든 언어를 자동으로 지원할 수 있습니다.

프로그래밍 방식 으로이 작업을 수행하는 자연스러운 방법이 있다고 생각하지 않지만 C#에 대한 키워드 전체 목록을 얻을 수 있습니다. 여기, 및 vb.net의 경우 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top