AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SynEdit-Highlighter, der Strings ignorieren soll

Ein Thema von Matze · begonnen am 29. Nov 2005 · letzter Beitrag vom 7. Dez 2005
Antwort Antwort
Seite 2 von 3     12 3      
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 2. Dez 2005, 18:50
Hallo Matthias,

Delphi-Quellcode:
procedure TSynAdaSyn.Next;
begin
  fTokenPos := Run;
  case fRange of // <== Hier fehlt natürlich etwas
  else
    begin
      fRange := rsUnknown;
      fProcTable[fLine[Run]];
    end;
  end;
end;
wie kommst du darauf, dass an der bezeichneten Stelle etwas fehlt? Hast du denn MultiLine-Einträge spezifiziert?

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 2. Dez 2005, 19:26
Zitat von marabu:
wie kommst du darauf, dass an der bezeichneten Stelle etwas fehlt?
Delphi-Quellcode:
case xyz of
else
ergibt doch keinen Sinn. Es fehlen ja die Werte der Variablen, auf die überprüft wird.

Zitat von marabu:
Hast du denn MultiLine-Einträge spezifiziert?
Wie meinst du das?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 2. Dez 2005, 19:31
Nur wenn du im Abschnitt ENCLOSEDBY Einträge spezifizierst, die als letzten Parameter "Multiline" aufweisen (wie beim BraceComment - der von Ada sollte wohl besser LineEndComment heißen) werden auch Selektoren für das CASE Statement generiert. Probiere es doch einfach aus, indem du den PASCAL BraceComment aufnimmst:

Code:
Comment,BraceComment,{,},Multiline
marabu
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 2. Dez 2005, 19:33
Hallo

Ja, so geht es ja, aber ich benötige ja kein Multiline, sondern möchte sowas wie

Comment,BraceComment,-- haben. Dein Beispiel würde schon gehen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 2. Dez 2005, 19:40
Hast du denn die generierte Unit einmal verwendet? Der Erfolg meiner Anpassung macht sich in der generierten Unit in der Prozedur LineEndCommentProc bemerkbar - wenn der Ada-Comment LineEndComment genannt wurde:

Delphi-Quellcode:
procedure TSynSampleSyn.LineEndCommentProc;
begin
  fTokenID := tkComment;
  repeat
// es ist dieser Teil der bei EOL terminierten enclosures
// nicht erzeugt werden darf...
{
    if  then
    begin
      Inc(Run, 0);
      fRange := rsUnKnown;
      Break;
    end;
}

    if not (fLine[Run] in [#0, #10, #13]) then
      Inc(Run);
  until fLine[Run] in [#0, #10, #13];
end;
Sobald ich kann werde ich es selbst überprüfen.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 3. Dez 2005, 13:29
Hallo

Zitat von marabu:
Hast du denn die generierte Unit einmal verwendet? Der Erfolg meiner Anpassung macht sich in der generierten Unit in der Prozedur LineEndCommentProc bemerkbar - wenn der Ada-Comment LineEndComment genannt wurde [...]
Hm ja, ich habe es so aufgerufen:

Comment,LineEndComment,-- Nur klappt das nicht, wie gesagt, es tritt immer der Fehler auf, dass die Case-Anweisung leer ist.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 3. Dez 2005, 16:39
Hallo Matthias,

ich habe mir SynGen nochmal genauer angesehen und noch zwei Dinge nachgebessert.

Das erste betrifft deine Beobachtung mit dem leeren CASE Statement. SynGen kann in der Original-Fassung (1.1) keine Grammatiken verarbeiten, die in der ENCLOSEDBY section nicht mindestens ein MULTILINE token aufweisen. Nun geht das.

Das zweite Problem entsteht durch deine Schreibweise des LineEndComment. SynGen ist ja erst durch meine Änderung überhaupt in der Lage EOL terminierte token über die ENCLOSEDBY section zu verarbeiten. In der Original-Fassung ist nur der MULTILINE-Parameter optional. Ich habe jetzt auch ENDSWITH optional gemacht - ist nur konsequent.

Ich habe die modifizierte Unit SynGenUnit angehängt - und sicherheitshalber noch die Datei SynEdit.inc, auch wenn du die wohl schon selbst angepasst hast.

Ich habe den Kommentar im Ada-Style dann in der HighlighterDemo von SynEdit erfolgreich getestet.

Schönes Wochenende

marabu

PS: Meine Änderungen habe ich mit meinem nick gekennzeichnet, damit du sie nachvollziehen kannst.
Angehängte Dateien
Dateityp: zip syngen_200.zip (15,2 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 3. Dez 2005, 21:10
Hallo marabu,

das war ja doch mehr als ich dachte, alle Achtung. Vielen Dank, dass du dir die Mühe gemacht hast, die Datei anzupassen, es funktioniert genau so, wie es soll. Super.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 6. Dez 2005, 17:34
Hi,

nicht schlimm, aber irgendwie seltsam:
Gebe ich 4 Bindestriche ein, wird der letzte Strich nicht grün, sondern schwarz dargestellt. Das geht in 3er Schritten nach oben:
Der letzte von 7 / 10 / 13 / 16 / ... Strichen ist immer schwarz. Woran kann das liegen?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 7. Dez 2005, 17:20
Hallo Matthias,

das liegt daran, dass ich gepatzt habe.

Ich habe in der Prozedur SynGenUnit.RetrieveEnclosedBy() vergessen die konsumierten Zeichen am Zeilenende zu löschen. Ich habe das jetzt nachgebessert und getestet und jetzt sollten deine Farben stimmen. Im Anhang das ZIP-Archiv mit der berichtigten Unit.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip syngen_193.zip (15,2 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz