diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2017-10-24 15:32:28 +0200 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2017-10-24 15:32:28 +0200 |
| commit | acaa6097127fa23e1a61a40b38a14a39af5c22b1 (patch) | |
| tree | efdb71773eeedd9f6c0941aa634c19dfdc4bdf05 /literature.md | |
| parent | b0664409b92541883e4cf17ff77730aa124e9d48 (diff) | |
| download | incremental-dfsts-acaa6097127fa23e1a61a40b38a14a39af5c22b1.tar incremental-dfsts-acaa6097127fa23e1a61a40b38a14a39af5c22b1.tar.gz incremental-dfsts-acaa6097127fa23e1a61a40b38a14a39af5c22b1.tar.bz2 incremental-dfsts-acaa6097127fa23e1a61a40b38a14a39af5c22b1.tar.xz incremental-dfsts-acaa6097127fa23e1a61a40b38a14a39af5c22b1.zip | |
Bachelor's thesis; look up literature
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. | ||
