* @throws StateMachineException
* @throws RedeclaracaoDeSimboloException
* @throws SimboloNaoDeclaradoException
*/
public int opera(Token token) throws StateMachineException, SimboloNaoDeclaradoException, RedeclaracaoDeSimboloException{
ParEntrada chave = null;
// Aplica o look ahead p/ resolver o estado
ParSaida valor = proxEstado(token);
int anterior = estadoAtual;
String strToken = token.getTokenType();
if(strToken.equals(Constantes.PALAVRA_RESERVADA)){
strToken = sintatico.pegaInfoComplementar(token.getIComplementaryInformation());
}else if(strToken.equals(Constantes.IDENTIFICADOR)){
// colocar na tabela
}
// System.out.println("[VALOR] " + valor);
if(valor !=null){
// Vai p/ o pr�ximo estado e realiza acao semantica associada
estadoAtual = valor.getIdEstado();
realizaAcao(valor.getIdAcao(), token);
// System.out.println("[NORMAL] atual: " + anterior + " - token: " + strToken + " -> " + estadoAtual);
return AnalisadorSintatico.TRANSICAO_NORMAL;
}else if(tabelaTransicoes.containsKey(new ParEntrada(estadoAtual,Constantes.TRANSICAO_EA_STR).toString())){
chave = new ParEntrada(estadoAtual,Constantes.TRANSICAO_EA_STR);
valor = tabelaTransicoes.get(chave.toString());
estadoAtual = valor.getIdEstado();
// System.out.println("[EA]atual: " + anterior + " - token: " + strToken + " -> " + estadoAtual);
return AnalisadorSintatico.TRANSICAO_EA;
}else if(tabelaTransicoes.containsKey(new ParEntrada(estadoAtual,Constantes.TRANSICAO_CMD_STR).toString())){
chave = new ParEntrada(estadoAtual,Constantes.TRANSICAO_CMD_STR);
valor = tabelaTransicoes.get(chave.toString());
estadoAtual = valor.getIdEstado();
// System.out.println("[CMD]atual: " + anterior + " - token: " + strToken + " -> " + estadoAtual);
return AnalisadorSintatico.TRANSICAO_CMD;
}else{
if(estadosFinais.contains(new Integer(estadoAtual))){