# Greibach Normal Form

A CFG is in Greibach Normal Form if the Productions are in the following forms −

A → b

A → bD_{1}…D_{n}

S → ε

where A, D_{1},....,D_{n} are non-terminals and b is a terminal.

## Algorithm to Convert a CFG into Greibach Normal Form

**Step 1** − If the start symbol **S** occurs on some right side, create a new start symbol **S’** and a new production **S’ → S**.

**Step 2** − Remove Null productions. (Using the Null production removal algorithm discussed earlier)

**Step 3** − Remove unit productions. (Using the Unit production removal algorithm discussed earlier)

**Step 4** − Remove all direct and indirect left-recursion.

**Step 5** − Do proper substitutions of productions to convert it into the proper form of GNF.

### Problem

Convert the following CFG into CNF

S → XY | Xn | p

X → mX | m

Y → Xn | o

### Solution

Here, **S** does not appear on the right side of any production and there are no unit or null productions in the production rule set. So, we can skip Step 1 to Step 3.

**Step 4**

Now after replacing

X in S → XY | Xo | p

with

mX | m

we obtain

S → mXY | mY | mXo | mo | p.

And after replacing

X in Y → X_{n} | o

with the right side of

X → mX | m

we obtain

Y → mXn | mn | o.

Two new productions O → o and P → p are added to the production set and then we came to the final GNF as the following −

S → mXY | mY | mXC | mC | p

X → mX | m

Y → mXD | mD | o

O → o

P → p