import'dart:io';classStackX{intmaxSize;List<int>stackArray;inttop;StackX(intsize){maxSize=size;stackArray=newList<int>(maxSize);top=-1;}/// Put item on top of stackvoidpush(intitem){stackArray[++top]=item;}/// Take item from top of stackintpop(){returnstackArray[top--];}/// Peek at top of stackintpeek(){returnstackArray[top];}boolisEmpty(){returntop==-1;}intsize(){returntop+1;}intpeekN(intn){returnstackArray[n];}/// Display Stack DatavoiddisplayStack(Strings){stdout.write(s);stdout.write('Stack (bottom -> top): ');for(inti=0;i<size();i++){stdout.write('${peekN(i)} ');}stdout.writeln();}}classParsePost{StackXstackX;Stringinput;ParsePost(Strings){input=s;}intdoParse(){stackX=newStackX(20);Stringchar;inti;intnum1,num2;intinterAns;for(i=0;i<input.length;i++){char=input[i];stackX.displayStack('$char ');try{stackX.push(int.parse(char));}catch(error){num2=stackX.pop();num1=stackX.pop();switch(char){case'+':interAns=num1+num2;break;case'-':interAns=num1-num2;break;case'*':interAns=num1*num2;break;case'/':interAns=num1~/num2;break;default:interAns=0;}stackX.push(interAns);}}interAns=stackX.pop();returninterAns;}}voidmain(){stdout.writeln('Enter postfix');Stringinput=stdin.readLineSync();numoutput;ParsePostparsePost=newParsePost(input);output=parsePost.doParse();stdout.writeln('Evalutes to $output');}