Example #1
0
        public void AddToken(FormulaTokenCode code, object[] data)
        {
            FormulaToken token = FormulaTokensFactory.CreateFromCode(this.worksheet, code);

            this.tokens.Add(token);
            token.DelayInitialize(data);
        }
Example #2
0
        private void AddSheetReferenceToken(string sheet)
        {
            string cell = this.GetCell();

            if (cell == string.Empty)
            {
                this.Expected("3d sheet cell reference.");
            }
            sheet = sheet + "!" + cell;
            if (this.GetNextOnDemand(':'))
            {
                string match = this.GetCell();
                if (RefFormulaToken.IsCell(match))
                {
                    FormulaTokenCode code = this.isFunctionArgumentsProcessed ? FormulaTokenCode.Area3d1 : FormulaTokenCode.Area3d2;
                    this.AddToken(code, new object[] { sheet + ":" + match, this.worksheet.Parent });
                }
                else
                {
                    this.Expected("3d area reference.");
                }
            }
            else
            {
                FormulaTokenCode code2 = this.isFunctionArgumentsProcessed ? FormulaTokenCode.Ref3d1 : FormulaTokenCode.Ref3d2;
                this.AddToken(code2, new object[] { sheet, this.worksheet.Parent });
            }
        }
Example #3
0
 private void PrimaryExpression()
 {
     if (this.GetNextOnDemand('('))
     {
         this.Expression();
         this.Match(')');
         this.AddToken(FormulaTokenCode.Parentheses);
         while (this.buffer.Peek() != ',')
         {
             FormulaTokenCode binaryOperator = this.GetBinaryOperator();
             if (binaryOperator == FormulaTokenCode.Empty)
             {
                 break;
             }
             this.ResetCounter();
             this.PrimaryExpression();
             this.ResetCounter("Operand for binary operator.");
             this.AddToken(binaryOperator);
         }
     }
     else
     {
         this.Expression();
     }
 }
Example #4
0
 private FormulaTokenCode GetBinaryOperator()
 {
     if (this.buffer.Peek(1) != '@')
     {
         char ch = this.buffer.Peek();
         if (BinaryOperatorFormulaToken.BinaryOperatorsList.Contains(ch.ToString()))
         {
             FormulaTokenCode code = (FormulaTokenCode)BinaryOperatorFormulaToken.StringsToCodes[ch.ToString()];
             this.buffer.GetNext();
             return(code);
         }
         if (this.buffer.Peek(1) == '@')
         {
             return(FormulaTokenCode.Empty);
         }
         char ch2 = this.buffer.Peek(1);
         int  num = ch + ch2;
         if (BinaryOperatorFormulaToken.BinaryOperatorsList.Contains(num.ToString()))
         {
             num = ch + ch2;
             FormulaTokenCode code2 = (FormulaTokenCode)BinaryOperatorFormulaToken.StringsToCodes[num.ToString()];
             this.buffer.GetNext();
             this.buffer.GetNext();
             return(code2);
         }
     }
     return(FormulaTokenCode.Empty);
 }
Example #5
0
        public void AddToken(FormulaTokenCode code, object[] data)
        {
            FormulaToken token1 = FormulaTokensFactory.CreateFromCode(code);

            this.tokens.Add(token1);
            token1.DelayInitialize(data);
        }
Example #6
0
        private void AddFunction(ushort code, string name, FormulaTokenCode argumentCode, FormulaTokenClass returnCode, byte argumentsCount)
        {
            FormulaFunctionInfo info = new FormulaFunctionInfo(code, name, argumentCode, returnCode, argumentsCount);

            this.codesToFunctions[code] = (info);
            this.namesToFunctions[name] = (info);
        }
Example #7
0
 public FormulaFunctionInfo(ushort code, string name, FormulaTokenCode argumentCode, FormulaTokenClass returnCode, byte argumentsCount)
 {
     this.argumentsCount = 255;
     this.code           = code;
     this.name           = name;
     this.argumentCode   = argumentCode;
     this.returnCode     = returnCode;
     this.argumentsCount = argumentsCount;
 }
Example #8
0
        public static bool IsArea3dToken(byte code)
        {
            FormulaTokenCode code2 = (FormulaTokenCode)code;

            if ((code2 != FormulaTokenCode.Area3d1) && (code2 != FormulaTokenCode.Area3d2))
            {
                return(code2 == FormulaTokenCode.Area3d3);
            }
            return(true);
        }
Example #9
0
        public static bool IsAreaToken(ushort codeValue)
        {
            FormulaTokenCode code = (FormulaTokenCode)((byte)codeValue);

            if ((code != FormulaTokenCode.Area1) && (code != FormulaTokenCode.Area2))
            {
                return(code == FormulaTokenCode.Area3);
            }
            return(true);
        }
Example #10
0
 private void PrimaryExpression()
 {
     if (this.GetNextOnDemand('('))
     {
         this.Expression();
         this.Match(')');
         this.AddToken(FormulaTokenCode.Parentheses);
         while (true)
         {
             FormulaTokenCode code1 = this.GetBinaryOperator();
             if (code1 == FormulaTokenCode.Empty)
             {
                 return;
             }
             this.ResetCounter();
             this.PrimaryExpression();
             this.ResetCounter("Operand for binary operator.");
             this.AddToken(code1);
         }
     }
     this.Expression();
 }
Example #11
0
 public FunctionVarFormulaToken(FormulaTokenCode code) : base(code, 4, FormulaTokenType.Function)
 {
 }
 // Methods
 ///<summary>
 ///Initializes a new instance of the <see cref="MB.WinEIDrive.Excel.ArrayFormulaToken" /> class.
 ///</summary>
 ///<param name="code">The FormulaTokenCode code.</param>
 public ArrayFormulaToken(FormulaTokenCode code) : base(code, 8, FormulaTokenType.Operand)
 {
 }
Example #13
0
 public BinaryOperatorFormulaToken(FormulaTokenCode code) : base(code, 1, FormulaTokenType.Binary)
 {
 }
Example #14
0
 // Methods
 public RefErr3dFormulaToken(FormulaTokenCode code) : base(code)
 {
 }
Example #15
0
 public RefFormulaToken(FormulaTokenCode code) : base(code, 5, FormulaTokenType.Operand)
 {
 }
Example #16
0
 public Area3dFormulaToken(FormulaTokenCode code)
     : base(code, 11)
 {
 }
 // Methods
 ///<summary>
 ///Initializes a new instance of the <see cref="MB.WinEIDrive.Excel.AreaErr3dFormulaToken" /> class.
 ///</summary>
 ///<param name="code">The FormulaTokenCode code.</param>
 public AreaErr3dFormulaToken(FormulaTokenCode code) : base(code)
 {
 }
Example #18
0
 public void AddToken(FormulaTokenCode code)
 {
     this.tokens.Add(FormulaTokensFactory.CreateFromCode(this.worksheet, code));
 }
Example #19
0
 public void AddToken(FormulaTokenCode code, object data)
 {
     this.AddToken(code, new object[] { data });
 }
Example #20
0
 public FormulaFunctionInfo(ushort code, string name, FormulaTokenCode argumentCode, FormulaTokenClass returnCode) : this(code, name, argumentCode, returnCode, 255)
 {
 }
Example #21
0
 public FormulaToken(FormulaTokenCode code, int size, FormulaTokenType type)
 {
     this.token = code;
     this.size  = size;
     this.type  = new FormulaTokenTypeEx(type);
 }
Example #22
0
 // Methods
 ///<summary>
 ///Initializes a new instance of the <see cref="MB.WinEIDrive.Excel.NameFormulaToken" /> class.
 ///</summary>
 ///<param name="code">The code.</param>
 public NameFormulaToken(FormulaTokenCode code) : base(code, 5, FormulaTokenType.Operand)
 {
     this.nameIndex = 0;
 }
Example #23
0
 public void AddToken(FormulaTokenCode code, object data)
 {
     object[] objArray1 = new object[] { data };
     this.AddToken(code, objArray1);
 }
 ///<summary>
 ///Initializes a new instance of the <see cref="MB.WinEIDrive.Excel.Ref3dFormulaToken" /> class.
 ///</summary>
 ///<param name="code">The code.</param>
 public Ref3dFormulaToken(FormulaTokenCode code) : base(code, 7)
 {
     this.refIndex = 0;
 }
Example #25
0
 public AreaFormulaToken(FormulaTokenCode code)
     : base(code, 9, FormulaTokenType.Operand)
 {
 }
Example #26
0
 public FormulaToken(FormulaTokenCode code, int size) : this(code, size, FormulaTokenType.Empty)
 {
 }
Example #27
0
 protected AreaFormulaToken(FormulaTokenCode code, int size)
     : base(code, size, FormulaTokenType.Operand)
 {
 }
