1 / 66

Positive Properties of Context-Free languages

Positive Properties of Context-Free languages. Union. Context-free languages are closed under:. Union. is context free. is context free. is context-free. Example. Language. Grammar. Union. In general:. For context-free languages with context-free grammars and start variables .

sondra
Télécharger la présentation

Positive Properties of 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. Positive Propertiesof Context-Free languages Costas Busch - RPI

  2. Union Context-free languages are closed under: Union is context free is context free is context-free Costas Busch - RPI

  3. Example Language Grammar Union Costas Busch - RPI

  4. In general: For context-free languages with context-free grammars and start variables The grammar of the union has new start variable and additional production Costas Busch - RPI

  5. Concatenation Context-free languages are closed under: Concatenation is context free is context free is context-free Costas Busch - RPI

  6. Example Language Grammar Concatenation Costas Busch - RPI

  7. In general: For context-free languages with context-free grammars and start variables The grammar of the concatenation has new start variable and additional production Costas Busch - RPI

  8. Star Operation Context-free languages are closed under: Star-operation is context free is context-free Costas Busch - RPI

  9. Example Language Grammar Star Operation Costas Busch - RPI

  10. In general: For context-free language with context-free grammar and start variable The grammar of the star operation has new start variable and additional production Costas Busch - RPI

  11. Negative Propertiesof Context-Free Languages Costas Busch - RPI

  12. Intersection Context-free languages are not closed under: intersection is context free is context free not necessarily context-free Costas Busch - RPI

  13. Example Context-free: Context-free: Intersection NOT context-free Costas Busch - RPI

  14. Complement Context-free languages are not closed under: complement is context free not necessarily context-free Costas Busch - RPI

  15. Example Context-free: Context-free: Complement NOT context-free Costas Busch - RPI

  16. Intersectionof Context-free languagesand Regular Languages Costas Busch - RPI

  17. The intersection of a context-free language and a regular language is a context-free language context free regular context-free Costas Busch - RPI

  18. Machine Machine DFA for NPDA for regular context-free Construct a new NPDA machine that accepts simulates in parallel and Costas Busch - RPI

  19. NPDA DFA transition transition NPDA transition Costas Busch - RPI

  20. NPDA DFA transition NPDA transition Costas Busch - RPI

  21. NPDA DFA initial state initial state NPDA Initial state Costas Busch - RPI

  22. NPDA DFA final state final states NPDA final states Costas Busch - RPI

  23. Example: context-free NPDA Costas Busch - RPI

  24. regular DFA Costas Busch - RPI

  25. context-free Automaton for: NPDA Costas Busch - RPI

  26. In General: simulates in parallel and accepts string if and only if accepts string and accepts string Costas Busch - RPI

  27. Therefore: is NPDA is context-free is context-free Costas Busch - RPI

  28. Applications of Regular Closure Costas Busch - RPI

  29. The intersection of a context-free language and a regular language is a context-free language Regular Closure context free regular context-free Costas Busch - RPI

  30. An Application of Regular Closure Prove that: is context-free Costas Busch - RPI

  31. We know: is context-free Costas Busch - RPI

  32. We also know: is regular is regular Costas Busch - RPI

  33. context-free regular (regular closure) context-free is context-free Costas Busch - RPI

  34. Another Application of Regular Closure Prove that: is not context-free Costas Busch - RPI

  35. Therefore, is not context free is context-free If (regular closure) Then context-free regular context-free Impossible!!! Costas Busch - RPI

  36. Decidable Propertiesof Context-Free Languages Costas Busch - RPI

  37. Parsers Membership Algorithms: • Exhaustive search parser • CYK parsing algorithm Membership Question: for context-free grammar find if string Costas Busch - RPI

  38. Algorithm: • Remove useless variables • Check if start variable is useless Empty Language Question: for context-free grammar find if Costas Busch - RPI

  39. Infinite Language Question: Algorithm: 1. Remove useless variables 2. Remove unit and productions 3. Create dependency graph for variables 4. If there is a loop in the dependency graph then the language is infinite for context-free grammar find if is infinite Costas Busch - RPI

  40. Example: Infinite language Dependency graph Costas Busch - RPI

  41. Costas Busch - RPI

  42. YACC Yet Another Compiler Compiler Costas Busch - RPI

  43. Yacc is a parser generator Input: A Grammar Output: A parser for the grammar Reminder: a parser finds derivations Costas Busch - RPI

  44. Example grammar: expr -> ( expr ) | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | - expr | INT ; The yacc code: expr : '(' expr ')' | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | - expr | INT ; Costas Busch - RPI

  45. Exampe Input: 10 * 3 + 4 Yacc Derivation: expr => expr + expr => expr * expr + expr => 10*3 + 4 Costas Busch - RPI

  46. Resolving Ambiguities %left '+', '-' %left '*', '/' %left UMINUS %% expr : '(' expr ')' | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | '-' expr %prec UMINUS | INT ; Costas Busch - RPI

  47. Actions %left '+', '-' %left '*', '/' %left UMINUS %% expr : '(' expr ')' {$$ = $2;} | expr '+' expr {$$ = $1 + $3;} | expr '-' expr {$$ = $1 - $3;} | expr '*' expr {$$ = $1 * $3;} | expr '/' expr {$$ = $1 / $3;} | '-' expr %prec UMINUS {$$ = -$2;} | INT {$$ = $1;} ; Costas Busch - RPI

  48. A Complete Yacc program %union{ int int_val; } %left '+', '-' %left '*', '/' %left UMINUS %token <int_val> INT %type <int_val> expr %start program %% Costas Busch - RPI

  49. program : expr {printf("Expr value = %d \n", $1);} | error {printf("YACC: syntax error near line %d \n", linenum); abort();} ; expr : '(' expr ')' {$$ = $2;} | expr '+' expr {$$ = $1 + $3;} | expr '-' expr {$$ = $1 - $3;} | expr '*' expr {$$ = $1 * $3;} | expr '/' expr {$$ = $1 / $3;} | '-' expr %prec UMINUS {$$ = -$2;} | INT {$$ = $1;} ; %% #include "lex.yy.c" Costas Busch - RPI

  50. Execution Example Input: 10 + 20*(3 - 4 + 25) Output: Expr value = 490 Costas Busch - RPI

More Related