Package excecoes

Examples of excecoes.RedeclaracaoDeSimboloException


        pilhaSimbolos.push(d);
        buffer.append("\t"+ novoLabel + "\tdd\t0\n");
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case CMD_ACAO_DECLARACAO_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),false)==null){//OBS era simboloExiste false
        String novoLabel = "N" + nivelEscopo + "_" + label;
        d = new Descritor(Tipo.VAR_BOOL,novoLabel,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,false);
        pilhaSimbolos.push(d);
        buffer.append("\t"+ novoLabel + "\tdd\t0\n");
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case CMD_ACAO_INI_DECLARACAO_VETOR_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),false)==null){ //OBS era simboloExiste false
        String novoLabel = "N" + nivelEscopo + "_" + label;
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_INT,novoLabel,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,false);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case CMD_ACAO_RECEBEU_TAM_VETOR:
      // Seta o tamanho do vetor no descritor
      d = pilhaSimbolos.peek();
      d.setNumParam(token.getIComplementaryInformation());
      break;

    case CMD_ACAO_FIM_DECLARACAO_VETOR:
      //  Recebeu valor do numero de elementos do vetor
      //  Reserva memoria
      d = pilhaSimbolos.pop(); // tira simbolo da pilha
      label = d.getLabel();
      int tam = d.getNumParam();
      int num = 0;//getProxNumSerieVetor();
      buffer.append("\t"+ label + "\tdd\t" + label + "_"+ num + "\n");
      buffer.append("\t"+ label + "_"+ num + "\tdd\t");
      for(int i=0; i<tam-1; i++){
        buffer.append("0,");
      }
      buffer.append("0\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      break;

    case CMD_ACAO_INI_DECLARACAO_VETOR_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),false)==null){ //OBS era simboloExiste false
        String novoLabel = "N" + nivelEscopo + "_" + label;
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_BOOL,novoLabel,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,false);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case CMD_ACAO_OUTPUT:
      // Ao receber "(", o resultado da EA a ser exibido est� do ACC
