AGB  ·  Datenschutz  ·  Impressum  







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

Code Folding: Implementierung in eigenem Editor

Ein Thema von hansklok · begonnen am 22. Jul 2020 · letzter Beitrag vom 22. Jul 2020
Antwort Antwort
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#1

AW: Code Folding: Implementierung in eigenem Editor

  Alt 22. Jul 2020, 13:15
Ich dachte an Stack, und ich glaube, Delphi macht das genauso. Für jeden Beginn - begin, for, while, Repeat usw. - wird etwas auf den Stack geschoben, für jedes end; wieder entfernt; ist der Stack leer, ist die Prozedur zuende. Da steckt der Teufel natürlich gewaltig im Detail.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#2

AW: Code Folding: Implementierung in eigenem Editor

  Alt 22. Jul 2020, 13:57
Da steckt der Teufel natürlich gewaltig im Detail.
Jo, z.B. bei den nagelneuen Managed-Records ... das hauseigene Code-Folding der IDE kennt diese Syntax noch nicht und macht dann nicht das, was man erwartet.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.962 Beiträge
 
Delphi 12 Athens
 
#3

AW: Code Folding: Implementierung in eigenem Editor

  Alt 22. Jul 2020, 14:39
Ich dachte an Stack, und ich glaube, Delphi macht das genauso. Für jeden Beginn - begin, for, while, Repeat usw. - wird etwas auf den Stack geschoben, für jedes end; wieder entfernt; ist der Stack leer, ist die Prozedur zuende. Da steckt der Teufel natürlich gewaltig im Detail.
Das kann man sich einfacher machen indem man das ganze durch rekursive Methoden kapselt. Dadurch landet alles automatisch auf dem Stack. Wie so etwas aussieht, kann man bei Castalia anschauen:
https://github.com/jacobthurman/Castalia-Delphi-Parser
Kurz gesagt geht man durch den Quelltext und unterscheidet jeweils welche Möglichkeiten es vom aktuellen Punkt aus gibt. Entweder findet man dann passenden Quelltext als nächstes und macht damit weiter oder man wirft einen Parserfehler.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#4

AW: Code Folding: Implementierung in eigenem Editor

  Alt 22. Jul 2020, 14:46
Beeindruckend. Vielleicht ein bisschen Overkill für einen Editor. Allein durch das Durchscrollen bekommt man aber schon einen Eindruck davon, was es alles zu berücksichtigen gilt. Und das scheint mir ziemlich viel.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#5

AW: Code Folding: Implementierung in eigenem Editor

  Alt 22. Jul 2020, 17:11
Wenn man sich ins neue LSP reinhängen könnte, dann hätte man eigentlich alles gleich fix und fertig und frei Haus.

Das ist im Grunde ein Codeparser/Lexer, der aus dem Quellcode einen Objektbaum erstellt,
also rekurzive Objekte, so wie man es z.B. von JSON- oder XML-DOMs kennt. (Document Object Model)

PS: auch die C <-> Delphi-Header-Converter von Emba nutzen das, um z.B. das iOS-SDK-Header ins Delphi zu bekommen.
Erstmal aus dem Quellcode (C++ bzw. Objective-C oder Pascal) den Baum erstellen
und dann aus dem Baum den Quellcode der jeweils anderen Sprache generieren.

Oder man nutzt das eben, um z.B. sich die Punkte zum Falten rauszusuchen oder damit den Code schön bunt zu bekommen oder für eine Codeformatierung
oder eben der Delphi-Compiler nutzt es, um unser Pascal aufzubereiten, um es quasi an andere Compiler weiterzureichen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Jul 2020 um 17:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 09:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz