summaryrefslogtreecommitdiff
path: root/Homework/cs5300/homework-six/compilers_assn_6.org
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
commit6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 (patch)
treeed97e39ec77c5231ffd2c394493e68d00ddac5a4 /Homework/cs5300/homework-six/compilers_assn_6.org
downloadmisc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.tar.gz
misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.zip
Diffstat (limited to 'Homework/cs5300/homework-six/compilers_assn_6.org')
-rw-r--r--Homework/cs5300/homework-six/compilers_assn_6.org113
1 files changed, 113 insertions, 0 deletions
diff --git a/Homework/cs5300/homework-six/compilers_assn_6.org b/Homework/cs5300/homework-six/compilers_assn_6.org
new file mode 100644
index 0000000..0652712
--- /dev/null
+++ b/Homework/cs5300/homework-six/compilers_assn_6.org
@@ -0,0 +1,113 @@
+#+TITLE: Assignment Six
+#+AUTHOR: Lizzy Hunt
+#+STARTUP: entitiespretty fold inlineimages
+#+LATEX_HEADER: \notindent \notga \usepackage{ dsfont } \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{fontspec} \usepackage[a4paper,margin=1in,portrait]{geometry} \usepackage{fontspec} \setmonofont{DejaVu Sans Mono}
+#+LATEX: \setlength\parindent{0pt}
+#+LATEX_COMPILER: lualatex
+#+OPTIONS: toc:nil
+
+* Question One
+\begin{verbatim}
+A -> BcDA'
+A' -> eD | ε
+B -> xBB'
+B' -> yD | zD | ε
+D -> Z
+\end{verbatim}
+
+* Question Two
+\begin{verbatim}
+A -> wA'
+A' -> xA' | yA' | ε
+\end{verbatim}
+
+* Question Three
+\begin{verbatim}
+A -> wA' | yzA'
+A' -> xA' | ε
+\end{verbatim}
+
+* Question Four
+\begin{verbatim}
+A -> Bx
+B -> Cy | Dz
+C -> Awp | z
+D -> t
+
+For i = 1, there is no immediate left recursion
+
+When i = 2 there is also no immediate left recursion
+
+When i = 3 we substituted A in C:
+
+A -> Bx
+B -> Cy | Dz
+C -> Bxwp | z
+D -> t
+
+Then B:
+A -> Bx
+B -> Cy | Dz
+C -> Cyxwp | Dzxwp | z
+D -> t
+
+And remove the immediate left recursion in C:
+A -> Bx
+B -> Cy | Dz
+C -> Dzxwp | zC'
+C' -> yxwpC' | ε
+D -> t
+
+When i = 4, there's no left recursion
+
+\end{verbatim}
+
+* Question Five
+\begin{verbatim}
+A -> Bx | Cy
+B -> Cz
+C -> Bw | v
+
+When i = 1, no immediate left recursion
+
+When i = 2, no immediate left recursion
+
+When i = 3, we substitute B in C
+
+A -> Bx | Cy
+B -> Cz
+C -> Czw | v
+
+, which we remove the immediate left recursion from
+
+A -> Bx | Cy
+B -> Cz
+C -> vC'
+C' -> zwC' | ε
+\end{verbatim}
+
+* Question Six
+\begin{verbatim}
+first(A) = first(B) \ ε U first(x) U first(y) = {t, w, u, x, y}
+first(B) = first(C) U first(u) U {ε} = {t, w, u, ε}
+first(C) = first(t) U first(w) = {t, w}
+
+follow(A) = {$} U follow(B) = {$, x}
+follow(B) = {x}
+follow(C) = follow(A) U {z} = {$, x, z}
+\end{verbatim}
+
+* Question Seven
+\begin{verbatim}
+first(A) = first(C) = first(E) = {x, z}
+first(B) = first(a) U {ε} = {a, ε}
+first(C) = first(E) = {x, z}
+first(D) = first(b) U {ε} = {b, ε}
+first(E) = first(x) U first(z) = {x, z}
+
+follow(A) = {$} U first(y) = {$, y}
+follow(B) = follow(A) = {$, y}
+follow(C) = first(B) \ ε U follow(B)= {a, $, y}
+follow(D) = follow(C) = {a, $, y}
+follow(E) = first(D) \ ε U follow(D) = {b, a, $, y}
+\end{verbatim}