diff options
Diffstat (limited to 'literature.md')
-rw-r--r-- | literature.md | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/literature.md b/literature.md new file mode 100644 index 0000000..9e4f27e --- /dev/null +++ b/literature.md | |||
@@ -0,0 +1,81 @@ | |||
1 | # Thema | ||
2 | |||
3 | Wir möchten inkrementelle Parser sowohl in ihrer algebraischen Struktur als auch | ||
4 | in einer Implementierung in Haskell als edit-lenses auffassen. | ||
5 | |||
6 | Diese Implementierung soll inkrementelle Parser für reguläre- und | ||
7 | $LL(1)$-Sprachen sowie für Fragmente von Java und XML bereitstellen. | ||
8 | |||
9 | # Bekannte Ergebnisse | ||
10 | |||
11 | $LL(1)$-Parser | ||
12 | ~ @wagner1998efficient haben bereits einen inkrementellen $LL(1)$-Parser mit dem | ||
13 | gewünschten Laufzeitverhalten vorgestellt. | ||
14 | |||
15 | Dies deckt unsere DEA- und Klammerungs-Beispiele ab, nicht jedoch z.B. XML. | ||
16 | Zudem planen wir unsere Beispiele möglichst deklarativ (z.B. in | ||
17 | idiomatischem Haskell) statt imperativ (@wagner1998efficient verwenden C++) | ||
18 | zu formulieren. | ||
19 | |||
20 | Applikative parser mit lazy evaluation | ||
21 | ~ @bernardy2009lazy beschreibt eine Implementierung applikativer Parser (alá | ||
22 | @swierstra2001combinator) die noch während dem parse-Vorgang Resultate | ||
23 | produziert (der Parser ist _online_) und über einen Mechanismus verfügt | ||
24 | partielle Resultate für den Lauf des Parsers auf einem Präfix der Eingabe zu | ||
25 | memoisieren. | ||
26 | Unter der Verwendung von lazy evaluation lassen sich damit unsere Anforderungen | ||
27 | an inkrementelle Parser realisieren. | ||
28 | |||
29 | Abgrenzen lassen sich die von uns verfolgten Ziele von den Ergebnissen aus | ||
30 | [-@bernardy2009lazy] vor allem durch die Darstellung als edit-lenses und | ||
31 | dass wir Parser für eine weitere Auswahl von Grammatiken konkret | ||
32 | implementieren möchten. | ||
33 | |||
34 | # Verwandte Themen | ||
35 | |||
36 | Parser als Linsen | ||
37 | ~ @zaytsev2014parsing stellen eine Taxonomie von Darstellungen (als String, | ||
38 | Liste von Tokens (wmgl. getypt), Parse-Baum (wmgl. mit Vieldeutigkeiten), …) | ||
39 | vor und charakterisieren Prozesse die zwischen Darstellungen konvertieren | ||
40 | (insbesondere Parser als funktionale Linsen). | ||
41 | |||
42 | @hofmann2012edit erweitern das gewöhnliche Bild von funktionalen Linsen um | ||
43 | solche, die direkt auf Differenzen von Strukturen agieren. | ||
44 | |||
45 | Die beiden Ergebnisse lassen sich insofern kombinieren, dass inkrementelle | ||
46 | Parser als edit lenses aufgefasst werden, was mitunter Ziel der Arbeit sein | ||
47 | soll (@zaytsev2014parsing schlagen diese Anwendung in ihrer Arbeit vor). | ||
48 | |||
49 | Edit languages | ||
50 | ~ @hofmann2013edit spezifizieren eine Sprache zur Beschreibung von | ||
51 | edit-Operationen auf _information-trees_. | ||
52 | |||
53 | Es ist naheliegend geparste XML-Dokumente als information-tree aufzufassen | ||
54 | und Veränderungen in der serialisierten Darstellung des Dokuments vermöge | ||
55 | unserer XML-Parser edit-lens auf edit-Operationen aus [-@hofmann2013edit] | ||
56 | abzubilden. | ||
57 | |||
58 | Bidirectional tree- & string transformations | ||
59 | ~ @foster2007combinators spezifizieren eine Sprache für bidirektionale | ||
60 | Baum-Transformationen als funktionale Linsen und deren Kompositionen. | ||
61 | |||
62 | Sollte sich im Laufe der Implementierung herausstellen, dass eine | ||
63 | Repräsentierung der edit-Operationen auf XML als Linsen zusätzliche | ||
64 | Uniformität hervorbringt, so ist es zweckmäßig von der Beschreibung alá | ||
65 | @hofmann2013edit auf bidirektionale Baum-Transformationen umzusteigen. | ||
66 | |||
67 | Es ist abzusehen, dass, falls eine Beschreibung der edit-Operationen auf | ||
68 | Bäume nützlich ist, sie es auch auf Strings sein wird. In diesem Fall bieten | ||
69 | sich die Methoden von @bohannon2008boomerang an. | ||
70 | |||
71 | Symmetrische Linsen | ||
72 | ~ Unparsing (pretty-printing) soll nicht im Umfang der Arbeit sein. | ||
73 | |||
74 | Polish Parsers & Parser-Kombinatoren | ||
75 | ~ Es ist nicht auszuschließen, dass wir unsere Beispiel-Parser vermöge einer | ||
76 | eigenen Implementierung von Parser-Kombinatoren (alá | ||
77 | @swierstra2001combinator) konstruieren. | ||
78 | |||
79 | Falls sich eine Implementierung von Parser-Kombinatoren anbietet gibt es | ||
80 | keinen offensichtlichen Grund warum sich die Konstruktion aus | ||
81 | [-@hughes2003polish] nicht anwenden lassen sollte. | ||