//-----------------------------------Métodos auxiliares-------------------------------------------------
public static String getTopoPilha(StringBuilder pilha){
return String.valueOf(pilha.charAt(pilha.length()-1));
}
public static String getSimboloFita(StringBuilder fita){
return String.valueOf(fita.charAt(0));
}
public static boolean equal(String sb1, String sb2){
return sb1.equalsIgnoreCase(sb2);
}
public static void retiraDaPilha(StringBuilder pilha){
pilha.deleteCharAt(pilha.length()-1);
}
public static void adicionaAPilha(StringBuilder pilha, String valor){
StringBuilder aux = new StringBuilder();
aux.append(valor);
pilha.append(aux.reverse());
}
public static void retiraDaFita(StringBuilder fita){
fita.deleteCharAt(0);
}
public static Producao getProducao(Vector p, int i){
return (Producao)p.get(i);
}
//-------------------------------------------FIM-------------------------------------------------
public static void main(String[] args) {
//-------------------------------------Variáveis------------------------------------------
Scanner input = new Scanner(System.in);
StringBuilder pilha; //pilha utilizada pelo autômato
StringBuilder fita; //fita de entrada que conterá a cadeia
String cadeia; //cadeia a ser lida
String varEsp; //variável especial da pilha
int Nproducoes; //número de produções de entrada
int Nestados; //número de estados
int estadoI; //estado inicial
int estadoF; //estado final
int indice; //variável auxiliar para leitura
int Inc;