Skip to content

Commit a973a1c

Browse files
author
Oskar Lundström
committed
Ogjorde kod som figurer i teori
1 parent 09258e6 commit a973a1c

File tree

2 files changed

+17
-29
lines changed

2 files changed

+17
-29
lines changed

Rapport/include/Teori.tex

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,13 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
6868
För att illustrera begreppet visas här ett domänspecifikt språk som består av en
6969
datatyp vars element är
7070
syntaxträd som modellerar aritmetiska uttryck, implementerat i Haskell.
71-
Datatypen för syntaxträden visas i figur~\ref{fig:syntax_exempel}.
71+
Datatypen för syntaxträden visas nedan.
7272

73-
\begin{figure}[tph]
74-
\begin{lstlisting}
73+
\begin{lstlisting}
7574
data Expr = Expr :+: Expr
76-
| Expr :*: Expr
77-
| Const Double
78-
\end{lstlisting}
79-
\caption{En datatyp för aritmetiska uttryck i Haskell. Detta är ett exempel på
80-
ett litet domänspecifikt språk.}\label{fig:syntax_exempel}
81-
\end{figure}
75+
| Expr :*: Expr
76+
| Const Double
77+
\end{lstlisting}
8278

8379
Typen innehåller \textit{datakonstruktorer} för att representera
8480
\textit{löv} (ändpunkter) och \textit{förgreningar}. I detta exempel är
@@ -88,20 +84,16 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
8884
\texttt{Const}, vilket är en konstant som ej kan byggas vidare på\todo{Const 10 :*: Const 2??}.
8985

9086
Med datakonstruktorerna kan uttryck representerade av syntaxträd konstrueras. Ett exempeluttryck
91-
från den tidigare datatypen visas i figur~\ref{fig:syntax_exempel_varde}, där det aritmetiska uttrycket $7 * (3
87+
från den tidigare datatypen är
88+
\begin{lstlisting}
89+
expr = Const 7 :*: (Const 3 :+: Const 10)
90+
\end{lstlisting}
91+
där det aritmetiska uttrycket $7 * (3
9292
+ 10)$ modelleras. Konstruktorn \texttt{:*:} får som sina två argument uttrycken
9393
\texttt{Const 7} och \texttt{Const 3 :+: Const 10}. Det är alltså en produkt av
9494
två deluttryck. Syntaxträd brukar illusteras med träddiagram. Detta
9595
exempeluttryck illustreras i figur \ref{fig:syntax_exempel_bild}.
9696

97-
\begin{figure}[tph]
98-
\begin{lstlisting}
99-
expr = Const 7 :*: (Const 3 :+: Const 10)
100-
\end{lstlisting}
101-
\caption{Ett exempeluttryck ur det tidigare syntaxträdet\todo{Vilket syntaxträd?}. Detta modellerar det
102-
matematiska uttrycket $7 * (3 + 10)$}\label{fig:syntax_exempel_varde}
103-
\end{figure}
104-
10597
\begin{figure}[tph]
10698
\centering
10799
\includegraphics[width=0.4\linewidth]{figure/syntax_exempel_bild.png}
@@ -113,26 +105,20 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
113105
i samband med syntaxträd. I detta exempel är semantiken det värde som
114106
syntaxträdet har. Detta värde kan beräknas utifrån syntaxträdet genom
115107
en \textit{evaluator}, också kallad \textit{beräkningsfunktion}. För \texttt{Expr}
116-
kan beräkningsfunktionen se ut som i figur \ref{fig:eval_tree}
117-
118-
\begin{figure}[tph]
119-
\begin{lstlisting}
108+
kan beräkningsfunktionen se ut som
109+
\begin{lstlisting}
120110
evaluate :: Expr -> Double
121111
evaluate (e1 :+: e2) = evaluate e1 + evaluate e2
122112
evaluate (e1 :*: e2) = evaluate e1 * evaluate e2
123113
evaluate (Const v) = v
124-
\end{lstlisting}
125-
\caption{En beräkningsfunktion för syntaxträdet.}\label{fig:eval_tree}
126-
\end{figure}
127-
128-
Det finns tre speciella saker att observera i
129-
figur~\ref{fig:eval_tree}. Den första är att eftersom syntaxen innehåller tre olika
114+
\end{lstlisting}
115+
Det finns tre speciella saker att observera. Den första är att eftersom syntaxen innehåller tre olika
130116
slag av element, här motsvarat av de tre datakonstruktorerna, krävs tre fall i
131117
funktionen \texttt{evaluate} som beräknar vardera av dem. Den har
132118
därför ett fall för \texttt{:+:}, ett för \texttt{:*:} och ett för
133119
\texttt{Const}.
134120

135-
Den andra saken att notera i figuren är hur ett fall
121+
Den andra saken att notera är hur ett fall
136122
beräknas. Hur beräkningen ska se ut fås genom att ta hänsyn till
137123
semantiken hos det syntaktiska uttrycket. Här är \texttt{e1 :+: e2} syntax för
138124
addition av de två uttrycken \texttt{e1} och \texttt{e2}. Därför blir

Rapport/include/settings/Settings.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@
6363
\lstset{commentstyle=\ttfamily}
6464
\lstset{escapeinside=`'}
6565
\lstset{deletekeywords={length}}
66+
\lstset{frame=none}
67+
\lstset{belowskip=-0.5\baselineskip}
6668
\usepackage{chemfig} % Chemical structures
6769
\usepackage[margin=1in]{geometry} % Page margin lengths
6870
\usepackage{eso-pic} % Create cover page background

0 commit comments

Comments
 (0)