1 / 24

# INHERENT LIMITATIONS OF COMPUTER PROGAMS

CSci 4011. INHERENT LIMITATIONS OF COMPUTER PROGAMS. string. pop. push. ε , ε → \$. 0, ε → 0. 1,0 → ε. ε ,\$ → ε. 1,0 → ε. The language of P is the set of strings it accepts. CONTEXT-FREE GRAMMARS. A → 0 A 1. A → B. B → #. A.  0A1.  00A11.  00B11.  00#11.

## INHERENT LIMITATIONS OF COMPUTER PROGAMS

E N D

### Presentation Transcript

1. CSci 4011 INHERENT LIMITATIONS OF COMPUTER PROGAMS

2. string pop push ε,ε → \$ 0,ε→ 0 1,0→ε ε,\$ → ε 1,0→ε The language of P is the set of strings it accepts.

3. CONTEXT-FREE GRAMMARS A → 0A1 A → B B → # A  0A1  00A11  00B11  00#11 A derives 00#11 in 4 steps. The language of G is the set of strings derived by S.

4. VERY INTERESTINGCFGs… http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html http://docs.python.org/reference/grammar.html

5. PARSE TREES A A A B 0 0 # 1 1 A  0A1  00A11  00B11  00#11

6. Definition. T is a parse tree for the derivation S ⇒* w under grammar G = (V,Σ,R,S) if 1. The root of T has label S 2. The leaves of T have labels wi∈ Σ 3. The non-leaf nodes have labels v ∈ V 4. For each node with label v ∈ V and children with labels ri∈ (V∪Σ), (v→r) ∈ R.

7. <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> a + a x a a + a x a <EXPR> → <EXPR> + <EXPR> <EXPR> → <EXPR> x <EXPR> <EXPR> → ( <EXPR> ) <EXPR> → a Build a parse tree for a + a x a

8. COMPILER MODULES LEXER PARSER SEMANTIC ANALYZER TRANSLATOR/INTERPRETER

9. Suppose L is generated by a CFG G = (V, Σ, R, S) Construct P = (Q, Σ, Γ, , q, F) that recognizes L A Language is generated by a CFG  It is recognized by a PDA  Idea: P will derive w ∈L on its stack.

10. (1) Place the marker symbol \$ and the start variable on the stack Suppose L is generated by a CFG G = (V, Σ, R, S) Construct P = (Q, Σ, Γ, , q, F) that recognizes L (2) Repeat forever: (a) If v is in the stack, and (v → s) ∈ R, push s on the stack (b) If stack is a string, goto (3) (3) Loop until stack is empty: (a) if top of stack matches input, pop. (b) on (ε,\$), accept.

11. Suppose L is generated by a CFG G = (V, Σ, R, S) Construct P = (Q, Σ, Γ, , q, F) that recognizes L (qstart) Push S\$ and go to qloop (qloop) Repeat the following steps forever: (a) On (ε,v) where (v → s) ∈ R, push s and go to qloop (b) On (,), pop  and go to qloop (c) On (ε,\$) go to qaccept (else) get stuck!

12. ε,ε → S\$ ε,A → w for rule A → w a,a → ε for terminal a ε,\$ → ε

13. S → aTb T → Ta | ε ε,ε → \$ ε,ε → T ε,S → b ε,ε → T ε,ε → S ε,T → a ε,\$ → ε ε,ε → a ε,T → ε a,a → ε b,b → ε

14. A Language is generated by a CFG  It is recognized by a PDA 

15. A Language is generated by a CFG  It is recognized by a PDA  Given PDA P = (Q, Σ, Γ, , q, F) Construct a CFG G = (V, Σ, R, S) such that L(G)=L(P) First, simplify P so that: (1) It has a single accept state, qaccept (2) It empties the stack before accepting (3) Each transition either pushes a symbol or pops a symbol, but not both

16. SIMPLIFY ε,ε → \$ 0,ε→ 0 q1 q0 1,0→ε ε,ε → 0 ε,ε → ε ε,\$ → ε q2 q3 1,0→ε ε,ε → 0 ε,ε → ε q4 ε,0 → ε q5

17. Idea: for each pair of states p and q in P, the grammar will have a variable Apq that generates all strings that that can take P from p to q without changing the stack* V = {Apq | p,qQ } S = Aq0qaccept *starting from any stack S in p, P has stack S at q.

18. ε,ε → \$ 0,ε→ 0 q1 q0 1,0→ε ε,ε → 0 ε,\$ → ε q2 q3 1,0→ε ε,ε → 0 q4 ε,0 → ε q5 none What strings does Aq0q1 generate? {0n1n | n > 0} What strings does Aq1q2 generate? What strings does Aq1q3 generate? none

19. Apq generates all strings that take P from p to q without changing the stack Let x be such a string • P’s first move on x must be a push • P’s last move on x must be a pop Consider the stack while reading x. Either: 1. The first repeat comes at the end of x 2. The stack repeats before the end of x

20. 1. The first repeat is at the end of x: stack height r s a b input string p q Apq→ aArsb

21. 2. The stack repeats before the end of x: stack height input string p r q Apq→ AprArq

22. Formally: V = {Apq | p,qQ } S = Aq0qaccept For each p,q,r,s  Q, t  Γ and a,b  Σε If (r,t)  (p,a,ε) and (q, ε)  (s,b,t) Then add the rule Apq→ aArsb For each p,q,r  Q, add the rule Apq→ AprArq For each p  Q, add the rule App→ ε

23. ε,ε → \$ 0,ε→ 0 q1 q0 1,0→ε ε,ε → 0 ε,\$ → ε q2 q3 1,0→ε ε,ε → 0 q4 ε,0 → ε q5 Aqq→ ε Apq→ AprArq Aq0q3 → εAq1q2ε Aq1q2 → 0Aq1q21 Aq1q2 → 0Aq1q11 none What strings does Aq0q1 generate? {0n1n | n > 0} What strings does Aq1q2 generate? What strings does Aq1q3 generate? none

24. A Language is generated by a CFG  It is recognized by a PDA

More Related