courtesy costas busch - rpi1 positive properties of context-free languages

Download Courtesy Costas Busch - RPI1 Positive Properties of Context-Free languages

Post on 19-Dec-2015

217 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • Courtesy Costas Busch - RPI1 Positive Properties of Context-Free languages
  • Slide 2
  • Courtesy Costas Busch - RPI2 Context-free languages are closed under: Union is context free is context-free Union
  • Slide 3
  • Courtesy Costas Busch - RPI3 Example Union LanguageGrammar
  • Slide 4
  • Courtesy Costas Busch - RPI4 In general: The grammar of the union has new start variable and additional production For context-free languages with context-free grammars and start variables
  • Slide 5
  • Courtesy Costas Busch - RPI5 Context-free languages are closed under: Concatenation is context free is context-free Concatenation
  • Slide 6
  • Courtesy Costas Busch - RPI6 Example Concatenation LanguageGrammar
  • Slide 7
  • Courtesy Costas Busch - RPI7 In general: The grammar of the concatenation has new start variable and additional production For context-free languages with context-free grammars and start variables
  • Slide 8
  • Courtesy Costas Busch - RPI8 Context-free languages are closed under: Star-operation is context freeis context-free Star Operation
  • Slide 9
  • Courtesy Costas Busch - RPI9 Example Language Grammar Star Operation
  • Slide 10
  • Courtesy Costas Busch - RPI10 In general: The grammar of the star operation has new start variable and additional production For context-free language with context-free grammar and start variable
  • Slide 11
  • Courtesy Costas Busch - RPI11 Negative Properties of Context-Free Languages
  • Slide 12
  • Courtesy Costas Busch - RPI12 Context-free languages are not closed under: intersection is context free not necessarily context-free Intersection
  • Slide 13
  • Courtesy Costas Busch - RPI13 Example Context-free: NOT context-free Intersection
  • Slide 14
  • Courtesy Costas Busch - RPI14 Context-free languages are not closed under: complement is context freenot necessarily context-free Complement
  • Slide 15
  • Courtesy Costas Busch - RPI15 NOT context-free Example Context-free: Complement
  • Slide 16
  • Courtesy Costas Busch - RPI16 Intersection of Context-free languages and Regular Languages
  • Slide 17
  • Courtesy Costas Busch - RPI17 The intersection of a context-free language and a regular language is a context-free language context free regular context-free
  • Slide 18
  • Courtesy Costas Busch - RPI18 for NPDA DFA Construct a new NPDA machine that accepts Machine context-free regular simulates in parallel and
  • Slide 19
  • Courtesy Costas Busch - RPI19 transition NPDADFA transition NPDA
  • Slide 20
  • Courtesy Costas Busch - RPI20 transition NPDADFA transition NPDA
  • Slide 21
  • Courtesy Costas Busch - RPI21 initial state NPDADFA Initial state NPDA
  • Slide 22
  • Courtesy Costas Busch - RPI22 final state final states NPDADFA final states NPDA
  • Slide 23
  • Courtesy Costas Busch - RPI23 Example: NPDA context-free
  • Slide 24
  • Courtesy Costas Busch - RPI24 DFA regular
  • Slide 25
  • Courtesy Costas Busch - RPI25 Automaton for: NPDA context-free
  • Slide 26
  • Courtesy Costas Busch - RPI26 simulates in parallel and accepts stringif and only if accepts string and accepts string In General:
  • Slide 27
  • Courtesy Costas Busch - RPI27 Therefore: is NPDA is context-free
  • Slide 28
  • Courtesy Costas Busch - RPI28 Applications of Regular Closure
  • Slide 29
  • Courtesy Costas Busch - RPI29 The intersection of a context-free language and a regular language is a context-free language context free regular context-free Regular Closure
  • Slide 30
  • Courtesy Costas Busch - RPI30 An Application of Regular Closure Prove that: is context-free
  • Slide 31
  • Courtesy Costas Busch - RPI31 We know: is context-free
  • Slide 32
  • Courtesy Costas Busch - RPI32 is regular We also know:
  • Slide 33
  • Courtesy Costas Busch - RPI33 regularcontext-free is context-free (regular closure)
  • Slide 34
  • Courtesy Costas Busch - RPI34 Another Application of Regular Closure Prove that: is not context-free
  • Slide 35
  • Courtesy Costas Busch - RPI35 context-freeregularcontext-free If is context-free Then Impossible!!! Therefore, is not context free (regular closure)
  • Slide 36
  • Courtesy Costas Busch - RPI36 Decidable Properties of Context-Free Languages
  • Slide 37
  • Courtesy Costas Busch - RPI37 Membership Question: for context-free grammar find if string Membership Algorithms: Parsers Exhaustive search parser CYK parsing algorithm
  • Slide 38
  • 38
  • Slide 39
  • Courtesy Costas Busch - RPI39 The CYK Parser
  • Slide 40
  • Courtesy Costas Busch - RPI40 The CYK Membership Algorithm Input: Grammar in Chomsky Normal Form String Output: find if
  • Slide 41
  • 41 The CYK Membership Algorithm
  • Slide 42
  • 42 The CYK Membership Algorithm
  • Slide 43
  • 43
  • Slide 44
  • Courtesy Costas Busch - RPI44 The Algorithm Grammar : String : Input example:
  • Slide 45
  • Courtesy Costas Busch - RPI45
  • Slide 46
  • Courtesy Costas Busch - RPI46
  • Slide 47
  • Courtesy Costas Busch - RPI47
  • Slide 48
  • Courtesy Costas Busch - RPI48
  • Slide 49
  • Courtesy Costas Busch - RPI49 Therefore: Time Complexity: The CYK algorithm can be easily converted to a parser (bottom up parser) Observation:
  • Slide 50
  • Courtesy Costas Busch - RPI50 Empty Language Question: for context-free grammar find if Algorithm: 1.Remove useless variables 2.Check if start variable is useless
  • Slide 51
  • Courtesy Costas Busch - RPI51 Infinite Language Question: for context-free grammar find if is infinite 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
  • Slide 52
  • Courtesy Costas Busch - RPI52 Example: Dependency graph Infinite language
  • Slide 53
  • Courtesy Costas Busch - RPI53
  • Slide 54
  • 54 Undecidable CFL Problems
  • Slide 55
  • Courtesy Costas Busch - RPI55 YACC Yet Another Compiler Compiler
  • Slide 56
  • Courtesy Costas Busch - RPI56 Yacc is a parser generator Input: A Grammar Output: A parser for the grammar Reminder: a parser finds derivations
  • Slide 57
  • Courtesy Costas Busch - RPI57 Example grammar: The yacc code: expr : '(' expr ')' | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | - expr | INT ; expr -> ( expr ) | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | - expr | INT ;
  • Slide 58
  • Courtesy Costas Busch - RPI58 Exampe Input: 10 * 3 + 4 Yacc Derivation: expr => expr + expr => expr * expr + expr => 10*3 + 4
  • Slide 59
  • Courtesy Costas Busch - RPI59 Resolving Ambiguities %left '+', '-' %left '*', '/' %left UMINUS % expr : '(' expr ')' | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | '-' expr %prec UMINUS | INT ;
  • Slide 60
  • Courtesy Costas Busch - RPI60 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;} ;
  • Slide 61
  • Courtesy Costas Busch - RPI61 A Complete Yacc program %union{ int int_val; } %left '+', '-' %left '*', '/' %left UMINUS %token INT %type expr %start program %
  • Slide 62
  • Courtesy Costas Busch - RPI62 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 ">
  • Slide 63
  • Courtesy Costas Busch - RPI63 Execution Example 10 + 20*(3 - 4 + 25) Input: Output: Expr value = 490
  • Slide 64
  • Courtesy Costas Busch - RPI64 The Lex Code %{ int linenum=1; int temp_int; %} % \n {linenum++;} [\t ] /* skip spaces */; \/\/[^\n]* /* ignore comments */; "+" {return '+';} "-" {return '-';} "*" {return '*';} "/" {return '/';} ")" {return ')';} "(" {return '(';}
  • Slide 65
  • Slide 66
  • Courtesy Costas Busch - RPI66 Compiling: yacc YaccFile lex LexFile cc y.tab.c -ly -ll -o myparser Executable: myparser
  • Slid

Recommended

View more >