1 / 42

Context-Free Languages

Context-Free Languages. Not all languages are regular. L 1 = {a n b n | n  0} is not regular. L 2 = { () , (()) , ((())) , ...} is not regular.  some properties of programming languages. Context-Free Grammars. G = (V, T, S, P) Productions are of the form: A  x

kim
Download Presentation

Context-Free Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Context-Free Languages • Not all languages are regular. • L1 = {anbn | n  0} is not regular. L2 = {(), (()), ((())), ...} is not regular.  some properties of programming languages

  2. Context-Free Grammars G = (V, T, S, P) Productions are of the form: A  x A  V and x  (V  T)*

  3. Context-Free Grammars • A regular language is also a context-free language.

  4. Context-Free Grammars • A regular language is also a context-free language. • Why the name?

  5. Example • G = ({S}, {a, b}, S, P) P = { S  aSa S  bSb S   } S  aSa  aaSaa  aabSbaa  aabbaa

  6. Example • G = ({S}, {a, b}, S, P) P = { S  aSa S  bSb S   } S  aSa  aaSaa  aabSbaa  aabbaa L(G) = {wwR | w  {a, b}*}

  7. Example • G = ({S, A, B}, {a, b}, S, P) P = { S  abB A  aaBb B  bbAa A   } S  abB  abbbAa  abbbaaBba  abbbaabbAaba  abbbaabbaba

  8. Example • L = {anbm | n  m} is context-free. G = (?, {a, b}, S, ?)

  9. Example • L = {anbm | n  m} is context-free. G = (?, {a, b}, S, ?) P = { S  AS1 | S1B S1 aS1b |  A  aA | a B  bB | b }

  10. Example • G = ({S}, {a, b}, S, P) P = { S  aSb | SS | } S  aSb  aaSbb  aaSSbb  aaabSbb  aaababbb

  11. Example • G = ({S}, {a, b}, S, P) P = { S  aSb | SS | } S  aSb  aaSbb  aaSSbb  aaabSbb  aaababbb L(G) = ?

  12. Derivations • G = ({S, A, B}, {a, b}, S, {S  AB, A  aaA, A  , B  Bb, B  }) 1 2 3 4 5 S  AB  aaAB  aaB  aaBb  aab S  AB  ABb  aaABb  aaAb  aab 1 2 3 4 5 1 4 2 5 3

  13. Derivations • Leftmost: in each step the leftmost variable in the sentential form is replaced. • Rightmost: in each step the rightmost variable in the sentential form is replaced.

  14. Example • G = ({S, A, B}, {a, b}, S, {S  AB, A  aaA, A  , B  Bb, B  }) 1 2 3 4 5 S  AB  aaAB  aaB  aaBb  aab leftmost S  AB  ABb  aaABb  aaAb  aab 1 2 3 4 5 1 4 2 5 3

  15. A a b A B c Derivation Trees A  abABc ordered tree

  16. Derivation Trees • Let G = (V, T, S, P) be a context-free grammar. An ordered tree is a derivation tree iff: • The root is labeled S. • Every leaf has a label from T  {}. • Every interior vertex has a label from V. • A vertex has label AV and its children are labeled a1, a2, ..., an iff P contains the production A  a1 a2 ... an. • A leaf labeled  has no siblings.

  17. Derivation Trees • Let G = (V, T, S, P) be a context-free grammar. An ordered tree is a partial derivation tree iff: • The root is labeled S. • Every leaf has a label from T  {}. Every leaf has a label from V T  {}. • Every interior vertex has a label from V. • A vertex has label AV and its children are labeled a1, a2, ..., an iff P contains the production A  a1 a2 ... an. • A leaf labeled  has no siblings.

  18. Derivation Trees The string of symbols obtained by reading the leaves of a tree from left to right (omitting any 's encountered) is called the yield of the tree.

  19. Derivation Trees S S  aAB A  bBb B  A |  yield: abbbb a A B b b B A  b b B 

  20. Derivation Trees S S  aAB A  bBb B  A |  a A B b b B A  b b B partial derivation tree 

  21. Sentential Forms & Derivation Trees • Let G = (V, T, S, P) be a context-free grammar. • wL(G) iff there exists a derivation tree of G whose yield is w. • If tG is a partial derivation tree of G whose root label is S, then the yield of tG is a sentential form of G.

  22. Membership and Parsing • Membership algorithm: tells if wL(G). • Parsing: finding a sequence of productions by which wL(G) is derived.

  23. Membership and Parsing S  SS | aSb | bSa |  w = aabb

  24. Exhaustive Search Parsing • Top-down parsing. • S  SS | aSb | bSa |  w = aabb 1. S  SS S  SS  SSS S  aSb  aSSb 2. S  aSb S  SS  aSbS S  aSb  aaSbb 3. S  bSa S  SS  bSaS S  aSb  abSab 4. S   S  SS  S S  aSb  ab S  aSb  aaSbb  aabb

  25. Exhaustive Search Parsing • It is not efficient. • If w  L(G) then it may never terminate, due to: A  B A  

  26. Exhaustive Search Parsing Suppose G = (V, T, S, P) is a context-free grammar which does not have any rule of the form A  B orA  . Then the exhaustive search parsing method can decide if wL(G) or not.

  27. Exhaustive Search Parsing Suppose G = (V, T, S, P) is a context-free grammar which does not have any rule of the form A  B orA  . Then the exhaustive search parsing method can decide if wL(G) or not. Proof: no more than |w| rounds are involved.

  28. Exhaustive Search Parsing Suppose G = (V, T, S, P) is a context-free grammar which does not have any rule of the form A  B orA  . Then the exhaustive search parsing method can decide if wL(G) or not. Proof: no more than |w| rounds are involved. Complexity:|P||w|.

  29. Theorem • For every context-free grammar G, there exists an algorithm that parses any wL(G) in a number of steps proportional to |w|3. • Not satisfactory as linear time parsing algorithm (proportional to the length of a string)

  30. Simple Grammars (S-Grammars) G = (V, T, S, P) Productions are of the form: A  ax A  V, a  T, and x  V*, and any pair (A,a) can occur in at most one rule.

  31. Simple Grammars (S-Grammars) Any wL(G) can be parsed in at most |w| steps. w = a1a2 ... an S  a1A1A2 ... Am  a1a2B1B2 ... BkA1A2 ... Am

  32. Simple Grammars (S-Grammars) Many features of Pascal-like programming languages can be expressed with s-grammars.

  33. Ambiguity A context-free grammar G is said to be ambiguous if there exits some wL(G) that has at least two distinct derivation trees.

  34. Ambiguity S  aSb | SS| w = aabb S S S S a b a b S S  a b a b S S  

  35. Ambiguity • G = ({E, I}, {a, b, c, +, *, (, )}, E, P) w = a + b * c E  I E  E + E E  E * E E  (E) I  a | b | c

  36. Ambiguity • G = ({E, T, F, I}, {a, b, c, +, *, (, )}, E, P) w = a + b * c E  T | E + T T  F | T * F E  E * E F  I | (E) I  a | b | c

  37. Ambiguity If L is a context-free language for which there exists an unambiguous grammar, then L is said to be unambiguous.

  38. Ambiguity If L is a context-free language for which there exists an unambiguous grammar, then L is said to be unambiguous. If every grammar that generates L is ambiguous, then L is called inherently ambiguous.

  39. Ambiguity • L = {anbncm}  {anbmcm} is inherently ambiguous. L = L1  L2 S  S1 | S2 S1 S1c | A S2 aS2 | B A  aAb |  B  bBc | 

  40. CFGs and Programming Languages • Important uses of formal languages: • to define precisely a programming language. • to construct an efficient translator for it. • RLs are used for simple patterns, while CFLs for more complicated aspects.

  41. CFGs and Programming Languages • S-grammars: <if-statement> ::= if <expression> <then_clause> <else_clause> <then_clause> ::= then <statement> <else_clause> ::= else <statement>

  42. Homework • Exercises: 2, 3, 4, 6, 7, 9, 15, 17, 22 of Section 5.1 - Linz’s book. • Exercises: 1, 2, 5, 6, 8, 10, 11, 12, 13, 15 of Section 5.2 - Linz’s book. • Exercises: 1, 2, 3 of Section 5.3 - Linz’s book.

More Related