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(
|
||||||
[import](
|
[import](
|
||||||
:static,
|
:static,
|
||||||
|
@ -67,8 +9,7 @@ import(
|
||||||
normal:[!;]* -> concat(import)
|
normal:[!;]* -> concat(import)
|
||||||
[;]=;
|
[;]=;
|
||||||
|
|
||||||
import,
|
import
|
||||||
class
|
|
||||||
)
|
)
|
||||||
|
|
||||||
package(
|
package(
|
||||||
|
@ -76,8 +17,7 @@ package(
|
||||||
[!;]* -> concat(package)
|
[!;]* -> concat(package)
|
||||||
[;]=;
|
[;]=;
|
||||||
|
|
||||||
import,
|
import
|
||||||
class
|
|
||||||
)
|
)
|
||||||
|
|
||||||
main(
|
main(
|
||||||
|
|
|
@ -26,9 +26,9 @@ public class StateTree<E>{
|
||||||
while(validator.hasNext()) {
|
while(validator.hasNext()) {
|
||||||
System.out.println("seed");
|
System.out.println("seed");
|
||||||
E build = internalSeed(validator, container);
|
E build = internalSeed(validator, container);
|
||||||
|
System.out.println("Validate "+validator.MAX_VALIDATE+"/"+tokenizer.getTokens().size()+" tokens !");
|
||||||
if(build == null) break;
|
if(build == null) break;
|
||||||
}
|
}
|
||||||
System.out.println("Validate "+validator.MAX_VALIDATE+"/"+tokenizer.getTokens().size()+" tokens !");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<B> B internalSeed(TokenValidator validator, E element){
|
<B> B internalSeed(TokenValidator validator, E element){
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package be.jeffcheasey88.peeratcode.parser.state.generator;
|
package be.jeffcheasey88.peeratcode.parser.state.generator;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||||
import be.jeffcheasey88.peeratcode.parser.Parser;
|
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.Tokenizer;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree;
|
import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.StateTree;
|
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.SynthaxeComposant.Composant;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant;
|
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.ComposantCall;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.ComposantCall;
|
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.LinkedComposant;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.LinkedComposant;
|
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.MultipleWayComposant;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.MultipleWayComposant;
|
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.NamedElement;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.NamedElement;
|
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.Redirection;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.Redirection;
|
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.SynthaxeComposant.Composant.Validator;
|
||||||
import be.jeffcheasey88.peeratcode.parser.state.generator.ParserComposantGenerator.Element.SynthaxeComposant.Composant.Validator;
|
|
||||||
|
|
||||||
public class ParserComposantGenerator {
|
public class ParserComposantGenerator {
|
||||||
|
|
||||||
|
@ -43,6 +42,10 @@ public class ParserComposantGenerator {
|
||||||
|
|
||||||
public void generate() throws Exception{
|
public void generate() throws Exception{
|
||||||
SynthaxeComposant synthax = load();
|
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{
|
private SynthaxeComposant load() throws Exception{
|
||||||
|
@ -351,20 +354,16 @@ public class ParserComposantGenerator {
|
||||||
};
|
};
|
||||||
|
|
||||||
parser.parse(reader, composant);
|
parser.parse(reader, composant);
|
||||||
|
// parser.build(new BufferedWriter(new FileWriter(new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-parseur\\java.out"))));
|
||||||
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;
|
return composant;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Element{
|
public static class Element{
|
||||||
|
|
||||||
public Element(){
|
public Element(){}
|
||||||
|
|
||||||
|
void dependency(Set<String> dependency) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class SynthaxeComposant extends Element{
|
public static class SynthaxeComposant extends Element{
|
||||||
|
@ -379,6 +378,14 @@ public class ParserComposantGenerator {
|
||||||
this.composants.put(name, composant);
|
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
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
String elements = "";
|
String elements = "";
|
||||||
|
@ -413,8 +420,15 @@ public class ParserComposantGenerator {
|
||||||
this.title = bag.<Token>get().getValue();
|
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(){
|
public void include(){
|
||||||
System.out.println("include "+title+" -> "+current);
|
|
||||||
if(path == null){
|
if(path == null){
|
||||||
path = current;
|
path = current;
|
||||||
current = new MultipleWayComposant();
|
current = new MultipleWayComposant();
|
||||||
|
@ -441,6 +455,12 @@ public class ParserComposantGenerator {
|
||||||
this.elements = new ArrayList<>();
|
this.elements = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dependency(Set<String> dependency){
|
||||||
|
for(Element element : elements) element.dependency(dependency);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return "["+Arrays.toString(elements.toArray())+"]";
|
return "["+Arrays.toString(elements.toArray())+"]";
|
||||||
|
@ -455,6 +475,11 @@ public class ParserComposantGenerator {
|
||||||
this.elements = new ArrayList<>();
|
this.elements = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dependency(Set<String> dependency){
|
||||||
|
for(Element element : elements) element.dependency(dependency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return "<"+Arrays.toString(elements.toArray())+">";
|
return "<"+Arrays.toString(elements.toArray())+">";
|
||||||
|
@ -479,7 +504,11 @@ public class ParserComposantGenerator {
|
||||||
}
|
}
|
||||||
this.end = (bag.get("end") != null);
|
this.end = (bag.get("end") != null);
|
||||||
this.loop = (bag.get("loop") != 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
|
@Override
|
||||||
|
@ -505,6 +534,11 @@ public class ParserComposantGenerator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dependency(Set<String> dependency){
|
||||||
|
child.dependency(dependency);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return child+" -> "+((logic == null) ? name : logic+"("+name+")");
|
return child+" -> "+((logic == null) ? name : logic+"("+name+")");
|
||||||
|
@ -520,7 +554,12 @@ public class ParserComposantGenerator {
|
||||||
|
|
||||||
public Redirection(Bag bag){
|
public Redirection(Bag bag){
|
||||||
this.target = bag.<Token>get().getValue();
|
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
|
@Override
|
||||||
|
@ -537,7 +576,11 @@ public class ParserComposantGenerator {
|
||||||
|
|
||||||
public ComposantCall(Bag bag){
|
public ComposantCall(Bag bag){
|
||||||
this.name = bag.<Token>get().getValue();
|
this.name = bag.<Token>get().getValue();
|
||||||
System.out.println(this);
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dependency(Set<String> dependency){
|
||||||
|
if(composant != null) composant.dependency(dependency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -545,8 +588,6 @@ public class ParserComposantGenerator {
|
||||||
return ":"+name+((composant == null || composant.path == null) ? "":"("+composant+")");
|
return ":"+name+((composant == null || composant.path == null) ? "":"("+composant+")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue