Esempio n. 1
0
        public void Validacoes(bool validaSequencia)
        {
            if (string.IsNullOrEmpty(Inicial))
            {
                Erro = "A letra inicial não pode ser vazia.";
                return;
            }

            if (RegrasDeProducao.Count == 0)
            {
                Erro = "Deve existir ao menos uma regra de produção adicionada.";
                return;
            }

            if (Variaveis.Count == 0)
            {
                Erro = "Deve existir ao menos uma variável adicionada.";
                return;
            }

            bool Exists = Variaveis.Exists(x => x == Inicial);

            if (!Exists)
            {
                Erro = "Letra inicial não existe nas variáveis adiciondas.";
                return;
            }

            var regras = RegrasDeProducao.Where(x => x.De == string.Empty).ToList();

            if (regras.Count > 0)
            {
                Erro = "Nenhuma regra de produção pode se iniciar com vazio.";
                return;
            }

            if (validaSequencia == true)
            {
                if (Sequencia.Count == 0)
                {
                    Erro = "Deve existir ao menos uma sequência adicionada.";
                    return;
                }

                var regra = RegrasDeProducao.Where(x => x.Indice == Sequencia.FirstOrDefault()).FirstOrDefault();

                if (regra.De != Inicial)
                {
                    Erro = "A primeira regra de produção da sequencia não é compatível com a palavra inicial.";
                    return;
                }
            }
            else
            {
                if (string.IsNullOrEmpty(Resposta))
                {
                    Erro = "A resposta precisa ser adicionada.";
                    return;
                }
            }
        }