\documentclass{article}

\usepackage[utf8]{inputenc}

\usepackage{times}

\setlength{\parindent}{0em}
\setlength{\parskip}{1ex plus .1ex minus .1ex}
\setlength{\itemsep}{0ex}

\DeclareFontFamily{OT1}{cmbig}{}
\DeclareFontShape{OT1}{cmbig}{m}{n}{ <-> cmssbx10 }{}
%\newcommand{\bigfont}{\usefont{OT1}{cmbig}{m}{n}}
%\newcommand{\MyHuge}[1]{{\bigfont\fontsize{3cm}{3.3cm}\selectfont #1}}
\newcommand{\bigfont}{\usefont{OT1}{cmbig}{m}{n}}
\newcommand{\MyHuge}[1]{{\bigfont\fontsize{2.2cm}{2.42cm}\selectfont #1}}

\begin{document}

\thispagestyle{empty}

\begin{center}
{\LARGE\bf Bachelorprojekt i Oversætterkonstruktion}
\\[15ex]
\MyHuge{Kitty}
\\[15ex]
{\LARGE\bf Maj 2019}
\\[10ex]
{\Large\bf Rapport fra gruppe GRUPPENUMMER:}
\\[2ex]
{\Large\bf STUDERENDE1, STUDERENDE2, STUDERENDE3, STUDERENDE4}
\end{center}

\setcounter{page}{0}

\newpage
%
% Erstat hvert af de følgende underafsnit med et passende indhold.
% Tilføj flere (under)afsnit, hvis I har mere at sige. Skriv klart og
% kort. Antag, at læserne ved næsten alt om basissproget og DM546; undlad
% at inkludere eller citere fra projektbeskrivelsen.
%
\section{Indledning}

\subsection{Afklaringer}
Har I haft brug for at foretage nogle præciseringer i sprogdefinitionen?
Forklar.

\subsection{Begrænsninger}
Har I bevidst lavet nogle begrænsninger i jeres version af sproget?
Hvad skyldes det? Hvad er følgerne?

\subsection{Udvidelser}
Har I lavet nogle udvidelser i jeres version af sproget?
Hvad var jeres motivation? Hvad er følgerne?

\subsection{Implementationsstatus}
Hvad er status af jeres implementation? Er alle de foreslåede
funktionaliteter implementerede? Er de afprøvede? Virker de?

\section{Parsning og abstrakte syntakstræer}

\subsection{Grammatikken}
Angiv den fulde grammatik for jeres version af sproget f.eks.\ ved
af liste jeres {\tt bison} input med alle actions fjernet, eller
også en anden pænere måde at angive en grammatik.

\subsection{Brug af {\tt flex} værktøjet}
Kort introduktion, hvor man lige i en paragraf fortæller, hvad {\tt flex} gør.
Diskuter interessante dele af jeres {\tt flex} implementation
af scanneren. Hvilke tokens benytter I? Bruger I start conditions?
Hvordan og hvorfor? Hvordan håndteres kommentarer og white space.
Er der konstruktioner, der af en eller anden grund skal behandles specielt?

\subsection{Brug af {\tt bison} værktøjet}
Diskuter interessante dele af jeres {\tt bison} implementation
af parseren. Hvordan fik I {\tt bison} til at acceptere jeres
grammatik?
Hvad er jeres design af precedence, og hvordan har I realiseret det?
Giv en oversigt over, hvor stærkt de forskellige operatorer binder.
Er der konstruktioner, der af en eller anden grund skal behandles specielt?

\subsection{Abstrakte syntakstræer}
Angiv strukturen af jeres abstrakte syntakstræer,
herunder specielt hvilke felter I har bestemt jer til at have i knuderne,
og kort hvad de skal bruges til under hvilke faser.

\subsection{Afsukring}
Behandler I syntaktisk sukker under parsningen? Hvordan og hvorfor?

\subsection{Udlugning}
Udluger I uønskede syntakstræer? Hvordan og hvorfor?

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? Virker den?

\section{Symboltabeller}

\subsection{Scoperegler}
Angiv eventuelle afklaringer af scopereglerne i jeres sprog.

\subsection{Symboldata}
Beskriv indholdet af symboltabellens indgange.

\subsection{Algoritme}
Beskriv jeres algoritme til at opbygge symboltabeller og
checke scoperegler.

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? virker den?

\section{Typecheck}

\subsection{Typer}
Beskriv de typer, som jeres sprog understøtter.

\subsection{Typeregler}
Beskriv typereglerne i jeres sprog.

\subsection{Algoritme}
Beskriv jeres algoritme for at checke typeregler.

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? virker den?

\section{Ressourceberegning}

\subsection{Ressourcer}
Beskriv de ressourcer, som I beregner.
Er dette en separat fase?

\subsection{Algoritme}
Beskriv eventuelle algoritmer til at beregne ressourcer.

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? virker den?

\section{Kodegenerering}

\subsection{Strategi}
Beskriv den overordnede strategi for kodegenerering til mellemform,
samt jeres stack frame.

\subsection{Kodeskabeloner}
Beskriv kodeskabeloner for sprogkonstruktioner.

\subsection{Algoritme}
Beskriv jeres algoritme for at generere kode.

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? virker den?

\section{Faser før emit}
Hvilke faser har I efter mellemformen er genereret og før emit?

\subsection{Analyser}
Hvilke analyser foretages, og hvad baserer de sig på?

\subsection{Algoritmer}
Beskriv jeres algoritmer til analyserne.

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? virker den?

\section{Emit}

\subsection{Eksempelkode}
Angiv den komplette kode, der genereres, for et lille antal
velvalgte og meget små eksempler;
herunder {\tt Factorial} fra hjemmesiden
samt et eksempel, der involverer et array.

Dokument\'{e}r også gerne evt.\ ekstra-faciliteter.

\subsection{Afprøvning}
Har I afprøvet denne fase? Hvordan? virker den?

\section{Konklusion}
Evt.\ konklusion, samt dato og underskrifter.

\newpage

\appendix

\section{Kildetekster}
I rækkefølge efter faser.

\end{document}