View Full Code Here


        // System.out.print(buffer.toString());
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        // System.out.println("ja tem: " + label);
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_DECLARACAO_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),false)==null){ //OBS: era !simboloExiste(getTokenAnterior(),false)
        Descritor d = new Descritor(Tipo.VAR_BOOL,label,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,false);
        buffer.append("\t"+ label + "\tdd\t0\n");
        // System.out.print(buffer.toString());
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        // System.out.println("ja tem: " + label);
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_INI_DECLARACAO_VETOR_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),false)==null){ //OBS: era !simboloExiste(getTokenAnterior(),false)
        // Guarda id na pilha. Espera-se "[n]" em sequida
        Descritor d = new Descritor(Tipo.VAR_INT,label,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,false);
      }else{
        // System.out.println("ja tem: " + label);
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_RECEBEU_TAM_VETOR:
      // Seta o tamanho do vetor no descritor
      Descritor d = pilhaSimbolos.peek();
      d.setNumParam(token.getIComplementaryInformation());
      break;

    case PROG_ACAO_FIM_DECLARACAO_VETOR:
      //  Recebeu valor do numero de elementos do vetor
      //  Reserva memoria
      d = pilhaSimbolos.pop(); // tira simbolo da pilha
      label = d.getLabel();
      int tam = d.getNumParam();
      int num = 0; //getProxNumSerieVetor();
      buffer.append("\t"+ label + "\tdd\t" + label + "_"+ num + "\n");
      buffer.append("\t"+ label + "_"+ num + "\tdd\t");
      for(int i=0; i<tam-1; i++){
        buffer.append("0,");
      }
      buffer.append("0\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      break;

    case PROG_ACAO_INI_DECLARACAO_VETOR_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),false)==null){ //OBS: era !simboloExiste(getTokenAnterior(),false)
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_BOOL,label,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,false);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_ID_FUNC_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(token);
      if(simboloDeclarado(token,false)==null){ //OBS: era !simboloExiste(getTokenAnterior(),false)
        d = new Descritor(Tipo.FUNC_INT,label,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(token), d,false);
        pilhaSimbolos.push(d)// guarda simbolo
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(token));
      }
      break;

    case PROG_ACAO_INI_FUNC_INT_BOOL:
      d = pilhaSimbolos.peek();
      d.setNumParam(numParametros); // seta num de parametros
      //  Gera codigo p/  label da funcao
      label = d.getLabel();
      funcAtual = label;
      buffer.append(label+"\tproc\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeFuncoes(buffer.toString());
//      escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      break;

    case PROG_ACAO_INI_FUNC_VOID:
      d = pilhaSimbolos.peek();
      d.setNumParam(numParametros); // seta num de parametros
      //  Gera codigo p/  label da funcao
      label = d.getLabel();
      funcAtual = label;
      buffer.append(label+"\tproc\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeFuncoes(buffer.toString());
//      escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      break;
     
    case PROG_ACAO_FUNC_PARAM_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String func = pilhaSimbolos.peek().getLabel();
        String novoLabel = func + "_" + label;
        d = new Descritor(Tipo.VAR_INT,novoLabel,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
       
        // codigo definindo label (no formato <label_funcao>_<label>)
        buffer.append("\t" + novoLabel + "\tdd\t0\n");
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeFuncoes(buffer.toString());
//        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_FUNC_PARAM_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String func = pilhaSimbolos.peek().getLabel();
        String novoLabel = func + "_" + label;
        d = new Descritor(Tipo.VAR_BOOL,novoLabel,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
       
        // codigo definindo label (no formato <label_funcao>_<label>)
        buffer.append("\t" + novoLabel + "\tdd\t0\n");
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeFuncoes(buffer.toString());
//        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_FUNC_INI_PARAM_VETOR_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String func = pilhaSimbolos.peek().getLabel();
        String novoLabel = func + "_" + label;
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_INT,novoLabel,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_FUNC_PARAM_TAM_VETOR:
      // Seta o tamanho do vetor no descritor
      d = pilhaSimbolos.peek();
      d.setNumParam(token.getIComplementaryInformation());
      break;

    case PROG_ACAO_FUNC_FIM_PARAM_VETOR:
      //  Recebeu valor do numero de elementos do vetor
      //  Reserva memoria
      d = pilhaSimbolos.pop(); // tira simbolo da pilha
      label = d.getLabel();
      tam = d.getNumParam();
      num = 0; //getProxNumSerieVetor();
      buffer.append("\t"+ label + "\tdd\t" + label + "_"+ num + "\n");
      buffer.append("\t"+ label + "_"+ num + "\tdd\t");
      for(int i=0; i<tam-1; i++){
        buffer.append("0,");
      }
      buffer.append("0\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      break;

    case PROG_ACAO_FUNC_INI_PARAM_VETOR_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String func = pilhaSimbolos.peek().getLabel();
        String novoLabel = func + "_" + label;
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_BOOL,novoLabel,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break


      /*
       *Declaracao de variaveis/vetor dentro da funcao
       */
    case PROG_ACAO_FUNC_DECLARACAO_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String novoLabel = funcAtual + "_" + label;
        d = new Descritor(Tipo.VAR_INT,novoLabel,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
        buffer.append("\t"+ novoLabel + "\tdd\t0\n");
//        buffer.append("\tLOCAL\t"+ novoLabel + "\t:DWORD\n");
        //FIXME: aqui....
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_FUNC_DECLARACAO_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String novoLabel = funcAtual + "_" + label;
        d = new Descritor(Tipo.VAR_BOOL,novoLabel,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
//        buffer.append("\tLOCAL\t"+ novoLabel + "\t:DWORD\n");
        buffer.append("\t"+ novoLabel + "\tdd\t0\n");
        escreveNoArquivo(buffer.toString());
        escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_FUNC_INI_DECLARACAO_VETOR_INT:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String novoLabel = funcAtual + "_" + label;
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_INT,novoLabel,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

    case PROG_ACAO_FUNC_RECEBEU_TAM_VETOR:
      // Seta o tamanho do vetor no descritor
      d = pilhaSimbolos.peek();
      d.setNumParam(token.getIComplementaryInformation());
      break;

    case PROG_ACAO_FUNC_FIM_DECLARACAO_VETOR:
      //  Recebeu valor do numero de elementos do vetor
      //  Reserva memoria
      d = pilhaSimbolos.pop(); // tira simbolo da pilha
      label = d.getLabel();
      tam = d.getNumParam();
      num = 0; //getProxNumSerieVetor();
      buffer.append("\t"+ label + "\tdd\t" + label + "_"+ num + "\n");
      buffer.append("\t"+ label + "_"+ num + "\tdd\t");
      for(int i=0; i<tam-1; i++){
        buffer.append("0,");
      }
      buffer.append("0\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeVariaveis(buffer.toString());
      break;

    case PROG_ACAO_FUNC_INI_DECLARACAO_VETOR_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(getTokenAnterior());
      if(simboloDeclarado(getTokenAnterior(),true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        String novoLabel = funcAtual + "_" + label;
        // Guarda id na pilha. Espera-se "[n]" em sequida
        d = new Descritor(Tipo.VAR_BOOL,novoLabel,0,nivelEscopo,true);
        pilhaSimbolos.push(d);
        tabelaSimbolosPut(getInfoComplementar(getTokenAnterior()), d,true);
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(getTokenAnterior()));
      }
      break;

      /*
       * Retorno de funcao
       */ 
    case PROG_ACAO_RETURN:
      // o resultado da EA vai estar no ACC. Salva resultado em T_FUNC
      buffer.append("\tMOV\tT_FUNC,EAX\n");
      escreveNoArquivo(buffer.toString());
      escreveNoArquivoDeDeclaracaoDeFuncoes(buffer.toString());
      break;

      /*
       * Declaracao de funcao bool
       */
    case PROG_ACAO_ID_FUNC_BOOL:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(token);
      if(simboloDeclarado(token,true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        d = new Descritor(Tipo.FUNC_BOOL,label,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(token), d,false);
        pilhaSimbolos.push(d)// guarda simbolo
      }else{
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(token));
      }
      break;

      /*
       * Declaracao de funcao void
       */
    case PROG_ACAO_ID_FUNC_VOID:
      //  Na declara��o, precisa ver se o s�mbolo j� existe. Se j� existir � erro, caso contr�rio
      //  adiciona na tabela de s�mbolos
      label = obtemValor(token);
      if(simboloDeclarado(token,true)==null){ //OBS: era !simboloExiste(getTokenAnterior(),true)
        d = new Descritor(Tipo.FUNC_VOID,label,0,nivelEscopo,false);
        tabelaSimbolosPut(getInfoComplementar(token), d,false);
        pilhaSimbolos.push(d)// guarda simbolo
      }else{
        // System.out.println("ja tem: " + label);
        throw new RedeclaracaoDeSimboloException("Linha " + sintatico.getLinha() + ": S�mbolo j� foi declarado: " + obtemValor(token));
      }
      break;

    case PROG_ACAO_RET_FUNC:
      // instrucao de retorno de subrotina
View Full Code Here

TOP

Related Classes of excecoes.RedeclaracaoDeSimboloException

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.