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(); }
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(); }
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); }
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(); }
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); } ); }); }
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(); }
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(); }
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(); }
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); } } }
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(); }
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); }); }
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); }); }
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); } } }
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); }
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); }
// //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 }
// 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); }
// 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()); }
public string GetNomeMuseu() { LerArquivo getNome = new LerArquivo("_infos\\info_museu\\nome_museu.txt"); return(getNome.LerLinha()); }
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); } ); }); }
public static string[] LerTodosOsCampos() { LerArquivo ler_campos = new LerArquivo("_infos\\info_artista\\campos.txt"); return(ler_campos.LerTodasAsLinhas()); }
public static string[] LerTodasAsDatasDeNascimentos() { LerArquivo ler_datas = new LerArquivo("_infos\\info_artista\\data_nascimento.txt"); return(ler_datas.LerTodasAsLinhas()); }
public static string[] LerTodosOsNomes() { LerArquivo ler_nomes = new LerArquivo("_infos\\info_artista\\nome.txt"); return(ler_nomes.LerTodasAsLinhas()); }
// 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()); }
// 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()); }
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); }
public static string[] LerTodosOsTitulos() { LerArquivo ler_obras = new LerArquivo("_infos\\info_obra\\nome.txt"); return(ler_obras.LerTodasAsLinhas()); }