예제 #1
0
        public string convNToTableName(string N, List <FirstKEl> L)
        {
            var t  = new LLkT(0, N, L);
            var tf = t.toFlat();
            var i  = Helpers.indexOf(tf, this.LLksf);
            var lt = this.LLks[i];

            return(lt.name);
        }
예제 #2
0
        public void constructLLkTs()
        {
            //(1)
            var l = new List <FirstKEl>();

            l.Add(new FirstKEl(this.k));
            var t0 = this.constructLLkT(this.cfg.StartSymbol, l);

            this.LLks.Add(t0);

            //(2)
            var J = this.LLksf;

            J.Add(t0.toFlat());

            //(3)(4)
            LLkT     tabi;
            LLkTRow  rowj;
            FollowEl folk;
            LLkT     newt;
            string   newtf;

            for (var i = 0; i < this.LLks.Count; i++)
            {
                tabi = this.LLks[i];
                for (var j = 0; j < tabi.rows.Count; j++)
                {
                    rowj = tabi.rows[j];
                    for (var k = 0; k < rowj.follow.Count; k++)
                    {
                        folk = rowj.follow[k];

                        newt  = new LLkT(0, folk.N, folk.sets);
                        newtf = newt.toFlat();
                        if (!J.Contains(newtf))
                        {
                            newt = this.constructLLkT(folk.N, folk.sets);
                            this.LLks.Add(newt);
                            J.Add(newtf);
                        }
                    }
                }
            }
        }