CS 3240: Languages and Computation Context-Free Languages
A single step derivation “ ” consist of the substitution of a variable by a string according to a substitution rule in R Note that rules use single arrows “ ”, while derivations themselves use double arrows “ ” A sequence of several derivations (or none) is indicated by “ * ” Previous example: “S * aabbaa” L is a Context Free Language if and only if there is a context free grammar G=(V, Σ, P, S) such that L = L(G) = { w | w Σ * and S * w }
The language generated by a grammar
Some Remarks The language L(G) = { w | w Σ* and S * w } contains only strings of terminals, not variables. Notation: We can agglomerate several rules for one variable: A B A 01 by A B | 01 | AA A AA What is the CFG ({S},{(,)},P, S) that produces the language of correct parentheses like (), (()), or ()(())? Answer: S→ (S) | SS |
Parse trees
Yield of a parse tree
From tree to derivation
From derivations to recursive inference
ambiguity
Removing ambiguity
Ambiguity and leftmost derivations
Inherent ambiguity