It is a long-standing goal of research in natural language processing to build a computational system with both the reactivity and flexibility of human language behavior. Toward that end, we introduce an abstract processing element that learns new language operators by compiling a sequence of actions produced through generate-and-test. Through learning, the basic building block converts language knowledge which is accessible through search into an integrated, recognitional form based on experience. We demonstrate how the building-block abstraction can be deployed repeatedly and recursively to create an efficient but flexible comprehension and generation capability within a unified framework (NLS). We argue for the efficacy of our approach on both theoretical and practical grounds and give brief overviews of five systems in which NLS has been embedded as evidence of that efficacy.