137 lines
5.5 KiB
TeX
137 lines
5.5 KiB
TeX
\documentclass{article}
|
||
|
||
\usepackage[utf8]{inputenc}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage[french]{babel}
|
||
\usepackage[pdftex]{graphicx}
|
||
\usepackage{amsmath, amsfonts, amssymb, amsthm}
|
||
\usepackage{fullpage}
|
||
\usepackage[inline]{enumitem}
|
||
\usepackage{hyperref}
|
||
|
||
\title{Rapport du projet de compilation \\ Umons 2024-2025}
|
||
\author{Debucquoy Anthony}
|
||
|
||
\begin{document}
|
||
|
||
\maketitle
|
||
|
||
\newpage
|
||
|
||
\tableofcontents
|
||
|
||
\newpage
|
||
|
||
\section*{Préface}
|
||
|
||
Ce document retrace le dévelopement d'un compilateur de \textit{\textbf{S}imple \textbf{P}rogramme
|
||
en \textbf{F}rançais} dans le cadre du projet de compilation de L'\textit{Universitée de Mons}.
|
||
|
||
Ce projet est supposé être un projet de groupe. Mais lorsque les consignes du projets été données,
|
||
J'ai rapidement voulu me faire une idée de l'ampleur de celui-çi en tentant une première version.
|
||
En restant sur ma lancée je suis arrivé très rapidement à un résultat satisfesant à mes yeux et
|
||
pratiquement fonctionnelle (non exampt de bugs évidement). J'ai alors fait la demande à \textit{Mr.
|
||
DECAN Alexandre} notre assistant et la personne référente du projet.
|
||
Celui-çi m'a confirmé que je pourrais accomplir se projet par moi même.
|
||
|
||
\section{Consigne}
|
||
|
||
Il nous est demandé de déveloper un interpreteur pour le language \textbf{SPF}, un language de
|
||
programmation \textit{faiblement et statiquement typé} dans lequel les instructions sont en
|
||
français.
|
||
|
||
Voici une liste semi-exhaustive de ce qui nous est demandé.
|
||
|
||
\begin{itemize}
|
||
\item Une ligne commençant par le character \verb|#| sont ignorés
|
||
\item Une instruction se termine par le character \verb|;|
|
||
\item les types suivant doivent être implémentés:
|
||
\begin{enumerate*}
|
||
\item \verb|entier|
|
||
\item \verb|texte|
|
||
\item \verb|liste|
|
||
\item \verb|booléen|
|
||
\end{enumerate*}
|
||
\item une déclaration est de la forme \verb|<type> <nom>;| ou \verb|<type> <nom> = <expression>;|
|
||
\item une assignation est de la forme \verb|<nom> = <expression;|
|
||
\item Les noms de variables peuvent contenir des accents
|
||
\item Il est possible de créer une liste d'éléments consécutive avec \verb|[a:b]| où a et b sont
|
||
les bornes de la liste
|
||
\end{itemize}
|
||
|
||
Le language contient également de nombreux opérateurs qui ne sont pas listés exhaustivement dans ce
|
||
document car sont similaires à la pluspart des languages. Il est cependant à noté que les mots sont
|
||
traduit de l'anglasi au français. Par example, \verb|true| deviens \verb|vrai| en SPF.
|
||
|
||
On remarque également que l'accés à la liste commence avec un indice de 1. Ainsi l'accés au deuxième
|
||
élément de la liste l (\verb|liste l = [a, b, c];|) devrat être éffectué à l'aide de l'expression
|
||
\verb|l[2]| et retournera la variable \verb|b|
|
||
|
||
L'ajout d'élément dauns une liste se fait à l'aide de l'instruction\\
|
||
\verb|ajouter <expression> dans <variable>|
|
||
|
||
L'affichage d'une expression à l'écrant se fait à l'aide de l'instruction \\\
|
||
\verb|afficher <expression> (, <expression> ...);|
|
||
|
||
Finallement, les boucle \verb|for| sont semblables à celle en python avec comme syntaxe \\
|
||
\verb|<type> <variable> dans <expression> faire{...}|
|
||
|
||
On remarquera aussi que pour les variables initiés dans les tests et boucles sont limités à leurs
|
||
portée.
|
||
|
||
|
||
\section{Grammaire}
|
||
|
||
% – Une description de la grammaire implémentée et des points sensibles
|
||
% la concernant;
|
||
|
||
\section{Approche}
|
||
|
||
% – Une explication de votre approche pour gérer :
|
||
% ∗Les variables, leur déclaration, leur type et l’affichage via --trace;
|
||
% ∗Le test conditionnel de la forme si/sinon;
|
||
% ∗La boucle tant que;
|
||
% ∗La boucle pour chaque, incluant la gestion de la variable tempo-
|
||
% raire.
|
||
|
||
\section{Erreurs}
|
||
|
||
% – Une description brève des erreurs connues et des solutions envisagées;
|
||
|
||
\section{Difficultés}
|
||
|
||
% – Une brève présentation des difficultés rencontrées et des solutions
|
||
% implémentées/envisagées;
|
||
|
||
\section{Utilisation de l'IA}
|
||
|
||
Lorsque je travaille pour apprendre je ne souhaite en général pas utiliser d'IA dans le but de me
|
||
former mieux. Il m'arrive plus d'utiliser cet outils dans le but de me faciliter la tache pour un
|
||
travail fastidieux que je suis certains de savoir faire et dont je peux vérifier la fiabilitée par
|
||
moi même.
|
||
|
||
Ceci dis, lors de l'élaboration de ce projet je me suis vu utiliser l'IA à un moment. J'ai tenté de
|
||
donner ma grammaire déjà ecrite à chatgpt (modèle GPT-4o à travers https://duck.ai/) en lui
|
||
demandant de me générer une série de programme utilisant ce language qui pourraient me servir de
|
||
test. L'objectif est d'avoir plus d'examples de programmes que ceux données par la consigne.
|
||
|
||
Néamoins après très peu de temps je me suis ravisé et ai simplement ignoré la réponse donnée car les
|
||
proposition de programmes étaient bien trop simple et ne tentaient pas du tout de "piéger" mon
|
||
implémentation.
|
||
|
||
Pour être tout à fait claire, c'est la seule et unique utilisation de l'ia que j'ai faite jusqu'à
|
||
maintenant mais je compte utiliser LanguageTool à la fin de la rédaction de ce rapport pour m'aider
|
||
à coriger les évantuelles fautes commises dans ce document.
|
||
|
||
\section{Répartition du travail}
|
||
|
||
Comme précisé dans la préface de ce document, je me suis chargé de l'intégralité du projet. J'ai
|
||
commencé par me faire la main avec la librairie proposée (lark) par le tutoriel du parser json.
|
||
Ensuite le projet s'est très vite mis en place. Plusieurs révisions ont été nécéssaire pour faire
|
||
correspondre le projet aux attentes, vous pouvez les consulter dans l'historique du repo git à
|
||
l'adresse \url{https://git.herisson.ovh/tonitch/compilation}
|
||
|
||
|
||
\end{document}
|
||
|