package interpretacja.gramatyka; import interpretacja.Fragment; import interpretacja.GrafAdv; import interpretacja.Produkt; import java.util.ArrayList; import java.util.List; public class DiagramBlokowy implements GSymbol { private Prostokat2 prostokat = new Prostokat2(); private ZamknietaKrzywa krzywa = new ZamknietaKrzywa(); private Rownoleglobok rownoleglobok = new Rownoleglobok(); private Linia linia = new Linia(6); private LacznikL lacznikL = new LacznikL(); private LacznikS lacznikS = new LacznikS(); @Override public List akceptuj(Produkt h, GrafAdv g) { List ps = new ArrayList(); { List ks = new ArrayList(); ks.addAll(this.krzywa.akceptuj(h, g)); ks.addAll(this.prostokat.akceptuj(h, g)); ks.addAll(this.rownoleglobok.akceptuj(h, g)); for (Produkt k : ks) { List nNs = k.nodes(h); for (Integer nN : nNs) { if (g.E(nN).size() < 3) { continue; } Produkt np = new Produkt(nN, k); List ls = this.linia.akceptuj(np, g); ls.addAll(this.lacznikL.akceptuj(np, g)); //ls.addAll(this.lacznikS.akceptuj(np, g)); for (Produkt l : ls) { Produkt np2 = new Produkt(l.n(), l); List subD = this.akceptuj(np2, g); ps.addAll(subD); } } } if (h.depth() > 1) { ps.addAll(ks); } } /*{ List ks = new ArrayList(); ks.addAll(this.rownoleglobok.akceptuj(h, g)); for (Produkt k : ks) { List nNs = k.nodes(h); for (Integer nN : nNs) { if (g.E(nN).size() < 3) { continue; } Produkt np = new Produkt(nN, k); List ls = this.linia.akceptuj(np, g); ls.addAll(this.lacznikL.akceptuj(np, g)); for (Produkt l : ls) { Produkt np2 = new Produkt(l.n(), l); List subD = this.akceptuj(np2, g); ps.addAll(subD); } } } }*/ return ps; } @Override public Fragment ocr(Produkt p, GrafAdv g) { return null; } }