- 48 Views
- Uploaded on
- Presentation posted in: General

Simplifications of Context-Free Grammars

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Simplifications of Context-Free Grammars

Prof. Busch - LSU

Equivalent

grammar

Substitute

Prof. Busch - LSU

Substitute

Equivalent

grammar

Prof. Busch - LSU

In general:

Substitute

equivalent

grammar

Prof. Busch - LSU

Nullable Variable:

Example:

Nullable variable

Prof. Busch - LSU

Removing

Substitute

After we remove all the

all the nullable variables disappear

(except for the start variable)

Prof. Busch - LSU

Unit Production:

(a single variable in both sides)

Example:

Unit Productions

Prof. Busch - LSU

Removal of unit productions:

Substitute

Prof. Busch - LSU

Unit productions of form

can be removed immediately

Remove

Prof. Busch - LSU

Substitute

Prof. Busch - LSU

Remove repeated productions

Final grammar

Prof. Busch - LSU

Useless Production

Some derivations never terminate...

Prof. Busch - LSU

Useless Production

Another grammar:

Not reachable from S

Prof. Busch - LSU

In general:

If there is a derivation

consists of

terminals

Then variable is useful

Otherwise, variable is useless

Prof. Busch - LSU

Productions

useless

Variables

useless

useless

useless

useless

useless

useless

A production is useless

if any of its variables is useless

Prof. Busch - LSU

Removing Useless Variables and Productions

Example Grammar:

Prof. Busch - LSU

First:

find all variables that can produce

strings with only terminals or

(possible useful variables)

Round 1:

(the right hand side of production

that has only terminals)

Round 2:

(the right hand side of a production

has terminals and

variables of previous round)

This process can be generalized

Prof. Busch - LSU

Then, remove productions that use variables

other than

Prof. Busch - LSU

Second:

Find all variables

reachable from

Use a Dependency Graph

where nodes are variables

unreachable

Prof. Busch - LSU

Keep only the variables

reachable from S

Final Grammar

Contains only

useful variables

Prof. Busch - LSU

Step 1: Remove Nullable Variables

Step 2: Remove Unit-Productions

Step 3: Remove Useless Variables

This sequence guarantees that

unwanted variables and productions

are removed

Prof. Busch - LSU

Normal FormsforContext-free Grammars

Prof. Busch - LSU

Each production has form:

or

variable

variable

terminal

Prof. Busch - LSU

Examples:

Chomsky

Normal Form

Not Chomsky

Normal Form

Prof. Busch - LSU

Example:

Not Chomsky

Normal Form

We will convert it to Chomsky Normal Form

Prof. Busch - LSU

Introduce new variables for the terminals:

Prof. Busch - LSU

Introduce new intermediate variable

to break first production:

Prof. Busch - LSU

Introduce intermediate variable:

Prof. Busch - LSU

Final grammar in Chomsky Normal Form:

Initial grammar

Prof. Busch - LSU

In general:

From any context-free grammar

(which doesn’t produce )

not in Chomsky Normal Form

we can obtain:

an equivalent grammar

in Chomsky Normal Form

Prof. Busch - LSU

The Procedure

- First remove:
- Nullable variables
- Unit productions

(Useless variables optional)

Prof. Busch - LSU

Then, for every symbol :

New variable:

Add production

In productions with length at least 2

replace with

Productions of form

do not need to change!

Prof. Busch - LSU

Replace any production

with

New intermediate variables:

Prof. Busch - LSU

Observations

- Chomsky normal forms are good
- for parsing and proving theorems

- It is easy to find the Chomsky normal
- form for any context-free grammar
- (which doesn’t generate )

Prof. Busch - LSU

All productions have form:

symbol

variables

Prof. Busch - LSU

Examples:

Greinbach

Normal Form

Not Greinbach

Normal Form

Prof. Busch - LSU

Conversion to Greinbach Normal Form:

Greinbach

Normal Form

Prof. Busch - LSU

Observations

- Greinbach normal forms are very good
- for parsing strings (better than Chomsky Normal Forms)

- However, it is difficult to find the
- Greinbach normal of a grammar

Prof. Busch - LSU