[ Resolvido ] Ler caractere a caracter e desconsiderar os espaços em branco

3 respostas
marcos3

Pessoal, já pesquisei aqui no fórum, mas todos os tópicos que li não foram suficientes para sanar minha dúvida.

A questão é que estou implementando um analisador léxico para a faculdade e preciso encontrar os lexemas a medida em que forem sendo lidos do arquivo fonte.

Por exemplo, na expressão: A1 = 0 como faço para capturar A1, =, 0 sem os espaços? A exigencia é o código siga fielmente o automato que reconhece tais caracteres e por isso é necessário ler caractere a caractere pois no caso de erro preciso informar linha e coluna onde estava o caractere que não foi reconhecido.

Será uma analisador bem básico mesmo, mas não estou conseguindo ver uma forma de resolver isso.

Após ler cada lexema, envio o valor lido para um método que possui as expressões regulares que reconhecem (ou não) o lexema lido.

Pensei em usar o split, substring, charAt… mas não obtive sucesso com nenhum.

Se alguém puder me dar alguma sugestão.

3 Respostas

Rodrigo_Sasaki

Qual foi sua dificuldade com o split? Pra mim parece ser a maneira mais simples e direta de resolver isso

marcos3

Rodrigo, com o split estou perdendo a referência em relação a coluna em que li o lexema.

Você poderia me dar uma sugestão de como manter a referência?

marcos3

Encontrei uma possível solução, pela regras do projeto o analisador vai lendo caractere a caractere do arquivo fonte e vai verificando se está de acordo com o automato... então resolvi usando o método charAt(index).

Ficou assim:
while(scaner.hasNext()){                
                frase = scaner.nextLine();//lendo cada linha do arquivo fonte

                for(int x=0; x<frase.length(); x++){       
         
                    String temp1 = "" + frase.charAt(x);

                     //faço os teste de validação aqui                     
                }
            }
Criado 30 de abril de 2015
Ultima resposta 4 de mai. de 2015
Respostas 3
Participantes 2