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}
 | ||
| 
 |