Simplifications of context free grammars
Download
1 / 76

Simplifications of Context-Free Grammars - PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on

Simplifications of Context-Free Grammars. A Substitution Rule. Equivalent grammar. Substitute. A Substitution Rule. Substitute. Equivalent grammar. In general:. Substitute. equivalent grammar. Nullable Variables. Nullable Variable:. Removing Nullable Variables. Example Grammar:.

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 ' Simplifications of Context-Free Grammars' - herrod-horne


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
Simplifications of context free grammars

Simplifications of Context-Free Grammars


A substitution rule
A Substitution Rule

Equivalent

grammar

Substitute


A substitution rule1
A Substitution Rule

Substitute

Equivalent

grammar


In general:

Substitute

equivalent

grammar


Nullable variables
Nullable Variables

Nullable Variable:


Removing nullable variables
Removing Nullable Variables

Example Grammar:

Nullable variable


Final Grammar

Substitute


Unit productions
Unit-Productions

Unit Production:

(a single variable in both sides)


Removing unit productions
Removing Unit Productions

Observation:

Is removed immediately







Useless productions

Useless Production

Some derivations never terminate...

Useless Productions


Useless Production

Another grammar:

Not reachable from S


contains only

terminals

In general:

if

then variable is useful

otherwise, variable is useless


Productions

useless

Variables

useless

useless

useless

useless

useless

useless

A production is useless

if any of its variables is useless



First:

find all variables that can produce

strings with only terminals

Round 1:

Round 2:


Keep only the variables

that produce terminal symbols:

(the rest variables are useless)

Remove useless productions


Second:

Find all variables

reachable from

Use a Dependency Graph

not

reachable


Keep only the variables

reachable from S

(the rest variables are useless)

Final Grammar

Remove useless productions


Removing all
Removing All

  • Step 1: Remove Nullable Variables

  • Step 2: Remove Unit-Productions

  • Step 3: Remove Useless Variables


Normal forms for context free grammars

Normal FormsforContext-free Grammars


Chomsky normal form
Chomsky Normal Form

Each productions has form:

or

variable

variable

terminal


Examples:

Chomsky

Normal Form

Not Chomsky

Normal Form


Convertion to chomsky normal form
Convertion to Chomsky Normal Form

  • Example:

Not Chomsky

Normal Form






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


The Procedure

  • First remove:

    • Nullable variables

    • Unit productions


Then, for every symbol :

Add production

In productions: replace with

New variable:


Replace any production

with

New intermediate variables:


Theorem:

For any context-free grammar

(which doesn’t produce )

there is an equivalent grammar

in Chomsky Normal Form


Observations

  • Chomsky normal forms are good

  • for parsing and proving theorems

  • It is very easy to find the Chomsky normal

  • form for any context-free grammar


Greinbach normal form
Greinbach Normal Form

All productions have form:

symbol

variables


Examples:

Greinbach

Normal Form

Not Greinbach

Normal Form



Theorem:

For any context-free grammar

(which doesn’t produce )

there is an equivalent grammar

in Greinbach Normal Form


Observations

  • Greinbach normal forms are very good

  • for parsing

  • It is hard to find the Greinbach normal

  • form of any context-free grammar



Machine Code

Program

Add v,v,0

cmp v,5

jmplt ELSE

THEN:

add x, 12,v

ELSE:

WHILE:

cmp x,3

...

v = 5;

if (v>5)

x = 12 + v;

while (x !=3) {

x = x - 3;

v = 10;

}

......

Compiler


Compiler

Lexical

analyzer

parser

input

output

machine

code

program


A parser knows the grammar

of the programming language


Parser

PROGRAM STMT_LIST

STMT_LIST STMT; STMT_LIST | STMT;

STMT EXPR | IF_STMT | WHILE_STMT

| { STMT_LIST }

EXPR EXPR + EXPR | EXPR - EXPR | ID

IF_STMT if (EXPR) then STMT

| if (EXPR) then STMT else STMT

WHILE_STMT while (EXPR) do STMT


The parser finds the derivation

of a particular input

derivation

Parser

input

E => E + E

=> E + E * E

=> 10 + E*E

=> 10 + 2 * E

=> 10 + 2 * 5

E -> E + E

| E * E

| INT

10 + 2 * 5


derivation tree

derivation

E

E => E + E

=> E + E * E

=> 10 + E*E

=> 10 + 2 * E

=> 10 + 2 * 5

+

E

E

10

E

E

*

2

5


derivation tree

E

machine code

+

E

E

mult a, 2, 5

add b, 10, a

10

E

E

*

2

5



Parser

input

string

derivation

grammar


Example:

Parser

derivation

input

?


Exhaustive Search

Phase 1:

Find derivation of

All possible derivations of length 1


Phase 2

Phase 1


Phase 2

Phase 3


Final result of exhaustive search

(top-down parsing)

Parser

input

derivation


Time complexity of exhaustive search

Suppose there are no productions of the form

Number of phases for string :


For grammar with rules

Time for phase 1:

possible derivations


Time for phase 2:

possible derivations


Time for phase :

possible derivations


Total time needed for string :

phase 1

phase 2|w|

phase 2

Extremely bad!!!


There exist faster algorithms

for specialized grammars

S-grammar:

symbol

string

of variables

appears once

Pair


S-grammar example:

Each string has a unique derivation


For S-grammars:

In the exhaustive search parsing

there is only one choice in each phase

Time for a phase:

Total time for parsing string :


For general context-free grammars:

There exists a parsing algorithm

that parses a string

in time

(we will show it in the next class)



The CYK Membership Algorithm

Input:

  • Grammar in Chomsky Normal Form

  • String

Output:

find if


The Algorithm

Input example:

  • Grammar :

  • String :


Therefore:

Time Complexity:

Observation:

The CYK algorithm can be

easily converted to a parser

(bottom up parser)


ad