Defining parsing- and generation problems as goals implies that the parser will enumerate all feature structures that have a compatible value for the phon attribute; and similarly such a generator will enumerate feature structures that have a compatible value for the sem attribute. This approach faces a number of problems however. For example, consider the generation problem for a grammar that defines among others the following signs:
For a given logical form
the generator delivers the strings ``the priest drinks'' and ``the
priest drinks whisky'', and perhaps also ``the priest drinks strong
cheap whisky from a brown paper bag''. On the other hand, the
generator also delivers ``the priest drinks'' for the logical form
2.5
A related problem can be illustrated with respect to parsers. For example, in parsers for Definite Clause Grammars [65] strings are (usually) represented by difference lists; for example `the priest drinks from a brown paper bag' is represented as:
However, the parser usually does not expect to find an input goal such as:
but instead expects the tail variable of the difference list to be instantiated with some
constant (often the empty list: []), eg:
This `trick' simplifies the parser considerably because it is now
impossible to further instantiate the tail variable. Most DCG
parsers will not terminate without this convention because
these parsers will try to further instantiate the variable tail by
longer and longer lists of words.