A grammar G as defined above is a definite clause specification of the relation sign/1. Such a grammar defines what possible linguistic objects are. Each of these objects, or signs, will be specified among several dimensions. For example, a grammar for English may define that the sentence `Mexican priests drink whisky' is a sign of English, i.e. one of the answers to the goal
may be something like the following:
Given a grammar, the parsing problem consists of a specification of a string. Parsing then enumerates the signs which have this string as their value of the attribute phon. A generation problem consists of a specification of a semantic representation. A generator then enumerates the signs which have this semantic representation as the value of their sem attribute. Instead of the paths phon and sem we may of course use any other paths. Both the parsing problem and the generation problem can be defined as a goal. For example, the problem to parse `priests drink mexican whisky' may be defined as the following goal:
Similarly, the generation problem, defined by a number of constraints, for example looks as:
It is of course possible to add other constraints such as the syntactic category of the signs we are interested in. A typical example of a generation goal is:
Therefore, the unrestricted parsing problem consists of a grammar G and the goal
The answer to the unrestricted parsing problem is an answer to this goal with respect to the grammar. This notion is introduced to compare it with several `restricted' versions later in this section.