Development JavaScript DHTML




Postfix Evaluator

.header{font-family:verdana,arial,helvetica; font-weight:bold; font-size:22pt; color:#0066CC; filter:DropShadow(color=#CCCCFF, offX=2, offY=2, positive=1); width:100%}
.form_in{background:#FFFFFF; border:#0066CC solid 1px}
.text_box{font-weight:bold; background:#EEEEFF; border:#0066CC solid 1px; height:20px}
.button{background:#0066CC; font-weight:bold; color:#FFFFFF; border:#0066CC solid 1px; height:20px; cursor:hand}
.link{color:#0066CC}
.link:hover{color:#0099FF}





/*
  Postfix Evaluator
  - Evaluates a Postfix(Postorder) expression
  - For eg. '12*3+' results in 5
  - Valid Operators are +,-,*,/
  - No Error Handling in this version
  JavaScript Implementation
  - CopyRight 2002 Premshree Pillai
  See algorithm at
  -http://www.qiksearch.com/articles/cs/postfix-evaluation/index.htm
  Created : 02/09/02 (dd/mm/yy)
  Web : http://www.qiksearch.com
  E-mail : qiksearch@rediffmail.com
*/
function push_stack(stackArr,ele)
{
 stackArr[stackArr.length]=ele;
}
function pop_stack(stackArr)
{
 var _temp=stackArr[stackArr.length-1];
 delete stackArr[stackArr.length-1];
 stackArr.length--;
 return(_temp);
}
function isOperand(who)
{
 return(!isOperator(who)? true : false);
}
function isOperator(who)
{
 return((who=="+" || who=="-" || who=="*" || who=="/" || who=="(" || who==")")? true : false);
}
function topStack(stackArr)
{
 return(stackArr[stackArr.length-1]);
}
function PostfixSubEval(num1,num2,sym)
{
 var returnVal;
 if(sym=="+")
  returnVal=num1+num2;
 if(sym=="-")
  returnVal=num1-num2;
 if(sym=="*")
  returnVal=num1*num2;
 if(sym=="/")
  returnVal=num1/num2;
 return(returnVal);
}
function PostfixEval(postfixStr)
{
 var stackArr=new Array();
 postfixStr=postfixStr.split('');
 for(var i=0; i {
  if(isOperand(postfixStr[i]))
  {
   push_stack(stackArr,postfixStr[i]);
  }
  else
  {
   var temp=parseFloat(topStack(stackArr));
   pop_stack(stackArr);
   var pushVal=PostfixSubEval(parseFloat(topStack(stackArr)),temp,postfixStr[i]);
   pop_stack(stackArr);
   push_stack(stackArr,pushVal);
  }
 }
 return(topStack(stackArr));



Postfix Evaluator





 
  Postfix Expression :
  Result :
  
 
 
  
  
  
 





 
 This JavaScript evaluates a Postfix(Postorder) expression.
 

Click here for the algorithm used.
 
 © 2002 Premshree Pillai.