Explain Operator grammar and precedence parser in TOC

Data Structure AlgorithmsComputer ScienceComputers

Best Seller

89 Lectures 11.5 hours

Practical Data Science using Python

22 Lectures 6 hours

Data Science and Data Analysis with Python

50 Lectures 3.5 hours

If the grammar satisfies the following two conditions, then we can say that type of grammar is called as operator precedence grammar.

• If ε is on its RHS then there exists no production rule.

• If two non-terminals are adjacent to each other on its RHS then there exists no production rule.

Operator Grammars have the property that no production right side is empty or has two adjacent non-terminals.

Example

E-> E A E | id

A-> + | *

The above grammar is not an operator grammar but we can convert that grammar into operator grammar like −

E-> E + E | E * E | id

There are three precedence relations, which are given below −

Relation
Meaning
ab
a yields precedence to b
a = · b
a has the same precedence as b
ab
atakes precedence over b

Precedence Table

id
+
*
$id + *$

Precedencce Table

Example

The input string is as follows −

id1 + id2 * id3

After inserting precedence relations is−

$<· id1 ·> + <· id2 ·> * <· id3 ·>$

Basic Principle

• Scan the string from left until seeing ·> and put a pointer.

• Scan backwards the string from right to left until seeing <·

• Everything between the two relations <· and ·> forms the handle.

• Replace handle with the head of the production.

Operator Precedence Parsing Algorithm

The algorithm is as follows −

Initialize: Set P to point to the first symbol of the input string w$Repeat − Let b be the top stack symbol, a is the input symbol pointed to by P. if (a is$ and b is $) return else if a ·> b or a =· b then push a onto the stack advance P to the next input symbol else if a <· b then repeat c -> pop the stack until (c .> stack-top) else error end Example id + *$
id

+

*

$Construct a graph using the algorithm. This graph is as follows − By seeing this, we can extract the precedence function like − id + *$
f
4
2
4
0
g
5
1
3
0
Updated on 15-Jun-2021 11:29:18