Building a compiler is a difficult task. In particular, the operations concerni- ing the stack of semantic attributes in a LR(k) compiler tend to have logical bugs which are hard to discover. In their paper the authors present a methodology which helps document just this aspect of a compiler in a simple way. The idea is to adopt a notation similar to that of attribute grammars in an environment where one does not make any use of a parser generator.
The methodology is called FEDD (Front End Design and Documentation); it can be used for checking by hand the correctness of the aspects of a LR(k) compile- r. There are some additional constraints on the notation of attributed grammars which ensure the correctness (e.g, uniformness: each grammar symbol has the same set of attributes in any occurrence). FEDD deals with global variables used in a compiler, too. It ensures that no value is destroyed before its use and that every value that is produced will also be used.
The authors used their method in both academic and industrial environments and found that it led to a substantial improvement in compiler writing efficiency. The paper is easy to read and gives a lot of examples.