blob: 78fe5be5efabae95fb6a4b6077920ece1b9763a2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
Ziel ist es eine Methode zu erarbeiten mit der sich Parser beschreiben lassen,
die, gegeben ein vorheriges Ergebnis und eine Beschreibung des Unterschieds
zwischen des damaligen Inputs und dem aktuellen, schneller das neue Ergebnis
produzieren können als es ohne zusätzlichen Kontext möglich wäre.
Zunächst wird hierfür nach bereits vorhandener Arbeit recherchiert (z.B. die
inkrementellen Parser des Texteditors “Yi”) und versucht deren Ergebnisse vom
obigen Thema abzugrenzen.
Die algebraische Darstellung von Parsern als funktionale Linsen und von der
Applikation von Änderungen (sowohl an der Eingabe, als auch, im Optimalfall, an
der Ausgabe eines Parsers) als “edit-lenses” soll verwendet werden.
Dann wird die naheliegenden Konstruktion für den Speziallfall, dass es sich beim
betrachteten Parser um einen DFA handelt der nur prüft ob eine Eingabe
akzeptiert wird und wmgl. eine Implementierung dieser Konstruktion in Haskell
vorgestellt.
Nun wird versucht die Konstruktion zunächst auf Parser und dann auf mächtigere
Automaten zu erweitern.
Speziell sollen hier Parser betrachtet und implementiert werden, die paarweise
auftretende Klammern gruppieren und sicherstellen, dass Variablen in der Syntax
einer imperativen Programmiersprache nur benutzt werden, nachdem sie deklariert
wurden.
Es soll dann versucht werden iterative Parser für XML und ein Fragment der
Programmiersprache Java zu entwicklen und zu implementieren.
|