Newer
Older
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;
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// 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);