Пример #1
0
        // МП для КС-грамматик
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 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));
 }
Пример #4
0
 public virtual void addDeltaRule(string LeftQ, string LeftT, string LeftZ, ArrayList RightQ, ArrayList RightZ)
 {
     DeltaList.Add(new DeltaQSigmaGamma(LeftQ, LeftT, LeftZ, RightQ, RightZ));
 }