diff options
Diffstat (limited to 'implementation.tex')
-rw-r--r-- | implementation.tex | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/implementation.tex b/implementation.tex index f5e5e58..3a68e04 100644 --- a/implementation.tex +++ b/implementation.tex | |||
@@ -22,7 +22,7 @@ Die Module innerhalb von \texttt{edit-lens} entsprechen im wesentlichen den Sekt | |||
22 | \item[Control.DFST] | 22 | \item[Control.DFST] |
23 | Datentyp, schrittweise-, und vollständige Auswertung sowie Umwandlung zu einem FST für deterministische finite state transducer | 23 | Datentyp, schrittweise-, und vollständige Auswertung sowie Umwandlung zu einem FST für deterministische finite state transducer |
24 | \item[Control.Lens.Edit.ActionTree] | 24 | \item[Control.Lens.Edit.ActionTree] |
25 | Das beschriebene Verfahren zur Darstellung eines beliebigen DFST als edit-lens für jene edit-Sprache | 25 | Das beschriebene Verfahren zur Darstellung eines beliebigen DFST als edit-lens für die edit-Sprache aus \textbf{Control.Edit.String} |
26 | 26 | ||
27 | Es ist hierbei jedoch der konkrete Typ der Wirkung und das Suchschema für $\Lleftarrow$ als Typklasse abstrahiert | 27 | Es ist hierbei jedoch der konkrete Typ der Wirkung und das Suchschema für $\Lleftarrow$ als Typklasse abstrahiert |
28 | \item[Control.DFST.Lens] | 28 | \item[Control.DFST.Lens] |
@@ -53,13 +53,15 @@ Die Module innerhalb von \texttt{edit-lens} entsprechen im wesentlichen den Sekt | |||
53 | Der interaktive editor kann von der Befehlseingabe gestartet werden wie folgt: | 53 | Der interaktive editor kann von der Befehlseingabe gestartet werden wie folgt: |
54 | \begin{lstlisting}[language=bash] | 54 | \begin{lstlisting}[language=bash] |
55 | $ stack build | 55 | $ stack build |
56 | $ stack exec interact <dfst | 56 | $ stack exec interact <dfst> |
57 | \end{lstlisting} | 57 | \end{lstlisting} |
58 | Hierbei ist \texttt{<dfst>} einer der in \texttt{Main} implementierten DFSTs: | 58 | Hierbei ist \texttt{<dfst>} einer der in \texttt{Main} implementierten DFSTs: |
59 | 59 | ||
60 | \begin{description} | 60 | \begin{description} |
61 | \item[linebreak] | 61 | \item[linebreak] |
62 | Wandelt Zeilenumbrüche und Leerzeichen ineinander um, sodass alle Zeilen mindestens 80 Zeichen enthalten | 62 | Wandelt Zeilenumbrüche und Leerzeichen ineinander um, sodass alle Zeilen mindestens 80 Zeichen enthalten (Beispiel \ref{eg:linebreak}) |
63 | \item[switch] | ||
64 | Der einfache DFST aus Abbildung \ref{fig:switchdfst} | ||
63 | \item[json-newl] | 65 | \item[json-newl] |
64 | Normalisiert Whitespace in einem JSON\footnote{\url{https://de.wikipedia.org/wiki/JSON}}-String. | 66 | Normalisiert Whitespace in einem JSON\footnote{\url{https://de.wikipedia.org/wiki/JSON}}-String. |
65 | JSON ist nicht regulär; Es lassen sich Klammern nicht prüfen und Einrückung nicht in Abhängigkeit der Verschachtelung implementieren | 67 | JSON ist nicht regulär; Es lassen sich Klammern nicht prüfen und Einrückung nicht in Abhängigkeit der Verschachtelung implementieren |
@@ -85,5 +87,5 @@ Nach Auswahl wird der Inhalt der Datei am Cursor eingefügt. | |||
85 | \subsubsection{Performance} | 87 | \subsubsection{Performance} |
86 | 88 | ||
87 | Bei der Implementierung wurde nicht auf Performance geachtet. | 89 | Bei der Implementierung wurde nicht auf Performance geachtet. |
88 | Es ist daher die Laufzeit des interaktiven Editors bereits bei kleinen Eingabe inakzeptabel lang (mehrere Sekunden für ein Kilobyte JSON). | 90 | Es ist daher die Laufzeit des interaktiven Editors bereits bei kleinen Eingaben inakzeptabel lang (mehrere Sekunden für ein Kilobyte JSON). |
89 | Es lässt sich allerdings der Speedup beim Propagieren kleiner edits gut beobachten; die Propagation eines ein-Buchstaben-edits nach rechts ist ca. einen Faktor 200 schneller als das komplett neue Parsen einer Datei (ca. ein Kilobyte JSON). | 91 | Es lässt sich allerdings der Speedup beim Propagieren kleiner edits gut beobachten; die Propagation eines ein-Buchstaben-edits nach rechts ist ca. einen Faktor 200 schneller als das komplett neue Parsen einer Datei (ca. ein Kilobyte JSON). |