[Code]
The ALE phrase structure processing component is loosely based
on a combination of the functionality of the PATR-II system and
the DCG system built into Prolog. Roughly speaking, ALE
provides a system like that of DCGs, with two primary
differences. The first difference stems from the fact that ALE
uses attribute-value logic descriptions of typed feature structures
for representing categories and their parts, while DCGs use
first-order terms (or possibly cyclic variants thereof). The second
primary difference is that ALE's parser uses a bottom-up active
chart parsing algorithm and a semantic-head-driven generator rather
than encoding grammars directly as Prolog clauses and evaluating them
top-down and depth-first. In the spirit of DCGs, ALE
allows definite clause procedures to be attached and evaluated at
arbitrary points in a phrase structure rule, the difference being that
these rules are given by definite clauses in ALE's logic
programming system, rather than directly in Prolog.
Phrase structure grammars come with two basic components, one for describing lexical entries and empty categories, and one for describing grammar rules. We consider these components in turn.