Quelle: dotnetpro
Einen Code-Editor per RichTextBox nachbauen, Teil 2 12.08.2019, 00:00 Uhr

Sprachdefinitionen

Die Sprachdefinitionen für Visual Basic .NET und C# werden implementiert.
Nachdem im ersten Teil dieser Serie [1] die Verwaltungseigenschaften für Sprachen im selbst geschriebenen Code-Editor SyntaxEditCtl eingerichtet wurden, können nun die Sprachen vordefiniert werden. Dafür zuständig ist die Methode InitLanguage, der die zu aktivierende Sprache per Parameter der Enumeration Languages übergeben wird. In der Prozedur erfolgt das sprachspezifische Aufbereiten vordefinierter Wortlisten per Select-Case-Auswahl. Derzeit sind die Sprachen Visual Basic .NET und C# vordefiniert. Die Sprachdefinition für VB.NET gibt der Code in Listing 1 wieder, die für C# finden Sie in Listing 2. Die Liste für Visual Basic definiert auch Inhalte, die Sie in anderen Sprachen nicht finden, wie etwa die speziellen VB-Konstanten oder Enumerationen. Welche Inhalte über die einzelnen Wortlisten verwaltet werden, wurde bereits in [1] erläutert.
Listing 1: Sprachdefinition VB.NET (Auszug)
' Das vollständige Listing finden Sie im Download zu

' diesem Artikel

Sub InitLanguage(ByVal Language As Languages)

  Select Case Language

    Case Languages.VisualBasic

      FileSuffix = eSuffix.vb

      ' Schlüsselwörter

      KeyWords = New List(Of String)({

        "AddHandler", "Alias", "As", "ByRef",

        "ByVal", "Call", "Case", ... "WriteOnly",

        "#Const", "#Else", "#ElseIf", "#End", "#If"

      })



      ' Standarddatentypen

      DataTypes = New List(Of String)({

        "Boolean", "Byte", "Char", "Date", "Decimal",

        "Double", "Integer", ..., "ULong", "UShort"

      })



      ' Operatoren

      Operators = New List(Of String)({

        "=", "&", "&=", ..., "IsTrue", "AddressOf",

        "Await", "GetType"

      })



      ' Konstanten

      Constants = New List(Of String)({

        "vbCrLf", "vbCr", "vbLf", ..., "vbFormFeed",

        "vbVerticalTab"

      })



      ' Enumerationen

      Enums = New List(Of String)({

        "AppWinStyle", "AudioPlayMode", "BuiltInRole",

        ..., "VariantType", "VbStrConv"

      })



      ' Sprachspezifische Funktionen

      LanguageSpecificFunctions =

        New List(Of String)({"ChDir", "ChDrive",

        "FileCopy", "MkDir", ..., "Write",

        "WriteLine"

      })

      ' Kommentare (Kennungen)

      Comments = New List(Of String)({"REM", "'"})

      ' String-Marker

      StringMarker = New List(Of String)({Chr(34)})

      ' Sonderdatentypen, feste Bezeichner oder

      ' Definitionen (mit Stern eingeleitet)

      ' ToDo: benutzerdefinierte Datentypen

      SpecialDataType = New List(Of String)({

        "List", "*Structure", "*Enum"})



      'ToDo: AutoComplete-Strukturen

      AutoCompleteList = New List(Of String)({

        "If-ElseIf-Else-End If", "While-End While",

        ..., "Using-End Using"})

   Case Languages.CSharp

    ' siehe Listing 2

  End Select

End Sub

Jetzt 1 Monat kostenlos testen!

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
  • + Digitales Kundenkonto,
  • + Zugriff auf das digitale Heft,
  • + Zugang zum digitalen Heftarchiv,
  • + Auf Wunsch: Weekly Newsletter,
  • + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar