L-attributed grammar: Difference between revisions

From testwiki
Jump to navigation Jump to search
imported>Uzume
top: s2cid
 
(No difference)

Latest revision as of 06:50, 17 July 2020

Template:More citations L-attributed grammars are a special type of attribute grammars.[1] They allow the attributes to be evaluated in one depth-first left-to-right traversal of the abstract syntax tree. As a result, attribute evaluation in L-attributed grammars can be incorporated conveniently in top-down parsing.

A syntax-directed definition is L-attributed if each inherited attribute of Xj on the right side of AX1,X2,,Xn depends only on

  1. the attributes of the symbols X1,X2,,Xj1
  2. the inherited attributes of A (but not its synthesized attributes)

Every S-attributed syntax-directed definition is also L-attributed.

Implementing L-attributed definitions in Bottom-Up parsers requires rewriting L-attributed definitions into translation schemes.

Many programming languages are L-attributed. Special types of compilers, the narrow compilers, are based on some form of L-attributed grammar. These are a strict superset of S-attributed grammars. Used for code synthesis.

Either "inherited attributes" or "synthesized attributes" associated with the occurrence of symbol X1,X2,,Xn.

References

Template:Reflist