diff --git a/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java b/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java index 32628ca..e03778c 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java +++ b/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java @@ -111,8 +111,14 @@ public class ParserComposantGenerator { (t) -> t.getType().equals(TokenType.NAME), (bag, t) -> bag.set(t))) .then((v) -> v.validate((t) -> t.getValue().equals(":"))) - .end((composant, bag) -> { - return composant; + .end((composant, bag) -> { + Composant parent = (Composant)composant; + Composant comp = new Composant(); + comp.title = parent.title+"_"+bag.get().getValue(); + parent.declare(bag.get().getValue(), comp.current); + + System.out.println("go on "+comp); + return comp; }); StateTree redirection = new StateTree<>(); @@ -226,7 +232,8 @@ public class ParserComposantGenerator { linked.elements.add(op.get()); } way.elements.add(linked); - System.out.println(",\t"+way); + ((Composant)composant).include(); + System.out.println(";\t"+way); return composant; }).then(suit); suit.end((composant, bag) -> { @@ -294,13 +301,16 @@ public class ParserComposantGenerator { private String title; - private List path; - private List declared; + private MultipleWayComposant path; + private Map declared; private List next; private MultipleWayComposant current; public Composant(){ + this.declared = new HashMap<>(); + this.next = new ArrayList<>(); + current = new MultipleWayComposant(); } @@ -309,6 +319,17 @@ public class ParserComposantGenerator { this.title = bag.get().getValue(); } + public void include(){ + if(path == null){ + path = current; + current = new MultipleWayComposant(); + } + } + + public void declare(String value, MultipleWayComposant composant){ + this.declared.put(value, composant); + } + @Override public String toString(){ return title+"(";