Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
Compiler Design Articles
Page 8 of 12
What is Non-Immediate Left Recursion in compiler design?
A Grammar G (V, T, P, S) is left recursive if it has a production in the form.A → A α |β.The above Grammar is left recursive because the left of production is occurring at a first position on the right side of production. It can eliminate left recursion by replacing a pair of production withA → βA′A → αA′|ϵThe general form for left recursion isA → Aα1|Aα2| … . |Aαm|β1|β2| … . . βncan be replaced byA → β1A′|β2A′| … . . | … . . |βnA′A → α1A′|α2A′| … . . |αmA′|εIn the following grammar, it does not ...
Read MoreWhat are Precedence Functions in compiler design?
Precedence relations between any two operators or symbols in the precedence table can be converted to two precedence functions f & g that map terminals symbols to integers.If a g (b)Here a, b represents terminal symbols. f (a) and g (b) represents the precedence functions that have an integer value.Computations of Precedence FunctionsFor each terminal a, create the symbol fa&ga.Make a node for each symbol. If a =. b, then fa & gb are in same group or node. If a =. b & c =. b, ...
Read MoreWhat is OPG?
OPG stands for Operator Precedence Grammar. Grammar with the later property is known as operator precedence grammar. It is ε −free Operator Grammar in which precedence relation are disjoint, i.e., If a . > b exists, then b .> a will not exist.Example1 − Verify whether the following Grammar is operator Grammar or not.E → E A E |(E)|idA → +| − | *SolutionNo, it is not an operator Grammar as it does not satisfy property 2 of operator Grammar.As it contains two adjacent Non-terminals on R.H.S of production E → E A E .We can convert it into ...
Read MoreWhat is Handle?
A handle is a substring that connects a right-hand side of the production rule in the grammar and whose reduction to the non-terminal on the left-hand side of that grammar rule is a step along with the reverse of a rightmost derivation.Finding Handling at Each StepHandles can be found by the following process −It can scan the input string from left to right until first .> is encountered.It can scan backward until
Read MoreWhat are Precedence Relations in Operator Grammar?
For terminals a and b in an Operator Grammar we can have the following precedence Relations −a =. b(Equal Precedence) − If R.H.S of production is of form α a β b γ, where β can be ε or single non-terminal then a =. b.Here, α and γ can be any strings.Example − In grammar, S → m A c B e dOn Comparing mAcBed with αaβbγα = mA, a = c, β = B, b = e, γ = dΑAβbγmACBedSo, comparing a with c and b with e we get c =.e.We can also make a different combination for ...
Read MoreWhat are LEADING and TRAILING operation of an operator precedence grammar?
LEADINGIf production is of form A → aα or A → Ba α where B is Non-terminal, and α can be any string, then the first terminal symbol on R.H.S isLeading(A) = {a}If production is of form A → Bα, if a is in LEADING (B), then a will also be in LEADING (A).TRAILINGIf production is of form A→ αa or A → αaB where B is Non-terminal, and α can be any string then, TRAILING (A) = {a}If production is of form A → αB. If a is in TRAILING (B), then a will be in TRAILING (A).Algorithm to ...
Read MoreWhat is Operator Precedence Parsing?
Operator Precedence Parsing is also a type of Bottom-Up Parsing that can be used to a class of Grammars known as Operator Grammar.A Grammar G is Operator Grammar if it has the following properties −Production should not contain ϵ on its right side.There should not be two adjacent non-terminals at the right side of production.Example1 − Verify whether the following Grammar is operator Grammar or not.E → E A E |(E)|idA → +| − | ∗SolutionNo, it is not an operator Grammar as it does not satisfy property 2 of operator Grammar.As it contains two adjacent Non-terminals on R.H.S of ...
Read MoreConstruct NFA for the following language and convert it into DFA using the algorithm - L = (aa+ (bb*)c*)
SolutionNFA for the above language will be −Conversion from NFA to DFA −ε − closure(0) = {0, 1, 4} = AFor State AFor input symbol aFor input symbol bFor input symbol c∴ Ta = {2}∴ Tb = {5}Tc = ∅∴ ε − closure (Ta) = ε − closure (2)= {2} = B∴ ε − closure (Tb) = ε ...
Read MoreWhat is Stack Implementation of Shift Reduce Parsing in compiler design?
Shift reduce parser is a type of bottom-up parser. It uses a stack to hold grammar symbols. A parser goes on shifting the input symbols onto the stack until a handle comes on the top of the stack. When a handle occurs on the top of the stack, it implements reduction.There are the various steps of Shift Reduce Parsing which are as follows −It uses a stack and an input buffer.Insert $ at the bottom of the stack and the right end of the input string in Input Buffer.Shift: Parser shifts zero or more input symbols onto the stack until ...
Read MoreWhat is Ambiguous Grammar?
A Grammar that makes more than one Leftmost Derivation (or Rightmost Derivation) for the similar sentence is called Ambiguous Grammar.Example − Verify whether the following Grammar is Ambiguous or Not.E → E+E|E $\ast$ E|idSolutionFor string id + id * id, there exist two parse trees.E ⇒lm $\underline{E}$+E ⇒ id+ $\underline{E}$⇒ id+$\underline{E}$ $\ast$ E⇒ id+id $\ast$ $\underline{E}$⇒ id+id $\ast$ idE ⇒lm $\underline{E}$ $\ast$ E⇒ $\underline{E}$+E $\ast$ E⇒ id+ $\underline{E}$ $\ast$ E⇒ id+id $\ast$ $\underline{E}$⇒ id+id $\ast$ idSo, the same string is generated using two different leftmost derivations. Each is having a different parse tree.∴ Two different parse trees exist for string id + id ...
Read More