This paper presents an approach toward the optimization of parallel object-oriented libraries. ROSE(1) is a tool for building source-to-source preprocessors, ROSETTA is a tool for defining the grammars used within ROSE. The definition of the grammars directly determines what can be recognized at compile time. ROSETTA permits grammars to be automatically generated which are specific to the identification of abstractions introduced within object-oriented libraries. Thus the semantics of complex abstractions defined outside of the C++ language can be leveraged at compile time to introduce library specific optimizations. The details of the optimizations performed are not a part of this paper and are up to the library developer to define using ROSETTA and ROSE to build such an optimizing preprocessor. Within performance optimizations, if they are to be automated, the problems of automatically locating where such optimizations can be done are significant and most often overlooked. Note that a novel part of this work is the degree of automation. Thus library developers can be expected to be able to build their own specialized compilers with a minimal compiler background. The resulting compilers don't extend the C++ language, but only extend the compiler's ability to recognize and leverage the use of user-defined library abstractions within an application to perform optimizations. For completeness, an example optimizing preprocessor for a parallel array class library is included to demonstrate the complete use of ROSETTA and ROSE to build an optimizing preprocessor. These results combine the use of the recognition techniques presented in this paper with those of a preprocessor-based transformation approach. The specification of transformations and the details of the construction of full preprocessors is outside the scope of this short paper, however some details of the compiler infrastructure we are using can be found in ROSE.