Example #28
0
        public static FormulaToken CreateFromCode(ExcelWorksheet sheet, FormulaTokenCode tokenCode)
        {
            switch (tokenCode)
            {
            case FormulaTokenCode.Exp:
            case FormulaTokenCode.Tbl:
            case FormulaTokenCode.Attr:
                return(new ControlFormulaToken(tokenCode));

            case FormulaTokenCode.Add:
            case FormulaTokenCode.Sub:
            case FormulaTokenCode.Mul:
            case FormulaTokenCode.Div:
            case FormulaTokenCode.Power:
            case FormulaTokenCode.Concat:
            case FormulaTokenCode.Lt:
            case FormulaTokenCode.Le:
            case FormulaTokenCode.Eq:
            case FormulaTokenCode.Ge:
            case FormulaTokenCode.Gt:
            case FormulaTokenCode.Ne:
            case FormulaTokenCode.Isect:
            case FormulaTokenCode.List:
            case FormulaTokenCode.Range:
                return(new BinaryOperatorFormulaToken(tokenCode));

            case FormulaTokenCode.Uplus:
            case FormulaTokenCode.Uminus:
            case FormulaTokenCode.Percent:
            case FormulaTokenCode.Parentheses:
                return(new UnaryOperatorFormulaToken(tokenCode));

            case FormulaTokenCode.MissArg:
                return(new MissArgFormulaToken());

            case FormulaTokenCode.Str:
                return(new StrFormulaToken());

            case FormulaTokenCode.Err:
                return(new ErrFormulaToken());

            case FormulaTokenCode.Bool:
                return(new BoolFormulaToken());

            case FormulaTokenCode.Int:
                return(new IntFormulaToken());

            case FormulaTokenCode.Num:
                return(new NumFormulaToken());

            case FormulaTokenCode.Array1:
            case FormulaTokenCode.Array2:
            case FormulaTokenCode.Array3:
                return(new ArrayFormulaToken(tokenCode));

            case FormulaTokenCode.Func1:
            case FormulaTokenCode.Func2:
            case FormulaTokenCode.Func3:
                return(new FunctionFormulaToken(tokenCode));

            case FormulaTokenCode.FuncVar1:
            case FormulaTokenCode.FuncVar2:
            case FormulaTokenCode.FuncVar3:
                return(new FunctionVarFormulaToken(tokenCode));

            case FormulaTokenCode.Name1:
            case FormulaTokenCode.Name2:
            case FormulaTokenCode.Name3:
                return(new NameFormulaToken(tokenCode));

            case FormulaTokenCode.Ref1:
            case FormulaTokenCode.Ref2:
            case FormulaTokenCode.Ref3:
                return(new RefFormulaToken(tokenCode));

            case FormulaTokenCode.Area1:
            case FormulaTokenCode.Area2:
            case FormulaTokenCode.Area3:
                return(new AreaFormulaToken(tokenCode));

            case FormulaTokenCode.RefErr1:
            case FormulaTokenCode.RefErr2:
            case FormulaTokenCode.RefErr3:
                return(new RefErrFormulaToken(tokenCode));

            case FormulaTokenCode.Ref3d1:
            case FormulaTokenCode.Ref3d2:
            case FormulaTokenCode.Ref3d3:
                return(new Ref3dFormulaToken(sheet, tokenCode));

            case FormulaTokenCode.Area3d1:
            case FormulaTokenCode.Area3d2:
            case FormulaTokenCode.Area3d3:
                return(new Area3dFormulaToken(tokenCode));

            case FormulaTokenCode.RefErr3d1:
            case FormulaTokenCode.RefErr3d2:
            case FormulaTokenCode.RefErr3d3:
                return(new RefErr3dFormulaToken(tokenCode));

            case FormulaTokenCode.AreaErr3d1:
            case FormulaTokenCode.AreaErr3d2:
            case FormulaTokenCode.AreaErr3d3:
                return(new AreaErr3dFormulaToken(tokenCode));
            }
            throw new ArgumentException("We don't support specified formula token: " + tokenCode);
        }
 // Methods
 ///<summary>
 ///Initializes a new instance of the <see cref="MB.WinEIDrive.Excel.ControlFormulaToken" /> class.
 ///</summary>
 ///<param name="code">The FormulaTokenCode code.</param>
 public ControlFormulaToken(FormulaTokenCode code) : base(code, 5, FormulaTokenType.Control)
 {
 }
 ///<summary>
 ///Initializes a new instance of the <see cref="MB.WinEIDrive.Excel.Area3dFormulaToken" /> class.
 ///</summary>
 ///<param name="code">The FormulaTokenCode code.</param>
 public Area3dFormulaToken(FormulaTokenCode code) : base(code, 11)
 {
     this.refIndex = 0;
 }