texttransformer.jpg
IDE
  • Die Benutzeroberfläche ist ähnlich einer Datenbank organisiert. Skripte mit Definitionen für Token, Produktionen und Klassenmethoden können eingefügt, gelöscht oder verändert werden. Die IDE enthält verschiedene Seiten für diese Skript-Arten. Damit ist die Struktur einer Parser-Klasse, wie sie vom TextTransformer erzeugt werden kann, vorgebildet.
  • Die Skripte werden mit Syntax-Highlighting dargestellt
  • Semantischer Code lässt sich einklappen, zur besseren Übersicht der Struktur des eigentlichen Parsers.
  • Quelltexte können auch binär oder hexadezimal angezeigt werden.
  • Semantischer Code lässt sich automatisch aus einzelnen oder allen Produktionen löschen.
  • Assistenten helfen bei der Erstellung neuer Projekte und bei der Erweiterung bestehender Projekte. Z.B. erzeugt eine Art Parser-Generator-Generator Produktionen aus Tokenfolgen, die aus einem Beispielstext extrahiert werden.
  • Im Regex-Test Dialog können einzelne reguläre Ausdrücke, die zur Definition von Token verwendet werden, getestet werden
  • Ein Zeichenklassen-Hilfsdialog dient der Berechnung von Zeichenmengen.
  • Die sehr ausführliche kontext-sensitive Hilfe zeigt die Syntax einzelner Interpreter-Befehle an, gibt Erklärungen zu aufgetretenen Fehlern und erklärt die Funktion einzelner Dialogelemente.
Parsergenerator
  • Generator für rekursiv absteigende Parser
  • Beliebige Vorausschau ermöglicht das Lösen von Konflikten
  • Semantische Prädikate können ebenfalls zur Konfliktlösung verwendet werden
  • Automatische Grammatiktests decken mögliche Konflikte auf
  • SKIP-Symbol: Textabschnitte für die keine expliziten Regeln existieren, können beim Parsen automatisch übersprungen werden
  • Familien-Konzept: die Mengen der Token und Regeln sind offen. Die für die jeweilige Startregel erforderlichen Symboldefinitionen werden automatisch zusammengestellt. So ist es möglich eine ganze Familie von Parsern in einem Projekt zu verwalten.
  • Token werden durch reguläre Ausdrücke (in extended POSIX mit Kleene Star) definiert. Die Produktionen werden durch die gleichen Syntaxelemente definiert. Sie haben hier eine Metabedeutung:
  • Produktionen sind quasi reguläre Ausdrücke regulärer Ausdrücke.
  • Dynamische Platzhalter-Token können während des Parsens um literale Ausdrücke - z.B.Typbezeichener - erweitert werden und erkennen dann im nachfolgenden Text diese Ausdrücke.
  • Auch ganze Wörterbücher können Platzhalter-Token zugewiesen werden, mit tausenden von literalen Token.
  • Globale und lokale Optionen erlauben eine Feinjustierung des Parsers.
Interpreter
  • Dank des integrierten Interpreters lassen sich erzeugte Übersetzer unmittelbar ausführen
  • Eine Untermenge der C++-Befehle ist im Interpreter ausführbar. Der Code ist uneingeschränkt in generierten C++-Parserklassen kompilierbar (s.u.).
  • Die Erzeugung von Parse-Bäumen ist möglich. Sie können mittels Assistenten für ein ganzes Projekt angelegt werden. Damit sind sie flexibler zu handhaben als voll-automatisch generierte Parse-Bäume.
  • Funktions-Tabellen, die ebenfalls mittels eines Assistenten generiert werden können, erlauben die Abarbeitung der Parse-Bäume, indem jedem Label eines Baumknotens eine Auswertungsfunktion zugeordnet wird.
  • Auf Unterausdrücke der Token kann zugegriffen werden.
  • Produktionen können als Unterparser aufgerufen werden.
Debugger
  • Schrittweises Testen erzeugter Parser und Übersetzer ist möglich, seit Version 1.4.0 auch für Vorausschau-Produktionen
  • Der Debugger kann von einem Haltepunkt oder einer Fehlerposition aus schrittweise rückwärts ausgeführt werden.
  • Haltepunkte können sowohl im Quelltext als auch in der Grammatik gesetzt werden.
  • Jede Produktion lässt sich einzeln testen, indem sie als Startregel ausgewählt wird.
  • Aktuelles und erwartetes Token werden im Text markiert.
  • Ein Stack der aufgerufenen Produktionen wird angezeigt.
  • Im Variablen-Inspektor lassen sich die Werte von lokalen Variablen, Klassenvariablen und des Parserzustandes ansehen. Auch vollständige Parse-Bäume werden dargestellt.
Testsuite

Produktionen lassen sich automatisch testen.

Ausführung der Transformationen
  • Einzelne Texte können innerhalb der TextTransformer IDE transformiert werden.
  • Interaktiv können Quelltexte abschnittsweise in Zieltexte übersetzt werden
  • Ganze Verzeichnisse oder anders spezifierte Gruppen von Textdateien können mittels des integrierten Transformations-Managers transformiert werden.
  • Ein Kommandozeilen-Programm erlaubt die Transformation von Dateigruppen unabhängig von der TextTransformer-IDE.
Code-Erzeugung (nur mit der Professional Version)
  • Eine C++-Parser-Klasse wird zu einer Startregel erzeugt.
  • Produktionen werden als einzelne Klassenmethoden implementiert
  • Schnittstellen können für jede untergeordnete Produktion erzeugt werden.
  • Code-Schablonen können die Parser-Klasse durch zusätzliche Klassenelemente oder -Methoden erweitern.
  • Sämtlicher Interpretercode ergibt kompilierbaren ANSI/ISO C++-Code. Zusätzlicher Code, der nicht für den Interpreter bestimmt ist, wird als Kopie aus den Produktionen übernommen. Durch entsprechende Klammerung ist es ebenfalls möglich Code-Teile auf den Interpreter zu beschränken.
  • Der Quell-Code für die Basisklassen der Scanner und Parser gehört zur Professional Version des TextTransformers. Zur Kompilierung des Codes ist eine vorherige Installation der freien Bibliothek für reguläre Ausdrücke von boost erforderlich. Weiter werden keine vorkompilierten Komponenten, Dll's etc. benötigt.
  • Multithread-sichere reentrant Parser und Übersetzer können erzeugt werden (ohne Verwendung von Funktionstabellen).
  • Der TextTransformer ist mit sich selbst erzeugt. Die Projekte die dem TextTransformer zu Grunde liegen sind dem Installationspaket beigefügt.



   english english

 
Letzte Neuigkeiten
28.10.24
Delphi2Cpp 2.5: in Groß- und Kleinschreibung mit Deklarationen übereinstimmende Symbolnamen [more...]

26.08.24
Delphi2Cpp 2.4: Aktualisiert auf RAD Studio 12.1 Athen [more...]



"...Fantastic!!!!

... You have exceeded my expectations and I love your product. We will get a lot of use out of it in the future for other projects."


Charles Finley
xformix 23-02-07


top_prize_winner.png

I was extremely impressed with your components and tools. Not only extremely powerful but very professionally done and well documented, etc. Really quality work, congratulations

mouser (First Author, Administrator)


 
Diese Homepage ist aus einfachen Texten mit [Minimal Website ]generiert.

Minimal Website
Minimal Website ist mit Hilfe des TextTransformers hergestellt.

TextTransformer
Der TextTransformer ist gemacht mit dem Borland CBuilder

  borland