Guarded attribute grammars

Contrary to a widely‐held belief, it is possible to construct executable specifications of language processors that use a top‐down parsing strategy and which have structures that directly reflect the structure of grammars containing left‐recursive productions. A novel technique has been discovered by which the non‐termination that would otherwise occur is avoided by ‘guarding’ top‐down left‐recursive language processors by non‐left‐recursive recognizers. The use of a top‐down parsing strategy increases modularity and the use of left‐recursive productions facilitates specification of semantic equations. A combination of the two is of significant practical value because it results in modular and expressively clear executable specifications of language processors. The new approach has been tested in an attribute grammar programming environment that has been used in a number of projects including the development of natural language interfaces, SQL processors and circuit design transformers within a VLSI design package.