示例#1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Gerenciado de leitura de arquivos e interpretador de vendas.");

            string caminhoHomePath      = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            var    diretorioCompletoOut = caminhoHomePath + "\\data\\out\\";
            var    diretorioCompletoIn  = caminhoHomePath + "\\data\\in\\";

            IGerenciarArquivo          gerenciarArquivo = new GerenciarArquivo();
            ILerArquivoRepository      lerArquivo       = new LerArquivo();
            IRegistro                  registro         = new RegistrarNoArquivo();
            IEscreverArquivoRepository escrecerArquivo  = new EscreverArquivo(registro);
            IMonitorarPath             monitorarPath    = new MonitorarPath(lerArquivo, escrecerArquivo, diretorioCompletoOut);

            gerenciarArquivo.CriarCaminho(diretorioCompletoIn);
            gerenciarArquivo.CriarCaminho(diretorioCompletoOut);

            Console.WriteLine("\n \n");
            Console.WriteLine("Monitorando para ler arquivos.");

            using var monitorar = new FileSystemWatcher(diretorioCompletoIn);

            monitorar.NotifyFilter = NotifyFilters.Attributes
                                     | NotifyFilters.CreationTime
                                     | NotifyFilters.DirectoryName
                                     | NotifyFilters.FileName;
            monitorar.Created            += monitorarPath.OnCreated;
            monitorar.Filter              = "*.txt";
            monitorar.EnableRaisingEvents = true;

            Console.ReadLine();
        }
示例#2
0
    public static void ApagarUmaVisita()
    {
        Util.LimparTela();

        LerArquivo ler_registros = new LerArquivo("_infos\\visitas_agendadas.txt");

        string[] visitas_marcadas = ler_registros.LerTodasAsLinhas();

        for (int i = 0; i < visitas_marcadas.Length; i++)
        {
            Console.WriteLine("{0} - {1}", i + 1, visitas_marcadas[i]);
        }
        Console.Write("\nEscolha a visita a ser apagada: ");
        int visita_escolha = int.Parse(Console.ReadLine()) - 1;

        GravarArquivo apagar_visita = new GravarArquivo("_infos\\visitas_agendadas.txt");

        apagar_visita.ApagarUmaLinha(visitas_marcadas[visita_escolha]);
        Util.GravarLog("Visita apagada: " + visitas_marcadas[visita_escolha]);

        Util.LimparTela();

        Console.WriteLine("Visita apagada com sucesso!");

        Util.TecleEnterParaSair();
    }
示例#3
0
    public bool VerificarSeCadastroExiste()
    {
        bool cadastro_existe = false;

        try { // CASO O ARQUIVO ESTEJA VAZIO
            LerArquivo arquivo_dados = new LerArquivo("_infos\\_logins\\logins_visitante.txt");

            string[] dados_cadastrais = arquivo_dados.LerTodasAsLinhas();

            foreach (string linha in dados_cadastrais)
            {
                string[] dados_separados = linha.Split(";");

                if (this.cpf == dados_separados[1] || this.email == dados_separados[3])
                {
                    cadastro_existe = true;
                    break;
                }
            }
        } catch {
            // NÃO SEI O QUE BOTAR AQUI
        }

        return(cadastro_existe);
    }
示例#4
0
    public static void ApagarUmaSugestao()
    {
        Util.LimparTela();

        LerArquivo ler_registros = new LerArquivo("_infos\\sugestoes.txt");

        string[] sugestoes_salvas = ler_registros.LerTodasAsLinhas();

        for (int i = 0; i < sugestoes_salvas.Length; i++)
        {
            Console.WriteLine("{0} - {1}", i + 1, sugestoes_salvas[i]);
        }
        Console.Write("\nEscolha a sugestão a ser apagada: ");
        int sugestao__escolha = int.Parse(Console.ReadLine()) - 1;

        GravarArquivo apagar_sugestao = new GravarArquivo("_infos\\visitas_agendadas.txt");

        apagar_sugestao.ApagarUmaLinha(sugestoes_salvas[sugestao__escolha]);
        Util.GravarLog("Sugestão apagada: " + sugestoes_salvas[sugestao__escolha]);

        Util.LimparTela();

        Console.WriteLine("Sugestão apagada com sucesso!");
        Util.GravarLog("Sugestão apagada: " + sugestoes_salvas[sugestao__escolha]);

        Util.TecleEnterParaSair();
    }
示例#5
0
 public void TesteLeituraVenda()
 {
     var lerArquivo = new LerArquivo();
     var retorno = lerArquivo.InterpretarArquivo(@"Arquivos/TesteVenda.txt");
     Assert.Collection(retorno.Vendas, itens =>
     {
         Assert.Equal("003", itens.Type);
         Assert.Equal(15, itens.SaleId);
         Assert.Equal("Pedro", itens.Salesman);
         Assert.Collection(itens.Itens, itensDavenda =>
         {
             Assert.Equal(1, itensDavenda.ItemId);
             Assert.Equal(10, itensDavenda.ItemQuantity);
             Assert.Equal(150M, itensDavenda.ItemPrice);
         },
         itensDavenda =>
         {
             Assert.Equal(2, itensDavenda.ItemId);
             Assert.Equal(30, itensDavenda.ItemQuantity);
             Assert.Equal(2.5M, itensDavenda.ItemPrice);
         },
         itensDavenda =>
         {
             Assert.Equal(3, itensDavenda.ItemId);
             Assert.Equal(40, itensDavenda.ItemQuantity);
             Assert.Equal(3.1M, itensDavenda.ItemPrice);
         }
         );
     },
     itens =>
     {
         Assert.Equal("003", itens.Type);
         Assert.Equal(48, itens.SaleId);
         Assert.Equal("Paulo Ricardo", itens.Salesman);
         Assert.Collection(itens.Itens, itensDavenda =>
         {
             Assert.Equal(1, itensDavenda.ItemId);
             Assert.Equal(34, itensDavenda.ItemQuantity);
             Assert.Equal(130M, itensDavenda.ItemPrice);
         },
       itensDavenda =>
       {
           Assert.Equal(2, itensDavenda.ItemId);
           Assert.Equal(33, itensDavenda.ItemQuantity);
           Assert.Equal(1.5M, itensDavenda.ItemPrice);
       },
       itensDavenda =>
       {
           Assert.Equal(3, itensDavenda.ItemId);
           Assert.Equal(40, itensDavenda.ItemQuantity);
           Assert.Equal(0.10M, itensDavenda.ItemPrice);
       }
       );
     });
 }
示例#6
0
    public void InformacoesMuseu()
    {
        LerArquivo qtd_obra = new LerArquivo("_infos\\info_obra\\nome.txt");

        Util.LimparTela();

        Console.WriteLine("Bem vindo ao Museu " + this.nome);
        Console.WriteLine("Atualmente, nosso presidente é o " + this.ceo_atual);
        Console.WriteLine("Contamos com cerca de " + qtd_obra.ObterQtdLinha() + " obras");

        Util.TecleEnterParaSair();
    }
示例#7
0
    public static void ListarSugestoes()
    {
        LerArquivo ler_sugestoes = new LerArquivo("_infos\\sugestoes.txt");

        Util.LimparTela();

        foreach (string sugestao in ler_sugestoes.LerTodasAsLinhas())
        {
            Console.WriteLine(sugestao);
        }
        Util.GravarLog("Listar todas as sugestões");
        Util.TecleEnterParaSair();
    }
示例#8
0
    public static void LerTodasAsVisitas()
    {
        LerArquivo ler_visitas = new LerArquivo("_infos\\visitas_agendadas.txt");

        foreach (string visita_completa in ler_visitas.LerTodasAsLinhas())
        {
            Console.WriteLine(visita_completa);
        }

        Console.WriteLine("Todas as visitas agendadas");

        Util.TecleEnterParaSair();
    }
示例#9
0
    public static void LerLog()
    {
        LimparTela();

        LerArquivo ler_todo_log = new LerArquivo("_infos\\log.txt");

        string [] log = ler_todo_log.LerTodasAsLinhas();

        for (int i = 0; i < log.Length; i++)
        {
            Console.WriteLine(log[i]);
        }

        TecleEnterParaSair();
    }
    public void ApagarUmaLinha(string texto_procurado)
    {
        LerArquivo todos_os_registros = new LerArquivo(this.arquivo_caminho);

        string[] vetor_registros = todos_os_registros.LerTodasAsLinhas();

        LimparArquivo();

        foreach (string linha in vetor_registros)
        {
            if (linha != texto_procurado)
            {
                GravarContinuamente(linha);
            }
        }
    }
示例#11
0
        private void btnLoadLista_Click(object sender, EventArgs e)
        {
            p1 = new Fila();
            p2 = new Fila();
            p3 = new Fila();
            p4 = new Fila();
            p5 = new Fila();

            LerArquivo.Ler(p1, p2, p3, p4, p5);



            textBox1.Text = p1.quantidade.ToString();
            textBox2.Text = p2.quantidade.ToString();
            textBox3.Text = p3.quantidade.ToString();
            textBox4.Text = p4.quantidade.ToString();
            textBox5.Text = p5.quantidade.ToString();
        }
示例#12
0
 public void TesteLeituraVendedor()
 {
     var lerArquivo = new LerArquivo();
     var retorno = lerArquivo.InterpretarArquivo(@"Arquivos/TesteVendedor.txt");
     Assert.Collection(retorno.Vendedores, itens =>
     {
         Assert.Equal("001", itens.Type);
         Assert.Equal("1234567891234", itens.Cpf);
         Assert.Equal(5000M, itens.Salary);
         Assert.Equal("Pedro", itens.Name);
     },
     itens =>
     {
         Assert.Equal("001", itens.Type);
         Assert.Equal("3245678865434", itens.Cpf);
         Assert.Equal(4000.99M, itens.Salary);
         Assert.Equal("Paulo", itens.Name);
     });
 }
示例#13
0
 public void TesteLeituraCliente()
 {
     var lerArquivo = new LerArquivo();
     var retorno = lerArquivo.InterpretarArquivo(@"Arquivos/TesteCliente.txt");
     Assert.Collection(retorno.Clientes, itens =>
     {
         Assert.Equal("002", itens.Type);
         Assert.Equal("2345675434544345", itens.Cnpj);
         Assert.Equal("Jose da Silva", itens.Name);
         Assert.Equal("Rural", itens.BusinessArea);
     },
     itens =>
     {
         Assert.Equal("002", itens.Type);
         Assert.Equal("2345675433444345", itens.Cnpj);
         Assert.Equal("Eduardo Pereira", itens.Name);
         Assert.Equal("Rural", itens.BusinessArea);
     });
 }
示例#14
0
        public Controller(int option, string sourcePath, string content)
        {
            switch (option)
            {
            case 1:
                CopiarArquivo.copiaArquivo(sourcePath);
                break;

            case 2:
                CopiarArquivo.copiaArquivo(sourcePath);
                break;

            case 3:
                LerArquivo.lerSemFileStream(sourcePath);
                break;

            case 4:
                LerArquivo.lerArquivoComReadAllLines(sourcePath);
                break;

            case 5:
                LerArquivo.lerComFileStreamComFechamentoAutomatico(sourcePath);
                break;

            case 6:
                LerArquivo.lerSemFileStream(sourcePath);
                break;

            case 7:
                EscreverArquivo.escreverComWriteLine(sourcePath, content);
                break;

            case 8:
                Diretorios.diretorios();
                break;

            case 9:
                FuncoesDoPath.funcoesDoPath(sourcePath);
                break;
            }
        }
    public bool VerificarSeCadastroExiste()
    {
        LerArquivo arquivo_dados = new LerArquivo("_infos\\_logins\\logins_admin.txt");

        string[] dados_cadastrais = arquivo_dados.LerTodasAsLinhas();

        bool cadastro_existe = false;

        foreach (string linha in dados_cadastrais)
        {
            string[] dados_separados = linha.Split(";");

            if (this.cpf == dados_separados[1] || this.email == dados_separados[3])
            {
                cadastro_existe = true;
                break;
            }
        }

        return(cadastro_existe);
    }
        private void BtnImportar_Click(object sender, EventArgs e)
        {
            LerArquivo leitor = new LerArquivo();

            if (!leitor.CancelouOperação())
            {
                g.Clear(Color.White);
                ForcarLimpeza();
                leitor.PlotarCoordenadas();

                #region Cria a população assim que importa

                //Cria a população assim que importa e já gera os ponto na tela
                txtTamPop.Text = txtTamPop.Text.Equals("") ? "1" : txtTamPop.Text;
                ConfigurationGA.tamPopulacao = int.Parse(txtTamPop.Text);

                pop                 = new Population();
                countAux            = count;
                btnCriarPop.Enabled = true;
                btnExecutar.Enabled = false;
                btnLimpar.Enabled   = true;

                pointCount        += TablePoints.pointCount;
                lbQtdeCidades.Text = pointCount.ToString();
                PlotPoints();

                #endregion
            }
            else
            {
                PlotPoints();

                if (pop != null || count_exec != 0)
                {
                    PlotLines(pop, Color.Blue);
                }
            }
        }
