// МП для КС-грамматик public myMp(myGrammar KCgrammar) : base(new ArrayList() { "q" }, KCgrammar.T, new ArrayList() { }, "q") { 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); } }
static (DeltaList <TestSyncObject>, DeltaList <TestSyncObject>) SimpleInitTest() { DeltaList <TestSyncObject> list = SyncObject.New <DeltaList <TestSyncObject> >(); list.Add(SyncObject.New <TestSyncObject>()); list[0].Value = 1923; var listGhost = ((IGhost)list); NetDataWriter wStream = null; Assert.True(listGhost.Serialize(ref wStream, true)); DeltaList <TestSyncObject> syncedList = SyncObject.New <DeltaList <TestSyncObject> >(); var syncGhost = ((IGhost)syncedList); syncGhost.Deserialize(new NetDataReader(wStream.Data)); Assert.AreEqual(list[0].Value, syncedList[0].Value); return(list, syncedList); }
public void addDeltaRule(string LeftQ, string LeftT, string LeftZ, ArrayList RightQ, ArrayList RightZ, ArrayList RightSix) { DeltaList.Add(new DeltaQSigmaGammaSix(LeftQ, LeftT, LeftZ, RightQ, RightZ, RightSix)); }
public virtual void addDeltaRule(string LeftQ, string LeftT, string LeftZ, ArrayList RightQ, ArrayList RightZ) { DeltaList.Add(new DeltaQSigmaGamma(LeftQ, LeftT, LeftZ, RightQ, RightZ)); }