I became interested in the problem of bidirectional processing when I constructed a conversational agent (Seal.bot) with an automated reasoner as back end, for use in a class that I teach. Standard textbooks contained familiar solutions for everything except generation - and, in particular, how to reverse the complicated pipeline that leads from parse tree to Clause Normal Form (CNF), which provides the basic input and output for a resolution-based reasoner.
I invented my own solution, which involved short-circuiting the pipeline. The idea is to use a single parse tree that simultaneously represents both the (LF) structure of the English sentence and the syntactic parse tree of the CNF translation. (One may view this as a particularly simple instance of tree transduction.) Then generation is reduced to parsing: generation is implemented by running the same parser with the same grammar as in parsing, but giving it the CNF words rather than the English words as input .
I have collaborated with Ezra Keshet in examining the semantic consequences of using CNF for translation. Other next steps are to induce a large-scale grammar to drive the parser/generator; to substantially extend the semantic fragment, especially to generalized quantifiers; and to add pragmatics.