示例#17
0
    public string[] PegarInformacoesDepoisDeAutenticado()
    {
        LerArquivo ler_dados_do_usuario_logado;

        if (login_admin)
        {
            ler_dados_do_usuario_logado = new LerArquivo("_infos\\_logins\\logins_admin.txt");
        }
        else
        {
            ler_dados_do_usuario_logado = new LerArquivo("_infos\\_logins\\logins_visitante.txt");
        }

        foreach (string informacoes_completa in ler_dados_do_usuario_logado.LerTodasAsLinhas())
        {
            if (informacoes_completa.Split(";")[3] == this.login_email && informacoes_completa.Split(";")[4] == this.senha)
            {
                return(informacoes_completa.Split(";"));
            }
        }

        return(null);
    }
示例#18
0
    public bool VerificarInformacoesParaLogin()
    {
        bool       usuario_autenticado = false;
        LerArquivo ler_informacoes_para_login;

        if (login_admin)
        {
            ler_informacoes_para_login = new LerArquivo("_infos\\_logins\\logins_admin.txt");
        }
        else
        {
            ler_informacoes_para_login = new LerArquivo("_infos\\_logins\\logins_visitante.txt");
        }

        foreach (string linha_completa in ler_informacoes_para_login.LerTodasAsLinhas())
        {
            if (linha_completa.Split(";")[3] == this.login_email && linha_completa.Split(";")[4] == this.senha)
            {
                usuario_autenticado = true;
            }
        }

        return(usuario_autenticado);
    }
示例#19
0
    //

    //Construtor "padrao" da classe, nao recebe parâmetro nenhum
    public Museu()
    {
        //objeto do tipo LerArquivo, passa como parÂmetro o caminho que o arquivo está
        LerArquivo ler_presidente = new LerArquivo("_infos\\info_museu\\nome_presidente.txt");

        //armazena o valor que é retornado pelo metodo LerLinha
        this.presidente_atual = ler_presidente.LerLinha();

        LerArquivo ler_data_fundacao = new LerArquivo("_infos\\info_museu\\data_fundacao.txt");

        //tratamento de excessão
        try {
            this.data_fundacao = new Data(ler_data_fundacao.LerLinha());//leia o arquivo normalmente
        }catch {
            //caso dê erro, significa que o arquivo está vazio
            this.data_fundacao = new Data("0/0/0");//Então passo uma data em formato de string zerada como parâmetro
        }


        LerArquivo ler_metros_quadrados = new LerArquivo("_infos\\info_museu\\metros_quadrados.txt");

        try {
            this.metros_quadrados_atual = float.Parse(ler_metros_quadrados.LerLinha()); //leia o arquivo normalmente
        } catch {
            this.metros_quadrados_atual = 0f;                                           //caso dê erro, singnifica que o arquivo está vazio
        }

        LerArquivo ler_qtd_funcionarios = new LerArquivo("_infos\\info_museu\\qtd_funcionario.txt");

        try {
            this.qtd_funcionarios = int.Parse(ler_qtd_funcionarios.LerLinha()); //Ler o arquivo
        } catch {
            this.qtd_funcionarios = 0;                                          //caso o arquivo esteja vazio, passo 0 como valor
        }
        //Fim do tratamento de excessão
    }
示例#20
0
        // ponto de entrada chamada pela Main()
        public void Executar()
        {
            OpcaoListaMedicOuMater();
            // conversao dando problemca
            // teria que levar esse metodo para um menu que erda de algum outro menu Base
            ExecutaConsulta.DigiteNovamente(opcao, (ICollection <Menu>)GetListaMedicOuMater(opcao), typeof(R_CONS_PREV_KIT_COVID));

            // le arquivo e grava posicaoSaldo
            var posicaoSaldo = LerArquivo.Ler(LerArquivo.C_R_POS_EST_S);

            // le arquivo e grava consumoPaciente
            var consumoPaciente = LerArquivo.Ler(LerArquivo.C_R_LIST_CONS_PAC);

            // gerar lista consumoPrevisto
            var consumoPrevisto = TempoDeUso(posicaoSaldo, consumoPaciente);

            // ordena pelo codigo do produto
            consumoPrevisto.Sort();

            // gerar arquivo consumoPrevisto
            EscreverArquivo.Escrever(consumoPrevisto);

            Tela.Imprime_R_CONS_PREV_KIT_COVID(consumoPrevisto);
        }
示例#21
0
    // Método estático para pegar o nome do criador de cada obra
    public static string[] LerArtistas()
    {
        LerArquivo ler_artistas = new LerArquivo("_infos\\info_obra\\nome_artista.txt");

        return(ler_artistas.LerTodas());
    }
示例#22
0
    public string GetNomeMuseu()
    {
        LerArquivo getNome = new LerArquivo("_infos\\info_museu\\nome_museu.txt");

        return(getNome.LerLinha());
    }
示例#23
0
        public void TesteLeituraCompleta()
        {
            var lerArquivo = new LerArquivo();
            var retorno = lerArquivo.InterpretarArquivo(@"Arquivos/TesteCompleto.txt");

            Assert.Collection(retorno.Vendedores, itens =>
            {
                Assert.Equal("001", itens.Type);
                Assert.Equal("1234567891234", itens.Cpf);
                Assert.Equal(5000M, itens.Salary);
                Assert.Equal("Pedro", itens.Name);
            },
          itens =>
          {
              Assert.Equal("001", itens.Type);
              Assert.Equal("3245678865434", itens.Cpf);
              Assert.Equal(4000.99M, itens.Salary);
              Assert.Equal("Paulo", itens.Name);
          });

            Assert.Collection(retorno.Clientes, itens =>
            {
                Assert.Equal("002", itens.Type);
                Assert.Equal("2345675434544345", itens.Cnpj);
                Assert.Equal("Jose da Silva", itens.Name);
                Assert.Equal("Rural", itens.BusinessArea);
            },
          itens =>
          {
              Assert.Equal("002", itens.Type);
              Assert.Equal("2345675433444345", itens.Cnpj);
              Assert.Equal("Eduardo Pereira", itens.Name);
              Assert.Equal("Rural", itens.BusinessArea);
          });

            Assert.Collection(retorno.Vendas, itens =>
            {
                Assert.Equal("003", itens.Type);
                Assert.Equal(15, itens.SaleId);
                Assert.Equal("Pedro", itens.Salesman);
                Assert.Collection(itens.Itens, itensDavenda =>
                {
                    Assert.Equal(1, itensDavenda.ItemId);
                    Assert.Equal(10, itensDavenda.ItemQuantity);
                    Assert.Equal(150M, itensDavenda.ItemPrice);
                },
                itensDavenda =>
                {
                    Assert.Equal(2, itensDavenda.ItemId);
                    Assert.Equal(30, itensDavenda.ItemQuantity);
                    Assert.Equal(2.5M, itensDavenda.ItemPrice);
                },
                itensDavenda =>
                {
                    Assert.Equal(3, itensDavenda.ItemId);
                    Assert.Equal(40, itensDavenda.ItemQuantity);
                    Assert.Equal(3.1M, itensDavenda.ItemPrice);
                }
                );
            },
            itens =>
            {
                Assert.Equal("003", itens.Type);
                Assert.Equal(48, itens.SaleId);
                Assert.Equal("Paulo Ricardo", itens.Salesman);
                Assert.Collection(itens.Itens, itensDavenda =>
                {
                    Assert.Equal(1, itensDavenda.ItemId);
                    Assert.Equal(34, itensDavenda.ItemQuantity);
                    Assert.Equal(130M, itensDavenda.ItemPrice);
                },
              itensDavenda =>
              {
                  Assert.Equal(2, itensDavenda.ItemId);
                  Assert.Equal(33, itensDavenda.ItemQuantity);
                  Assert.Equal(1.5M, itensDavenda.ItemPrice);
              },
              itensDavenda =>
              {
                  Assert.Equal(3, itensDavenda.ItemId);
                  Assert.Equal(40, itensDavenda.ItemQuantity);
                  Assert.Equal(0.10M, itensDavenda.ItemPrice);
              }
              );
            });
        }
