Sparsely totient number

From formulasearchengine
Revision as of 21:14, 21 January 2014 by en>Martarius (References: -spc)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Multiple issues

The Wirth-Weber relationship between a pair of symbols (VtVn) 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 the 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.

Formal definition

G=<Vn,Vt,S,P>

Precedence Relations Computing Algorithm

We will define three Sets for a symbol:


Note that Head*(X) is X if X is a terminal, and if X is a non-terminal, Head*(X) is the set with only the terminals belonging to Head+(X). This set is equivalent to First-set or Fi(X) described in LL parser

Note that Head+(X) and Tail+(X) are if X is a terminal.


The pseudocode for computing relations is:

  • RelationTable :=
  • For each production AαP
  • add(RelationTable,$Head+(S)) where S is the initial non terminal of the grammar, and $ is a limit marker
  • add(RelationTable,Tail+(S)$) where S is the initial non terminal of the grammar, and $ is a limit marker

Note that and are used with sets instead of elements as they were defined, in this case you must add all the cartesian product between the sets/elements

Examples

SaSSb|c

  • Head+(a) =
  • Head+(S) = { a, c}
  • Head+(b) =
  • Head+(c) =
  • Tail+(a) =
  • Tail+(S) = { b, c}
  • Tail+(b) =
  • Tail+(c) =
  • Head*(a) = a
  • Head*(S) = { a, c}
  • Head*(b) = b
  • Head*(c) = c

precedence table:

S a b c $
S =˙ =˙
a =˙
b
c
$