Package lexico

Examples of lexico.Token


////    token  = lexico.getToken();
////    System.out.println("Token recebido: " + token.getTokenType() + " " + token.getIComplementaryInformation());
//    System.out.println("END");
//    System.exit(0);

    Token token = lexico.getToken();
    while(!token.getTokenType().equals(Constantes.TOKEN_FIM_DE_ARQUIVO) || !pilhaStatus.isEmpty()){
//      System.out.println("Token recebido: " + token.getTokenType() + " " + token.getIComplementaryInformation());
      if(token.getTokenType().equals(Constantes.TOKEN_FIM_DE_ARQUIVO)){
        //  Recebeu token de fim de arquivo mas ainda est� numa submaquina
        //  Desempilha a submaquina
        statusAtual = pilhaStatus.pop();
        //  Volta a m�quina anterior p/ o estado e estava
        statusAtual.getMaquina().setEstadoAtual(statusAtual.getEstado());
      }

      int tipoTransicao = statusAtual.getMaquina().opera(token);

      statusAtual.setEstado(statusAtual.getMaquina().getEstadoAtual());

      switch(tipoTransicao){
      case TRANSICAO_NORMAL:
        tokenAnterior = token;
        token = lexico.getToken();
        break;
      case TRANSICAO_EA:
        //  Empilha o status atual (m�quina + estado)
        pilhaStatus.push(new Status(statusAtual.getMaquina(),statusAtual.getEstado()));
        statusAtual.setMaquina(maquinaExpressao);
        maquinaExpressao.setEstadoAtual(Constantes.ESTADO_INICIAL);
        statusAtual.setEstado(Constantes.ESTADO_INICIAL);
        break;
      case TRANSICAO_CMD:
        //  Empilha o status atual (m�quina + estado)
        pilhaStatus.push(new Status(statusAtual.getMaquina(),statusAtual.getEstado()));
        statusAtual.setMaquina(maquinaComando);
        maquinaComando.setEstadoAtual(Constantes.ESTADO_INICIAL);
        statusAtual.setEstado(Constantes.ESTADO_INICIAL);
        break;
      case ESTADO_FINAL:
        //  Se for estado final verifica se a pilha cont�m subm�quinas empilhadas
        if(!pilhaStatus.isEmpty()){
          statusAtual = pilhaStatus.pop();
          //  Volta a m�quina anterior p/ o estado e estava
          statusAtual.getMaquina().setEstadoAtual(statusAtual.getEstado());
        }else{
          //  Se n�o possuir sub-m�quinas empilhadas e o token n�o for de fim de arquivo, � erro
          if(!token.getTokenType().equals(Constantes.TOKEN_FIM_DE_ARQUIVO)){
            throw new StateMachineException("Pr�ximo estado inexistente: Erro na transi��o: ");
          }
        }
        break;
      }
View Full Code Here


      expressaoRPN = filaEspera.remove(0); // pega a expressao de volta
//      System.out.println("\n\nTIROU DA FILA\n");
//      imprimeStatus();
//      System.out.println("expr. depois: " + expressaoRPN);
      //TODO: testar
      Token op = expressaoRPN.remove(expressaoRPN.size()-1);
      buffer.append("\tMOV\tEDI," + obtemValor(op) + "\n"); // base
      buffer.append("\tMOV\tESI,EAX\n"); // indice
      buffer.append("\tMOV\tEAX,[EDI+ESI*4]\n"); // ACC <- vetor[i]
      buffer.append("\tPUSH\tEAX\n"); // guarda valor
//      System.out.print(buffer);
View Full Code Here

    escreveNoArquivoDeDeclaracaoDeFuncoes(buffer.toString());
    buffer.delete(0, buffer.length());
  }

  private StringBuffer codigoIndice0(StringBuffer buffer, int indiceSinal){
    Token operador = expressaoRPN.get(indiceSinal);
    buffer.append("\tPOP\tEBX\n"); // pega operador B
    buffer.append("\tPOP\tEAX\n"); // pega operador A
    String strOperador = obtemValor(operador);
    if(strOperador.equals("+")){
      buffer.append("\tADD\tEAX,EBX\n");
View Full Code Here

    return buffer;
  }

  private StringBuffer codigoIndice1(StringBuffer buffer, int indiceSinal){
    Token operador = expressaoRPN.get(indiceSinal);

    Token opA = expressaoRPN.get(indiceSinal-1); // pega operador A
    buffer.append("\tPOP\tEBX\n"); // pega operador B
    buffer.append("\tMOV\tEAX," + obtemValor(opA) + "\n");
    String strOperador = obtemValor(operador);
    if(strOperador.equals("+")){
      buffer.append("\tADD\tEAX,EBX\n");
View Full Code Here

    return buffer;
  }

  private StringBuffer codigoIndiceMaiorQue1(StringBuffer buffer, int indiceSinal){
    Token opA = expressaoRPN.get(indiceSinal-2);
    Token opB = expressaoRPN.get(indiceSinal-1);
    Token operador = expressaoRPN.get(indiceSinal);

    buffer.append("\tMOV\tEAX"+ "," + obtemValor(opA) + "\n");
    String strOperador = obtemValor(operador);
    if(strOperador.equals("+")){
      buffer.append("\tADD\tEAX," + obtemValor(opB) + "\n");
View Full Code Here

  private boolean pilhaZerada(Stack<Token> pilha){
    return pilha.isEmpty() || pilha.peek().getTokenType().equals("(");
  }

  private boolean operadorTopoPilhaDePrecedenciaMenor(Token operador){
    Token topoPilha = pilhaOperador.peek();

    if(topoPilha!=null){
      boolean topoPilhaPrecedenciaAlta = obtemValor(topoPilha).equals("*") || obtemValor(topoPilha).equals("/");
      boolean operadorPrecedenciaAlta = obtemValor(operador).equals("*") || obtemValor(operador).equals("/");

View Full Code Here

TOP

Related Classes of lexico.Token

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.