Gerador de Código de um Automato

Olá, antes de mais nada eu vos digo: Eu conheço o google :smiley:

Estou com um problema para implementar uma funcionalidade em um sistema de compiladores.

O problema é:
Analisar uma expressão regular
Testar uma palavra na expressão regular.

Isso está feito e é deverás simples, só que preciso gerar um código java, capaz de gerar um autômato para a expressão dada.
Não é simplesmente gerar o automato, e sim o código que pode gerar esse automato.

Alguém pode dar uma luz?
Abraço.

java.util.regex.Pattern.compile(String) não serve não?

Se a resposta for não, e você tiver que explicitamente gerar o autômato, tente trabalhar com grafos.

a resposta é não.

Não sei como trabalhar com grafos em Java. Na realizadade o que eu quero é um gerador de código cujo código é um um gerador de automato.

O que vc citou é para compilar a String e para que eu possa testar a palavra.

Você pode olhar o código de java.util.regex.Pattern, método compile. Olhe os fontes do JDK.

Você quer um “gerador de geradores de autômatos” ou apenas um “gerador de autômatos”?

Deixa eu ver, o usuário entra com a regex e você gera o autômato, é isso?

Se for, pode começar com isso:[code]public class Estado {
private final boolean estadoFinal;
private final Map<Character, Estado> transicoes = new HashMap<Character, Estado>();

public Estado(boolean estadoFinal) {
    this.estadoFinal = estadoFinal;
}

public void adicionarTransicao(char c, Estado proximo) {
    transicoes.put(c, proximo);
}

public Estado proximoEstado(char c) {
    return transicoes.get(c);
}

public boolean isFinal() {
    return estadoFinal;
}

}[/code]
Assim, o seu problema se reduz apenas a criar os estados e adicionar as transições. Depois de criado o autômato, o reconhecimento vai ser moleza.

Obrigado, luz que me deram foi essencial!

[RESOLVIDO ] :slight_smile: