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 "}".