chomsky and greibach normal forms - centro de...
TRANSCRIPT
![Page 1: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/1.jpg)
Chomsky and Greibach NormalForms
Teodor Rus
The University of Iowa, Department of Computer Science
Computation Theory – p.1/25
![Page 2: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/2.jpg)
Simplifying a CFG• It is often convenient to simplify CFG• One of the simplest and most useful
simplified forms of CFG is called theChomsky normal form
• Another normal form usually used in algebraicspecifications is Greibach normal form
Computation Theory – p.2/25
![Page 3: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/3.jpg)
NoteNormal forms are useful when more advanced
topics in computation theory are approached, as
we shall see further
Computation Theory – p.3/25
![Page 4: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/4.jpg)
DefinitionA context-free grammar G is in Chomsky normalform if every rule is of the form:
A −→ BC
A −→ a
where a is a terminal, A,B,C are nonterminals,
and B,C may not be the start variable (the axiom)
Computation Theory – p.4/25
![Page 5: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/5.jpg)
NoteThe rule S −→ ε, where S is the start variable,
is not excluded from a CFG in Chomsky normal
form.
Computation Theory – p.5/25
![Page 6: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/6.jpg)
Theorem 2.6Any context-free language is generated by acontext-free grammar in Chomsky normal form.Proof idea:
• Show that any CFG G can be converted into a CFG G′ inChomsky normal form
• Conversion procedure has several stages where the rules thatviolate Chomsky normal form conditions are replaced withequivalent rules that satisfy these conditions
• Order of transformations:(1) add a new start variable, (2) eliminateall ε-rules, (3) eliminate unit-rules, (4) convert other rules
Computation Theory – p.6/25
![Page 7: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/7.jpg)
Proof idea, continuation
• Check that the obtained CFG G′ define the same language as theinitial CFG G.
Computation Theory – p.7/25
![Page 8: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/8.jpg)
ProofLet G = (N, T,R, S) be the original CFG.
Step 1: add a new start symbol S0s to N , and therule S0 −→ S to R
Note: this change guarantees that the start symbol
of G′ does not occur on the rhs of any rule
Computation Theory – p.8/25
![Page 9: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/9.jpg)
Step 2: eliminate ε-rules
Repeat1. Eliminate the ε rule A −→ ε from R where A is not the start symbol
2. For each occurrence of A on the rhs of a rule, add a new rule to R
with that occurrence of A deletedExample: replace B −→ uAv by B −→ uAv|uv;replace B −→ uAvAw by B −→ uAvAw|uvAw|aAvw|uvw
3. Replace the rule B −→ A, (if it is present) by B −→ A|ε unless therule B −→ ε has not been previously eliminated
until all ε rules are eliminated
Computation Theory – p.9/25
![Page 10: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/10.jpg)
Step 3: remove unit rules
Repeat1. Remove a unit rule A −→ B ∈ R
2. For each rule B −→ u ∈ R, add the rule A −→ u to R, unlessB → u was a unit rule previously removed
until all unit rules are eliminated
Note: u is a string of variables and terminals
Computation Theory – p.10/25
![Page 11: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/11.jpg)
Convert all remaining rules
Repeat1. Replace a rule A −→ u1u2 . . . uk, k ≥ 3, where each ui, 1 ≤ i ≤ k,
is a variable or a terminal, by:A −→ u1A1, A1 −→ u2A2, . . ., Ak−2 −→ uk−1uk
where A1,A2, . . ., Ak−2 are new variables
2. If k ≥ 2 replace any terminal ui with a new variable Ui and add therule Ui −→ ui
until no rules of the form A −→ u1u2 . . . uk with
k ≥ 3 remain
Computation Theory – p.11/25
![Page 12: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/12.jpg)
Example CFG conversionConsider the grammar G6 whose rules are:
S −→ ASA|aB
A −→ B|S
B −→ b|ε
After first step of transformation we get:
S0 −→ S
S −→ ASA|aB
A −→ B|S
B −→ b|ε
Computation Theory – p.12/25
![Page 13: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/13.jpg)
Removing ε rulesRemoving B → ε:
S0 −→ S
S −→ ASA|aB|a
A −→ B|S|ε
B −→ b
Removing A → ε:
S0 −→ S
S −→ ASA|aB|a|SA|AS|S
A −→ B|S
B −→ b
Computation Theory – p.13/25
![Page 14: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/14.jpg)
Removing unit ruleRemoving S → S:
S0 −→ S
S −→ ASA|aB|a|SA|AS
A −→ B|S
B −→ b
Removing S0 → S:
S0 −→ ASA|aB|a|SA|AS
S −→ ASA|aB|a|SA|AS
A −→ B|S
B −→ b
Computation Theory – p.14/25
![Page 15: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/15.jpg)
More unit rulesRemoving A → B:
S0 −→ ASA|aB|a|SA|AS
S −→ ASA|aB|a|SA|AS
A −→ S|b
B −→ b
Removing A → S:
S0 −→ ASA|aB|a|SA|AS
S −→ ASA|aB|a|SA|AS
A −→ b|ASA|aB|a|SA|AS
B −→ b
Computation Theory – p.15/25
![Page 16: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/16.jpg)
Converting remaining rules
S0 −→ AA1|UB|a|SA|AS
S −→ AA1|UB|a|SA|AS
A −→ b|AA1|UB|a|SA|AS
A1 −→ SA
U −→ a
B −→ b
Computation Theory – p.16/25
![Page 17: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/17.jpg)
Note• The conversion procedure produces several
variables Ui along with several rules Ui → a .• Since all these represent the same rule, we
may simplify the result using a single variableU and a single rule U → a
Computation Theory – p.17/25
![Page 18: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/18.jpg)
Greibach Normal FormA context-free grammar G = (V, Σ, R, S) is inGreibach normal form if each rule r ∈ R has theproperty: lhs(r) ∈ V , rhs(r) = aα, a ∈ Σ andα ∈ V ∗.
Note: Greibach normal form provides a justifica-
tion of operator prefix-notation usually employed
in algebra.
Computation Theory – p.18/25
![Page 19: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/19.jpg)
Greibach TheoremEvery CFL L where ε 6∈ L can be generated by aCFG in Greibach normal form.Proof idea: Let G = (V, Σ, R, S) be a CFG generating L. Assume that G
is in Chomsky normal form
• Let V = {A1, A2, . . . , Am} be an ordering of nonterminals.
• Construct the Greibach normal form from Chomsky normal form
Computation Theory – p.19/25
![Page 20: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/20.jpg)
Construction1. Modify the rules in R so that if Ai → Ajγ ∈ R then j > i
2. Starting with A1 and proceeding to Am this is done as follows:
(a) Assume that productions have been modified so that for1 ≤ i ≤ k, Ai → Ajγ ∈ R only if i > j
(b) If Ak → Ajγ is a production with j < k, generate a new set ofproductions substituting for Aj the rhs of each Aj production
(c) Repeating (b) at most k − 1 times we obtain rules of the formAk → Apγ, p ≥ k
(d) Replace rules Ak → Akγ by removing left-recursive rules
Computation Theory – p.20/25
![Page 21: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/21.jpg)
Removing left-recursion
Left-recursion can be eliminated by the followingscheme:
• If A → Aα1|Aα2 . . . |Aαr are all A left recursive rules, andA → β1|β2| . . . |βs are all remaining A-rules then chose a newnonterminal, say B
• Add the new B-rules B → αi|αiB, 1 ≤ i ≤ r
• Replace the A-rules by A → βi|βiB, 1 ≤ i ≤ s
This construction preserve the language L.
Computation Theory – p.21/25
![Page 22: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/22.jpg)
Conversion algorithmfor (k=1; k<=m; k++)
{for (j=1; j<=k-1; j++)
{for (each A_k ---> A_j alpha)
{
for all rules A_j ---> beta
add A_k ---> beta alpha
remove A_k ---> A_j alpha
}
for (each rule A_k ---> A_k alpha)
{
add rules B_k ---> alpha | alpha B_k
remove A_k ---> A_k alpha
}
for (each rule A_k ---> beta, beta does not begin with A_k)
add rule A_k ---> beta B_k
}
} Computation Theory – p.22/25
![Page 23: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/23.jpg)
More on Greibach NFSee Introduction to Automata Theory, Languages,
and Computation, J.E, Hopcroft and J.D Ullman,
Addison-Wesley 1979, p. 94–96
Computation Theory – p.23/25
![Page 24: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/24.jpg)
Example
Convert the CFGG = ({A1, A2, A3}, {a, b}, R, A1)
whereR = {A1 → A2A3, A2 → A3A1|b, A3 → A1A2|a}
into Greibach normal form.
Computation Theory – p.24/25
![Page 25: Chomsky and Greibach Normal Forms - Centro de Cálculocc.etsii.ull.es/ftp/antiguo/AUTOMALF/t05_gramaticas/cfg3.pdf · 2005-12-07 · Chomsky and Greibach Normal Forms Teodor Rus rus@cs.uiowa.edu](https://reader033.vdocument.in/reader033/viewer/2022052718/5f0589fc7e708231d41376ba/html5/thumbnails/25.jpg)
Solution1. Step 1: ordering the rules: (Only A3 rules violate ordering
conditions, hence only A3 rules need to be changed) Followingthe procedure we replace A3 rules by: A3 → A3A1A3A2|bA3A2|a
2. Eliminating left-recursion we get: A3 → bA3A2B3|aB3|bA3A2|a,B3 → A1A3A2|A1A3A2B3
3. All A3 rules start with a terminal. We use then to replaceA1 → A2A3. This introduces the rules B3 → A1A3A2|A1A3A2B3
4. Use A1 production to make them start with a terminal
Computation Theory – p.25/25