--- a/slides/slides08.tex Thu Nov 21 00:49:21 2019 +0000
+++ b/slides/slides08.tex Thu Nov 21 14:41:53 2019 +0000
@@ -1,3 +1,4 @@
+% !TEX program = xelatex
\documentclass[dvipsnames,14pt,t]{beamer}
\usepackage{xcolor}
\usepackage{../slides}
@@ -37,9 +38,10 @@
\normalsize
\begin{center}
\begin{tabular}{ll}
- Email: & christian.urban at kcl.ac.uk\\
- Office: & N7.07 (North Wing, Bush House)\\
- Slides: & KEATS (also home work is there)\\
+ Email: & christian.urban at kcl.ac.uk\\
+ Office Hours: & Thursdays 12 -- 14\\
+ Location: & N7.07 (North Wing, Bush House)\\
+ Slides \& Progs: & KEATS (also homework is there)\\
\end{tabular}
\end{center}
@@ -80,7 +82,9 @@
\begin{center}
\bl{\begin{tikzpicture}
\tikzset{level distance=12mm,sibling distance=4mm}
-\tikzset{edge from parent/.style={draw,very thick}}
\Tree [.$+$ [.$1$ ] [.$+$ [.$*$ $2$ $3$ ] [.$-$ $4$ $3$ ]]]
\end{tikzpicture}}
+\tikzset{edge from parent/.style={draw,very thick}}
+\Tree [.$+$ [.$1$ ] [.$+$ [.$*$ $2$ $3$ ] [.$-$ $4$ $3$ ]]]
+\end{tikzpicture}}
\end{center}
\end{column}
\begin{column}{.3\textwidth}
@@ -154,10 +158,12 @@
\end{lstlisting}
\end{center}
-\begin{tikzpicture}[remember picture,overlay]
\draw[->,very thick] (A) edge [->,to path={-- ++(10mm,0mm)
+\begin{tikzpicture}[remember picture,overlay]
+ \draw[->,very thick] (A) edge [->,to path={-- ++(10mm,0mm)
-- ++(0mm,-17.3mm) |- (\tikztotarget)},line width=1mm] (B.east);
\draw[->,very thick] (C) edge [->,to path={-- ++(10mm,0mm)
- -- ++(0mm,-17.3mm) |- (\tikztotarget)},line width=1mm] (D.east);
\end{tikzpicture}
+ -- ++(0mm,-17.3mm) |- (\tikztotarget)},line width=1mm] (D.east);
+\end{tikzpicture}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -192,7 +198,8 @@
\draw[->,very thick] (LA) edge [->,to path={-- ++(12mm,0mm)
-- ++(0mm,17.3mm) |- (\tikztotarget)},line width=1mm] (LB.east);
\draw[->,very thick] (LC) edge [->,to path={-- ++(12mm,0mm)
- -- ++(0mm,-17.3mm) |- (\tikztotarget)},line width=1mm] (LD.east);
\end{tikzpicture}
+ -- ++(0mm,-17.3mm) |- (\tikztotarget)},line width=1mm] (LD.east);
+\end{tikzpicture}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -279,13 +286,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[c]
-\frametitle{Fun Grammar}
+\frametitle{Fun-Grammar}
\bl{
\begin{plstx}[rhs style=]
-: \meta{Exp} ::= \meta{Var} | \meta{Num}{\hspace{3cm}}
+: \meta{Exp} ::= \meta{Var} | \meta{Num}{\hspace{4cm}}
| \meta{Exp} + \meta{Exp} | ... | (\meta{Exp})
| \code{if} \meta{BExp} \code{then} \meta{Exp} \code{else} \meta{Exp}
- | \code{write} \meta{Exp} {\hspace{3cm}}
+ | \code{write} \meta{Exp} {\hspace{5cm}}
| \meta{Exp} ; \meta{Exp}
| \textit{FunName} (\meta{Exp}, ... , \meta{Exp})\\
: \meta{BExp} ::= ...\\
@@ -331,9 +338,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[c, fragile]
-\frametitle{Idea}
+\frametitle{Ideas}
-Compile \texttt{exp} such that the result of the expression
+Use separate JVM methods for each Fun-function.\bigskip
+
+Compile \bl{\texttt{exp}}s such that the result of the expression
is on top of the stack.\bigskip
\begin{itemize}
@@ -412,7 +421,7 @@
.end method
\end{lstlisting}\bigskip
-\small We will need for definitions, like\footnotesize\medskip
+\small We will need methods for definitions like\footnotesize\medskip
\begin{lstlisting}[language=JVMIS,
xleftmargin=2mm,
@@ -652,7 +661,7 @@
then a call \texttt{f(args)} can be compiled as\medskip\small
-\begin{lstlisting}[basicstyle=\ttfamily, numbers=none]
+\begin{lstlisting}[numbers=none]
prepare environment
jump to start of function
\end{lstlisting}
@@ -665,23 +674,22 @@
\frametitle{Tail Recursive Call}
\footnotesize
-\begin{textblock}{13}(-0.3,2)
-\begin{lstlisting}[language=Scala,basicstyle=\ttfamily, numbers=none]
+\begin{textblock}{13}(-0.3,3)
+\begin{lstlisting}[language=Scala, numbers=none]
def compile_expT(a: Exp, env: Mem, name: String): Instrs =
...
- case Call(n, args) => if (name == n)
- {
- val stores = args.zipWithIndex.map
- { case (x, y) => "istore " + y.toString + "\n" }
- args.flatMap(a => compile_expT(a, env, "")) ++
- stores.reverse ++
- List ("goto " + n + "_Start\n")
- }
- else
+ case Call(n, args) => if (name == n)
{
+ val stores =
+ args.zipWithIndex.map { case (x, y) => i"istore $y" }
+
+ args.map(a => compile_expT(a, env, "")).mkString ++
+ stores.reverse.mkString ++
+ i"goto ${n}_Start"
+ } else {
val is = "I" * args.length
- args.flatMap(a => compile_expT(a, env, "")) ++
- List ("invokestatic XXX/XXX/" + n + "(" + is + ")I\n")
+ args.map(a => compile_expT(a, env, "")).mkString ++
+ i"invokestatic XXX/XXX/${n}(${is})I"
}
\end{lstlisting}
\end{textblock}
@@ -738,7 +746,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
\begin{frame}[c]
\frametitle{Can This Be Done?}
@@ -781,6 +788,36 @@
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[c]
+
+\begin{center}
+ \includegraphics[angle=90,scale=0.35]{/Users/cu/vote.pdf}
+\end{center}
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[c]
+
+\begin{center}
+ \includegraphics[scale=0.25]{/Users/cu/dresden.png}
+\end{center}
+
+\begin{textblock}{13}(2,12)
+\includegraphics[scale=0.08]{/Users/cu/kiss.jpg}
+\end{textblock}
+
+\begin{textblock}{13}(7,12)
+\includegraphics[scale=0.079]{/Users/cu/pioniere.jpg}
+\end{textblock}
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
\end{document}
%%% Local Variables: