.Net - اكتشاف ما إذا كان المعرف المطلوب عبارة عن كلمة رئيسية

StackOverflow https://stackoverflow.com/questions/616425

  •  03-07-2019
  •  | 
  •  

سؤال

هل هناك طريقة، في .net، لاكتشاف ما إذا كانت الكلمة هي كلمة رئيسية في لغة .net معينة؟

أنا أستخدم منشئ أكواد برمجية بسيط إلى حد ما لهذا المشروع، وأود أن أبدأ في تشغيله تلقائيًا.أقوم حاليًا بتنفيذ كل واحدة يدويًا، لذا فإن إصلاح أي مشكلات تنشأ أمر سهل للغاية.ومع ذلك، بمجرد أن يبدأ هذا تلقائيًا، سأحتاج إلى طريقة لاكتشاف ما إذا كانت الكلمة التي أحتاج إلى استخدامها كمعرف هي كلمة رئيسية.لا يزال بإمكاني استخدامه، أريد فقط أن أقتبسه بشكل صحيح.

أعلم أنه يمكنني الاقتباس ببساطة كل شئ أقوم بالتوليد، لكني أرغب في الحفاظ على الكود الذي تم إنشاؤه جميلًا :)

مثال على نوع الأشياء التي أحتاج إلى اقتباسها:

vb:  Public [Class] As String = "CLASS"
c#:  public String @class = "CLASS";
هل كانت مفيدة؟

المحلول

ربما كنت تبحث عنه IsValidIdentifier

[IsValidIdentifier] إرجاع [s] صحيح فقط إذا كانت القيمة تناسب قواعد اللغة و لا يتعارض مع كلمة رئيسية.

أو 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)

يبدو أنه لن يكون من الصعب جدًا توسيع/استخدام هذه التسهيلات لتلبية احتياجاتك.

نصائح أخرى

انظر هنا . الرجل، جون السكيت في كل مكان!

CodeDOM بالفعل رعاية هذا؟ هل يمكن بناء التعليمات البرمجية التي تم إنشاؤها بهذه الطريقة وتلقائيا الحصول على الدعم لأي لغة التي تدعم CodeDOM.

وأنا لا أعتقد أن هناك أي طريقة طبيعية للقيام بذلك برمجيا، ولكن يمكنك الحصول على قائمة كاملة من الكلمات الرئيسية للC # <لأ href = "http://msdn.microsoft.com/en-us/library/x53a06bb (vs.71) .aspx اتصال "يختلط =" نوفولو noreferrer "> هنا ، وVB.Net <لأ href =" http://msdn.microsoft.com/en-us/library/ksh7h19t(VS 0.71) .ASPX "يختلط =" نوفولو noreferrer "> هنا .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top