commit 6b4a7c48c85f99ba24e0fadb34c5a1ec9f578871 Author: Anthony Debucquoy Date: Sat Mar 15 17:16:09 2025 +0100 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6e7b779 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +venv/ +rapport.aux +rapport.fdb_latexmk +rapport.fls +rapport.log +rapport.pdf +rapport.synctex.gz +rapport.toc +Projet_compilation_anthony_debucquoy_2025.tar.xz diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2281b7d --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +.PHONY: all help archive +all: help + +help: + @echo "usage: make " + @echo "commands are:" + @echo " - help: see this help" + @echo " - archive: Generate the archive" + +archive: rapport/rapport.pdf requirements.txt spf.lark spf.py + tar -czf Projet_compilation_anthony_debucquoy_2025.tar.xz $^ diff --git a/examples/factorielle.spf b/examples/factorielle.spf new file mode 100644 index 0000000..bfc46df --- /dev/null +++ b/examples/factorielle.spf @@ -0,0 +1,10 @@ +entier nombre = 5; +entier factorielle; + +factorielle = 1; +tant que nombre > 0 faire { + factorielle = factorielle * nombre; + nombre = nombre - 1; +} + +afficher "La factorielle vaut", factorielle; \ No newline at end of file diff --git a/examples/maximum.spf b/examples/maximum.spf new file mode 100644 index 0000000..edd23d0 --- /dev/null +++ b/examples/maximum.spf @@ -0,0 +1,11 @@ +liste nombres = [1, 8, 3, 6]; +entier maximum; + +maximum = nombres[1]; +pour chaque entier nombre dans nombres faire { + si nombre > maximum alors { + maximum = nombre; + } +} + +afficher "Le maximum dans", nombres, "est", maximum; diff --git a/examples/monotone.spf b/examples/monotone.spf new file mode 100644 index 0000000..a73f063 --- /dev/null +++ b/examples/monotone.spf @@ -0,0 +1,14 @@ +liste nombres = [3, 3, 6, 7, 8]; +booléen monotone = vrai; + +pour chaque entier position dans [1:taille nombres - 1] faire { + si nombres[position] > nombres[position + 1] alors { + monotone = faux; + } +} + +si monotone alors { + afficher "La liste", nombres, "est monotone"; +} sinon { + afficher "La liste", nombres, "n'est pas monotone"; +} diff --git a/examples/mots.spf b/examples/mots.spf new file mode 100644 index 0000000..178f485 --- /dev/null +++ b/examples/mots.spf @@ -0,0 +1,21 @@ +texte phrase = "Bonjour à tout le monde"; +texte mot = ""; +liste mots = []; + +pour chaque texte caractère dans phrase faire { + si caractère vaut " " alors { + si taille mot > 0 alors { + ajouter mot dans mots; + mot = ""; + } + } sinon { + mot = mot + caractère; + } +} + +# Potentiel dernier mot +si taille mot > 0 alors { + ajouter mot dans mots; +} + +afficher mots; diff --git a/rapport/rapport.tex b/rapport/rapport.tex new file mode 100644 index 0000000..3207d4f --- /dev/null +++ b/rapport/rapport.tex @@ -0,0 +1,65 @@ +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[french]{babel} +\usepackage[pdftex]{graphicx} +\usepackage{amsmath, amsfonts, amssymb, amsthm} +\usepackage{fullpage} + +\title{Rapport du projet de compilation \\ Umons 2024-2025} +\author{Debucquoy Anthony} + +\begin{document} + +\maketitle + +\newpage + +\tableofcontents + +\newpage + +\section{Consigne} +% - Une description brève du projet; + +\section{Grammaire}% +\label{sec:la grammaire} + +% – Une description de la grammaire implémentée et des points sensibles +% la concernant; + +\section{Approche}% +\label{sec: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}% +\label{sec:Les erreurs} + +% – Une description brève des erreurs connues et des solutions envisagées; + +\section{Difficultés}% +\label{sec: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}% +\label{sec:Utilisation de l'IA} + +% – Les points éventuels pour lesquels vous avez fait appel à une IA6 +% (ChatGPT, CoPilot, etc.); + +\section{Répartition du travail}% +\label{sec:Répartition du travail} + +% – La répartition du travail au sein du groupe. + +\end{document} + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b0ef8cc --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +lark==1.2.2 diff --git a/spf.lark b/spf.lark new file mode 100644 index 0000000..abf8396 --- /dev/null +++ b/spf.lark @@ -0,0 +1 @@ +// Contient la gramaire de spf diff --git a/spf.py b/spf.py new file mode 100644 index 0000000..b591dcd --- /dev/null +++ b/spf.py @@ -0,0 +1,11 @@ +# Projet de compilation Umons 2025 + +# TODO: utiliser argparse +# TODO: utiliser Interpreter de lark + +def main(): + print("Hello Wordl") + +if __name__ == "__main__": + main() +