190 likes | 360 Views
Context-Free Grammars – Derivations. Lecture 15 Section 2.1 Mon, Sep 24, 2007. Context-Free Grammars. A context-free grammar is a grammar whose rules have the following properties: The left-hand is a single variable. The right-hand side is any string of variables and terminals. Example.
E N D
Context-Free Grammars – Derivations Lecture 15 Section 2.1 Mon, Sep 24, 2007
Context-Free Grammars • A context-free grammar is a grammar whose rules have the following properties: • The left-hand is a single variable. • The right-hand side is any string of variables and terminals.
Example • Let V and be • V = {E}, • = {a, b, c, +, *, (, )}. • Let R be • E E + E | E * E | (E) | a | b | c
Examples • Find CFGs for the following languages. • {anbn | n 0} • {anbm | nm 0} • {anbm | mn 0}
Equal No. of a’s and b’s • Find CFGs for the language {w | w contains an equal number of a’s and b’s}
Equal No. of a’s and b’s • Let w be a string with an equal number of a’s and b’s. • There are four cases: • w = aza • w = azb • w = bza • w = bzb.
Equal No. of a’s and b’s • In each case, what do we know about z?
Equal No. of a’s and b’s • In the cases azb and bza, z is again a string with an equal number of a’s and b’s.
Equal No. of a’s and b’s • In the cases aza and bzb, the string w must necessarily split into a concatenation of strings w1w2, where w1 and w2 each have an equal number of a’s and b’s. • Why?
Derivations • A string uyields a string v if we can apply a grammar rule to u and get v. • We write u v.
Derivations • We say that uderivesv if there is a sequence u1, u2, …, uk (k 0), where u = u1, v = uk, and u1 u2 … uk. • We write u * v. • The sequence is called a derivation.
Leftmost and Rightmost Derivations • A leftmost derivation is a derivation in which, at each step, the leftmost variable is replaced with a string. • Similarly for a rightmost derivation.
Example • Using the grammar SSS | aSb | bSa | find leftmost and rightmost derivations of abab.
Ambiguity • Some grammars provide more than one way to derive a string. • For example, abab can be derived in two different ways using the grammar rules SSS | aSb | bSa | • (Typically the leftmost and rightmost derivations are different.)
Ambiguity • If a language contains a string that has more than one leftmost derivation, then the grammar is ambiguous. • If every grammar for a language is ambiguous, then the language is inherently ambiguous.
Ambiguity • Consider again the grammar rules SSS | aSb | bSa | • Suppose that, for every string, we need to associate with each a a unique b. • Does the grammar show us how to do this?
Ambiguity • Consider the grammar E E + E | E * E | (E) | a | b | c • Derive the string a + b * c in two different ways. • Is this grammar ambiguous? • Is this language inherently ambiguous?
Ambiguity • See Example 2.4 on p. 103 an unambiguous grammar for this language.