Operator Precedence Grammar

Operator Precedence Grammar:
  • It is an operator grammar for which the precedence relations constructed using method 2 are disjoint. That means for any pair of terminals a and b, at any time, only one of the relations a <. b, a $\overset{.}{\mathop{=}}\,$   b and a .> b is true
  • Consider the operator grammar: E E + E | E * E | (E) | id
  • This is not an operator grammar, because more than one precedence relation holds between certain pair of terminals
  • For example + and + i.e., + +.> and + + <.
Problems
Check whether the following grammars are operator precedence or not,
E → E + E | E * E | (E) | id
S → a | b | (T)
T → T , S | S

Algorithm overview:
  • Once precedence relations are define, take the input string to be parsed and write the relations between the terminal present in it
  • For example, consider the string id + id * id to be parsed by the precedence relations table

id
+
*
$
id

.>
.>
.>
+
<.
.>
<.
.>
*
<.
.>
.>
.>
$
<.
<.
<.


  • After establishing precedence relations, the string becomes
               $<.id.>+<.id.>*<.id.>$ 
  • Now scan the string until the first .> is seen
  • Go back from the position in step1 until the first <.  Is seen (cross over $\overset{.}{\mathop{=}}\,$ )
  • Now everything between <. and .> is the handle
  • Reduce the handle, re-establish relations after ignoring non-terminals and  goto step1 until the string remained is $$
  • The first handle in the string is id. After reducing it to E and ignoring E, we get, $\$+id*id\$$   and after re-establishing relations and after two more reductions, we get $\$+*\$$  and after re-establishing relations we get, $\$<.+<.*.>\$$ 
  • Now, we need to reduce * and then after + to finally announce successful parsing (when we reduce * or + there are non-terminals surrounding them. We can assume them generally as ignored)

    Share on Google Plus

    About Data Sciences by Venu

    Hi, My name is Venugopala Chary and I'm Currently working as Associate Professor in Reputed Engineerng College, Hyderabad. I have B.Tech and M.tech in regular from JNTU Hyderabad. I have 11 Years of Teaching Experience for both B.Tech and M.Tech Courses.
      Blogger Comment
      Facebook Comment

    0 comments:

    Post a Comment