private void classe() {
   try {
     match(TokenType.CLASSE);
     match(TokenType.ID);
     complemento_decl_classe();
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro na declaração de classe - ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(CLASSE));
   }
 }
 private void decl_constantes_mesmo_tipo() {
   try {
     tipo_variavel();
     lista_decl_constantes();
     match(TokenType.PONTOVIRGULA);
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro na declaração de constantes - ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(DECL_CONSTANTES_MESMO_TIPO));
   }
 }
 private void bloco_variaveis() {
   try {
     match(TokenType.VARIAVEIS);
     match(TokenType.ABRECHAVE);
     declaracao_variaveis();
     match(TokenType.FECHACHAVE);
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro na declaração do bloco de variáveis - ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(BLOCO_VARIAVEIS));
   }
 }
 private void bloco_constantes() {
   try {
     match(TokenType.CONSTANTES);
     match(TokenType.ABRECHAVE);
     declaracao_constantes();
     match(TokenType.FECHACHAVE);
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro na declaração do bloco de constantes - ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(BLOCO_CONSTANTES));
   }
 }
 private void bloco_metodos() {
   try {
     if (tokenAtual.getTipo() == TokenType.METODOS) {
       match(TokenType.METODOS);
       match(TokenType.ABRECHAVE);
       declaracao_metodos();
       match(TokenType.FECHACHAVE);
     }
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro no bloco de declaração de métodos: ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(BLOCO_METODOS));
   }
 }
 private void declaracao_metodo() {
   try {
     match(TokenType.ID);
     match(TokenType.ABREPAR);
     parametros_formais();
     match(TokenType.FECHAPAR);
     match(TokenType.ABRECHAVE);
     dec_var_metodo();
     comandos();
     match(TokenType.FECHACHAVE);
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro na declaração de método: ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(DECLARACAO_METODO));
   }
 }
 private void decl_variaveis_mesmo_tipo() {
   try {
     if (primeiro(TIPO_VARIAVEL).contains(tokenAtual.getTipo())) {
       tipo_variavel();
       lista_decl_variaveis();
       match(TokenType.PONTOVIRGULA);
     } else if (tokenAtual.getTipo() == TokenType.ID) {
       match(TokenType.ID);
       match(TokenType.ID);
       complemento_variavel_instanciar_obj();
       match(TokenType.PONTOVIRGULA);
     } else
       throw new ErroSintaticoException("esperando declaração de tipo (primitivo ou classe): ");
   } catch (ErroSintaticoException ex) {
     ex.mensagemContexto = "Erro na declaração de variável - ";
     erroSintatico(ex);
     panico(conjuntoSequencia.getConjunto(DECL_VARIAVEIS_MESMO_TIPO));
   }
 }