Get Composant's dependencies
This commit is contained in:
parent
afbb114086
commit
8f2e7cffe9
3 changed files with 68 additions and 87 deletions
64
java.pc
64
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(
|
||||
|
|
|
@ -26,9 +26,9 @@ public class StateTree<E>{
|
|||
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> B internalSeed(TokenValidator validator, E element){
|
||||
|
|
|
@ -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<String, Set<String>> dependency = synthax.dependency();
|
||||
for(Entry<String, Set<String>> 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<String> dependency) {}
|
||||
}
|
||||
|
||||
public static class SynthaxeComposant extends Element{
|
||||
|
@ -379,6 +378,14 @@ public class ParserComposantGenerator {
|
|||
this.composants.put(name, composant);
|
||||
}
|
||||
|
||||
private Map<String, Set<String>> dependency(){
|
||||
Map<String, Set<String>> map = new HashMap<>();
|
||||
|
||||
for(Entry<String, Composant> 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.<Token>get().getValue();
|
||||
}
|
||||
|
||||
public Set<String> dependency(){
|
||||
Set<String> 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<String> 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<String> 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<String> dependency){
|
||||
if(composant != null) composant.dependency(dependency);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -505,6 +534,11 @@ public class ParserComposantGenerator {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dependency(Set<String> 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.<Token>get().getValue();
|
||||
System.out.println(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dependency(Set<String> 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.<Token>get().getValue();
|
||||
System.out.println(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dependency(Set<String> dependency){
|
||||
if(composant != null) composant.dependency(dependency);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -545,8 +588,6 @@ public class ParserComposantGenerator {
|
|||
return ":"+name+((composant == null || composant.path == null) ? "":"("+composant+")");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue