BaseTerm PrefixToTerm() { BaseTerm t0, t1; BaseToken token = null; try { token = PS.Pop(); } catch // should not occur -- please report if it does { IO.Error("PrefixToTerm (): Unanticipated error in expression -- please report"); } if (token is OperandToken) { return(((OperandToken)token).term); } OperatorToken oprToken = (OperatorToken)token; if (oprToken.IsZerofix) // operator as operand; no arguments { return(new OperatorTerm(oprToken.triplet.Name)); } t0 = PrefixToTerm(); if (oprToken.IsInfix) { t1 = PrefixToTerm(); // get the second operand from the PS-stack return(new OperatorTerm(oprToken.od, t0, t1)); } else // prefix or postfix { return(new OperatorTerm(oprToken.od, t0)); } }