diff --git a/Median3Entiers.lir b/Median3Entiers.lir new file mode 100644 index 0000000..39c9af1 --- /dev/null +++ b/Median3Entiers.lir @@ -0,0 +1,37 @@ +10 affiche "Bienvenue dans le programme Median3Entiers.lir" +20 affiche +30 affiche "Entrez le premier entier : " +40 entre premier +50 affiche "Entrez le deuxième entier : " +60 entre deuxieme +70 affiche "Entrez le troisième entier : " +80 entre troisieme +90 procedure 1000 +100 affiche "Median( " +110 affiche premier +120 affiche ", " +130 affiche deuxieme +140 affiche ", " +150 affiche troisieme +160 affiche ") = " +170 affiche median +180 affiche +250 stop + +1000 si premier <= deuxieme vaen 1100 +1010 si deuxieme <= troisieme vaen 1200 +1020 vaen 1520 + +1100 si deuxieme <= troisieme vaen 1520 +1110 si premier <= troisieme vaen 1540 +1120 vaen 1500 + +1200 si premier <= troisieme vaen 1500 +1220 vaen 1540 + +1500 var median = premier +1510 vaen 1550 +1520 var median = deuxieme +1530 vaen 1550 +1540 var median = troisieme +1550 retour \ No newline at end of file diff --git a/demo.lir b/demo.lir new file mode 100644 index 0000000..0c64a91 --- /dev/null +++ b/demo.lir @@ -0,0 +1,13 @@ +10 affiche "Entre ton nom : " +20 entre $nom +30 affiche "Bienvenue "+$nom +35 affiche +40 var an=2021 +50 affiche "Quelle est ton année de naissance ? " +60 entre naissance +65 si naissance > an vaen 50 +70 affiche "Tu as autour de " +80 affiche an-naissance +90 affiche "ans " +100 affiche +200 stop \ No newline at end of file diff --git a/etatCivil.lir b/etatCivil.lir new file mode 100644 index 0000000..363473d --- /dev/null +++ b/etatCivil.lir @@ -0,0 +1,28 @@ +10 affiche "Bienvenue dans le programme" +20 affiche +30 var instant = 2021 +40 procedure 500 +50 var $message = "Vous êtes " + $prenom +60 var $message = $message + " " +65 var $message = $message + $nom +70 affiche $message +80 affiche +90 affiche "age : " +100 affiche age +110 affiche " ans" +120 vaen 150 +124 affiche +125 affiche "erreur vaen si affiché" +150 affiche +200 affiche "Merci d'avoir utilisé ce programme !" +400 stop +500 affiche "Saisissez votre nom : " +510 entre $nom +520 affiche "Saisissez votre prénom : " +530 entre $prenom +540 affiche "Saisissez votre année de naissance (entier) : " +550 entre naissance +560 procedure 1000 +570 retour +1000 var age = instant - naissance +1010 retour diff --git a/factorielle.lir b/factorielle.lir new file mode 100644 index 0000000..07f530f --- /dev/null +++ b/factorielle.lir @@ -0,0 +1,35 @@ +10 affiche "Bienvenue dans le programme factorielle.lir !" +20 affiche +30 affiche "Entrez un entier : " +40 entre entier +45 procedure 500 +50 procedure 1000 +60 affiche entier +70 affiche "! = " +80 affiche factorielle +90 affiche +200 stop + +500 si entier >= 0 vaen 600 +510 affiche "n! est définie sur l'ensemble des entiers naturels" +520 stop +600 retour + +1000 var factorielle = 1 +1010 var entierCourant = 2 +1011 var ancienFactorielle = factorielle +1012 var test = factorielle +1015 si entierCourant > entier vaen 1100 +1016 si ancienFactorielle <> test vaen 1060 +1017 var ancienFactorielle = factorielle +1020 var factorielle = factorielle * entierCourant +1025 var test = factorielle / entierCourant +1030 var entierCourant = entierCourant + 1 +1040 vaen 1015 +1050 vaen 1100 +1060 affiche "dépassement de la capacité des entiers pour " +1070 affiche entier +1080 affiche "!" +1090 affiche +1095 stop +1100 retour \ No newline at end of file diff --git a/prototype/interpreteurLIR.jar b/prototype/interpreteurLIR.jar new file mode 100644 index 0000000..8f3cede Binary files /dev/null and b/prototype/interpreteurLIR.jar differ diff --git a/prototype/lanceInterpreteurLIR.bat b/prototype/lanceInterpreteurLIR.bat new file mode 100644 index 0000000..46d9782 --- /dev/null +++ b/prototype/lanceInterpreteurLIR.bat @@ -0,0 +1,2 @@ +java -jar interpreteurLIR.jar +cmd /k java -jar interpreteurLIR.jar \ No newline at end of file diff --git a/src/interpreteurlir/Analyseur.java b/src/interpreteurlir/Analyseur.java index fb2c05b..6b7921b 100644 --- a/src/interpreteurlir/Analyseur.java +++ b/src/interpreteurlir/Analyseur.java @@ -1,5 +1,5 @@ /** - * Analyseur.java 9 mai 2021 + * Analyseur.java 9 mai 2021 * IUT Rodez info1 2020-2021, pas de copyright, aucun droit */ package interpreteurlir; @@ -143,6 +143,10 @@ public class Analyseur { .getConstructor(classeArg, classeContexte) .newInstance(arguments, contexteGlobal); feedback(cmd.executer()); + if (motCle.equals("lance") + || (motCle.equals("affiche") && !arguments.isBlank())) { + System.out.println(); + } } catch ( InvocationTargetException | IllegalAccessException | InstantiationException | NoSuchMethodException | InterpreteurException | ExecutionException lancee) { @@ -213,14 +217,14 @@ public class Analyseur { * Recherche l'instruction correspondant au mot clé. *
+ * Syntaxe d'une expression logique : opérande1 oprel opérande2 + *
+ * Les expressions logiques concerneront donc toujours deux opérandes + * séparés par un opérateur relationnel (notation infixe). Un opérande + * est soit une constante, soit un identificateur. + *
+ * L'’opérateur relationnel oprel est un symbole parmi : {@code = <> < <= > >=}
+ *
+ * @author Nicolas Caminade
+ * @author Sylvan Courtiol
+ * @author Pierre Debas
+ * @author Heïa Dexter
+ * @author Lucas Vabre
+ */
+public class ExpressionBooleenne extends Expression {
+
+ /** Liste des opérateurs relationnels utilisés */
+ private static char[] OPERATEURS = { '<', '>', '=' };
+
+ private static final String ERREUR_ARGUMENT = "une expression ne peut être "
+ + "vide";
+ private static final String ERREUR_SYNTAXE =
+ "usage
- *
*/
public Programme() {
super();
+
lignesCode = new TreeMap
+ * @throws InterpreteurException Si la ligne ne contient pas les 2 éléments:
+ *
+ */
+ private static String[] splitter(String ligneLue) {
+ /* Sépare l'étiquette, la commande et l'argument */
+ String[] ligne = ligneLue.split(" ", 3);
+
+ if (ligne.length < 2) {
+ programmeGlobal.raz();
+ throw new InterpreteurException(ligneLue + " n'est pas "
+ + "une ligne valide");
+ }
+
+ String[] decoupage = new String[3];
+
+ /* Ajouter la ligne dans le contexte */
+ decoupage[0] = ligne[0];
+ decoupage[1] = ligne[1];
+ decoupage[2] = ligne.length >= 3 ? ligne[2] : "";
+
+ return decoupage;
+ }
+}
\ No newline at end of file
diff --git a/src/interpreteurlir/motscles/CommandeDebut.java b/src/interpreteurlir/motscles/CommandeDebut.java
index 90fa70c..657e854 100644
--- a/src/interpreteurlir/motscles/CommandeDebut.java
+++ b/src/interpreteurlir/motscles/CommandeDebut.java
@@ -39,7 +39,6 @@ public class CommandeDebut extends Commande {
}
}
-
/**
* Commande d'exécution de la commande.
* Efface le contexte.
@@ -52,4 +51,4 @@ public class CommandeDebut extends Commande {
return false;
}
-}
+}
\ No newline at end of file
diff --git a/src/interpreteurlir/motscles/CommandeEfface.java b/src/interpreteurlir/motscles/CommandeEfface.java
index 4c8274e..78f5802 100644
--- a/src/interpreteurlir/motscles/CommandeEfface.java
+++ b/src/interpreteurlir/motscles/CommandeEfface.java
@@ -21,7 +21,7 @@ public class CommandeEfface extends Commande {
/** Erreur nombre incorrect d'arguments */
private static final String ERREUR_NB_ARGS =
- "nombre d'arguments incorrect. Syntaxe attendue ==>