Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - SynEdit - Geschachtelte Kommentare
Manfred - Mo 19.12.05 12:43
Titel: SynEdit - Geschachtelte Kommentare
Hi!
Ich habe einen Compiler erstellt, der einen Syntax unterstützt, der mit Pascal vergleichbar ist.
Dabei habe ich dafür gesorgt, dass Kommentare wahlweise durch // (*...*) oder {...} möglich sind. Zudem sind diese schachtelbar.
Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| ausführbare Anweisungen { Kommentar 1 { Kommentar 2 } Immer noch Kommentar 1 } wieder ausführbare Anweisungen |
Mein Problem besteht nun darin, dass bereits beim Auftreten des 1. "}"-Zeichens das Highlighting für Kommentare ausgeschaltet wird.
Kennt jemand vielleicht ein Beispiel-Highlighting, welches geschachtelte Kommentare o.ä. unterstützt?
Manfred - Do 29.12.05 22:43
Hi!
Kennt jemand eine Programmiersprache, in der geschachtelte Kommentare erlaubt sind? Wenn es dazu bereits einen Highlighter gibt, könnte ich vielleicht daran erkennen, wie soetwas realisiert wird.
Tino - Do 29.12.05 22:48
Wie sieht denn der Codeteil aus der einen Kommentarblock verarbeietet?
Manfred - Do 29.12.05 22:59
Hi!
@Tino
Ich muss gestehen, dass ich die Bemerkung nicht ganz verstehe.
Im Grunde geht es darum, einen Editor für eine eigene Programmiersprache herzustellen. Die Programmiersprache existiert bereits und ein Editor ebenfalls.
Mein Ziel bestand nun darin, den Editor "aufzupeppeln", indem u.A. Highlighting realisiert wird (bisher wird RichEdit genutzt).
Der Griff zum SynEdit liegt dabei nahe.
Nun geht es lediglich um folgendes Problem:
In dieser speziellen Programmiersprache ist es erlaubt, Kommentare mit "(*" oder "{" einzuleiten - und zwar geschachtelt.
Das bedeutet, dass z.B. folgender Code lediglich "Hello World" ausgibt:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure beispiel ; begin { Beginn der Bemerkung { Hier eine einzelne Bemerkungszeile } Ende der Bemerkung } print "Hello World" ; end ; |
Innerhalb der {...}-Anweisung befindet sich also eine weitere {...}-Anweisung.
Insgesamt findet man also {...{...}...}
Das ist in meinem COmpiler erlaubt!
Die Highlightings aus SynEdit markieren aber lediglich {...{...}
Die letzte geschweifte Klammer wird nicht mehr markiert, da Highlighting so wie ich es verstehe, bei einem Syntaxelement beginnt (hier also "{") und bei einem endet (hier "}").
Da während des Highlightings nicht geprüft wird, ob eine Schachtelung vorliegt, endet es bereits mit dem ersten Auftreten des Zeichens "}".
BenBE - Fr 30.12.05 00:01
Für den GeSHi könnt ich Dir auf Anhieb sagen, wie's geht ... *g*
Aber zu deinem Problem. Insgesamt wirst Du das mit den SynEdits nicht hinbekommen, da diese so highlighten, wie es Delphi macht.
Was Du versuchen könntest, wäre die SynEdit-Komponenten bzgl. der Kommentar-Erkennung zu erweitern; da ich diese aber nicht nutze, kann ich diesbezüglich nicht allzuviel sagen ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!