From 8f2e7cffe9bb21867d915a2b98c8df78d48f7bd7 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Sat, 15 Jul 2023 15:37:13 +0200 Subject: [PATCH] Get Composant's dependencies --- java.pc | 64 +------------ .../peeratcode/parser/state/StateTree.java | 2 +- .../generator/ParserComposantGenerator.java | 89 ++++++++++++++----- 3 files changed, 68 insertions(+), 87 deletions(-) diff --git a/java.pc b/java.pc index 9498e70..2629df1 100644 --- a/java.pc +++ b/java.pc @@ -1,61 +1,3 @@ -annotation( - [@] - {name}= -> name - [(]( - :end, - value -> val - [)]=, - :content - ); - - content: - :value -> values - [)]=; - value: - {name} - [=] - value -> add(value)( - :end, - [,] - :value - ); - - end:[)]= -) - -modifier({modifier}*= -> concat(mod)) - -class( - annotation( - :mod, - :class - ), - mod:modifier( - :class - ), - class:[class] - type -> name( - :end, - :implements, - :extends - ); - implements:[implements]( - imp:type -> add(implement)( - [,] - :imp, - :end - ) - ); - extends:[extends]( - type -> extend( - :end, - :implements - ) - ); - - end:[{]= -) - import( [import]( :static, @@ -67,8 +9,7 @@ import( normal:[!;]* -> concat(import) [;]=; - import, - class + import ) package( @@ -76,8 +17,7 @@ package( [!;]* -> concat(package) [;]=; - import, - class + import ) main( diff --git a/src/be/jeffcheasey88/peeratcode/parser/state/StateTree.java b/src/be/jeffcheasey88/peeratcode/parser/state/StateTree.java index ca5bada..2dbfc27 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/state/StateTree.java +++ b/src/be/jeffcheasey88/peeratcode/parser/state/StateTree.java @@ -26,9 +26,9 @@ public class StateTree{ while(validator.hasNext()) { System.out.println("seed"); E build = internalSeed(validator, container); + System.out.println("Validate "+validator.MAX_VALIDATE+"/"+tokenizer.getTokens().size()+" tokens !"); if(build == null) break; } - System.out.println("Validate "+validator.MAX_VALIDATE+"/"+tokenizer.getTokens().size()+" tokens !"); } B internalSeed(TokenValidator validator, E element){ diff --git a/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java b/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java index 6241a17..4915777 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java +++ b/src/be/jeffcheasey88/peeratcode/parser/state/generator/ParserComposantGenerator.java @@ -1,16 +1,16 @@ package be.jeffcheasey88.peeratcode.parser.state.generator; import java.io.BufferedReader; -import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; -import java.io.FileWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import be.jeffcheasey88.peeratcode.parser.Bag; import be.jeffcheasey88.peeratcode.parser.Parser; @@ -19,14 +19,13 @@ import be.jeffcheasey88.peeratcode.parser.TokenType; import be.jeffcheasey88.peeratcode.parser.Tokenizer; import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree; import be.jeffcheasey88.peeratcode.parser.state.StateTree; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.ComposantCall; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.LinkedComposant; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.MultipleWayComposant; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.NamedElement; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.Redirection; -import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.Validator; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.ComposantCall; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.LinkedComposant; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.MultipleWayComposant; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.NamedElement; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.Redirection; +import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.Validator; public class ParserComposantGenerator { @@ -43,6 +42,10 @@ public class ParserComposantGenerator { public void generate() throws Exception{ SynthaxeComposant synthax = load(); + Map> dependency = synthax.dependency(); + for(Entry> entry : dependency.entrySet()){ + System.out.println(entry.getKey()+" - "+entry.getValue()); + } } private SynthaxeComposant load() throws Exception{ @@ -351,20 +354,16 @@ 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")))); +// parser.build(new BufferedWriter(new FileWriter(new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-parseur\\java.out")))); return composant; } public static class Element{ - public Element(){ - + public Element(){} + + void dependency(Set dependency) {} } public static class SynthaxeComposant extends Element{ @@ -379,6 +378,14 @@ public class ParserComposantGenerator { this.composants.put(name, composant); } + private Map> dependency(){ + Map> map = new HashMap<>(); + + for(Entry entry : this.composants.entrySet()) map.put(entry.getKey(), entry.getValue().dependency()); + + return map; + } + @Override public String toString(){ String elements = ""; @@ -413,8 +420,15 @@ public class ParserComposantGenerator { this.title = bag.get().getValue(); } + public Set dependency(){ + Set result = new HashSet<>(); + if(path != null) path.dependency(result); + for(MultipleWayComposant way : declared.values()) way.dependency(result); + if(next != null) next.dependency(result); + return result; + } + public void include(){ - System.out.println("include "+title+" -> "+current); if(path == null){ path = current; current = new MultipleWayComposant(); @@ -441,6 +455,12 @@ public class ParserComposantGenerator { this.elements = new ArrayList<>(); } + @Override + public void dependency(Set dependency){ + for(Element element : elements) element.dependency(dependency); + } + + @Override public String toString(){ return "["+Arrays.toString(elements.toArray())+"]"; @@ -455,6 +475,11 @@ public class ParserComposantGenerator { this.elements = new ArrayList<>(); } + @Override + public void dependency(Set dependency){ + for(Element element : elements) element.dependency(dependency); + } + @Override public String toString(){ return "<"+Arrays.toString(elements.toArray())+">"; @@ -479,7 +504,11 @@ public class ParserComposantGenerator { } this.end = (bag.get("end") != null); this.loop = (bag.get("loop") != null); - System.out.println(this); + } + + @Override + public void dependency(Set dependency){ + if(composant != null) composant.dependency(dependency); } @Override @@ -505,6 +534,11 @@ public class ParserComposantGenerator { } } + @Override + public void dependency(Set dependency){ + child.dependency(dependency); + } + @Override public String toString(){ return child+" -> "+((logic == null) ? name : logic+"("+name+")"); @@ -520,7 +554,12 @@ public class ParserComposantGenerator { public Redirection(Bag bag){ this.target = bag.get().getValue(); - System.out.println(this); + } + + @Override + public void dependency(Set dependency){ + dependency.add(target); + if(composant != null) composant.dependency(dependency); } @Override @@ -537,7 +576,11 @@ public class ParserComposantGenerator { public ComposantCall(Bag bag){ this.name = bag.get().getValue(); - System.out.println(this); + } + + @Override + public void dependency(Set dependency){ + if(composant != null) composant.dependency(dependency); } @Override @@ -545,8 +588,6 @@ public class ParserComposantGenerator { return ":"+name+((composant == null || composant.path == null) ? "":"("+composant+")"); } } - - } } } }