Skip to content
Snippets Groups Projects
Main.java 2.67 KiB
Newer Older
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 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);