Chomsky greibach normal forms
Download
1 / 39

Chomsky & Greibach Normal Forms - PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on

Chomsky & Greibach Normal Forms. Presentation Outline. Introduction Chomsky normal form Greibach Normal Form Algorithm ( with Example) Summary. Introduction. Grammar: G = (V, T, P, S). T = { a, b }. Terminals. V = A, B, C. Variables. S. Start Symbol. P = S → A. Production.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Chomsky & Greibach Normal Forms' - hovan


An Image/Link below is provided (as is) to download presentation

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 - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Chomsky greibach normal forms

Chomsky & Greibach Normal Forms


Chomsky greibach normal forms

Presentation Outline

  • Introduction

  • Chomsky normal form

  • Greibach Normal Form

    • Algorithm ( with Example)

  • Summary


Chomsky greibach normal forms

Introduction

  • Grammar: G = (V, T, P, S)

T = { a, b }

  • Terminals

V = A, B, C

  • Variables

S

  • Start Symbol

P = S → A

  • Production


Chomsky greibach normal forms

Presentation Outline

  • Introduction

  • Chomsky normal form

  • Greibach Normal Form

    • Algorithm ( with Example)

  • Summary


Chomsky greibach normal forms

Chomsky Normal Form

A context free grammar is said to be in Chomsky Normal Form if all productions are in the following form:

A → BC

A → α

  • A, B and C are non terminal symbols

  • α is a terminal symbol


Chomsky greibach normal forms

Presentation Outline

  • Introduction

  • Chomsky normal form

  • Greibach Normal Form

    • Algorithm ( with Example)

  • Summary


Chomsky greibach normal forms

Greibach Normal Form

A context free grammar is said to be in Greibach Normal Form if all productions are in the following form:

A → αX

  • A is a non terminal symbols

  • α is a terminal symbol

  • X is a sequence of non terminal symbols.

  • It may be empty.


Chomsky greibach normal forms

Presentation Outline

  • Introduction

  • Chomsky normal form

  • Greibach Normal Form

    • Algorithm ( with Example)

  • Summary


Conversion
Conversion

  • Convert from Chomsky to Greibach in two steps:

  • From Chomsky to intermediate grammar

    • Eliminate direct left recursion

    • Use A  uBv rules transformations to improve references (explained later)

  • From intermediate grammar into Greibach


Eliminate direct left recursion
Eliminate direct left recursion

  • Before

    A  Aa| b

  • After

    A  bZ | b

    Z  aZ | a

  • Remove the rule with direct left recursion, and create a new one with recursion on the right


Eliminate direct left recursion1
Eliminate direct left recursion

  • Before

    A  Aa| Ab| b| c

  • After

    A  bZ| cZ| b| c

    Z  aZ | bZ | a| b

  • Remove the rules with direct left recursion, and create new ones with recursion on the right


Eliminate direct left recursion2
Eliminate direct left recursion

  • Before

    A  AB| BA| a

    B  b | c

  • After

    A  BAZ| aZ| BA| a

    Z  BZ | B

    B  b | c


Transform a ubv rules
Transform A  uBv rules

  • Before

    A  uBb

    B  w1 | w1 |…| wn

  • After

    Add A  uw1b | uw1b |…| uwnb

    DeleteA  uBb


Conversion step 1
Conversion: Step 1

  • Goal: construct intermediate grammar in this format

    • A  aw

    • A  Bw

    • S  

      where w  V* and B comes after A


Conversion step 11
Conversion: Step 1

  • Assign a number to all variables starting with S, which gets 1

  • Transform each rule following the order according to given number from lowest to highest

    • Eliminate direct left recursion

    • If RHS of rule starts with variable with lower order, apply A  uBb transformation to fix it


Conversion step 2
Conversion: Step 2

  • Goal: construct Greibach grammar out of intermediate grammar from step 1

  • Fix A  Bw rules into A  aw format

    • After step 1, last original variable should have all its rules starting with a terminal

    • Working from bottom to top, fix all original variables using A  uBb transformation technique, so all rules become A  aw

  • Fix introduced recursive rules same way


Conversion example
Conversion Example

  • Convert the following grammar from Chomsky normal form, into Greibach normal form

    • S AB | 

    • A  AB | CB | a

    • B  AB | b

    • C  AC | c


Conversion strategy
Conversion Strategy

  • Goal: transform all rules which RHS does not start with a terminal

  • Apply two steps conversion

  • Work rules in sequence, eliminating direct left recursion, and enforcing variable reference to higher given number

  • Fix all original rules, then new ones


Step 1 s rules
Step 1: S rules

  • Starting with S since it has a value to of 1

  • S AB | 

  • S rules comply with two required conditions

    • There is no direct left recursion

    • Referenced rules A and B have a given number higher than 1. A corresponds to 2 and B to 3.


Step 1 a rules
Step 1: A rules

  • A  AB | CB | a

  • Direct left recursive rule A  AB needs to be fixed. Other A rules are fine

  • Apply direct left recursion transformation

    A  CBR1 | aR1 | CB | a

    R1  BR1 | B


Step 1 b rules
Step 1: B rules

  • B  AB | b

  • B  AB rule needs to be fixed since B corresponds to 3 and A to 2. B rules can only have on their RHS variables with number equal or higher. Use A  uBb transformation technique

  • B  CBR1B | aR1B | CBB | aB| b


Step 1 c rules
Step 1: C rules

  • C  AC | c

  • C  AC rule needs to be fixed since C corresponds to 4 and A to 2. Use same A  uBb transformation technique

  • C  CBR1C | aR1C | CBC | aC| c

  • Now variable references are fine according to given number, but we introduced direct left recursion in two rules…


Step 1 c rules1
Step 1: C rules

  • C  CBR1C | aR1C |CBC | aC| c

  • Eliminate direct left recursion

    C  aR1CR2 | aCR2| cR2 | aR1C | aC| c

    R2  BR1CR2 | BCR2 | BR1C | BC


Step 1 intermediate grammar
Step 1: Intermediate grammar

  • S AB | 

  • A  CBR1 | aR1 | CB | a

  • B  CBR1B | aR1B | CBB | aB | b

  • C  aR1CR2 | aCR2| cR2 | aR1C | aC | c

  • R1  BR1 | B

  • R2  BR1CR2 | BCR2 | BR1C | BC


Step 2 fix starting symbol
Step 2: Fix starting symbol

  • Rules S, A, B and C don’t have direct left recursion, and RHS variables are of higher number

  • All C rules start with terminal symbol

  • Proceed to fix rules B, A and S in bottom-up order, so they start with terminal symbol.

  • Use A  uBb transformation technique


Step 2 fixing b rules
Step 2: Fixing B rules

  • Before

    B  CBR1B | aR1B | CBB | aB | b

  • After

    B  aR1B | aB | b

    B  aR1CR2BR1B | aCR2BR1B| cR2BR1B | aR1CBR1B | aCBR1B| cBR1B

    B  aR1CR2BB | aCR2BB| cR2BB | aR1CBB | aCBB| cBB


Step 2 fixing a rules
Step 2: Fixing A rules

  • Before

    A  CBR1 | aR1 | CB | a

  • After

    A  aR1| a

    A  aR1CR2BR1 | aCR2BR1| cR2BR1 | aR1CBR1 | aCBR1| cBR1

    A  aR1CR2B | aCR2B| cR2B | aR1CB | aCB| cB


Step 2 fixing s rules
Step 2: Fixing S rules

  • Before

    SAB | 

  • After

    S 

    S  aR1B| aB

    S  aR1CR2BR1B | aCR2BR1B| cR2BR1B | aR1CBR1B | aCBR1B| cBR1B

    S  aR1CR2BB | aCR2BB| cR2BB | aR1CBB | aCBB| cBB


Step 2 complete conversion
Step 2: Complete conversion

  • All original rules S, A, B and C are fully converted now

  • New recursive rules need to be converted next

    R1  BR1 | B

    R2  BR1CR2 | BCR2 | BR1C | BC

  • Use same A  uBb transformation technique replacing starting variable B


Conclusions
Conclusions

  • After conversion, since B has 15 rules, and R1 references B twice, R1 ends with 30 rules

  • Similar for R2which referencesB four times. Therefore, R2 ends with 60 rules

  • All rules start with a terminal symbol (with the exception of S  )

  • Parsing algorithms top-down or bottom-up would complete on a grammar converted to Greibach normal form


Chomsky greibach normal forms

Greibach Normal Form

Example:

S → XA | BB

B → b | SB

X → b

A → a

S = A1

X = A2

A = A3

B = A4

A1 → A2A3 | A4A4

A4 → b | A1A4

A2 → b

A3 → a

CNF

New Labels

Updated CNF


Chomsky greibach normal forms

Greibach Normal Form

Example:

Ai → AjXkj >= i

A1 → A2A3 | A4A4

A4 → b | A1A4

A2 → b

A3 → a

First Step

Xk is a string of zero or more variables

A4 → A1A4


Chomsky greibach normal forms

Greibach Normal Form

Example:

Ai → AjXk j > i

First Step

| A4A4A4

| b

A4 → bA3A4

A4 → A1A4

A1 → A2A3 | A4A4

A4 → b | A1A4

A2 → b

A3 → a

| A4A4A4

| b

A4 → A2A3A4


Chomsky greibach normal forms

Greibach Normal Form

Example:

A1 → A2A3 | A4A4

A4 → bA3A4 | A4A4A4 | b

A2 → b

A3 → a

Second Step

Eliminate Left Recursions

A4 → A4A4A4


Chomsky greibach normal forms

Greibach Normal Form

Example:

Second Step

Eliminate Left Recursions

A4 → bA3A4 | b

| bA3A4Z| bZ

A1 → A2A3 | A4A4

A4 → bA3A4 | A4A4A4 | b

A2 → b

A3 → a

Z → A4A4

| A4A4Z


Chomsky greibach normal forms

Greibach Normal Form

Example:

A1 → A2A3 | A4A4

A4 → bA3A4 | b | bA3A4Z | bZ

Z → A4A4 | A4A4 Z

A2 → b

A3 → a

A → αX

GNF


Chomsky greibach normal forms

Greibach Normal Form

Example:

A1 → A2A3 | A4A4

A4 → bA3A4 | b | bA3A4Z | bZ

Z → A4A4 | A4A4 Z

A2 → b

A3 → a

A1 → bA3

| bA3A4A4

| bA4

| bA3A4ZA4

| bZA4

Z → bA3A4A4 | bA4 | bA3A4ZA4 | bZA4 | bA3A4A4Z| bA4Z| bA3A4ZA4 Z| bZA4 Z


Chomsky greibach normal forms

Greibach Normal Form

Example:

A1 → bA3 |bA3A4A4 | bA4 | bA3A4ZA4 | bZA4

A4 → bA3A4 | b | bA3A4Z | bZ

Z → bA3A4A4 | bA4 | bA3A4ZA4 | bZA4 | bA3A4A4Z| bA4Z| bA3A4ZA4 Z|

bZA4 Z

A2 → b

A3 → a

Grammar in Greibach Normal Form