commit 040b45501a514d297d66cf186c868211a72c103f Author: Mysaa Date: Mon May 24 18:39:20 2021 +0200 Premier commit - inclusion dans le système git diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e108870 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.classpath +.project +.settings +bin/ diff --git a/LeBernard.uml b/LeBernard.uml new file mode 100644 index 0000000..a34d1c7 --- /dev/null +++ b/LeBernard.uml @@ -0,0 +1,265 @@ + + + + + umbrello uml modeller http://umbrello.kde.org + 1.6.10 + UnicodeUTF8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bernard1.bernard b/bernard1.bernard new file mode 100644 index 0000000..571ce21 --- /dev/null +++ b/bernard1.bernard @@ -0,0 +1,9 @@ +difficulté = demander('quelle difficulté ?') +àDeviner = random(entier,[0;difficulté]) +jusqu'à (réponse = àDeviner){ + réponse = demander("Votre proposition ?") + Si réponse < àDeviner, dire("C'est plus") + Sinon, dire ("C'est moins") +} +dire("Félicitation! Tu as perdu $System.execTime secondes de ta vie (mais avec succès)") +# Ceci est la fin du programme diff --git a/class diagram.png b/class diagram.png new file mode 100644 index 0000000..6f42660 Binary files /dev/null and b/class diagram.png differ diff --git a/src/com/bernard/lebernard/MainDeDieu.java b/src/com/bernard/lebernard/MainDeDieu.java new file mode 100644 index 0000000..5a83832 --- /dev/null +++ b/src/com/bernard/lebernard/MainDeDieu.java @@ -0,0 +1,28 @@ +package com.bernard.lebernard; + +import com.bernard.lebernard.carte.Boiboite; +import com.bernard.lebernard.carte.FonctionHard; +import com.bernard.lebernard.runtime.Arguments; +import com.bernard.lebernard.runtime.Referencateur; + +public class MainDeDieu { + + public static Boiboite chaineDeCaracteres = new Boiboite(); + + public static void main(String[] args) { + Referencateur.self = new Referencateur(); + } + + + public static class FonctionAfficher implements FonctionHard{ + + @Override + public String execute(Arguments args) { + byte[] data = args.getRealParameterTruc(1).getData(); + System.out.println(new String(data)); + return null; + } + + } + +} diff --git a/src/com/bernard/lebernard/carte/Boiboite.java b/src/com/bernard/lebernard/carte/Boiboite.java new file mode 100644 index 0000000..a321831 --- /dev/null +++ b/src/com/bernard/lebernard/carte/Boiboite.java @@ -0,0 +1,5 @@ +package com.bernard.lebernard.carte; + +public class Boiboite { + +} diff --git a/src/com/bernard/lebernard/carte/Fonction.java b/src/com/bernard/lebernard/carte/Fonction.java new file mode 100644 index 0000000..322ec27 --- /dev/null +++ b/src/com/bernard/lebernard/carte/Fonction.java @@ -0,0 +1,7 @@ +package com.bernard.lebernard.carte; + +import com.bernard.lebernard.runtime.Arguments; + +public interface Fonction { + public String execute(Arguments args); +} diff --git a/src/com/bernard/lebernard/carte/FonctionComplexe.java b/src/com/bernard/lebernard/carte/FonctionComplexe.java new file mode 100644 index 0000000..abf7b89 --- /dev/null +++ b/src/com/bernard/lebernard/carte/FonctionComplexe.java @@ -0,0 +1,73 @@ +package com.bernard.lebernard.carte; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import com.bernard.lebernard.runtime.Arguments; +import com.bernard.lebernard.runtime.Referencateur; + +public class FonctionComplexe implements Fonction { + + List executionList; + Set liants; + List> parameters; //Pour chaque paramètre existant, la liste des liens aux autres fonctions (InIndex nul) + int returnIndex; + + @Override + public String execute(Arguments args) { + + List argRefs = args.getRealParametersRefs(); + String fonctionRefUUID = UUID.randomUUID().toString(); + + Map[] arguments = new HashMap[executionList.size()]; + for (int i = 0; i < arguments.length; i++) arguments[i] = new HashMap(); + + for(Liant l : liants) arguments[l.outIndex].put(l.paramIndex, fonctionRefUUID+"#"+l.inIndex); + + for (int i = 0; i < arguments.length; i++) + for(Liant l : parameters.get(i)) + arguments[l.outIndex].put(l.paramIndex, argRefs.get(i)); + + for (int i = 0; i < executionList.size(); i++) { + String ref = executionList.get(i).execute(new Arguments(IntStream.range(0, arguments[i].size()).mapToObj(arguments[i]::get).collect(Collectors.toList()))); + Referencateur.self.link(ref,fonctionRefUUID+"#"+i); + } + + return fonctionRefUUID+"#"+returnIndex; + } + + + + + + public static class Liant{ + int inIndex,outIndex,paramIndex; + + public int getInIndex() { + return inIndex; + } + + public int getOutIndex() { + return outIndex; + } + + public int getParamIndex() { + return paramIndex; + } + + public Liant(int inIndex, int outIndex, int paramIndex) { + this.inIndex = inIndex; + this.outIndex = outIndex; + this.paramIndex = paramIndex; + } + + } + + + +} diff --git a/src/com/bernard/lebernard/carte/FonctionHard.java b/src/com/bernard/lebernard/carte/FonctionHard.java new file mode 100644 index 0000000..7e347d5 --- /dev/null +++ b/src/com/bernard/lebernard/carte/FonctionHard.java @@ -0,0 +1,5 @@ +package com.bernard.lebernard.carte; + +public interface FonctionHard extends Fonction { + +} diff --git a/src/com/bernard/lebernard/lecteur/Lecteur.java b/src/com/bernard/lebernard/lecteur/Lecteur.java new file mode 100644 index 0000000..b579f3e --- /dev/null +++ b/src/com/bernard/lebernard/lecteur/Lecteur.java @@ -0,0 +1,13 @@ +package com.bernard.lebernard.lecteur; + +import java.io.File; + +import com.bernard.lebernard.carte.Fonction; + +public class Lecteur { + + public static Fonction lireFichier(File f) { + //TODO + } + +} diff --git a/src/com/bernard/lebernard/runtime/Arguments.java b/src/com/bernard/lebernard/runtime/Arguments.java new file mode 100644 index 0000000..b9a373f --- /dev/null +++ b/src/com/bernard/lebernard/runtime/Arguments.java @@ -0,0 +1,26 @@ +package com.bernard.lebernard.runtime; + +import java.util.List; + +public class Arguments { + + public Arguments(List realArgsReferences) { + this.realArgsReferences = realArgsReferences; + } + + List realArgsReferences; + + public Truc getRealParameterTruc(int i) { + return Referencateur.self.getTruc(realArgsReferences.get(0)); + } + + public String getRealParameterRef(int i) { + return realArgsReferences.get(0); + } + + public List getRealParametersRefs() { + return realArgsReferences; + } + + +} diff --git a/src/com/bernard/lebernard/runtime/Referencateur.java b/src/com/bernard/lebernard/runtime/Referencateur.java new file mode 100644 index 0000000..6dd91b7 --- /dev/null +++ b/src/com/bernard/lebernard/runtime/Referencateur.java @@ -0,0 +1,25 @@ +package com.bernard.lebernard.runtime; + +import java.util.HashMap; +import java.util.Map; + +public class Referencateur { + + public static Referencateur self; + + public Map stockage = new HashMap(); + public Map liens = new HashMap(); + + public Truc getTruc(String reference) { + return stockage.get(stockage.containsKey(reference)?reference:liens.get(reference)); + } + + public void registerTruc(String ref,Truc t) { + stockage.put(ref, t); + } + + public void link(String linkName,String reference) { + liens.put(linkName, stockage.containsKey(reference)?reference:liens.get(reference)); + } + +} diff --git a/src/com/bernard/lebernard/runtime/Truc.java b/src/com/bernard/lebernard/runtime/Truc.java new file mode 100644 index 0000000..7e3c5bb --- /dev/null +++ b/src/com/bernard/lebernard/runtime/Truc.java @@ -0,0 +1,27 @@ +package com.bernard.lebernard.runtime; + +import com.bernard.lebernard.carte.Boiboite; + +public class Truc { + + Boiboite type; + + byte[] data; + + public Truc(Boiboite type, byte[] data) { + super(); + this.type = type; + this.data = data; + } + + public Boiboite getType() { + return type; + } + + public byte[] getData() { + return data; + } + + + +} diff --git a/src/module-info.java b/src/module-info.java new file mode 100644 index 0000000..9698be8 --- /dev/null +++ b/src/module-info.java @@ -0,0 +1,9 @@ +/** + * + */ +/** + * @author mysaa + * + */ +module LeBernard { +} \ No newline at end of file