diff -r ce91c29d2885 -r aff7bf93b9c7 ChengsongTanPhdThesis/Chapters/Bitcoded1.tex --- a/ChengsongTanPhdThesis/Chapters/Bitcoded1.tex Mon Jun 06 15:57:17 2022 +0100 +++ b/ChengsongTanPhdThesis/Chapters/Bitcoded1.tex Mon Jun 06 16:45:42 2022 +0100 @@ -393,7 +393,7 @@ \noindent This algorithm keeps the regular expression size small, for example, with this simplification our previous $(a + aa)^*$ example's 8000 nodes -will be reduced to just 6 and stays constant, no matter how long the +will be reduced to just 17 and stays constant, no matter how long the input string is. @@ -427,10 +427,12 @@ Ausaf and Urban cleverly defined an auxiliary function called $\flex$, defined as -\[ -\flex \; r \; f \; [] \; v \; = \; f\; v -\flex \; r \; f \; c :: s \; v = \flex r \; \lambda v. \, f (\inj \; r\; c\; v)\; s \; v -\] +\begin{center} +\begin{tabular}{lcr} +$\flex \; r \; f \; [] \; v$ & $=$ & $f\; v$\\ +$\flex \; r \; f \; c :: s \; v$ & $=$ & $\flex \; r \; \lambda v. \, f (\inj \; r\; c\; v)\; s \; v$ +\end{tabular} +\end{center} which accumulates the characters that needs to be injected back, and does the injection in a stack-like manner (last taken derivative first injected). $\flex$ is connected to the $\lexer$: