Class7

3,600 views
3,484 views

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,600
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Class7

  1. 1. Context-Free Languages Derivation tree, parsing, & ambiguity context free grammar and ambiguity 1
  2. 2. n n R {a b } {ww } Regular Languages context free grammar and ambiguity 2
  3. 3. Context-Free Languages n n R {a b } {ww } Regular Languages context free grammar and ambiguity 3
  4. 4. Context-Free Languages Context-Free Pushdown Grammars Automata stack automaton context free grammar and ambiguity 4
  5. 5. Context-Free Grammars context free grammar and ambiguity 5
  6. 6. n n L(G ) {a b : n 0} is not regular …. (((( )))) we relax the restriction of regular grammar context free grammar and ambiguity 6
  7. 7. n n L(G ) {a b : n 0} is not regular …. A context-free grammar G : S aSb S The grammar G is linear but not regular. context free grammar and ambiguity 7
  8. 8. n n L(G ) {a b : n 0} is not regular …. Regular grammar (e.g., a right linear grammar): A XB or A  X where A, B V, and X T* Context Free A  X where X (V T)* Grammar context free grammar and ambiguity 8
  9. 9. Def. Context-Free Grammars (CFG) Grammar G (V , T , S , P ) Variables Terminal Start symbols variable Productions of the form: A x x is string of variables and terminals Note: A regular grammar is a regular grammar. context free grammar and ambiguity 9
  10. 10. Def. Context-Free Languages (CFL) A language L is context-free if and only if there is a context free grammar G with L L (G ) Note: To show L is a CFL find a CFG for L. Note: A regular language is also a CFL. context free grammar and ambiguity 10
  11. 11. n n is a Context-Free L(G ) {a b : n 0} Language with context-free grammar G: S aSb S A derivation: S aSb aaSbb aaaSbbb aaabbb context free grammar and ambiguity 11
  12. 12. Another Example A context-free grammar G: S aSa S bSb A derivation: S S aSa abSba abaSaba abaaba R L(G ) {ww : w {a, b}*} is a Context-Free Language context free grammar and ambiguity 12
  13. 13. A non Linear Examples A context-free grammar G: S aSb S SS S What is the L(G)? A derivation: S SS aSbS abS abaSb abaaSbb abaabb () (( )) context free grammar and ambiguity 13
  14. 14. S aSb S SS S () ((( ))) (( )) L(G ) {w : na ( w) nb ( w), and na (v) nb (v) in any prefix v} How to prove the given grammar indeed generates the language? Homework #4 only shows L(G) L. context free grammar and ambiguity 14
  15. 15. L(G) L: by induction on the number of steps in deriving a sentential form Any sentential form obtained from the grammar G: if by one step (rule2 & 3 do not generate any terminal symbols at all, i.e. na(w)=nb(w) = 0, thus is true; if it is from rule 1: SaSb, then it satisfies the condition of na(w)=nb(w) and the prefix condition. Assume any sentential obtained from n steps it is true, Now assume a sentential form of (n+1) steps: if the last step is by rule 2 or 3, then no new symbols is added, therefore it satisfies the condition since it satisfies on previous step; it the last step is by rule 1, then as can be seen that a is added before b is added (from left to right), thus the prefix condition is also satisfied. L L(G): by induction on |w|, w L. By observing the definition of L, w L then |w| is even, let |w|=2n. and if |w| >= 2, w = a…..b (the first symbol is a and the last symbol is b). |w|=0: then w= , then w L(G). Assume |w|=2n, w L(G) is true for n >= 0. Now |w| = 2n+2, then w=aub with |u|=2n, and u L. by induction assumption, u L(G), i.e. there exist a derivation s * u, thus S aSb * aub = w. context free grammar and ambiguity 15
  16. 16. Show L={anbmcn: n, m 0 } is CF. Show L={anbncm: n, m 0 } is CF. context free grammar and ambiguity 16
  17. 17. True or False If L is not regular then L is context free. If L is not context free then L is not regular From grammar G: S AB, A aA| , B bB| , thus L(G) is CF & not regular. context free grammar and ambiguity 17
  18. 18. Examples of showing languages are Context Free Show { anbm : n = m+3} is CF. Show { anbm : n m+3} is CF. Try hw # 7 (a) ~ (d) p.133 context free grammar and ambiguity 18
  19. 19. {anbm: n m+3} S1 is for n> m+3 & S2 is for n < m+3 & S  S1 | S2 S1: n m+4, i.e., n = m+t for t=4, 5, 6, …, i.e. anbm= am+tbm: thus, S1  aaaaB | aS1, B bB | . S2: n m+2, i.e, n+t =m+2, m = n-2 + t for t=0, 1, 2, …, i.e, anbm= anbn-2+t for t=0,1,2, … which implies anbm= anbn-2 , anbn-1 , anbn , anbn+1 , anbn+2 , .... (anbn-2 :) D  aa K, K aKb | ; (anbn-1:) E aK; (anbn , anbn+1 , anbn+2 , .... ) F Fb | K; and S2  D | E | F
  20. 20. Examples of showing languages are Context Free Show { w: na(w) = nb(w)} is CF. Show { w: na(w) > nb(w)} is CF. Show { w: na(w) = 2 nb(w)} is CF. Try hw # 7 (e) ~ (g) p.133 context free grammar and ambiguity 20
  21. 21. S aSb | bSa |SS| (for na = nb) S1 for na(w) >nb(w) S1 aS1 | aS | SS1 { w {a,b,c}*: |w|=3na(w)} E  aEbEc | aEcEb | bEaEc | bEaEc | cEaEb | cEbEa | EE | (this is for na = nb = nc) S  aEKEK | KEaEK | KEKEa K  b | c. context free grammar and ambiguity 21
  22. 22. Derivation Order for w = aab in the CFG: 1. S AB 2. A aaA 4. B Bb 3. A 5. B Leftmost derivation: 1 2 3 4 5 S AB aaAB aaB aaBb aab Rightmost derivation: 1 4 5 2 3 S AB ABb Ab aaAb aab context free grammar and ambiguity 22
  23. 23. Derivation Trees Another way of showing derivation, independent of the order in which productions are used. context free grammar and ambiguity 23
  24. 24. S AB A aaA | B Bb | S AB S A B Every node to its children is corresponding to a production rule in the grammar context free grammar and ambiguity 24
  25. 25. S AB A aaA | B Bb | S AB aaAB S A B a a A context free grammar and ambiguity 25
  26. 26. S AB A aaA | B Bb | S AB aaAB aaABb S A B a a A B b context free grammar and ambiguity 26
  27. 27. S AB A aaA | B Bb | S AB aaAB aaABb aaBb S A B a a A B b context free grammar and ambiguity 27
  28. 28. S AB A aaA | B Bb | S AB aaAB aaABb aaBb aab S A Derivation Tree A B a a A B b Every leaf has a label from T { } context free grammar and ambiguity 28
  29. 29. S AB A aaA | B Bb | S AB aaAB aaABb aaBb aab Derivation Tree S A B yield a a A B b aa b aab context free grammar and ambiguity 29
  30. 30. derivation order doesn’t matter Leftmost: S AB aaAB aaB aaBb aab Rightmost: S AB ABb Ab aaAb aab S Same derivation tree A B a a A B b context free grammar and ambiguity 30
  31. 31. S AB A aaA | B Bb | S Derivation Tree shows which rules are A B used in obtaining a w, but do not give the order of their applications. a a A B b We can find the corresponding left-most or right-most derivations from a given derivation tree easily. context free grammar and ambiguity 31
  32. 32. Partial Derivation Trees Every leaf has a label from T { } V S AB A aaA | B Bb | The yield of a partial derivation S AB tree a sentential form of a derivation Partial derivation S tree with root S A B context free grammar and ambiguity 32
  33. 33. sentential S AB aaAB form Partial derivation S tree with root S A B yield a a A aaAB context free grammar and ambiguity 33
  34. 34. G: A CFG then Thm. 5.1 on p.132 Every w L(G) there exists a derivation tree with yield = w. a deriation with the sentential form w Conversely, the yield of any derivation tree w, w L(G) partial derivation tree tG (with root S), w Homework for 5.1 (p.133) : 2~5, 7, 8, 11, 13~24 Hand in: 7bef, 8bdg, 13, 15, 17, 18, 21 Prove by induction on the number of steps in the derivation. Check with the book on p.132. context free grammar and ambiguity 34
  35. 35. Ambiguity context free grammar and ambiguity 35
  36. 36. E E E | E E | (E) | a a a a leftmost derivation E E E E a E a E E a a E a a*a E E a E E a a context free grammar and ambiguity 36
  37. 37. E E E | E E | (E) | a a a a leftmost derivation E E E E E E a E E E a a E a a a E E E E a a a context free grammar and ambiguity 37
  38. 38. E E E | E E | (E) | a a a a Two derivation trees E E E E E E a E E E E a a a a a context free grammar and ambiguity 38
  39. 39. The grammarE E E | E E | (E) | a is ambiguous: Because a string of L(G) has two derivation trees E E a a a E E E E a E E E E a a a a a context free grammar and ambiguity 39
  40. 40. Or we can say A grammar is ambiguous…. context free grammar and ambiguity 40
  41. 41. The grammarE E E | E E | (E) | a is ambiguous: There are two different leftmost derivations for a a a E E E a E a E E a a E a a*a E E E E E E a E E a a E a a a context free grammar and ambiguity 41
  42. 42. Definition: A context-free grammar G is ambiguous if some string w L(G ) has two or more derivation trees context free grammar and ambiguity 42
  43. 43. In other words: A context-free grammar G is ambiguous if some string w L(G ) has: two or more leftmost derivations (or rightmost) context free grammar and ambiguity 43
  44. 44. Why do we care about ambiguity? a a a take a 2 E E E E E E a E E E E a a a a a context free grammar and ambiguity 44
  45. 45. 2 2 2 E E E E E E 2 E E E E 2 2 2 2 2 context free grammar and ambiguity 45
  46. 46. 2 2 2 6 2 2 2 8 6 8 E E 2 4 4 2 E E E E 2 2 2 2 2 E E E E 2 2 2 2 2 context free grammar and ambiguity 46
  47. 47. Correct result: 2 2 2 6 6 E 2 4 E E 2 2 2 E E 2 2 context free grammar and ambiguity 47
  48. 48. • Ambiguity is bad for programming languages • We want to remove ambiguity context free grammar and ambiguity 48
  49. 49. We fix the ambiguous grammar: E E E | E E | (E) | a New non-ambiguous grammar: E E T E T T T F T F F (E) context free grammar and ambiguity F a 49
  50. 50. E E T T T F T a T a T F a F F a a F a a a E a a a E E T E T E T T T F T T F T F F F a F (E) F a a a context free grammar and ambiguity 50
  51. 51. Unique derivation tree E a a a E T T T F F F a a a context free grammar and ambiguity 51
  52. 52. The grammar G: E E T E T T T F T F F (E) F a is non-ambiguous: i.e. EVERY stringw L (G ) has a unique derivation tree context free grammar and ambiguity 52
  53. 53. Inherent Ambiguity Some context free languages have only ambiguous grammars Example: n n m n m m L {a b c } {a b c } S S1 | S2 S1 S1c | A S2 aS2 | B A aAb | B bBc | context free grammar and ambiguity 53
  54. 54. n n n The string a b c has two derivation trees S S S1 S2 S1 c a S2 context free grammar and ambiguity 54
  55. 55. Compilers context free grammar and ambiguity 55
  56. 56. Machine Code Program Add v,v,0 v = 5; cmp v,5 if (v>5) jmplt ELSE x = 12 + v; THEN: while (x !=3) { Compiler add x, 12,v x = x - 3; ELSE: v = 10; WHILE: } cmp x,3 ...... ... context free grammar and ambiguity 56
  57. 57. A parser knows the grammar of the programming language Lexical Compiler parser analyzer input output machine program Lexical analyzer : analyze the given input code is composed of (identifier, or an expression, 57 or a statement, etc) context free grammar and ambiguity
  58. 58. Parser PROGRAM STMT_LIST STMT_LIST STMT; STMT_LIST | STMT; STMT EXPR | IF_STMT | WHILE_STMT | { STMT_LIST } EXPR EXPR + EXPR | EXPR - EXPR | ID IF_STMT if (EXPR) then STMT | if (EXPR) then STMT else STMT WHILE_STMT while (EXPR) do STMT context free grammar and ambiguity 58
  59. 59. The parser finds the derivation of a particular input derivation Parser input E => E + E E -> E + E => E + E * E 10 + 2 * 5 |E*E => 10 + E*E | INT => 10 + 2 * E => 10 + 2 * 5 context free grammar and ambiguity 59
  60. 60. derivation tree derivation E E => E + E E + E => E + E * E => 10 + E*E 10 E * E => 10 + 2 * E => 10 + 2 * 5 2 5 context free grammar and ambiguity 60
  61. 61. derivation tree E machine code E + E mult a, 2, 5 add b, 10, a 10 E * E 2 5 context free grammar and ambiguity 61
  62. 62. Parsing context free grammar and ambiguity 62
  63. 63. Parser input grammar derivation string context free grammar and ambiguity 63
  64. 64. Example: Parser S SS derivation input S aSb aabb ? S bSa S context free grammar and ambiguity 64
  65. 65. Exhaustive Search S SS | aSb | bSa | Phase 1: S SS Find derivation of S aSb aabb S bSa S All possible derivations of length 1 context free grammar and ambiguity 65
  66. 66. S SS aabb S aSb S bSa S context free grammar and ambiguity 66
  67. 67. Phase 2 S SS | aSb | bSa | S SS SSS S SS aSbS aabb Phase 1 S SS bSaS S SS S SS S S aSb S aSb aSSb S aSb aaSbb S aSb abSab S aSb ab context free grammar and ambiguity 67
  68. 68. Phase 2 S SS | aSb | bSa | S SS SSS S SS aSbS aabb S SS S S aSb aSSb S aSb aaSbb Phase 3 S aSb aaSbb aabb context free grammar and ambiguity 68
  69. 69. Final result of exhaustive search (top-down parsing) Parser S SS input S aSb aabb S bSa S What happen if derivation there is no such derivation existed? I.e. what if w L(G)? S aSb aaSbb aabb context free grammar and ambiguity 69
  70. 70. Is this searching method an algorithm? What if w L(G)? context free grammar and ambiguity 70
  71. 71. Time complexity of exhaustive search Suppose there are no productions of the form A : - production A B : unit - production Number of phases for string w : 2| w| So that after the execution of every phase, either (1) the sentential form has additional one or more terminal symbols; and/or (2) the length of the sentential form is increased by at least one. context free grammar and ambiguity 71
  72. 72. For grammar with k rules Time for phase 1: k k possible derivations context free grammar and ambiguity 72
  73. 73. Time for phase 2: k 2 k 2 possible derivations context free grammar and ambiguity 73
  74. 74. Time for phase 2 | w |: k 2|w| 2|w| possible derivations k context free grammar and ambiguity 74
  75. 75. Total time needed for string w: 2 2|w| k k  k phase 1 phase 2 phase 2|w| Extremely bad!!! context free grammar and ambiguity 75
  76. 76. There exist faster algorithms for specialized grammars Simple grammar: A ax ONE symbol V*: string from of variables such that pair ( A, a ) appears at most once context free grammar and ambiguity 76
  77. 77. S aS S-grammar example: S bSS S c Not an S-grammar: S aS S bSS | bS S context free grammar and ambiguity 77
  78. 78. Simple grammar: A ax Observe that if G is an S-grammar, then G has no productions like A : - production A B : unit - production In a derivation process for S-grammar, every phase will increase one terminal symbol. context free grammar and ambiguity 78
  79. 79. S aS S-grammar example: S bSS S c Find a (left most)derivation for abcc: S aS abSS abcS abcc Find a (left most)derivation for bca: S bSS bcS bcaS bca L(G) since |bcaS| > | bca | context free grammar and ambiguity 79
  80. 80. If G is an S-grammar, then in the exhaustive search parsing there is only one choice in each phase Thus, for any given string w, it takes a linear time, O(|w|), to decide either w L(G) by providing a unique derivation or w L(G). Not every CF grammar can be converted into an S-grammar. context free grammar and ambiguity 80
  81. 81. S-grammar Example Let G = (V, T, S, P) be an S-grammar: Give an expression for the maximum size of P in terms of |V| and |T|. Is it possible for an s-grammar to be ambiguous? context free grammar and ambiguity 81
  82. 82. For GENERAL context-free grammars: There exists a parsing algorithm that parses a string w in time | w |3 The CYK membership algorithm (on 6.3) 5.2 HW p.144 1~9,11~15,17~19 context free grammar and ambiguity 82

×