Simple Pascal Lexer Generator (splg relant)

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
Keifor
Beiträge: 31
Registriert: Sa 28. Aug 2010, 15:15
OS, Lazarus, FPC: pc-linux-gnu - Funtoo stable, L trunk, FPC trunk
CPU-Target: i686/x86_64

Simple Pascal Lexer Generator (splg relant)

Beitrag von Keifor »

Simple Pascal Lexer Generator (Regular Language Transformation) ist ein Testprogramm zum ausprobieren und herumspielen mit einfachen Regulären Ausdrücken/Lexer Definitionen. Das Programm nutzt dabei eine recht alte, vor Jahren von mir entwickelte unit (relant) die einfache Reguläre Ausdrücke in nichtdeterministische und deterministische Zustandsautomaten übersetzt und minimiert (relant/relant.pas im Archiv).

Grundlegend gibt es 4 Funktionen.
  • Im oberen Bereich kann man ein Projekt anlegen/öffnen/speichern. Ein kleines Testprojekt (yn_test.ldf) liegt bei.
  • Zum Erzeugen der Eingabesprache (oberster Tab im Bild) kann man einfache Ausdrücke testen und angeben. Die Eingabesprache ist dabei mehr Mathematischer Natur und erlaubt Klammern (), Zeichenmengen [...] und deren Negation [^...], Buchstaben in kodierter Form #... sowie die Operationen auf "Sprachen": oder |, einmal oder mehrfach +, gar nicht oder mehrfach *, gar nicht oder einmal ?.
  • Im zweiten Tab (mitte im Bild) kann man die zuvor erzeugten Token Patterns testen. Der Lexer wird dynamisch generiert und gibt einfach die Positionen der gefundenen Patterns zurück.
  • Im dritten Tab kann man aus den Patterns ein Lexer Modul oder DOT (graphviz DOT) Dateien für NEA/DEA und MinDEA erzeugen. Letztere lassen sich z.b. mit dem graphviz dot Programm in Bilder umwandeln. Ersteres kann in Verbindung mit der beiliegenden splex.pas zum Lexen genutzt werden.

3 Tabs Übersicht von oben nach unten
3 Tabs Übersicht von oben nach unten


Anmerkung:
Der Code ist unter MIT Lizenz lizenziert und erlaubt damit so ziemlich alles was man damit machen möchte (siehe COPYRIGHT Notiz).
Das Programm (bzw. eine Konsolen Variante) wurde ursprünglich dafür entwickelt mit sehr einfacher Angabe von Token Patterns, Lexer zu generieren. Mittlerweile nutze ich aber lieber andere Programme und handgeschriebene Scanner und habe nicht vor den Code weiter zu entwickeln. Daher "release" ich es lieber, als das Programm und die damit verbundene Arbeit einfach weg zuwerfen. :mrgreen:
Betriebsystem / OS: An sich alle, soweit wie die Komponenten unterstützt werden. Getestet unter Linux (gtk2) mit Lazarus 0.9.31/FPC 2.5.1 (beleeding edge).
Besonderheiten/Anforderungen des Programms:

  • Minimales wissen über Reguläre Ausdrücke.
  • Das Kernstück für die Transformation arbeitet auf 8bit Zeichen. Es wird in keiner weise auf utf8/codepages geachtet. D.h. alles was generiert wird kann unter gewissen Kriterien nutzlos sein.
Bekannte Bugs: Derzeit keine. An verschiedenen Stellen wir aber wenig auf mögliche Fehler getestet. Bspw. beim öffnen von Projekten wird nicht verifiziert ob alles in Ordnung ist.
Version: 26.02.2011 nach aktuellem Datum.
Dateianhänge
splex.zip
Projektarchiv 26.02.2011
(31.29 KiB) 89-mal heruntergeladen

Antworten