package main; import java.util.List; import java.util.Map; import grammar.Grammar; import grammar.Type2Grammar; import type2.Type2Parser; public class Main { // ε public static void main(String[] args) { // Writer w = new Writer(); String[] vars = { "S'", "S", "A", "B", "C", "D" }; int alphaSize = 3; // int maxConclusios = 3; // int maxConclusioSize = 4; // String start = "S"; // int mode = 3; // w.runType2Grammar(vars, alphaSize, maxConclusios, maxConclusioSize, start, mode, 3); Grammar g = Grammar.toGrammar( "G = (V, T, R, S)\nV = {S, A, B, C, D}\nT = {a, b, c}\nR = {S -> S | AC | CASD,\n A -> cD | c | DDCa,\n B -> abB | Sbc | a,\n C -> Ba,\n D -> bAbc | Saca | Ac}"); Type2Parser t2p = new Type2Parser(); Map<String, List<List<String>>> gNormal = t2p.createCNF(g.getRules(), g.getStart(), 3); boolean b = t2p.isPartOfLanguage(gNormal, "cbcbcaa"); System.out.println(b); System.out.println(gNormal); Type2Grammar g0 = new Type2Grammar(vars, alphaSize, "S'", gNormal); System.out.println(g0); // Map<String, List<List<String>>> rules = new LinkedHashMap<>(); // List<List<String>> s = new LinkedList<>(); // List<String> s0 = new LinkedList<>(); // s0.add("A"); // s0.add("B"); // List<String> s1 = new LinkedList<>(); // s1.add("C"); // s1.add("D"); // List<String> s2 = new LinkedList<>(); // s2.add("E"); // s2.add("D"); // s.add(s0); // s.add(s1); // s.add(s2); // rules.put("S", s); // List<List<String>> a = new LinkedList<>(); // List<String> a0 = new LinkedList<>(); // a0.add("b"); // a.add(a0); // rules.put("A", a); // List<List<String>> b = new LinkedList<>(); // List<String> b0 = new LinkedList<>(); // b0.add("C"); // b0.add("S"); // List<String> b1 = new LinkedList<>(); // b1.add("A"); // b1.add("E"); // List<String> b2 = new LinkedList<>(); // b2.add("a"); // b.add(b0); // b.add(b1); // b.add(b2); // rules.put("B", b); // List<List<String>> c = new LinkedList<>(); // List<String> c0 = new LinkedList<>(); // c0.add("a"); // c.add(c0); // rules.put("C", c); // List<List<String>> d = new LinkedList<>(); // List<String> d0 = new LinkedList<>(); // d0.add("A"); // d0.add("S"); // List<String> d1 = new LinkedList<>(); // d1.add("C"); // d1.add("F"); // List<String> d2 = new LinkedList<>(); // d2.add("b"); // d.add(d0); // d.add(d1); // d.add(d2); // rules.put("D", d); // List<List<String>> e = new LinkedList<>(); // List<String> e0 = new LinkedList<>(); // e0.add("B"); // e0.add("B"); // e.add(e0); // rules.put("E", e); // List<List<String>> f = new LinkedList<>(); // List<String> f0 = new LinkedList<>(); // f0.add("D"); // f0.add("D"); // f.add(f0); // rules.put("F", f); } }