This commit is contained in:
Tibo De Peuter 2025-05-11 21:44:25 +02:00
parent 130ff622c9
commit e5ef4244e3

View file

@ -7,6 +7,7 @@
\usepackage[dutch]{babel} % Nederlands taal
\usepackage{enumitem} % Aanpasbare lijsten
\usepackage[margin=1in]{geometry} % Sane marges
\usepackage{hyperref} % Hyperlinks
\usepackage{multicol} % Meerdere kolommen
\title{Ghent Prolog}
@ -44,6 +45,8 @@
\section{Implementatie}\label{sec:implementatie}
% Kotlin, libraries
Ghent Prolog werd geschreven in Kotlin, en gebruikt verder twee bibliotheken: \href{https://github.com/h0tk3y/better-parse}{\texttt{better-parse}}, een parser combinator library voor het parsen van een gedefinieerde grammatica, en \href{}{}, voor het gebruik van command-line argumenten.
% TODO Add link
% Data representatie: klassen, satisfiable, resolvent
@ -78,14 +81,16 @@
\section{Aanvullende opmerkingen}\label{sec:aanvullende-opmerkingen}
\subsection{Operator precedence en associativiteit}\label{subsec:operator-precedence}
\subsection{Operator precedentie en associativiteit}\label{subsec:operator-precedence}
Mijn implementatie heeft volledig ondersteuning voor operator precendentie en associativiteit.
% TODO Link naar prolog tabel
Mijn implementatie ondersteunt operator precedentie en associativiteit.
Deze functionaliteit bevindt zich in de parser, omdat de argumenten van een operator steeds rechtstreeks als parameters in de constructor van de klasse worden meegegeven.
Operator precedentie en associativiteit werd geïmplementeerd volgens de \href{https://www.swi-prolog.org/pldoc/man?section=operators}{SWI-Prolog documentatie}.
\subsection{Test driven development}\label{subsec:ttd}
Doorheen de ontwikkeling van grote delen van mijn implementatie heb ik gebruik gemaakt van Test Driven Development door eerst een klasse te definiëren met Kotlin TODO() implementaties, vervolgens testen te schrijven die falen en pas daarna mijn functies te implementeren todat de testen slagen.
Doorheen de ontwikkeling van grote delen van mijn implementatie heb ik gebruik gemaakt van Test Driven Development, onder andere met behulp van \href{https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-t-o-d-o.html}{Kotlin \texttt{TODO}}.
\subsection{Onafgewerkte Lexer en Parser implementatie}\label{subsec:lexer-parser}
@ -93,9 +98,7 @@
% TODO reference sectie over de parser
te gebruiken.
De implementatie was gebaseerd op
% TODO Crafting interpreters
% TODO Dmitri Soshnikov
De implementatie was gebaseerd op \href{https://craftinginterpreters.com/contents.html}{Crafting Interpreters, Robert Nystrom} en \href{https://www.youtube.com/playlist?list=PLGNbPb3dQJ_5FTPfFIg28UxuMpu7k0eT4}{Building a Parser from scratch, Dmitry Soshnikov}.
De voorlopige implementatie van de lexer en parser kunnen hier teruggevonden worden.
% TODO Link naar commit met voorlopige implementatie