@@ -4,7 +4,7 @@ \chapter{Teori}
44\begin {draft }
55
66I detta kapitel beskrivs fyra områden av central betydelse för projektet. Dessa
7- områden är domänspecifika språk, begreppen syntax, semantik och syntaxträd ,
7+ områden är domänspecifika språk, begreppen syntax, syntaxträd och semantik ,
88literat progammering samt ARCS-modellen och annan didaktik.
99
1010\section {Domänspecifika språk }
@@ -26,19 +26,19 @@ \section{Domänspecifika språk}
2626Domänspecifika språk är vanligt förekommande i programmeringssammanhang. HTML är
2727ett domänspecifikt språk för textformatering, SQL för databashantering och
2828CSV för tabeller. Precis som domänspecifika språk i vardagen passar
29- domänspecifika språk inom programmering bäst för sitt egna domän. SQL är bra för
29+ domänspecifika språk inom programmering bäst för sin egen domän. SQL är bra för
3030databaser men inte att göra ett spel i.
3131
3232Motsatsen till ett domänspecifikt språk är ett generellt språk. I vardagen är
3333naturliga språk som svenska och engelska generella medan ryttar-begreppen ovan
3434är domänspecifika. Precis som i vardagen finns det i datavärlden generella
35- programmeringsspråk som C++ och Java. Dessa är turingkompletta, vilket betyder
35+ programmeringsspråk, till exempel C++ och Java. Dessa är turingkompletta, vilket betyder
3636att det går att uttrycka alla beräkningsbara problem i dem och även lösa dem
3737givet tillräckligt med tid och
3838minnestillgångar\cite {turing_ne }\cite {turing_book }. Begränsningen med dessa
39- generella språk är just deras egen generaliserbarhet, eftersom de har stöd för
39+ generella språk är att de är just generella. Eftersom de har stöd för
4040alla typer av beräkningar så blir både läsbarheten och användarvänligheten
41- lidande. Ett exempel på ett domänspecifikt språk i datavärlden är \textit {syntaxträd }. Syntaxträd har
41+ lidande. Ett exempel på en form av domänspecifika språk i datavärlden är \textit {syntaxträd }. Syntaxträd har
4242använts mycket i projektet och beskrivs mer utförligt i
4343avsnitt~\ref {sec:syntax }.
4444
@@ -47,7 +47,7 @@ \section{Domänspecifika språk}
4747utvecklats inom detta projekt är inbäddade i programmeringsspråket
4848\textit {Haskell }. Haskell är ett lämpligt val eftersom det är enkelt att skapa
4949datatyper som bygger upp det domänspecifika språket. Att Haskell är ett
50- högnivå-språk är också en fördel då man slipper programerings-tekniska detaljer,
50+ högnivå-språk är också en fördel då man slipper programeringstekniska detaljer,
5151till exempel minneshantering, och istället kan fokusera på programmets innehåll
5252och betydelse. Slutligen gör dess mönstermatchning att de datatyper som utgör
5353det domänspecifika språket enkelt kan brytas isär och manipuleras.
@@ -86,7 +86,7 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
8686\textit {löv } (ändpunkter) och \textit {förgreningar }. I detta exempel är
8787\texttt {:+: } och \texttt {:*: } förgreningar. Med hjälp av dem kan man uttrycka
8888summan respektive produkten av två andra uttryck. Löven representeras av
89- \texttt {Const }, det är en konstant som man ej kan bygga vidare på.
89+ \texttt {Const }. Det är en konstant som man ej kan bygga vidare på.
9090
9191Med datakonstruktorerna kan man konstruera uttryck i språket. Ett exempeluttryck
9292från den tidigare datatypen visas i figur~\ref {fig:syntax_exempel_varde }.
@@ -95,15 +95,15 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
9595 \ begin{lstlisting}
9696expr = Const 7 :*: (Const 3 :+: Const 10)
9797 \end {lstlisting }
98- \caption {Ett exempelvärde ur det tidigare syntaxträdet. Detta modellerar det
98+ \caption {Ett exempeluttryck ur det tidigare syntaxträdet. Detta modellerar det
9999 matematiska uttrycket $ 7 * (3 + 10 )$ }\label {fig:syntax_exempel_varde }
100100\end {figure }
101101
102102Figur~\ref {fig:syntax_exempel_varde } visar hur det aritmetiska uttrycket $ 7 * (3
103103+ 10 )$ modelleras. Konstruktorn \texttt {:*: } får som sina två argument uttrycken
104104\texttt {Const 7 } och \texttt {Const 3 :+: Const 10 }. Det är alltså en produkt av
105- två deluttryck. Syntaxträd brukar illusteras med just träddiagram. Detta
106- exempelvärde illustreras i figur \ref {fig:syntax_exempel_bild }.
105+ två deluttryck. Syntaxträd brukar illusteras med träddiagram. Detta
106+ exempeluttryck illustreras i figur \ref {fig:syntax_exempel_bild }.
107107
108108\begin {figure }[tph]
109109 \centering
@@ -131,12 +131,12 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
131131Det finns tre saker som är speciellt värda att notera i
132132figur~\ref {fig:eval_tree }. Den första är att eftersom syntaxen innehåller tre olika
133133typer av element, här motsvarat av de tre datakonstruktorerna, krävs tre fall i
134- beräkningsfunktionen som beräknar vardera av dem. \textit {evaluate } har
134+ beräkningsfunktionen som beräknar vardera av dem. \texttt {evaluate } har
135135därför ett fall för \texttt {:+: }, ett för \texttt {:*: } och ett för
136136\texttt {Const }.
137137
138138Den andra saken att notera ur figur~\ref {fig:eval_tree } är hur ett fall
139- beräknas. Hur beräkningen ska ses ut får man genom att ta hänsyn till
139+ beräknas. Hur beräkningen ska se ut får man genom att ta hänsyn till
140140semantiken hos det syntaktiska elementet. \texttt {e1 :+: e2 } är syntax för
141141addition av de två uttrycken \texttt {e1 } och \texttt {e2 }. Därför blir
142142semantiken, värdet, av \texttt {e1 :+: e2 } lika med värdet hos \texttt {e1 } och
0 commit comments