private boolean acessoMatriz() {
        //<acesso_matriz> ::= “[“ <indice> “]” <acesso_matriz> | λ
        //<indice> ::= <inteiro> | <id>
        boolean erro = false;

        if (!acabouListaTokens()) {
            nextToken();
            if (tipoDoToken[0].equals(" [")) {
                if (!acabouListaTokens()) {
                    nextToken();
                    if (tipoDoToken[0].equals("Numero Inteiro")) {
                        if (!acabouListaTokens()) {
                            nextToken();
                            if (tipoDoToken[1].equals(" ]")) {
                                erro = false;
                                if (!this.acessoMatriz()) {
                                    erro = true;
                                }

                            } else {
                                erro = true;
                                //erro falta colchete [ de matriz em argumento 
                            }
                        } else {
                            erro = true;
                            errosSintaticos.erroFimDeArquivo(tipoDoToken[3], tipoDoToken[1], "acessoMatriz");
                            zerarTipoToken();
                        }

                    } else {
                        erro = true;
                        //erro indice de matriz errado numero inteiro esperado encontrado token
                    }

                } else {
                    erro = true;
                    errosSintaticos.erroFimDeArquivo(tipoDoToken[3], tipoDoToken[1], "acessoMatriz");
                    zerarTipoToken();
                }

            } else {
                //argumento matriz faltando o [ 
                erro = true;
            }

        } else {
            erro = true;
            errosSintaticos.erroFimDeArquivo(tipoDoToken[3], tipoDoToken[1], "acessoMatriz");
            zerarTipoToken();
        }
        return erro;
    }