You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
datatyper som bygger upp det domänspecifika språket. Att Haskell är ett
48
48
högnivåspråk är också en fördel då programmeraren slipper programmeringstekniska detaljer som
49
49
minneshantering och kan istället fokusera på programmets innehåll
50
-
och betydelse. Slutligen möjliggör mönstermatchning att de datatyper som utgör
51
-
det domänspecifika språket enkelt kan brytas isär och manipuleras.
50
+
och betydelse. Slutligen möjliggör mönstermatchning att de konstruktorer som bygger
51
+
upp datatyperna i det domänspecifika språket enkelt kan brytas isär och manipuleras.
52
52
53
53
För vidare läsning om domänspecifika språk rekommenderas \textit{DSL for the Uninitiated}~\cite{DSLU}.
54
54
55
55
\section{Syntax, syntaxträd och semantik}\label{sec:syntax}
56
56
57
57
I samband med domänspecifika språk dyker begreppen \textit{syntax} och
58
-
\textit{semantik} upp. Syntax är reglerna för hur enheter i språket, till exempel ord och skiljetecken, sammamslås till komplexa strukturer som meningar och
58
+
\textit{semantik} upp. Syntax är reglerna för hur enheter i språket, till exempel ord och skiljetecken, sammanslås till komplexa strukturer som meningar och
59
59
satser. Semantiken är betydelsen av sådana komplexa strukturer i ett språk.
60
60
Inom aritmetik\footnote{Aritmetik är
61
61
den gren inom matematiken som behandlar räkning av tal.} är tal och
@@ -68,9 +68,10 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
68
68
I domänspecifika språk som modellerar syntax, så kallade \textit{deep
69
69
embeddings}, kan syntaxen representeras av trädstrukturer. Dessa
70
70
strukturer kallas \textit{syntaxträd}, och har haft stor betydelse i detta projekt.
71
-
För att illustrera begreppet visas här ett domänspecifikt språk som består av ett
71
+
För att illustrera begreppet visas här ett domänspecifikt språk som består av en
72
+
datatyp vars element är
72
73
syntaxträd som modellerar aritmetiska uttryck, implementerat i Haskell.
73
-
Datatypen för syntaxträdet visas i figur~\ref{fig:syntax_exempel}.
74
+
Datatypen för syntaxträden visas i figur~\ref{fig:syntax_exempel}.
74
75
75
76
\begin{figure}[tph]
76
77
\begin{lstlisting}
@@ -87,10 +88,10 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
87
88
\texttt{:+:} och \texttt{:*:} förgreningar. Med hjälp av dem kan summan respektive produkten av två andra uttryck uttryckas. Löven
88
89
% Löfven
89
90
representeras av
90
-
\texttt{Const}, vilket är en konstant som ej kan byggas vidare på.
91
+
\texttt{Const}, vilket är en konstant som ej kan byggas vidare på\todo{Const 10 :*: Const 2??}.
91
92
92
93
Med datakonstruktorerna kan uttryck representerade av syntaxträd konstrueras. Ett exempeluttryck
93
-
från den tidigare datatypen visas i figur~\ref{fig:syntax_exempel_varde}, som visar hur det aritmetiska uttrycket $7 * (3
94
+
från den tidigare datatypen visas i figur~\ref{fig:syntax_exempel_varde}, där det aritmetiska uttrycket $7 * (3
94
95
+ 10)$ modelleras. Konstruktorn \texttt{:*:} får som sina två argument uttrycken
95
96
\texttt{Const 7} och \texttt{Const 3 :+: Const 10}. Det är alltså en produkt av
96
97
två deluttryck. Syntaxträd brukar illusteras med träddiagram. Detta
@@ -100,22 +101,22 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
100
101
\begin{lstlisting}
101
102
expr = Const 7 :*: (Const 3 :+: Const 10)
102
103
\end{lstlisting}
103
-
\caption{Ett exempeluttryck ur det tidigare syntaxträdet. Detta modellerar det
104
+
\caption{Ett exempeluttryck ur det tidigare syntaxträdet\todo{Vilket syntaxträd?}. Detta modellerar det
0 commit comments