Processing math: 100%
Close
Close Window

CS4114 Formal Languages and Automata

Chapter 6 Context-Free Grammars and Languages

Show Source |    | About   «  6.2. CFG exercises   ::   Contents   ::   6.4. Transforming Grammars Exercises  »

6.3. Transforming Grammars

6.3.1. Transforming Grammars

We use grammars to represent a programming language. Want to know: Is a given string (or program x) valid (syntactically correct)? Same as asking if it is in the language (the membership problem).

Last time we showed that if we could transform a CFG into a CFG with no λ-productions, and no rules like AB, then we could determine if w is in or not in L(G) in 2|w| rounds, each step adding a terminal or increasing in length.

This works, but it is not fast, that is, not linear!

We will look at lots of methods for transforming grammars. Some will be forms that are easier to work with, some are easier to use in proofs.

Key question: Are there ways to transform (restrict) CFGs such that
1) We can process efficiently
2) without restricting the power of CFGs
1 / 28 Settings
<<<>

Now we start our exploration of useful transformations for CFGs.

Proficient Saving... Error Saving
Server Error
Resubmit

6.3.2. Remove Useless Productions

1 / 27 Settings
<<<>

Previously we raised the question of what to do when some variables cannot ever lead to a useful derivation. This frameset discusses how to recognize and remove useless productions.

Proficient Saving... Error Saving
Server Error
Resubmit

6.3.3. Remove Lambda Productions

1 / 15 Settings
<<<>

Previously we saw that we need to remove lambda productions to avoid running into an infinite loop when using brute force expansion of the derivation tree if the string is not in the language of the grammar.

Proficient Saving... Error Saving
Server Error
Resubmit

6.3.4. Remove Unit Productions

1 / 28 Settings
<<<>

Next we will consider Unit Productions. These are productions that simply replace one variable with another, such as $A \Rightarrow B$. When deriving a string, these seem an unnecessary step. Instead of going from $A$ to $B$ and then replacing $B$ with the RHS of one of its rules (such as $B \Rightarrow bb$), we could simply go there directly with a rule like $A \Rightarrow bb$. Of couse, this requires that we also replace every other production that has $B$ on its LHS with an equivalent production that has $A$ on its LHS.

Proficient Saving... Error Saving
Server Error
Resubmit

6.3.5. Chomsky Normal Form (CNF)

1 / 16 Settings
<<<>

To summarize what we have done so far: We have found algorithms to remove from any CFG the useless productions, $\lambda$ productions, and unit productions.

Proficient Saving... Error Saving
Server Error
Resubmit

6.3.6. Greibach Normal Form (GNF)

1 / 21 Settings
<<<>

$\textbf{Definition:}$ A CFG is in Greibach normal form (GNF) if all productions are of the form
$A \rightarrow ax$
where $x \in V^*$ and $a \in T$

Proficient Saving... Error Saving
Server Error
Resubmit

   «  6.2. CFG exercises   ::   Contents   ::   6.4. Transforming Grammars Exercises  »

nsf
Close Window