From 958ab495521acc3e93426988bbe91f298cb3bb4c Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Fri, 14 Jul 2023 20:30:29 +0200 Subject: [PATCH] Group all in the base composant --- .../generator/ParserComposantGenerator.java | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java b/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java index 55559ff..8e573e4 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java +++ b/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java @@ -10,6 +10,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import be.jeffcheasey88.peeratcode.parser.Bag; import be.jeffcheasey88.peeratcode.parser.Parser; @@ -117,7 +118,8 @@ public class ParserComposantGenerator { comp.title = parent.title+"_"+bag.get().getValue(); parent.declare(bag.get().getValue(), comp.current); - System.out.println("go on "+comp); + System.out.println("+\t"+composant); + return comp; }); @@ -261,7 +263,16 @@ public class ParserComposantGenerator { (bag, token) -> bag.set(token) )); composant.end((element, bag) -> { - return new Composant(bag); + Composant child = new Composant(bag); + SynthaxeComposant base; + if(element instanceof SynthaxeComposant){ + base = (SynthaxeComposant)element; + }else{ + base = ((Composant)element).parent; + } + child.parent = base; + base.register(child.title, child); + return child; }).then(new RedirectStateTree<>(op_childs, (bag) -> "content")) .then(composant); @@ -272,6 +283,11 @@ public class ParserComposantGenerator { }; parser.parse(reader, composant); + + System.out.println(); + System.out.println(composant); + System.out.println(); + parser.build(new BufferedWriter(new FileWriter(new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-parseur\\java.out")))); return composant; @@ -297,22 +313,28 @@ public class ParserComposantGenerator { @Override public String toString(){ - return "SynthaxeComposant"; + String elements = ""; + for(Entry entry : composants.entrySet()){ + elements+=",\n"+entry.getKey()+":"+entry.getValue(); + } + if(elements.length() > 1) elements = elements.substring(2); + return "SynthaxeComposant(\n"+elements+"\n)"; } public static class Composant extends Element{ + private SynthaxeComposant parent; + private String title; private MultipleWayComposant path; private Map declared; - private List next; + private MultipleWayComposant next; private MultipleWayComposant current; public Composant(){ this.declared = new HashMap<>(); - this.next = new ArrayList<>(); current = new MultipleWayComposant(); } @@ -326,6 +348,9 @@ public class ParserComposantGenerator { if(path == null){ path = current; current = new MultipleWayComposant(); + }else{ + next = current; + current = new MultipleWayComposant(); } } @@ -335,7 +360,7 @@ public class ParserComposantGenerator { @Override public String toString(){ - return title+"("+path; + return title+"("+path+", "+declared+", "+next+")"; } public static class LinkedComposant extends Element{ @@ -372,6 +397,8 @@ public class ParserComposantGenerator { private boolean end; private boolean loop; + private Composant composant; + public Validator(Bag bag){ String type = bag.get("type"); action = bag.get().getValue(); @@ -419,6 +446,8 @@ public class ParserComposantGenerator { private String target; + private Composant composant; + public Redirection(Bag bag){ this.target = bag.get().getValue(); System.out.println(this); @@ -434,6 +463,8 @@ public class ParserComposantGenerator { private String name; + private Composant composant; + public ComposantCall(Bag bag){ this.name = bag.get().getValue(); System.out.println(this);