Jeffery explains the need for a new type of error message generation system for LR parsers. Yet another compiler-compiler (YACC)-generated parsers support error messages by either adding error productions or synchronizing error diagnostics with parse states. The former approach is problematic: it clutters the grammar, inhibits manageability, and may cause cascading errors and detrimental reduce/reduce conflicts. The latter approach ties error messages directly to parse states, and introduces maintenance problems: as grammars change, parse states change. Different YACC implementations also represent a grammar with different parse states.
The author describes the meta error generator (MERR), which synchronizes error messages with parse states in YACC-generated parsers while keeping the two separate. MERR enables the compiler designer to specify code fragments and error messages to be generated by the parser when encountering these fragments. It generates a table of (state, token) pairs and associated error messages for the parser to output when a pair is encountered. Pairs not present in the table generate default error messages.
MERR is an attempt to raise the lowest common denominator. It succeeds, presenting a simple yet effective solution to problems in YACC-style error message generation. However, Jeffery overlooks the issue of whether MERR truly reduces maintenance problems, since as grammars change, some code fragments will likely become outdated.
The presentation in the paper is clear and concise, and uses effective examples, except in the few instances where LR parsing terms are used imprecisely, or where the author conflates MERRs use with YACC-style parser generators with other LR parser generators.