1 / 18

CSCI 2670 Introduction to Theory of Computing

CSCI 2670 Introduction to Theory of Computing. September 15, 2005. Agenda. Yesterday Introduce context-free grammars Today No quiz! Quiz postponed until Monday Regular expressions, pumping lemma, CFG’s Build CFG’s. Context-free grammar definition.

rjarvis
Download Presentation

CSCI 2670 Introduction to Theory of Computing

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. CSCI 2670Introduction to Theory of Computing September 15, 2005

  2. Agenda • Yesterday • Introduce context-free grammars • Today • No quiz! • Quiz postponed until Monday • Regular expressions, pumping lemma, CFG’s • Build CFG’s

  3. Context-free grammar definition • A context-free grammar is a 4-tuple (V,,R,S), where • V is a finite set called the variables, •  is a finite set, disjoint from V, called the terminals, • R is a finite set of rules, with each rule being a variable and a string of variables and terminals, and • S  V is the start variable.

  4. More definitions • If u, v, and w are strings of variables and terminals, and A  w is a rule of the grammar, we say uAv yields uwv • Denoted uAv  uwv • If a sequence of rules leads from u to v – i.e., u  u1  u2  …  v, we denote this u * v • (I can’t do the actual notation in powerpoint – the * should be over the double bars) • The language of the grammar is {w  * | s * w}

  5. Example A  Ab | Bb B  aBb | ab • V = {A,B} •  = {a,b} • R is the set of rules listed above • S = A • The language of this grammar is {w  {a,b}* | w = anbm, m > n > 0}

  6. Designing CFG’s • Requires creativity • There are some guidelines to help • Union of two CFG’s • Converting a DFA to a CFG • Linked terminals • Recursive behavior

  7. Designing the union of two CFG’s • For the union of k CFG’s, design each CFG separately with starting variables S1, S2, …, Sk and combine using the rule S  S1 | S2 | … | Sk • What is the CFG for the following language {aibjck | i, j, k ≥ 0 and i = j or j = k} {aibjck | i, j, k ≥ 0 and i = j}  {aibjck | i, j, k ≥ 0 and j = k}

  8. Example • First design {aibjck| i, j, k ≥ 0 and i=j} S1 S1c | A A  aAb |  • Then design {aibjck| i, j, k ≥ 0 and j=k} • (use different variables) S2 aS2 | B B  bBc |  • Finally, add the “unifying” rule S  S1 | S2

  9. Converting DFA’s into CFG’s • For each state qi in the DFA, make a variable Ri for your CFG. • For each transition rule (qi,a)=qk in your DFA, add the rule Ri  aRk to your CFG • For each accept state qa in your DFA, add the rule Ra  ε • If q0 is the start state in your DFA, then R0 is the starting variable in your CFG

  10. Example 0 • V = {R1, R2, R3} • R1 0R3 | 1R2 R2  0R1 | 1R3 R3  1R3 | 1R3 • R2  ε • R1 is the start state 1 q1 q2 0 1 q3 0, 1

  11. Linked terminals • Terminals may be “linked” to one another in that they have the same number of occurrences (or a related number) • {0n1n | n ≥ 0}, {xny2n | n > 0} • Add terminals simultaneously • S  0S1 | ε • S xSyy | xyy

  12. Recursive behavior • Some languages may be built of pieces that are within the language • Legal pairing of parenthesis • For these languages, you will want a recursive rule • S  SS • Not all recursive rules will be that easy!

  13. Example • Construct a CFG accepting all strings in {0,1}* that have equal numbers of 0’s and 1’s S  S0S1S | S1S0S | ε

  14. Ambiguity • Consider the CFG ({S},{0,1},R,S), where the rules of R are S  0 | 1 | S + S | S * S • Derive the string 0 * 1 + 1

  15. S S + * S S 1 0 S S + * S S 1 0 1 1 Ambiguity S  0 | 1 | S + S | S * S • 0 * 1 + 1 S S Different parse trees!

  16. Definition of ambiguity • A context-free grammar G generates a string w if there are two different parse trees that generate w • Different derivations that differ only in order do not indicate ambiguity

  17. Derivation & ambiguity • A derivation of a string w in a grammar G is a leftmost derivation if every step of the derivation replaced the leftmost variable • A string is derived ambiguously in CFG G if it has two or more different leftmost derivations • The grammar G is ambiguous if it generates some string ambiguously • Some grammars are inherently ambiguous

  18. Enjoy your weekend!

More Related