Weak precedence is a modification of Wirth-Weber "simple precedence" (which they introduced in a paper defining the language EULER). A simple precedence parser uses Boolean matrices to define three relations that can exist between any two symbols in the grammar, usually represented as <, =, and >. The algorithm reads the input, looking up the pairwise relations in tables generated from the Boolean matrices, and inserting the appropriate relation between each two symbols. When a > relation is discovered, the parser looks backward to the nearest < relation. The symbols between those constitute the right-hand side of a production in the grammar, which is then replaced by the nonterminal symbol on the left side of that production, and the parsing continues.
Problems occur when more than one relation can hold between two consecutive symbols. When this occurs, the grammar must be changed (usually by introducing new nonterminals) to keep the relationships clean, or the attempt to find a simple precedence grammar for the language must be abandoned. Jean Ichbiah and Steve Morse realized that this problem could be reduced by eliminating one of the relations, and they called the result "weak precedence." In a weak precedence parser, the only significant relation is >. Symbols in the input are processed until a > relation is found, then the series of symbols leading up to that is matched against the right-hand sides of all productions, with the longest possible match being taken. Reduction then occurs as in simple precedence, and parsing continues.
It is obvious that any simple precedence grammar is automatically also a weak precedence grammar. There are grammars, though, that are not simple precedence but are weak precedence grammars, so weak precedence is more powerful than simple precedence.