< < "S", 0, 7 >, [
         < < "A", 0, 2 >, [
             < < "T", 0, 1 >, [ ] >,
             < < "U", 1, 2 >, [ ] >
         ] >,
         < < "B", 2, 2 >, [ ] >,
         < < "C", 2, 3 >, [
             < < "V", 2, 3 >, [ ] >
         ] >,
         < < "D", 3, 5 >, [
             < < "W", 3, 4 >, [ ] >,
             < < "X", 4, 5 >, [ ] >
         ] >,
         < < "E", 5, 7 >, [
             < < "Y", 5, 6 >, [ ] >,
             < < "Z", 6, 7 >, [ ] >
         ] >
      ] >
In the tree above, we use symbol names (for example, "S")
as symbol IDs.
Since we have not used the same symbol twice, we will be able to
refer to a node by its symbol name.
In practical parse trees, symbols usually occur many times.
Node S has 5 children.
Node A has 2 children.
Node B has no children and is a nulled node.
Nodes T, U, V, W, X,
Y, and Z
are terminal nodes.
Nodes
S,
A,
C,
D, and
E
are BNF rule nodes.
The tree implies a grammar with at least
the following rules:
    S ::= A B C D E
    A ::= T U
    B ::=
    C ::= V
    D ::= W X
    E ::= Y Z
The tree derives the sentence
T U V W X Y X
and can do so in several ways. One is these is its rightmost derviation:
    S -> A B C D E
      -> A B C D Y Z
      -> A B C W X Y Z
      -> A B V W X Y Z
      -> A V W X Y Z
      -> T U V W X Y Z
This is called the rightmost derviation because, at each derivation step, the symbol that is expanded is the rightmost symbol possible. There is also a leftmost derivation:
    S -> A B C D E
      -> T U B C D E
      -> T U C D E
      -> T U V D E
      -> T U V W X E
      -> T U V W X Y Z