Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 13

Parse Trees

Section 3.2
Wed, Oct 20, 2004
Parse Trees
 Given a derivable string, we may represent the
derivation by a parse tree.
 A parse tree is a tree with the following properties.
 At the root node is the start symbol S.
 At each node, the children (from left to right) are the
symbols on the right hand side (from left to right) of the
production rule that was used.
 Two derivations are equivalent if they have the same
parse tree.
Example of a Parse Tree
 Let the grammar G be
 S → AB
 A → aAb | e
 B → bB | e
 Let the string be w = aabbbb.
 Write the parse tree of w.
Parse Tree of aabbbb

A B

a A b b B

a A b b B

e e
Derivations vs. Parse Trees
 This is the parse tree of many different, but
equivalent, derivations of aabbbb.
 For example,
 S  AB  aAbB  aaAbbB  aabbB
 aabbbB  aabbbbB  aabbbb.
 S  AB  AbB  AbbB  Abb
 aAbbb  aaAbbbb  aabbbb.
Similar Derivations
 The most minor difference between two derivations is
that two consecutive steps in one of them are reversed
in the other, and all other steps are the same.
 That is, at some point both derivations have derived a
string uAvBw, where u, v, w  V* and A and B are
nonterminals.
 One derivation next replaces A and then B, while the
other derivation next replaces B and then A.
Similar Derivations
 Let D1 be the derivation that replaces A, then B, and
let D2 be the derivation that replaces B, then A, and D1
and D2 are identical in all other steps.
 Then we say that D1 precedes D2, and we write
D1  D2.
 Now consider the reflexive, symmetric, transitive
closure of  and call this new relation similarity.
 Clearly, similarity is an equivalence relation.
Leftmost and Rightmost
Derivations
 A leftmost derivation of a string is a derivation that is
not preceded by any other derivation.
 That is, each production rule is applied to the leftmost
nonterminal in the string.
 A rightmost derivation of a string is a derivation that
does not precede any other derivation.
 That is, each production rule is applied to the
rightmost nonterminal in the string.
 For example, see the previous two derivations.
Ambiguous Grammars
 If there exists w  L(G) such that w has two different
parse trees, then G is ambiguous.
 For example, define G as
 S → AB | aSb | Sb | e
 A → aAb | e
 B → bB | e
 Then the string aabbbb has two different parse trees,
that is, two derivations that are not similar.
 What are they?
Inherently Ambiguous
Grammars
 It is obvious how to remove the ambiguity in the last
example.
 However, if the ambiguity cannot be removed, then
the language is called inherently ambiguous.
Example: An Inherently
Ambiguous Grammar
 Consider the following grammar of expressions using
addition and multiplication.
 EE+E
 EE*E
 E  (E)
 E  id
 The string E + E * E has two parse trees.
 What are they?
 Is there a difference in their “meaning” (semantics)?
 Can this ambiguity be removed?
Example: An Inherently
Ambiguous Grammar
 Consider a grammar for if statements without braces.
 The language includes both

if (condition) statement
and
if (condition) statement else statement
Example: An Inherently
Ambiguous Grammar
 Production rules
 S  if(c)S  if(c)S else S  SS  s  e
 There are two different parse trees for the string
if (c1) if (c2) s1 else s2
 What are they?
 Is there a difference in meaning?
 Can this ambiguity be removed?

You might also like