Manipulando strings em java

3 respostas
P

Olá pessoal, estou com uma duvida cruel…
Estou fazendo um analisador léxico de trabalho da faculdade, só que não consigo dividir os tokens de acordo com a linguagem.

Alguém por favor poderia me ajudar?

Já usei split e StringTokenizer.

Qual esta sendo meu problema…

Dividir primeiramente os tokens pelos espaços, até ai tudo otimo, fiz isto em split, agora preciso dividir os caracteres, de maneira que eles se dividam atraves de uma String: “#+”, “#-”, #*", #/" (duas strings)

Alguem poderia por favor me ajudar?

Ficarei no aguardo…

Aí segue o codigo até agora como esta o desastre do meu exemplo.

package teste;

import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;

public class Teste {

    public static void main(String[] args) {
        String calculo = "X ::(A #+ B) #/ ( C#+B#-D#+V)!";
        String[] vetor = calculo.split(" ");
        ArrayList<String> lista = new ArrayList<>();

        for (int i = 0; i < vetor.length; i++) {
            System.out.println(vetor[i]);

        }
        System.out.println(">>>>>>>>>>>>>>>");

        //for (int i = 0; i < vetor.length; i++) {
            String auxiliar = vetor[6];
            String [] aux = auxiliar.split("#");
            System.out.println(aux.length);
            System.out.println(aux[0]);
            System.out.println(aux[1]);
            System.out.println(aux[2]);

        //}
    }
}

Fico no aguardo de alguma ajuda ou alguma luz…

3 Respostas

J

Bom, se você só quer separar entre Strings quando houver ocorrência dessas substrings, você pode usar o Split() mesmo, mas se você quer um tratamento diferenciado dependendo das diferentes ocorrências das diferentes substrings, você vai ter que usar os métodos de substring na mão mesmo.

Descreva mais detalhadamente qual seu input e o que quer que seu programa faça que eu tento te ajudar.

E

Para um analisador léxico, você precisa ler o seu arquivo caracter por caracter.

É melhor desenhar uma máquina de estados, e usar http://docs.oracle.com/javase/6/docs/api/java/io/PushbackReader.html - que provavelmente é o que você precisa, de acordo com o curso :slight_smile:

Não use split nem StringTokenizer; dependendo da sintaxe dos tokens, você pode trapacear e usar java.io.StreamTokenizer - que já separa os dados lidos em tokens, mas provavelmente não os que você quer :slight_smile:

E

Se o que você precisa ler está em uma string, use java.io.StringReader :slight_smile:

Criado 18 de maio de 2013
Ultima resposta 20 de mai. de 2013
Respostas 3
Participantes 3