  Context-free S grammars are introduced, for arbitrary (storage) type S, as a
uniform framework for recursion-based grammars, automata, and transducers,
viewed as programs. To each occurrence of a nonterminal of a context-free S
grammar an object of type S is associated, that can be acted upon by tests and
operations, as indicated in the rules of the grammar. Taking particular storage
types gives particular formalisms, such as indexed grammars, top-down tree
transducers, attribute grammars, etc. Context-free S grammars are equivalent to
pushdown S automata. The context-free S languages can be obtained from the
deterministic one-way S automaton languages by way of the delta operations on
languages, introduced in this paper.
