Olá, antes de mais nada eu vos digo: Eu conheço o google
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.
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.