Beispiel #1
0
        private bool DoRPN(TParsedTokenListBuilder TokenBuilder, TNameRecordList Names, byte[] RPN, int atPos, int afPos, ref bool HasSubtotal, ref bool HasAggregate)
        {
            int tPos     = atPos;
            int fPos     = afPos;
            int ArrayPos = fPos;

            TTokenOffset TokenOffset = new TTokenOffset();

            while (tPos < fPos)
            {
                TokenOffset.Add(tPos, TokenBuilder.Count);
                byte RealToken = RPN[tPos];
                ptg  BaseToken = TBaseParsedToken.CalcBaseToken((ptg)RealToken);
                TUnsupportedFormulaErrorType ErrType = TUnsupportedFormulaErrorType.FormulaTooComplex;
                string ErrName = null;
                if (!Evaluate(TokenBuilder, TokenOffset, Names, BaseToken, (ptg)RealToken, RPN, ref tPos, ref ArrayPos, ref ErrType, ref ErrName, ref HasSubtotal, ref HasAggregate))
                {
                    TokenBuilder.Clear();
                    return(false);
                }
                tPos++;
            }                                          //while

            TokenOffset.Add(tPos, TokenBuilder.Count); //eof

            FixGotosAndMemTokens(TokenBuilder, TokenOffset);
            return(true);
        }