Début de rapport
This commit is contained in:
parent
d8f9ddcc4c
commit
024f721091
@ -6,6 +6,8 @@
|
|||||||
\usepackage[pdftex]{graphicx}
|
\usepackage[pdftex]{graphicx}
|
||||||
\usepackage{amsmath, amsfonts, amssymb, amsthm}
|
\usepackage{amsmath, amsfonts, amssymb, amsthm}
|
||||||
\usepackage{fullpage}
|
\usepackage{fullpage}
|
||||||
|
\usepackage[inline]{enumitem}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
|
||||||
\title{Rapport du projet de compilation \\ Umons 2024-2025}
|
\title{Rapport du projet de compilation \\ Umons 2024-2025}
|
||||||
\author{Debucquoy Anthony}
|
\author{Debucquoy Anthony}
|
||||||
@ -20,17 +22,70 @@
|
|||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
\section{Consigne}
|
\section*{Préface}
|
||||||
% - Une description brève du projet;
|
|
||||||
|
|
||||||
\section{Grammaire}%
|
Ce document retrace le dévelopement d'un compilateur de \textit{\textbf{S}imple \textbf{P}rogramme
|
||||||
\label{sec:la grammaire}
|
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
|
% – Une description de la grammaire implémentée et des points sensibles
|
||||||
% la concernant;
|
% la concernant;
|
||||||
|
|
||||||
\section{Approche}%
|
\section{Approche}
|
||||||
\label{sec:Approche}
|
|
||||||
|
|
||||||
% – Une explication de votre approche pour gérer :
|
% – Une explication de votre approche pour gérer :
|
||||||
% ∗Les variables, leur déclaration, leur type et l’affichage via --trace;
|
% ∗Les variables, leur déclaration, leur type et l’affichage via --trace;
|
||||||
@ -39,27 +94,43 @@
|
|||||||
% ∗La boucle pour chaque, incluant la gestion de la variable tempo-
|
% ∗La boucle pour chaque, incluant la gestion de la variable tempo-
|
||||||
% raire.
|
% raire.
|
||||||
|
|
||||||
\section{Erreurs}%
|
\section{Erreurs}
|
||||||
\label{sec:Les erreurs}
|
|
||||||
|
|
||||||
% – Une description brève des erreurs connues et des solutions envisagées;
|
% – Une description brève des erreurs connues et des solutions envisagées;
|
||||||
|
|
||||||
\section{Difficultés}%
|
\section{Difficultés}
|
||||||
\label{sec:Difficultés}
|
|
||||||
|
|
||||||
% – Une brève présentation des difficultés rencontrées et des solutions
|
% – Une brève présentation des difficultés rencontrées et des solutions
|
||||||
% implémentées/envisagées;
|
% implémentées/envisagées;
|
||||||
|
|
||||||
\section{Utilisation de l'IA}%
|
\section{Utilisation de l'IA}
|
||||||
\label{sec:Utilisation de l'IA}
|
|
||||||
|
|
||||||
% – Les points éventuels pour lesquels vous avez fait appel à une IA6
|
Lorsque je travaille pour apprendre je ne souhaite en général pas utiliser d'IA dans le but de me
|
||||||
% (ChatGPT, CoPilot, etc.);
|
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.
|
||||||
|
|
||||||
\section{Répartition du travail}%
|
Ceci dis, lors de l'élaboration de ce projet je me suis vu utiliser l'IA à un moment. J'ai tenté de
|
||||||
\label{sec:Répartition du travail}
|
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}
|
||||||
|
|
||||||
% – La répartition du travail au sein du groupe.
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user