Courtesy Costas Busch - RPI1 Context-Free Languages
Courtesy Costas Busch - RPI2 Regular Languages
Courtesy Costas Busch - RPI3 Regular Languages Context-Free Languages
Courtesy Costas Busch - RPI4 Context-Free Languages Pushdown Automata Context-Free Grammars stack automaton
Courtesy Costas Busch - RPI5 Context-Free Grammars
Courtesy Costas Busch - RPI6 Example A context-free grammar : A derivation:
Courtesy Costas Busch - RPI7 A context-free grammar : Another derivation:
Courtesy Costas Busch - RPI8
9 A context-free grammar : A derivation: Example
Courtesy Costas Busch - RPI10 A context-free grammar : Another derivation:
Courtesy Costas Busch - RPI11
Courtesy Costas Busch - RPI12 A context-free grammar : A derivation: Example
Courtesy Costas Busch - RPI13 A context-free grammar : A derivation:
Courtesy Costas Busch - RPI14
Courtesy Costas Busch - RPI15 Definition: Context-Free Grammars Grammar Productions of the form: is string of variables and terminals VariablesTerminal symbols Start variables
Courtesy Costas Busch - RPI16 Notation: Context-Free Grammars Lower case letters near beginning of alphabet (e.g. a, b, c, …) are terminal symbols Upper case letters near beginning of alphabet (e.g. A, B, C, …) are variables Lower case letters near end of alphabet (e.g. w, x, …) are strings of terminals Upper case letters near end of alphabet (e.g. X, Y, …) are either terminals or strings Lower case Greek letters (e.g. α, β, γ, …) are strings of terminals and/or variables
Courtesy Costas Busch - RPI17 Definition: Context-Free Languages A language is context-free if and only if there is a grammar with
Courtesy Costas Busch - RPI18 Recall Language of a Grammar For a grammar with start variable : String of terminals
Courtesy Costas Busch - RPI19 Derivation Order Leftmost derivation: Rightmost derivation:
Courtesy Costas Busch - RPI20 Leftmost derivation: Rightmost derivation:
Courtesy Costas Busch - RPI21 Derivation Trees
Courtesy Costas Busch - RPI22
Courtesy Costas Busch - RPI23
Courtesy Costas Busch - RPI24
Courtesy Costas Busch - RPI25
Courtesy Costas Busch - RPI26 Derivation Tree
Courtesy Costas Busch - RPI27 yield Derivation Tree
Courtesy Costas Busch - RPI28 Partial Derivation Trees Partial derivation tree
Courtesy Costas Busch - RPI29 Partial derivation tree
Courtesy Costas Busch - RPI30 Partial derivation tree sentential form yield
Courtesy Costas Busch - RPI31 Same derivation tree Sometimes, derivation order doesn’t matter Leftmost: Rightmost:
Courtesy Costas Busch - RPI32 Ambiguity
Courtesy Costas Busch - RPI33 leftmost derivation
Courtesy Costas Busch - RPI34 leftmost derivation
Courtesy Costas Busch - RPI35 Two derivation trees
Courtesy Costas Busch - RPI36 The grammar is ambiguous: stringhas two derivation trees
Courtesy Costas Busch - RPI37 stringhas two leftmost derivations The grammar is ambiguous:
Courtesy Costas Busch - RPI38 Definition: A context-free grammar is ambiguous if some string has: two or more derivation trees
Courtesy Costas Busch - RPI39 In other words: A context-free grammar is ambiguous if some string has: two or more leftmost derivations (or rightmost)
Courtesy Costas Busch - RPI40 Why do we care about ambiguity? take
Courtesy Costas Busch - RPI41
Courtesy Costas Busch - RPI42
Courtesy Costas Busch - RPI43 Correct result:
Courtesy Costas Busch - RPI44 We want to remove ambiguity Ambiguity is bad for programming languages
Courtesy Costas Busch - RPI45 We fix the ambiguous grammar: New non-ambiguous grammar:
Courtesy Costas Busch - RPI46
Courtesy Costas Busch - RPI47 Unique derivation tree
Courtesy Costas Busch - RPI48 The grammar : is non-ambiguous: Every string has a unique derivation tree
Courtesy Costas Busch - RPI49 Inherent Ambiguity Some context free languages have only ambiguous grammars Example:
Courtesy Costas Busch - RPI50 The string has two derivation trees