Ejemplo n.º 1
0
 public override string ToString()
 {
     return(NV.ToString()
            + NR.ToString()
            + NC.ToString()
            + NL.ToString()
            + N_BPT.ToString()
            + N_UPT.ToString()
            + NOA.ToString()
            + NT.ToString()
            + NIOA.ToString()
            + NTR.ToString());
 }
Ejemplo n.º 2
0
        // Gera um autômato a partir dessa Gramática
        public Automato GetAutomato()
        {
            Automato ret  = new Automato();
            Random   rand = new Random();

            string novo = rand.Next(100).ToString();

            foreach (char NT in SimbolosNaoTerminais)
            {
                ret.addEstado(NT.ToString());
            }
            ret.addEstado(novo);

            ret.estadoInicial = Inicial.ToString();

            foreach (char T in SimbolosTerminais)
            {
                ret.simbolos.Add(T.ToString());
            }

            ret.estadosFinais.Add(novo);



            foreach (KeyValuePair <char, Regular> Pr in Producoes)
            {
                foreach (string P in Pr.Value.Proximos)
                {
                    string nt = "";
                    string t  = "";

                    foreach (char NT in SimbolosNaoTerminais)
                    {
                        if (P.Contains(NT))
                        {
                            nt += NT;
                        }
                    }
                    foreach (char T in SimbolosTerminais)
                    {
                        if (P.Contains(T))
                        {
                            t += T;
                        }
                    }

                    if (nt.Length != 0 && t.Length != 0)
                    {
                        foreach (char c in t)
                        {
                            ret.addTransicao(Pr.Key.ToString(), c.ToString(), nt);
                        }
                    }
                    else if (nt.Length == 0)
                    {
                        foreach (char c in t)
                        {
                            ret.addTransicao(Pr.Key.ToString(), c.ToString(), novo);
                        }
                    }
                }
            }

            return(ret);
        }