public translMp(myGrammar KCgrammar) : base(KCgrammar) { this.Gamma = new ArrayList(); this.Z = new Stack(); foreach (string v1 in KCgrammar.V) // магазинные символы { Gamma.Add(v1); } foreach (string t1 in KCgrammar.T) { Gamma.Add(t1); } Q0 = Q[0].ToString(); // начальное состояние Z.Push(KCgrammar.S0); // начальный символ в магазине F = new ArrayList(); // пустое множество заключительных состояний DeltaQSigmaGamma delta = null; foreach (string v1 in KCgrammar.V) { // сопоставление правил с отображениями ArrayList q1 = new ArrayList(); ArrayList z1 = new ArrayList(); foreach (Prule rule in KCgrammar.Prules) { if (rule.leftNoTerm == v1) { Stack zb = new Stack(); ArrayList rr = new ArrayList(rule.rightChain); rr.Reverse(); foreach (string s in rr) { zb.Push(s); } z1.Add(zb); q1.Add(Q0); } } delta = new DeltaQSigmaGamma(Q0, "e", v1, q1, z1); DeltaList.Add(delta); } foreach (string t1 in KCgrammar.T) { Stack e = new Stack(); e.Push("e"); delta = new DeltaQSigmaGamma(Q0, t1, t1, new ArrayList() { Q0 }, new ArrayList() { e }); DeltaList.Add(delta); } }