Upload
srinivasa-helavar
View
223
Download
0
Embed Size (px)
Citation preview
8/12/2019 New Stack Application
1/34
STACK
APPLICATION
8/12/2019 New Stack Application
2/34
MAIN OBJECTIVE
Postfix evaluation
Infix to Postfix conversion
Expression evaluation
8/12/2019 New Stack Application
3/34
EVALATION O E!P"ESSIONS
Consists of operators an#
operan#s$
A pro%ra&&in% lan%ua%e supports
several 'in#s of operators (it)
so&e priorit* values$
X = A/B * * C + D X E A * C
8/12/2019 New Stack Application
4/34
EVALATION O E!P"ESSIONS
I$ Or#erin% of operation+ priorit*
of operation$
II$ ,irection of operation
8/12/2019 New Stack Application
5/34
,I"ECTION O OPE"ATIONS
I$ Left to ri%)t
II$ "i%)t to left
For Example:
A - - B - - C ./ A - - 0B- -C1
8/12/2019 New Stack Application
6/34
EVAL2ATION O E!P"ESSIONS
Infix notation 3 A 4 B
Postfix notation 3 AB4
Prefix notation 3 4AB
5 6a*s to represent an expression3
Co&piler uses postfix notation for
evaluatin% expressions$
8/12/2019 New Stack Application
7/34
EVAL2ATION O
E!P"ESSIONS
Examples:
71 Infix3 A- B+ C
Postfix 3 AB - C+
81 Infix 3 A + B - - C 4 , - E 9A - C
Postfix 3 ABC - - + , E - 4 AC - .
8/12/2019 New Stack Application
8/34
A,VANTA:ES O POSTI!
NOTATIONS
7$ Nee# for parent)esis is eli&inate#$
For Example:T)e follo(in% expression
(it) an# (it)out t)e parent)esis (ill)ave t)e sa&e postfix notation
A + 0B - - C1 4 0, - E1 9 A - C
8/12/2019 New Stack Application
9/34
A,VANTA:ES O POSTI!
NOTATIONS
8$ Priorit* of operators is eli&inate#$
5$ Evaluation process is &uc) si&pler
t)an atte&ptin% a #irect evaluation
fro& infix notation$
8/12/2019 New Stack Application
10/34
EVAL2ATIN: A POSTI!
E!P"ESSION 2SIN: A STACK
E!P"ESSION3 5; 4 8 - 0Postfix Notation1
S*&
8/12/2019 New Stack Application
11/34
POSTI! EVAL2ATION
AL:O"IT=M
Place operan#s on stac' until (e fin# an
operator$
"e&ove fro& t)e stac'> t)e correct
nu&
8/12/2019 New Stack Application
12/34
,ECLA"ATION
? #efine MA!@STACK@SIE 7
? #efine MA!@E!P"@SIE 7
t*pe#ef enu& lparen> rparen> plus> &inus
ti&es> #ivi#e> &o#> eos> operan#D prece#ence
int stac'FMA!@STACK@SIEG +-%lo
8/12/2019 New Stack Application
13/34
2NCTION TO EVAL2ATE A
POSTI! E!P"ESSION
int eval 0voi#1
+- evaluate a postfix expression> expr
&aintaine# as a %lo
8/12/2019 New Stack Application
14/34
2NCTION TO EVAL2ATE A
POSTI! E!P"ESSION
prece#ence to'en
c)ar s*& op8
int n +-Counter t)e expression strin%
int top .7
to'en %et@to'en 0s*& n1
8/12/2019 New Stack Application
15/34
POSTI! E!P"ESSION
EVAL2ATION3 2SIN: A STACK
()ile 0to'en eos1
if 0to'en operan#1
a## 0top> s*&
8/12/2019 New Stack Application
16/34
POSTI! E!P"ESSION
EVAL2ATION
op8 #elete 0top1
op7 #elete 0top1
s(itc) 0to'en1
case plus3 a##0top> op74op81
8/12/2019 New Stack Application
17/34
POSTI! E!P"ESSION
EVAL2ATION
to'en %et@to'en0s*& n1 D
return #elete 0top1 +- text-+
D
8/12/2019 New Stack Application
18/34
2NCTION TO :ET A TOKEN "OM
INP2T ST"IN:
prece#ence %et@to'en0c)ar -s*& int -n1
+ - %et t)e next to'en > s*& t)e to'en is
represente# ()ic) is
returne# in t)e function na&e-+
8/12/2019 New Stack Application
19/34
2NCTION TO :ET A TOKEN
"OM INP2T ST"IN:
s(itc) 0-s*&
8/12/2019 New Stack Application
20/34
AL:O"IT=M O" INI! TO
POSTI! T"ANSLATION
I$ ull* parent)esie t)e expression
II$Move all operators so t)at t)e* replacet)eir correspon#in% ri%)t parent)esis
III$ ,elete all parent)eses
8/12/2019 New Stack Application
21/34
AL:O"IT=M O" INI! TO
POSTI! T"ANSLATION
E!AMPLE3
000A + 0B - - C11 4 0 , - E 1 1 9 0A - C 1 1
A B C - -+ , E - 4 A C - .
8/12/2019 New Stack Application
22/34
AL:O"IT=M O" INI! TO
POSTI! T"ANSLATION
,ra(
8/12/2019 New Stack Application
23/34
AL:O"IT=M O" INI! TO
POSTI! T"ANSLATION
Or#er of operan#s is t)e sa&e in
A+B--C4,-E.A-C is ABC--+,E -4AC-.
Postfix can
8/12/2019 New Stack Application
24/34
AL:O"IT=M O" INI! TO
POSTI! T"ANSLATION
Q T)e
8/12/2019 New Stack Application
25/34
STACK BASE, AL:O"IT=M
E!AMPLE3 A4 B - C
Next to'en
A
+
B
*
C
Stac'
empty
+
+
+*
+*
Output
A
A
AB
AB
ABC
inal output A B C - - 0Postfix)
8/12/2019 New Stack Application
26/34
STACK BASE, AL:O"IT=M
E!AMPLE 83 A-0B4C1-, ABC4-,-
Next to'en
none
A
*
(
B
+C
Stac'
empty
empty
*
*(
*(
*(+*(+
Output
none
A
A
A
AB
ABABC
8/12/2019 New Stack Application
27/34
STACK BASE, AL:O"IT=M
At t)is point> (e (ant to unstac' #o(n
to t)e correspon#in% left parent)eses an#
t)en #elete t)e left an# ri%)t parent)eses$
8/12/2019 New Stack Application
28/34
STACK BASE, AL:O"IT=M
Next to'en
1
-
,
#one
Stac'
-
-
-
e&pt*
Output
ABC4
ABC4-
ABC4-,
ABC4-,-
8/12/2019 New Stack Application
29/34
8/12/2019 New Stack Application
30/34
2NCTION TO CONVE"T "OM
INI! TO POSTI!
voi# postfix 0voi#1
+- output t)e postfix of t)e expressions fro& infix
expression> t)e expression strin%> t)e stac' an# top are%lo
8/12/2019 New Stack Application
31/34
2NCTION TO CONVE"T "OM
INI! TO POSTI!
for 0to'en %et@to'en0s*& n1
to'en eos to'en %et@to'en0s*&
n11
if 0to'en operan#1
printf0Qc> s*&
8/12/2019 New Stack Application
32/34
2NCTION TO CONVE"T "OM
8/12/2019 New Stack Application
33/34
2NCTION TO CONVE"T "OM
INI! TO POSTI!
else
+- re&ove an# print s*& to'en1 DD
2NCTION TO CONVE"T "OM
8/12/2019 New Stack Application
34/34
2NCTION TO CONVE"T "OM
INI! TO POSTI!
()ile 0to'en #elete0top11 eos1
printf@to'en0to'en1
printf 0Qn1
D