WG211/M12Wyk
Debugging Attribute Grammar Specifications
Debugging attributes grammar specifications is a challenge since the order in which attribute equations are evaluated is not always intuitive to the writer of the specifications. Similar challenges arise in debugging lazy functional programs. Algorithmic debugging is a technique that was originally developed for debugging logic programs that holds some promise for debugging attribute grammars.
This technique supports the debugger in searching a post-mortem execution trace of the program by asking the user if certain sub-computations were correct. In applying this to attribute grammars the execution tree becomes a directed acyclic graph in which the nodes are attribute instances and the edges are attribute dependencies.
In this talk I'll show an implementation of a debugger for attribute grammars and also describe some challenges and possible solutions to applying algorithmic debugging to attribute grammars.