Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 3240 – Chapter 6.  6.1: Simplifying Grammars  Substitution  Removing useless variables  Removing λ  Removing unit productions  6.2: Normal Forms.

Similar presentations


Presentation on theme: "CS 3240 – Chapter 6.  6.1: Simplifying Grammars  Substitution  Removing useless variables  Removing λ  Removing unit productions  6.2: Normal Forms."— Presentation transcript:

1 CS 3240 – Chapter 6

2  6.1: Simplifying Grammars  Substitution  Removing useless variables  Removing λ  Removing unit productions  6.2: Normal Forms  Chomsky Normal (CNF)  6.3: A Membership Algorithm  CYK Algorithm  An example of bottom-up parsing CS 3240 - Normal Forms for Context-Free Languages2

3  Variables in CFGs can often be eliminated  If they are not recursive, you can substitute their rules throughout  See next slide CS 3240 - Normal Forms for Context-Free Languages3

4 4 A ➞ a | aaA | abBc B ➞ abbA | b Just substitute directly for B: A ➞ a | aaA | ababbAc | abbc

5  A variable is useless if:  It can’t be reached from the start state, or  It never leads to a terminal string ▪ Due to endless recursion  Both problems can be detected by a dependency graph  See next slide CS 3240 - Normal Forms for Context-Free Languages5

6 6 S ➞ aSb | A | λ A ➞ aA A is useless (non-terminating): S ➞ aSb | λ

7 CS 3240 - Normal Forms for Context-Free Languages7 S ➞ A A ➞ aA | λ B ➞ bA B is useless (non-reachable): S ➞ A A ➞ aA | λ

8 CS 3240 - Normal Forms for Context-Free Languages8 Simplify the following: S ➞ aS | A | C A ➞ a B ➞ aa C ➞ aCb

9 CS 3240 - Normal Forms for Context-Free Languages9

10 10 Simplify the following grammar: S ➞ AB | AC A ➞ aAb | bAa | a B ➞ bbA | aaB | AB C ➞ abCa | aDb D ➞ bD | aC

11  Any variable that can eventually terminate in the empty string is said to be nullable  Note: a variable may be indirectly nullable  In general: if A ➞ V 1 V 2 …V n, and all the V i are nullable, then A is also nullable ▪ See Theorem 6.3 CS 3240 - Normal Forms for Context-Free Languages11

12 CS 3240 - Normal Forms for Context-Free Languages12 Consider the following grammar: S ➞ a | Xb | aYa X ➞ Y | λ Y ➞ b | X Which variables are nullable? How can we substitute the effect of λ before removing it?

13  First find all nullable variables  Then substitute (A + λ) for every nullable variable A, and expand  Then remove λ everywhere from the grammar  What’s left is equivalent to the original grammar  except the empty string may be lost  we won’t worry about that CS 3240 - Normal Forms for Context-Free Languages13

14 CS 3240 - Normal Forms for Context-Free Languages14 Consider the following grammar (again): S ➞ a | Xb | aYa X ➞ Y | λ Y ➞ b | X How can we substitute the effect of λ before removing it?

15 S → aSbS | bSaS | λS → aSa | bSb | X X → aYb | bYa Y → aY | bY | λ CS 3240 - Normal Forms for Context-Free Languages15

16  Unit Productions often occur in chains  A ➞ B ➞ C  Must maintain the effect of B and C when substituting for A throughout  Procedure:  Find all unit chains  Rebuild grammar by: ▪ Keeping all non-unit productions ▪ Keeping only the effect of all unit productions/chains CS 3240 - Normal Forms for Context-Free Languages16

17 CS 3240 - Normal Forms for Context-Free Languages17 S ➞ A | bb A ➞ B | b B ➞ S | a Note that S ⇒ * {A,B}, A ⇒ * {B,S}, B ⇒ * {S,A} Giving: S ➞ bb | b | a// Added non-unit part of A and B A ➞ b | a | bb// Added non-unit part of B and S B ➞ a | bb | b// Added non-unit part of S and A

18  1) Determine all variables reachable by unit rules for each variable  2) Keep all non-unit rules  3) Substitute non-unit rules in place of each variable reachable by unit productions CS 3240 - Normal Forms for Context-Free Languages18

19 CS 3240 - Normal Forms for Context-Free Languages19 S ➞ aA A ➞ BB B ➞ aBb | λ Now remove nulls and see what happens…. (Also see the solution for #15 in 6.1)

20 CS 3240 - Normal Forms for Context-Free Languages20 S ➞ AB A ➞ B B ➞ aB | BB | λ

21  Do things in the following recommended order:  Remove nulls  Remove unit productions  Remove useless variables  Simplify by substitution as desired CS 3240 - Normal Forms for Context-Free Languages21

22  Very important for our purposes  All CNF rules are of one of the following two forms:  A ➞ c(a single terminal)  A ➞ XY(exactly two variables)  Must begin the transformation after simplifying the grammar (removing λ, all unit productions, useless variables, etc.) CS 3240 - Normal Forms for Context-Free Languages22

23 CS 3240 - Normal Forms for Context-Free Languages23 Convert to CNF: S ➞ bA | aB A ➞ bAA | aS | a B ➞ aBB | bS | b (NOTE: already has no nulls or units)

24 CS 3240 - Normal Forms for Context-Free Languages24 Convert the following grammar to CNF: S ➞ abAB A ➞ bAB | λ B ➞ BAa | A | λ

25 CS 3240 - Normal Forms for Context-Free Languages25 Convert the following grammar to CNF: S ➞ aS | bS | B B ➞ bb | C | λ C ➞ cC | λ

26  Single terminal character followed by zero or more variables (cV *, c ∈ Σ )  V → a  V → aBCD…  λ allowed only in S → λ  Sometimes need to make up new variable names CS 3240 - Normal Forms for Context-Free Languages26

27 CS 3240 - Normal Forms for Context-Free Languages27 S → AB A → aA | bB | b B → b Substitute for A in first rule (i.e., add B to each rule for A): S → aAB | bBB | bB The other rules are okay

28 CS 3240 - Normal Forms for Context-Free Languages28 S → abSb |aa Add rules to generate a and b: S → aBSB |aA A → a B → b

29  The “parsing” problem  How do we know if a string is generated by a given grammar?  Bottom-up parsing (CYK Algorithm)  An Example of Dynamic Programming  Requires Chomsky Normal Form (CNF)  Start by considering A ➞ c rules  Build up the parse tree from there CS 3240 - Normal Forms for Context-Free Languages29

30 CS 3240 - Normal Forms for Context-Free Languages30 S ➞ XY X ➞ XA | a | b Y ➞ AY | a A ➞ a Does this grammar generate “baaa”?

31 CS 3240 - Normal Forms for Context-Free Languages31 CNF yields binary trees. (Can you find a third parse tree?)

32 CS 3240 - Normal Forms for Context-Free Languages32 S ➞ XY X ➞ XA | a | b Y ➞ AY | a A ➞ a Stage 1: b ⇐ X a ⇐ X, Y, A Stage 2: ba ⇐ X(X,Y,A) = XX, XY, XA ⇐ S, X aa ⇐ (X,Y,A)(X,Y,A) = XX, XY, XA, YX, YY, YA, AX, AY, AA ⇐ S, X, Y Stage 3: baa ⇐ ba a ⇐ (S,X)(X,Y,A) = SX, SY, SA, XX, XY, XA = S, X baa ⇐ b aa ⇐ X(S,X,Y) = XS, XX, XY = S aaa ⇐ aa a ⇐ (S,X,Y)(X,Y,A) = _________ aaa ⇐ a aa ⇐ (X,Y,A)(S,X,Y) = _________ Stage 4: (you finish…) baaa: b aaa ⇐ __________

33 CS 3240 - Normal Forms for Context-Free Languages33

34 CS 3240 - Normal Forms for Context-Free Languages34

35 CS 3240 - Normal Forms for Context-Free Languages35

36 CS 3240 - Normal Forms for Context-Free Languages36

37 CS 3240 - Normal Forms for Context-Free Languages37 Does the following grammar generate “abbaab”? S ➞ SAB | λ A ➞ aA | λ B ➞ bB | λ


Download ppt "CS 3240 – Chapter 6.  6.1: Simplifying Grammars  Substitution  Removing useless variables  Removing λ  Removing unit productions  6.2: Normal Forms."

Similar presentations


Ads by Google