示例#24
0
    public static string[] LerTodosOsCampos()
    {
        LerArquivo ler_campos = new LerArquivo("_infos\\info_artista\\campos.txt");

        return(ler_campos.LerTodasAsLinhas());
    }
示例#25
0
    public static string[] LerTodasAsDatasDeNascimentos()
    {
        LerArquivo ler_datas = new LerArquivo("_infos\\info_artista\\data_nascimento.txt");

        return(ler_datas.LerTodasAsLinhas());
    }
示例#26
0
    public static string[] LerTodosOsNomes()
    {
        LerArquivo ler_nomes = new LerArquivo("_infos\\info_artista\\nome.txt");

        return(ler_nomes.LerTodasAsLinhas());
    }
示例#27
0
    // Método estático para pegar o ano de criação das obras
    public static string[] LerAnosCriacao()
    {
        LerArquivo ler_ano_criacao = new LerArquivo("_infos\\info_obra\\ano_criacao.txt");

        return(ler_ano_criacao.LerTodas());
    }
示例#28
0
    // Método estático para ler todas as descrições
    public static string[] LerDescricoes()
    {
        LerArquivo ler_descricoes = new LerArquivo("_infos\\info_obra\\descricao.txt");

        return(ler_descricoes.LerTodas());
    }
示例#29
0
        public Simbolos buscarProximoLexema(LerArquivo arquivo)
        {
            int estadoAtual = 0;
            int estadoFinal = 16;

            while (estadoAtual != estadoFinal)
            {
                switch (estadoAtual)
                {
                case 0:
                    // Ler proximo caractere caso devolver for false.
                    if (!devolve)
                    {
                        _char = (char)arquivo.Read();
                    }

                    devolve = false;
                    lexema  = "";

                    if (eCaractere(_char))
                    {
                        if (_char == 10 || _char == 11)
                        {    // Próxima linha 0Ah ou Tab vertical (\v).
                            estadoAtual = 0;
                            linha++;
                        }

                        else if (_char == 8 || _char == 9 || _char == 13 || _char == 32)
                        {    // Apagar (\b) ou Tab horizontal (\t) ou Início da linha 0Dh (\r) ou Espaço.
                            estadoAtual = 0;
                        }
                        // Confere se char e um dos caracteres abaixo e aceita como token.
                        else if (_char == 10 || _char == '[' || _char == ']' || _char == '%' || _char == ')' || _char == '(' || _char == '=' ||
                                 _char == ';' || _char == ',' || _char == '+' || _char == '-' || _char == '*' || _char == '{' || _char == '}')
                        {
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                        }

                        else if (eLetra(_char))
                        {    // É letra então vai pro estado 1.
                            lexema     += _char;
                            estadoAtual = 1;
                        }

                        else if (_char == '_')
                        {    // É sublinhado então vai pro estado 2.
                            lexema     += _char;
                            estadoAtual = 2;
                        }

                        else if (_char == '.')
                        {    // É ponto então vai pro estado 3.
                            lexema     += _char;
                            estadoAtual = 3;
                        }

                        else if (_char == '<')
                        {    // É menor então vai pro estado 4.
                            lexema     += _char;
                            estadoAtual = 4;
                        }

                        else if (_char == '>')
                        {    // É maior então vai pro estado 5.
                            lexema     += _char;
                            estadoAtual = 5;
                        }

                        else if (_char == '0')
                        {    // É zero então vai pro estado 6.
                            lexema     += _char;
                            estadoAtual = 6;
                        }

                        else if (eDigito(_char) && _char != '0')
                        {    // É digito e diferente de zero então vai pro estado 10.
                            lexema     += _char;
                            estadoAtual = 9;
                        }

                        else if (_char == '/')
                        {    // É barra então vai pro estado 11.
                            lexema     += _char;
                            estadoAtual = 10;
                        }

                        else if (_char == '"')
                        {    // É aspas então vai pro estado 14.
                            lexema     += _char;
                            estadoAtual = 13;
                        }

                        else if (_char == 39)
                        {    // É apóstofro então vai pro estado 15.
                            lexema     += _char;
                            estadoAtual = 14;
                        }

                        else if (_char == -1 || _char == 65535)
                        {    // É final de arquivo então vai pro estado 16(final).
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                            EOF         = true;
                            arquivo.Close();
                        }

                        else
                        {    // Lexema não identificado.
                            lexema += _char;
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                    }
                    else
                    {    // Caractere invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;    // Fim estado 0.

                case 1:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        if (eLetra(_char) | eDigito(_char) | _char == '_' | _char == '.')
                        {    // Verifica se obedece as condições para montagem do token identificador.
                            lexema     += _char;
                            estadoAtual = 1;
                        }
                        else
                        {    // Reconhece ID
                            estadoAtual = estadoFinal;
                            devolve     = true;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 2:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // "Loop" _
                        if (_char == '_')
                        {
                            lexema     += _char;
                            estadoAtual = 2;
                        }
                        else if (eLetra(_char) | eDigito(_char) | _char == '.')
                        {                    // Verifica se obedece as condições para montagem do token identificador
                            lexema     += _char;
                            estadoAtual = 1; //Volta para estado 1 garantindo não ter somente _
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // Caso seja outro caractere não permitido, logo não consegue identificar o lexema.
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 3:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // "Loop" _
                        if (_char == '.')
                        {
                            lexema     += _char;
                            estadoAtual = 3;
                        }
                        else if (eLetra(_char) | eDigito(_char) | _char == '_')
                        {                    // Verifica se obedece as condições para montagem do token identificador
                            lexema     += _char;
                            estadoAtual = 1; //Volta para estado 1 garantindo não ter somente ponto
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // Caso seja outro caractere não permitido, logo não consegue identificar o lexema.
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 4:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // token <> ou <=
                        if (_char == '>' | _char == '=')
                        {
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                        }
                        else
                        {    // token < e devolve o proximo.
                            devolve     = true;
                            estadoAtual = estadoFinal;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 5:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // token >=
                        if (_char == '=')
                        {
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                        }
                        else
                        {    // token > e devolve o proximo.
                            devolve     = true;
                            estadoAtual = estadoFinal;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 6:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // Formando token hexadecimal 0x
                        if (_char == 'x')
                        {
                            lexema     += _char;
                            estadoAtual = 7;
                        }
                        else if (eDigito(_char))
                        {    // Formação de numero.
                            lexema     += _char;
                            estadoAtual = 9;
                        }
                        else
                        {    // valor Zero.
                            devolve     = true;
                            estadoAtual = estadoFinal;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 7:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // Formação token hexadecimal 0xD
                        if (eHexadecimal(_char))
                        {
                            lexema     += _char;
                            estadoAtual = 8;
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // Caso seja outro caractere não permitido, logo não consegue identificar o lexema.
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 8:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // token hexadecimal 0xDD
                        if (eHexadecimal(_char))
                        {
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // Caso seja outro caractere não permitido, logo não consegue identificar o lexema.
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 9:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // "Loop" formação valor
                        if (eDigito(_char))
                        {
                            lexema     += _char;
                            estadoAtual = 9;
                        }
                        else
                        {    // const valor
                            devolve     = true;
                            estadoAtual = estadoFinal;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 10:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // inicio comentario
                        if (_char == '*')
                        {
                            lexema     += _char;
                            estadoAtual = 11;
                        }
                        else
                        {    // token /
                            devolve     = true;
                            estadoAtual = estadoFinal;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 11:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // Caminho finalizar comentario
                        if (_char == '*')
                        {
                            lexema     += _char;
                            estadoAtual = 12;
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // "Loop" ignorando carcteres
                            lexema     += _char;
                            estadoAtual = 11;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 12:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // Caminho finalizar comentario
                        if (_char == '*')
                        {
                            lexema     += _char;
                            estadoAtual = 12;
                        }
                        else if (_char == '/')
                        {    // Finaliza comentario
                            lexema     += _char;
                            estadoAtual = 0;
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // Voltando pro estado 11 para continuação comentario
                            lexema     += _char;
                            estadoAtual = 11;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 13:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        // String
                        if (_char == '"')
                        {
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                        }
                        else if (_char == 10 || _char == '$')
                        {    // não pode conter quebra de linha e $
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {
                            lexema     += _char;
                            estadoAtual = 13;
                        }
                    }
                    else
                    {    // Caractere Invalido.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 14:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractereImprimivel(_char))
                    {
                        lexema     += _char;
                        estadoAtual = 15;
                    }
                    else if (_char == -1 || _char == 65535)
                    {    // Fim do arquivo não esperado.
                        Erro.ErroLexico.Arquivo(linha);
                    }
                    else
                    {    // Caractere Invalido(não pertence a linguagem) ou não imprivel.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;

                case 15:

                    _char = (char)arquivo.Read();

                    // Verifica se caractere valido.
                    if (eCaractere(_char))
                    {
                        //token char
                        if (_char == 39)
                        {
                            lexema     += _char;
                            estadoAtual = estadoFinal;
                        }
                        else if (_char == -1 || _char == 65535)
                        {    // Fim do arquivo não esperado.
                            Erro.ErroLexico.Arquivo(linha);
                        }
                        else
                        {    // Erro ao formar o  char 'c ?(alguma coisa)
                            Erro.ErroLexico.Lexema(linha, lexema);
                        }
                    }
                    else
                    {    // Caractere Invalido(não pertence a linguagem) ou não imprivel.
                        Erro.ErroLexico.Char(linha);
                    }

                    break;
                }
            }

            if (!EOF)// não for final do arquivo.
            {
                if (tbSimbolos.buscarSimbolo(lexema.ToLower()) != null)
                {// Caso lexema já exista na tabela de simbolos
                    simbolo = tbSimbolos.buscarSimbolo(lexema.ToLower());
                }
                else if (lexema[0] == '_' || lexema[0] == '.' || eLetra(lexema[0]))
                {     // adicionar identificador na tabela
                    if (lexema.Length >= 255)
                    { // validando tamanho identificador
                        Erro.ErroLexico.Lexema(linha, lexema);
                    }
                    else
                    {//inserindo na tabela
                        simbolo = tbSimbolos.inserirIdentificador(lexema.ToLower());
                    }
                }
                else if (lexema[0] == '"')
                {     // identificando string
                    if (lexema.Length >= 256)
                    { // validando tamanho string
                        Erro.ErroLexico.Lexema(linha, lexema);
                    }
                    else
                    {
                        lexema = '"' + lexema.Substring(1, lexema.Length - 2) + "$" + '"';
                    }

                    simbolo = new Simbolos(lexema, TabelaSimbolos.CONSTANTE, Simbolos.TIPO_STRING);
                }
                else
                {   //const hexadecimal
                    if (lexema.Length > 1 && lexema[1] == 'x')
                    {
                        simbolo = new Simbolos(lexema, TabelaSimbolos.CONSTANTE, Simbolos.TIPO_HEXADECIMAL);
                    }
                    else if (lexema[0] == 39)
                    {//alfanumérico('c')
                        simbolo = new Simbolos(lexema, TabelaSimbolos.CONSTANTE, Simbolos.TIPO_CARACTERE);
                    }
                    else
                    {// inteiro
                        simbolo = new Simbolos(lexema, TabelaSimbolos.CONSTANTE, Simbolos.TIPO_INTEIRO);
                    }
                }
            }
            else
            {// retonar eof para futuras validações.
                simbolo = new Simbolos("EOF", TabelaSimbolos.EOF);
            }

            return(simbolo);
        }
示例#30
0
    public static string[] LerTodosOsTitulos()
    {
        LerArquivo ler_obras = new LerArquivo("_infos\\info_obra\\nome.txt");

        return(ler_obras.LerTodasAsLinhas());
    }