Wirth–Weber precedence relationship
The Wirth–Weber relationship between a pair of symbols is necessary to determine if a formal grammar is a simple precedence grammar, and in such case the simple precedence parser can be used.
The goal is to identify when the viable prefixes have the pivot and must be reduced. A means that the pivot is found, a means that a potential pivot is starting, and a means that we are still in the same pivot.We will define three sets for a symbol:
The pseudocode for computing relations is:
- RelationTable := ∅
- For each production
- * For each two adjacent symbols in
- ** add
- ** add
- ** add
- add where is the initial non terminal of the grammar, and $ is a limit marker
- add where is the initial non terminal of the grammar, and $ is a limit marker
Examples
- Head = ∅
- Head =
- Head = ∅
- Head = ∅
- Tail = ∅
- Tail =
- Tail = ∅
- Tail = ∅
- Head = a
- Head =
- Head = b
- Head = c
-
- * a Next to S
- **
- **
- ***
- ***
- * S Next to S
- **
- **
- ***
- ***
- **
- ***
- ***
- ***
- ***
- * S Next to b
- **
- **
- ***
- ***
-
- * there is only one symbol, so no relation is added.
;precedence table: