1 / 15

CS310

CS310. Pushdown Automata Sections: 2.2 page 109 October 11, 2006. Quick Review. a , b -> c Read a from input, read b from stack, push c onto stack to take this transition a = ε , read no input b = ε , don’t pop data from stack c = ε , don’t push data onto stack. 0 , ε -> 0.

manju
Download Presentation

CS310

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. CS310 Pushdown Automata Sections: 2.2 page 109 October 11, 2006

  2. Quick Review a , b ->c Read a from input, read b from stack, push c onto stack to take this transition a = ε, read no input b = ε, don’t pop data from stack c = ε, don’t push data onto stack 0 , ε->0 ε , ε->$ 1 , 0 -> ε ε, $ -> ε 1, 0 -> ε

  3. Practice • { wwR | w  {0, 1}* } hint: push symbols onto the stack, at each point guess that the middle of the string has been reached and begin popping from stack

  4. Example • L = { aibjck | i, j, k  0, i = j or i = k } • Hint: push as onto the stack, then pop and match with either bs or cs.

  5. Theorem • A Language is context free if and only if there exists a PDA that recognizes it. • Lemma: • If a language is context free, the some PDA recognizes it • Show: a CFG can be transformed into a PDA • Lemma: • If a PDA recognizes a language, the it is context free

  6. Construct PDA from CFG • L = {anbbn | n  0 } S -> aSb | b S -> aSb-> aaSbb -> aabbb 1) Place $, start variable on stack 2) Repeat: a) if variable A is on top of stack, use replacement rule A (pop)->w (push) b) if terminal on top, read input, compare. If match, repeat, else die c) if $ on top, enter accept, die if there’s more input

  7. Example • S-> aSb | b

  8. Chomsky Normal Form • CNF presents a grammar in a standard, simplified form: A-> BC A ->a S -> ε • Where A,B,C are variables and B and C are not the start variable • a is a terminal • The rule S -> ε is allowed so the language can generate the empty string (optional)

  9. CNF Benefits • Easier to prove statements about CFG’s when in CNF • Any CFG can be converted to CNF • Remove productions: A -> ε A -> B A -> s, s contains a terminal and |s| > 1 A -> s, |s| > 2 s { V U ∑ }*

  10. Removing A -> ε T -> UAV Remove: A -> ε Therefore: T-*> UV Add: T-> UV • A variable A is nullable if A-*> ε Find all nullable variables Remove all εtransitions If T -> s1As2 and A nullable then add T -> s1s2

  11. Example S -> TU T -> AB A -> aA |ε B -> bB |ε U -> ccA | B Nullable variables? Productions removed? Productions added?

  12. Removing A ->B (Unit Productions) Remove: A-> B B-> s Therefore: A-*> s Add: A-> s s { V U ∑ }* • A variable B is A-derivable if A-*>B Find all A-derivable variables for each A Remove all unit transitions If B -> s and B is A-derivable then add A -> s

  13. Example S -> TU | T | U T -> AB | A | B A -> aA | a B -> bB | b U -> ccA | B | cc S-derivable: T-derivable: U-derivable: Productions removed: Productions added:

  14. Remove A-> S1aS2 A-> S1aS2 a  ∑, S1 and S2 strings, at least one is not empty Create Xa-> a A-> S1XaS2

  15. Remove A-> S1XaS2 A -> S1XaS2S3 A -> S1W1 W1 -> XaW2 W2 -> S2S3

More Related